agenta 0.57.0__py3-none-any.whl → 0.63.2__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 (267) hide show
  1. agenta/__init__.py +12 -3
  2. agenta/client/__init__.py +4 -4
  3. agenta/client/backend/__init__.py +4 -4
  4. agenta/client/backend/api_keys/client.py +2 -2
  5. agenta/client/backend/billing/client.py +2 -2
  6. agenta/client/backend/billing/raw_client.py +2 -2
  7. agenta/client/backend/client.py +56 -48
  8. agenta/client/backend/core/client_wrapper.py +2 -2
  9. agenta/client/backend/core/file.py +3 -1
  10. agenta/client/backend/core/http_client.py +3 -3
  11. agenta/client/backend/core/pydantic_utilities.py +13 -3
  12. agenta/client/backend/human_evaluations/client.py +2 -2
  13. agenta/client/backend/human_evaluations/raw_client.py +2 -2
  14. agenta/client/backend/organization/client.py +46 -34
  15. agenta/client/backend/organization/raw_client.py +32 -26
  16. agenta/client/backend/raw_client.py +26 -26
  17. agenta/client/backend/testsets/client.py +18 -18
  18. agenta/client/backend/testsets/raw_client.py +30 -30
  19. agenta/client/backend/types/__init__.py +4 -4
  20. agenta/client/backend/types/account_request.py +3 -1
  21. agenta/client/backend/types/account_response.py +3 -1
  22. agenta/client/backend/types/agenta_node_dto.py +3 -1
  23. agenta/client/backend/types/agenta_nodes_response.py +3 -1
  24. agenta/client/backend/types/agenta_root_dto.py +3 -1
  25. agenta/client/backend/types/agenta_roots_response.py +3 -1
  26. agenta/client/backend/types/agenta_tree_dto.py +3 -1
  27. agenta/client/backend/types/agenta_trees_response.py +3 -1
  28. agenta/client/backend/types/aggregated_result.py +3 -1
  29. agenta/client/backend/types/analytics_response.py +3 -1
  30. agenta/client/backend/types/annotation.py +6 -4
  31. agenta/client/backend/types/annotation_create.py +3 -1
  32. agenta/client/backend/types/annotation_edit.py +3 -1
  33. agenta/client/backend/types/annotation_link.py +3 -1
  34. agenta/client/backend/types/annotation_link_response.py +3 -1
  35. agenta/client/backend/types/annotation_query.py +3 -1
  36. agenta/client/backend/types/annotation_query_request.py +3 -1
  37. agenta/client/backend/types/annotation_reference.py +3 -1
  38. agenta/client/backend/types/annotation_references.py +3 -1
  39. agenta/client/backend/types/annotation_response.py +3 -1
  40. agenta/client/backend/types/annotations_response.py +3 -1
  41. agenta/client/backend/types/app.py +3 -1
  42. agenta/client/backend/types/app_variant_response.py +3 -1
  43. agenta/client/backend/types/app_variant_revision.py +3 -1
  44. agenta/client/backend/types/artifact.py +6 -4
  45. agenta/client/backend/types/base_output.py +3 -1
  46. agenta/client/backend/types/body_fetch_workflow_revision.py +3 -1
  47. agenta/client/backend/types/body_import_testset.py +3 -1
  48. agenta/client/backend/types/bucket_dto.py +3 -1
  49. agenta/client/backend/types/collect_status_response.py +3 -1
  50. agenta/client/backend/types/config_db.py +3 -1
  51. agenta/client/backend/types/config_dto.py +3 -1
  52. agenta/client/backend/types/config_response_model.py +3 -1
  53. agenta/client/backend/types/correct_answer.py +3 -1
  54. agenta/client/backend/types/create_app_output.py +3 -1
  55. agenta/client/backend/types/custom_model_settings_dto.py +3 -1
  56. agenta/client/backend/types/custom_provider_dto.py +3 -1
  57. agenta/client/backend/types/custom_provider_kind.py +1 -1
  58. agenta/client/backend/types/custom_provider_settings_dto.py +3 -1
  59. agenta/client/backend/types/delete_evaluation.py +3 -1
  60. agenta/client/backend/types/environment_output.py +3 -1
  61. agenta/client/backend/types/environment_output_extended.py +3 -1
  62. agenta/client/backend/types/environment_revision.py +3 -1
  63. agenta/client/backend/types/error.py +3 -1
  64. agenta/client/backend/types/evaluation.py +3 -1
  65. agenta/client/backend/types/evaluation_scenario.py +3 -1
  66. agenta/client/backend/types/evaluation_scenario_input.py +3 -1
  67. agenta/client/backend/types/evaluation_scenario_output.py +3 -1
  68. agenta/client/backend/types/evaluation_scenario_result.py +3 -1
  69. agenta/client/backend/types/evaluator.py +6 -4
  70. agenta/client/backend/types/evaluator_config.py +6 -4
  71. agenta/client/backend/types/evaluator_flags.py +3 -1
  72. agenta/client/backend/types/evaluator_mapping_output_interface.py +3 -1
  73. agenta/client/backend/types/evaluator_output_interface.py +3 -1
  74. agenta/client/backend/types/evaluator_query.py +3 -1
  75. agenta/client/backend/types/evaluator_query_request.py +3 -1
  76. agenta/client/backend/types/evaluator_request.py +3 -1
  77. agenta/client/backend/types/evaluator_response.py +3 -1
  78. agenta/client/backend/types/evaluators_response.py +3 -1
  79. agenta/client/backend/types/exception_dto.py +3 -1
  80. agenta/client/backend/types/extended_o_tel_tracing_response.py +3 -1
  81. agenta/client/backend/types/get_config_response.py +3 -1
  82. agenta/client/backend/types/header.py +3 -1
  83. agenta/client/backend/types/http_validation_error.py +3 -1
  84. agenta/client/backend/types/human_evaluation.py +3 -1
  85. agenta/client/backend/types/human_evaluation_scenario.py +3 -1
  86. agenta/client/backend/types/human_evaluation_scenario_input.py +3 -1
  87. agenta/client/backend/types/human_evaluation_scenario_output.py +3 -1
  88. agenta/client/backend/types/invite_request.py +3 -1
  89. agenta/client/backend/types/legacy_analytics_response.py +3 -1
  90. agenta/client/backend/types/legacy_data_point.py +3 -1
  91. agenta/client/backend/types/legacy_evaluator.py +3 -1
  92. agenta/client/backend/types/legacy_scope_request.py +3 -1
  93. agenta/client/backend/types/legacy_scopes_response.py +3 -1
  94. agenta/client/backend/types/legacy_subscription_request.py +3 -1
  95. agenta/client/backend/types/legacy_user_request.py +3 -1
  96. agenta/client/backend/types/legacy_user_response.py +3 -1
  97. agenta/client/backend/types/lifecycle_dto.py +3 -1
  98. agenta/client/backend/types/link_dto.py +3 -1
  99. agenta/client/backend/types/list_api_keys_response.py +3 -1
  100. agenta/client/backend/types/llm_run_rate_limit.py +3 -1
  101. agenta/client/backend/types/meta_request.py +3 -1
  102. agenta/client/backend/types/metrics_dto.py +3 -1
  103. agenta/client/backend/types/new_testset.py +3 -1
  104. agenta/client/backend/types/node_dto.py +3 -1
  105. agenta/client/backend/types/o_tel_context_dto.py +3 -1
  106. agenta/client/backend/types/o_tel_event.py +6 -4
  107. agenta/client/backend/types/o_tel_event_dto.py +3 -1
  108. agenta/client/backend/types/o_tel_extra_dto.py +3 -1
  109. agenta/client/backend/types/o_tel_flat_span.py +6 -4
  110. agenta/client/backend/types/o_tel_link.py +6 -4
  111. agenta/client/backend/types/o_tel_link_dto.py +3 -1
  112. agenta/client/backend/types/o_tel_links_response.py +3 -1
  113. agenta/client/backend/types/o_tel_span.py +1 -1
  114. agenta/client/backend/types/o_tel_span_dto.py +3 -1
  115. agenta/client/backend/types/o_tel_spans_tree.py +3 -1
  116. agenta/client/backend/types/o_tel_tracing_data_response.py +3 -1
  117. agenta/client/backend/types/o_tel_tracing_request.py +3 -1
  118. agenta/client/backend/types/o_tel_tracing_response.py +3 -1
  119. agenta/client/backend/types/organization.py +3 -1
  120. agenta/client/backend/types/organization_details.py +3 -1
  121. agenta/client/backend/types/organization_membership_request.py +3 -1
  122. agenta/client/backend/types/organization_output.py +3 -1
  123. agenta/client/backend/types/organization_request.py +3 -1
  124. agenta/client/backend/types/parent_dto.py +3 -1
  125. agenta/client/backend/types/project_membership_request.py +3 -1
  126. agenta/client/backend/types/project_request.py +3 -1
  127. agenta/client/backend/types/project_scope.py +3 -1
  128. agenta/client/backend/types/projects_response.py +3 -1
  129. agenta/client/backend/types/reference.py +6 -4
  130. agenta/client/backend/types/reference_dto.py +3 -1
  131. agenta/client/backend/types/reference_request_model.py +3 -1
  132. agenta/client/backend/types/result.py +3 -1
  133. agenta/client/backend/types/root_dto.py +3 -1
  134. agenta/client/backend/types/scopes_response_model.py +3 -1
  135. agenta/client/backend/types/secret_dto.py +3 -1
  136. agenta/client/backend/types/secret_response_dto.py +3 -1
  137. agenta/client/backend/types/simple_evaluation_output.py +3 -1
  138. agenta/client/backend/types/span_dto.py +6 -4
  139. agenta/client/backend/types/standard_provider_dto.py +3 -1
  140. agenta/client/backend/types/standard_provider_settings_dto.py +3 -1
  141. agenta/client/backend/types/status_dto.py +3 -1
  142. agenta/client/backend/types/tags_request.py +3 -1
  143. agenta/client/backend/types/testcase_response.py +6 -4
  144. agenta/client/backend/types/testset.py +6 -4
  145. agenta/client/backend/types/{test_set_output_response.py → testset_output_response.py} +4 -2
  146. agenta/client/backend/types/testset_request.py +3 -1
  147. agenta/client/backend/types/testset_response.py +3 -1
  148. agenta/client/backend/types/{test_set_simple_response.py → testset_simple_response.py} +4 -2
  149. agenta/client/backend/types/testsets_response.py +3 -1
  150. agenta/client/backend/types/time_dto.py +3 -1
  151. agenta/client/backend/types/tree_dto.py +3 -1
  152. agenta/client/backend/types/update_app_output.py +3 -1
  153. agenta/client/backend/types/user_request.py +3 -1
  154. agenta/client/backend/types/validation_error.py +3 -1
  155. agenta/client/backend/types/workflow_artifact.py +6 -4
  156. agenta/client/backend/types/workflow_data.py +3 -1
  157. agenta/client/backend/types/workflow_flags.py +3 -1
  158. agenta/client/backend/types/workflow_request.py +3 -1
  159. agenta/client/backend/types/workflow_response.py +3 -1
  160. agenta/client/backend/types/workflow_revision.py +6 -4
  161. agenta/client/backend/types/workflow_revision_request.py +3 -1
  162. agenta/client/backend/types/workflow_revision_response.py +3 -1
  163. agenta/client/backend/types/workflow_revisions_response.py +3 -1
  164. agenta/client/backend/types/workflow_variant.py +6 -4
  165. agenta/client/backend/types/workflow_variant_request.py +3 -1
  166. agenta/client/backend/types/workflow_variant_response.py +3 -1
  167. agenta/client/backend/types/workflow_variants_response.py +3 -1
  168. agenta/client/backend/types/workflows_response.py +3 -1
  169. agenta/client/backend/types/workspace.py +3 -1
  170. agenta/client/backend/types/workspace_member_response.py +3 -1
  171. agenta/client/backend/types/workspace_membership_request.py +3 -1
  172. agenta/client/backend/types/workspace_permission.py +3 -1
  173. agenta/client/backend/types/workspace_request.py +3 -1
  174. agenta/client/backend/types/workspace_response.py +3 -1
  175. agenta/client/backend/workspace/client.py +2 -2
  176. agenta/client/client.py +102 -88
  177. agenta/sdk/__init__.py +52 -3
  178. agenta/sdk/agenta_init.py +43 -16
  179. agenta/sdk/assets.py +22 -15
  180. agenta/sdk/context/serving.py +20 -8
  181. agenta/sdk/context/tracing.py +40 -22
  182. agenta/sdk/contexts/__init__.py +0 -0
  183. agenta/sdk/contexts/routing.py +38 -0
  184. agenta/sdk/contexts/running.py +57 -0
  185. agenta/sdk/contexts/tracing.py +86 -0
  186. agenta/sdk/decorators/__init__.py +1 -0
  187. agenta/sdk/decorators/routing.py +284 -0
  188. agenta/sdk/decorators/running.py +692 -98
  189. agenta/sdk/decorators/serving.py +20 -21
  190. agenta/sdk/decorators/tracing.py +176 -131
  191. agenta/sdk/engines/__init__.py +0 -0
  192. agenta/sdk/engines/running/__init__.py +0 -0
  193. agenta/sdk/engines/running/utils.py +17 -0
  194. agenta/sdk/engines/tracing/__init__.py +1 -0
  195. agenta/sdk/engines/tracing/attributes.py +185 -0
  196. agenta/sdk/engines/tracing/conventions.py +49 -0
  197. agenta/sdk/engines/tracing/exporters.py +130 -0
  198. agenta/sdk/engines/tracing/inline.py +1154 -0
  199. agenta/sdk/engines/tracing/processors.py +190 -0
  200. agenta/sdk/engines/tracing/propagation.py +102 -0
  201. agenta/sdk/engines/tracing/spans.py +136 -0
  202. agenta/sdk/engines/tracing/tracing.py +324 -0
  203. agenta/sdk/evaluations/__init__.py +2 -0
  204. agenta/sdk/evaluations/metrics.py +37 -0
  205. agenta/sdk/evaluations/preview/__init__.py +0 -0
  206. agenta/sdk/evaluations/preview/evaluate.py +765 -0
  207. agenta/sdk/evaluations/preview/utils.py +861 -0
  208. agenta/sdk/evaluations/results.py +66 -0
  209. agenta/sdk/evaluations/runs.py +153 -0
  210. agenta/sdk/evaluations/scenarios.py +48 -0
  211. agenta/sdk/litellm/litellm.py +12 -0
  212. agenta/sdk/litellm/mockllm.py +6 -8
  213. agenta/sdk/litellm/mocks/__init__.py +5 -5
  214. agenta/sdk/managers/applications.py +304 -0
  215. agenta/sdk/managers/config.py +2 -2
  216. agenta/sdk/managers/evaluations.py +0 -0
  217. agenta/sdk/managers/evaluators.py +303 -0
  218. agenta/sdk/managers/secrets.py +161 -24
  219. agenta/sdk/managers/shared.py +3 -1
  220. agenta/sdk/managers/testsets.py +441 -0
  221. agenta/sdk/managers/vault.py +3 -3
  222. agenta/sdk/middleware/auth.py +0 -176
  223. agenta/sdk/middleware/vault.py +203 -8
  224. agenta/sdk/middlewares/__init__.py +0 -0
  225. agenta/sdk/middlewares/routing/__init__.py +0 -0
  226. agenta/sdk/middlewares/routing/auth.py +263 -0
  227. agenta/sdk/middlewares/routing/cors.py +30 -0
  228. agenta/sdk/middlewares/routing/otel.py +29 -0
  229. agenta/sdk/middlewares/running/__init__.py +0 -0
  230. agenta/sdk/middlewares/running/normalizer.py +321 -0
  231. agenta/sdk/middlewares/running/resolver.py +161 -0
  232. agenta/sdk/middlewares/running/vault.py +140 -0
  233. agenta/sdk/models/__init__.py +0 -0
  234. agenta/sdk/models/blobs.py +33 -0
  235. agenta/sdk/models/evaluations.py +119 -0
  236. agenta/sdk/models/git.py +126 -0
  237. agenta/sdk/models/shared.py +167 -0
  238. agenta/sdk/models/testsets.py +163 -0
  239. agenta/sdk/models/tracing.py +202 -0
  240. agenta/sdk/models/workflows.py +753 -0
  241. agenta/sdk/tracing/exporters.py +67 -17
  242. agenta/sdk/tracing/processors.py +97 -0
  243. agenta/sdk/tracing/propagation.py +3 -1
  244. agenta/sdk/tracing/spans.py +4 -0
  245. agenta/sdk/tracing/tracing.py +13 -13
  246. agenta/sdk/types.py +211 -17
  247. agenta/sdk/utils/cache.py +1 -1
  248. agenta/sdk/utils/client.py +38 -0
  249. agenta/sdk/utils/helpers.py +13 -12
  250. agenta/sdk/utils/logging.py +18 -78
  251. agenta/sdk/utils/references.py +23 -0
  252. agenta/sdk/workflows/builtin.py +600 -0
  253. agenta/sdk/workflows/configurations.py +22 -0
  254. agenta/sdk/workflows/errors.py +292 -0
  255. agenta/sdk/workflows/handlers.py +1791 -0
  256. agenta/sdk/workflows/interfaces.py +948 -0
  257. agenta/sdk/workflows/sandbox.py +118 -0
  258. agenta/sdk/workflows/utils.py +303 -6
  259. {agenta-0.57.0.dist-info → agenta-0.63.2.dist-info}/METADATA +33 -30
  260. agenta-0.63.2.dist-info/RECORD +421 -0
  261. agenta/sdk/middleware/adapt.py +0 -253
  262. agenta/sdk/middleware/base.py +0 -40
  263. agenta/sdk/middleware/flags.py +0 -40
  264. agenta/sdk/workflows/types.py +0 -472
  265. agenta-0.57.0.dist-info/RECORD +0 -371
  266. /agenta/sdk/{workflows → engines/running}/registry.py +0 -0
  267. {agenta-0.57.0.dist-info → agenta-0.63.2.dist-info}/WHEEL +0 -0
@@ -1,472 +0,0 @@
1
- # - oss.src.core.shared.dtos ---------------------------------------------------
2
-
3
-
4
- from typing import Optional, Dict, List, Union
5
- from uuid import UUID
6
- from datetime import datetime
7
-
8
- from typing_extensions import TypeAliasType
9
- from pydantic import BaseModel
10
-
11
-
12
- BoolJson: TypeAliasType = TypeAliasType(
13
- "BoolJson",
14
- Union[bool, Dict[str, "BoolJson"]],
15
- )
16
-
17
- StringJson: TypeAliasType = TypeAliasType(
18
- "StringJson",
19
- Union[str, Dict[str, "StringJson"]],
20
- )
21
-
22
- FullJson: TypeAliasType = TypeAliasType(
23
- "FullJson",
24
- Union[str, int, float, bool, None, Dict[str, "FullJson"], List["FullJson"]],
25
- )
26
-
27
- NumericJson: TypeAliasType = TypeAliasType(
28
- "NumericJson",
29
- Union[int, float, Dict[str, "NumericJson"]],
30
- )
31
-
32
- NoListJson: TypeAliasType = TypeAliasType(
33
- "NoListJson",
34
- Union[str, int, float, bool, None, Dict[str, "NoListJson"]],
35
- )
36
-
37
- LabelJson: TypeAliasType = TypeAliasType(
38
- "LabelJson",
39
- Union[bool, str, Dict[str, "LabelJson"]],
40
- )
41
-
42
- Json = Dict[str, FullJson]
43
-
44
- Data = Dict[str, FullJson]
45
-
46
- Meta = Dict[str, FullJson]
47
-
48
- Tags = Dict[str, LabelJson]
49
-
50
- Flags = Dict[str, LabelJson]
51
-
52
- Hashes = Dict[str, StringJson]
53
-
54
- Metrics = Dict[str, NumericJson]
55
-
56
-
57
- class Metadata(BaseModel):
58
- flags: Optional[Flags] = None
59
- meta: Optional[Meta] = None
60
- tags: Optional[Tags] = None
61
-
62
-
63
- class Lifecycle(BaseModel):
64
- created_at: Optional[datetime] = None
65
- updated_at: Optional[datetime] = None
66
- deleted_at: Optional[datetime] = None
67
-
68
- created_by_id: Optional[UUID] = None
69
- updated_by_id: Optional[UUID] = None
70
- deleted_by_id: Optional[UUID] = None
71
-
72
-
73
- class TraceID(BaseModel):
74
- trace_id: Optional[str] = None
75
-
76
-
77
- class SpanID(BaseModel):
78
- span_id: Optional[str] = None
79
-
80
-
81
- class Identifier(BaseModel):
82
- id: Optional[UUID] = None
83
-
84
-
85
- class Slug(BaseModel):
86
- slug: Optional[str] = None
87
-
88
-
89
- class Version(BaseModel):
90
- version: Optional[str] = None
91
-
92
-
93
- class Header(BaseModel):
94
- name: Optional[str] = None
95
- description: Optional[str] = None
96
-
97
-
98
- class Reference(Identifier, Slug, Version):
99
- pass
100
-
101
-
102
- class Link(TraceID, SpanID):
103
- pass
104
-
105
-
106
- def sync_alias(primary: str, alias: str, instance: BaseModel) -> None:
107
- primary_val = getattr(instance, primary)
108
- alias_val = getattr(instance, alias)
109
-
110
- if primary_val and alias_val is None:
111
- object.__setattr__(instance, alias, primary_val)
112
- elif alias_val and primary_val is None:
113
- object.__setattr__(instance, primary, alias_val)
114
-
115
-
116
- class AliasConfig(BaseModel):
117
- model_config = {
118
- "populate_by_name": True,
119
- "from_attributes": True,
120
- }
121
-
122
-
123
- class Status(BaseModel):
124
- code: Optional[int] = 500
125
- message: Optional[str] = "Please try again later."
126
-
127
-
128
- Mappings = Dict[str, str]
129
-
130
- Schema = Dict[str, FullJson]
131
-
132
-
133
- # ------------------------------------------------------------------------------
134
-
135
- # - oss.src.core.git.dtos ------------------------------------------------------
136
-
137
-
138
- from typing import Optional, List
139
- from uuid import UUID
140
- from datetime import datetime
141
-
142
- from pydantic import BaseModel
143
-
144
-
145
- class Commit(BaseModel):
146
- author: Optional[UUID] = None
147
- date: Optional[datetime] = None
148
- message: Optional[str] = None
149
-
150
-
151
- class Revision(Identifier, Slug, Version, Lifecycle, Header, Metadata, Commit):
152
- data: Optional[Data] = None
153
-
154
- artifact_id: Optional[UUID] = None
155
- variant_id: Optional[UUID] = None
156
-
157
-
158
- # ------------------------------------------------------------------------------
159
-
160
- # - oss.src.core.tracing.dtos --------------------------------------------------
161
-
162
- import random
163
- import string
164
- from enum import Enum
165
- from datetime import datetime, timezone
166
- from typing import List, Dict, Any, Union, Optional
167
-
168
- from pydantic import BaseModel, model_validator, Field
169
-
170
-
171
- class TraceType(Enum):
172
- INVOCATION = "invocation"
173
- ANNOTATION = "annotation"
174
- UNKNOWN = "unknown"
175
-
176
-
177
- class SpanType(Enum):
178
- AGENT = "agent"
179
- CHAIN = "chain"
180
- WORKFLOW = "workflow"
181
- TASK = "task"
182
- TOOL = "tool"
183
- EMBEDDING = "embedding"
184
- QUERY = "query"
185
- LLM = "llm"
186
- COMPLETION = "completion"
187
- CHAT = "chat"
188
- RERANK = "rerank"
189
- UNKNOWN = "unknown"
190
-
191
-
192
- class AgMetricEntryAttributes(BaseModel):
193
- cumulative: Optional[Metrics] = None
194
- incremental: Optional[Metrics] = None
195
-
196
- model_config = {"ser_json_exclude_none": True}
197
-
198
-
199
- class AgMetricsAttributes(BaseModel):
200
- duration: Optional[AgMetricEntryAttributes] = None
201
- errors: Optional[AgMetricEntryAttributes] = None
202
- tokens: Optional[AgMetricEntryAttributes] = None
203
- costs: Optional[AgMetricEntryAttributes] = None
204
-
205
- model_config = {"ser_json_exclude_none": True}
206
-
207
-
208
- class AgTypeAttributes(BaseModel):
209
- trace: Optional[TraceType] = TraceType.INVOCATION
210
- span: Optional[SpanType] = SpanType.TASK
211
-
212
- model_config = {"ser_json_exclude_none": True}
213
-
214
-
215
- class AgDataAttributes(BaseModel):
216
- inputs: Optional[Dict[str, Any]] = None
217
- outputs: Optional[Any] = None
218
- internals: Optional[Dict[str, Any]] = None
219
-
220
- model_config = {"ser_json_exclude_none": True}
221
-
222
-
223
- class AgAttributes(BaseModel):
224
- type: AgTypeAttributes = Field(default_factory=AgTypeAttributes)
225
- data: AgDataAttributes = Field(default_factory=AgDataAttributes)
226
-
227
- metrics: Optional[AgMetricsAttributes] = None
228
- flags: Optional[Flags] = None
229
- tags: Optional[Tags] = None
230
- meta: Optional[Meta] = None
231
- exception: Optional[Data] = None
232
- references: Optional[Dict[str, "OTelReference"]] = None
233
- unsupported: Optional[Data] = None
234
-
235
- model_config = {"ser_json_exclude_none": True}
236
-
237
-
238
- class OTelStatusCode(Enum):
239
- STATUS_CODE_UNSET = "STATUS_CODE_UNSET"
240
- STATUS_CODE_OK = "STATUS_CODE_OK"
241
- STATUS_CODE_ERROR = "STATUS_CODE_ERROR"
242
-
243
-
244
- class OTelSpanKind(Enum):
245
- SPAN_KIND_UNSPECIFIED = "SPAN_KIND_UNSPECIFIED"
246
- SPAN_KIND_INTERNAL = "SPAN_KIND_INTERNAL"
247
- SPAN_KIND_SERVER = "SPAN_KIND_SERVER"
248
- SPAN_KIND_CLIENT = "SPAN_KIND_CLIENT"
249
- SPAN_KIND_PRODUCER = "SPAN_KIND_PRODUCER"
250
- SPAN_KIND_CONSUMER = "SPAN_KIND_CONSUMER"
251
-
252
-
253
- OTelAttributes = Json
254
- OTelMetrics = Metrics
255
- OTelTags = Tags
256
-
257
-
258
- class OTelEvent(BaseModel):
259
- name: str
260
- timestamp: Union[datetime, int]
261
-
262
- attributes: Optional[OTelAttributes] = None
263
-
264
-
265
- OTelEvents = List[OTelEvent]
266
-
267
-
268
- class OTelHash(Identifier):
269
- attributes: Optional[OTelAttributes] = None
270
-
271
-
272
- OTelHashes = List[OTelHash]
273
-
274
-
275
- class OTelLink(TraceID, SpanID):
276
- attributes: Optional[OTelAttributes] = None
277
-
278
-
279
- OTelLinks = List[OTelLink]
280
-
281
-
282
- class OTelReference(Reference):
283
- attributes: Optional[OTelAttributes] = None
284
-
285
-
286
- OTelReferences = List[OTelReference]
287
-
288
-
289
- class OTelSpansTree(BaseModel):
290
- spans: Optional["OTelNestedSpans"] = None
291
-
292
-
293
- OTelSpansTrees = List[OTelSpansTree]
294
-
295
-
296
- class OTelFlatSpan(Lifecycle):
297
- trace_id: str
298
- span_id: str
299
- parent_id: Optional[str] = None
300
-
301
- trace_type: Optional[TraceType] = None
302
- span_type: Optional[SpanType] = None
303
-
304
- span_kind: Optional[OTelSpanKind] = None
305
- span_name: Optional[str] = None
306
-
307
- start_time: Optional[Union[datetime, int]] = None
308
- end_time: Optional[Union[datetime, int]] = None
309
-
310
- status_code: Optional[OTelStatusCode] = None
311
- status_message: Optional[str] = None
312
-
313
- attributes: Optional[OTelAttributes] = None
314
- references: Optional[OTelReferences] = None
315
- links: Optional[OTelLinks] = None
316
- hashes: Optional[OTelHashes] = None
317
-
318
- exception: Optional[Data] = None
319
-
320
- events: Optional[OTelEvents] = None
321
-
322
- @model_validator(mode="after")
323
- def set_defaults(self):
324
- if self.trace_type is None:
325
- self.trace_type = TraceType.INVOCATION
326
- if self.span_type is None:
327
- self.span_type = SpanType.TASK
328
- if self.span_kind is None:
329
- self.span_kind = OTelSpanKind.SPAN_KIND_UNSPECIFIED
330
- if self.status_code is None:
331
- self.status_code = OTelStatusCode.STATUS_CODE_UNSET
332
- if self.end_time is None and self.start_time is not None:
333
- self.end_time = self.start_time
334
- if self.start_time is None and self.end_time is not None:
335
- self.start_time = self.end_time
336
- if self.start_time is None and self.end_time is None:
337
- now = datetime.now(timezone.utc)
338
- self.start_time = now
339
- self.end_time = now
340
- if self.span_name is None:
341
- self.span_name = "".join(
342
- random.choices(string.ascii_letters + string.digits, k=8)
343
- )
344
- return self
345
-
346
-
347
- class OTelSpan(OTelFlatSpan, OTelSpansTree):
348
- pass
349
-
350
-
351
- OTelFlatSpans = List[OTelFlatSpan]
352
- OTelNestedSpans = Dict[str, Union[OTelSpan, List[OTelSpan]]]
353
- OTelTraceTree = Dict[str, OTelSpansTree]
354
- OTelTraceTrees = List[OTelTraceTree]
355
- OTelSpans = List[OTelSpan]
356
-
357
-
358
- Attributes = OTelAttributes
359
- Trace = OTelTraceTree
360
-
361
-
362
- # ------------------------------------------------------------------------------
363
-
364
- # - oss.src.core.workflows.dtos ------------------------------------------------
365
-
366
-
367
- from typing import Optional, Dict
368
- from uuid import UUID
369
-
370
- from pydantic import BaseModel, Field, model_validator
371
-
372
-
373
- class WorkflowIdAlias(AliasConfig):
374
- workflow_id: Optional[UUID] = None
375
- artifact_id: Optional[UUID] = Field(
376
- default=None,
377
- exclude=True,
378
- alias="workflow_id",
379
- )
380
-
381
-
382
- class WorkflowVariantIdAlias(AliasConfig):
383
- workflow_variant_id: Optional[UUID] = None
384
- variant_id: Optional[UUID] = Field(
385
- default=None,
386
- exclude=True,
387
- alias="workflow_variant_id",
388
- )
389
-
390
-
391
- class WorkflowFlags(BaseModel):
392
- is_custom: Optional[bool] = None
393
- is_evaluator: Optional[bool] = None
394
- is_human: Optional[bool] = None
395
-
396
-
397
- class WorkflowServiceVersion(BaseModel):
398
- version: Optional[str] = None
399
-
400
-
401
- class WorkflowServiceInterface(WorkflowServiceVersion):
402
- uri: Optional[str] = None # str (Enum) w/ validation
403
- url: Optional[str] = None # str w/ validation
404
- headers: Optional[
405
- Dict[str, Union[Reference, str]] # either hardcoded or a secret
406
- ] = None
407
-
408
- schemas: Optional[Schema] = None # json-schema instead of pydantic
409
- mappings: Optional[Mappings] = None # used in the workflow interface
410
-
411
-
412
- class WorkflowServiceConfiguration(WorkflowServiceInterface):
413
- script: Optional[str] = None # str w/ validation
414
- parameters: Optional[Data] = None # configuration values
415
-
416
-
417
- class WorkflowRevisionData(WorkflowServiceConfiguration):
418
- pass
419
-
420
-
421
- class WorkflowRevision(
422
- Revision,
423
- WorkflowIdAlias,
424
- WorkflowVariantIdAlias,
425
- ):
426
- flags: Optional[WorkflowFlags] = None
427
-
428
- data: Optional[WorkflowRevisionData] = None
429
-
430
- def model_post_init(self, __context) -> None:
431
- sync_alias("workflow_id", "artifact_id", self)
432
- sync_alias("workflow_variant_id", "variant_id", self)
433
-
434
-
435
- class WorkflowServiceData(BaseModel):
436
- inputs: Optional[Data] = None
437
- outputs: Optional[Union[str, Data]] = None
438
- trace: Optional[Trace] = None
439
- trace_outputs: Optional[Union[str, Data]] = None
440
- traces: Optional[Dict[str, Trace]] = None
441
- traces_outputs: Optional[Dict[str, Union[str, Data]]] = None
442
-
443
-
444
- class WorkflowServiceRequest(Version, Metadata):
445
- data: Optional[WorkflowServiceData] = None
446
-
447
- path: Optional[str] = "/"
448
- method: Optional[str] = "invoke"
449
-
450
- references: Optional[Dict[str, Reference]] = None
451
- links: Optional[Dict[str, Link]] = None
452
-
453
- # secrets: Optional[Dict[str, Secret]] = None
454
- credentials: Optional[str] = None
455
-
456
-
457
- class WorkflowServiceResponse(Identifier, Version):
458
- data: Optional[WorkflowServiceData] = None
459
-
460
- links: Optional[Dict[str, Link]] = None
461
-
462
- status: Optional[Status] = None # = Status()
463
-
464
-
465
- # ------------------------------------------------------------------------------
466
-
467
- from typing import Callable, Awaitable
468
-
469
- WorkflowServiceHandler = Callable[
470
- [WorkflowServiceRequest, WorkflowRevision],
471
- Awaitable[WorkflowServiceResponse],
472
- ]