agenta 0.44.4__py3-none-any.whl → 0.45.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.
Potentially problematic release.
This version of agenta might be problematic. Click here for more details.
- agenta/sdk/decorators/routing.py +41 -11
- agenta/sdk/decorators/tracing.py +2 -2
- agenta/sdk/litellm/mockllm.py +12 -4
- agenta/sdk/litellm/mocks/__init__.py +22 -1
- agenta/sdk/managers/apps.py +0 -5
- agenta/sdk/middleware/config.py +15 -9
- agenta/sdk/tracing/inline.py +10 -2
- agenta/sdk/tracing/processors.py +31 -1
- agenta/sdk/tracing/tracing.py +83 -1
- agenta/sdk/types.py +2 -0
- {agenta-0.44.4.dist-info → agenta-0.45.1.dist-info}/METADATA +1 -1
- {agenta-0.44.4.dist-info → agenta-0.45.1.dist-info}/RECORD +13 -13
- {agenta-0.44.4.dist-info → agenta-0.45.1.dist-info}/WHEEL +0 -0
agenta/sdk/decorators/routing.py
CHANGED
|
@@ -363,20 +363,44 @@ class entrypoint:
|
|
|
363
363
|
tree = None
|
|
364
364
|
content_type = "text/plain"
|
|
365
365
|
tree_id = None
|
|
366
|
+
trace_id = None
|
|
367
|
+
span_id = None
|
|
366
368
|
|
|
367
369
|
with suppress():
|
|
368
370
|
if isinstance(result, (dict, list)):
|
|
369
371
|
content_type = "application/json"
|
|
370
372
|
data = self.patch_result(result)
|
|
371
373
|
|
|
372
|
-
|
|
374
|
+
(
|
|
375
|
+
tree,
|
|
376
|
+
tree_id,
|
|
377
|
+
trace_id,
|
|
378
|
+
span_id,
|
|
379
|
+
) = await self.fetch_inline_trace(inline)
|
|
373
380
|
|
|
374
381
|
try:
|
|
375
382
|
return BaseResponse(
|
|
376
|
-
data=data,
|
|
383
|
+
data=data,
|
|
384
|
+
tree=tree,
|
|
385
|
+
content_type=content_type,
|
|
386
|
+
tree_id=tree_id,
|
|
387
|
+
trace_id=trace_id,
|
|
388
|
+
span_id=span_id,
|
|
377
389
|
)
|
|
378
390
|
except: # pylint: disable=bare-except
|
|
379
|
-
|
|
391
|
+
try:
|
|
392
|
+
return BaseResponse(
|
|
393
|
+
data=data,
|
|
394
|
+
content_type=content_type,
|
|
395
|
+
tree_id=tree_id,
|
|
396
|
+
trace_id=trace_id,
|
|
397
|
+
span_id=span_id,
|
|
398
|
+
)
|
|
399
|
+
except: # pylint: disable=bare-except
|
|
400
|
+
return BaseResponse(
|
|
401
|
+
data=data,
|
|
402
|
+
content_type=content_type,
|
|
403
|
+
)
|
|
380
404
|
|
|
381
405
|
def handle_failure(
|
|
382
406
|
self,
|
|
@@ -444,8 +468,10 @@ class entrypoint:
|
|
|
444
468
|
|
|
445
469
|
link = context.link
|
|
446
470
|
|
|
447
|
-
|
|
448
|
-
tree_id =
|
|
471
|
+
_trace_id = link.get("trace_id") if link else None # in int format
|
|
472
|
+
tree_id = (
|
|
473
|
+
str(UUID(int=_trace_id)) if _trace_id else None
|
|
474
|
+
) # in uuid_as_str format
|
|
449
475
|
|
|
450
476
|
return tree_id
|
|
451
477
|
|
|
@@ -461,24 +487,28 @@ class entrypoint:
|
|
|
461
487
|
|
|
462
488
|
link = context.link
|
|
463
489
|
|
|
490
|
+
_trace_id = link.get("trace_id") if link else None # in int format
|
|
491
|
+
_span_id = link.get("span_id") if link else None # in int format
|
|
492
|
+
|
|
464
493
|
tree = None
|
|
465
|
-
|
|
466
|
-
|
|
494
|
+
tree_id = str(UUID(int=_trace_id)) if _trace_id else None
|
|
495
|
+
trace_id = UUID(int=_trace_id).hex if _trace_id else None
|
|
496
|
+
span_id = UUID(int=_span_id).hex[16:] if _span_id else None
|
|
467
497
|
|
|
468
|
-
if
|
|
498
|
+
if _trace_id is not None:
|
|
469
499
|
if inline:
|
|
470
500
|
remaining_steps = NOFSTEPS
|
|
471
501
|
while (
|
|
472
|
-
not ag.tracing.is_inline_trace_ready(
|
|
502
|
+
not ag.tracing.is_inline_trace_ready(_trace_id)
|
|
473
503
|
and remaining_steps > 0
|
|
474
504
|
):
|
|
475
505
|
await sleep(TIMESTEP)
|
|
476
506
|
|
|
477
507
|
remaining_steps -= 1
|
|
478
508
|
|
|
479
|
-
tree = ag.tracing.get_inline_trace(
|
|
509
|
+
tree = ag.tracing.get_inline_trace(_trace_id)
|
|
480
510
|
|
|
481
|
-
return tree, tree_id
|
|
511
|
+
return tree, tree_id, trace_id, span_id
|
|
482
512
|
|
|
483
513
|
# --- OpenAPI --- #
|
|
484
514
|
|
agenta/sdk/decorators/tracing.py
CHANGED
|
@@ -131,8 +131,8 @@ class instrument: # pylint: disable=invalid-name
|
|
|
131
131
|
|
|
132
132
|
if not context.link:
|
|
133
133
|
context.link = {
|
|
134
|
-
"
|
|
135
|
-
"
|
|
134
|
+
"trace_id": span.get_span_context().trace_id,
|
|
135
|
+
"span_id": span.get_span_context().span_id,
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
tracing_context.set(context)
|
agenta/sdk/litellm/mockllm.py
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
1
|
from typing import Optional, Protocol, Any
|
|
2
|
+
from os import environ
|
|
3
|
+
|
|
4
|
+
from agenta.sdk.utils.logging import get_module_logger
|
|
2
5
|
|
|
3
6
|
from agenta.sdk.litellm.mocks import MOCKS
|
|
4
7
|
from agenta.sdk.context.routing import routing_context
|
|
5
8
|
|
|
9
|
+
AGENTA_LITELLM_MOCK = environ.get("AGENTA_LITELLM_MOCK") or None
|
|
10
|
+
|
|
11
|
+
log = get_module_logger(__name__)
|
|
12
|
+
|
|
6
13
|
|
|
7
14
|
class LitellmProtocol(Protocol):
|
|
8
|
-
async def acompletion(self, *args: Any, **kwargs: Any) -> Any:
|
|
9
|
-
...
|
|
15
|
+
async def acompletion(self, *args: Any, **kwargs: Any) -> Any: ...
|
|
10
16
|
|
|
11
17
|
|
|
12
18
|
litellm: Optional[LitellmProtocol] = None # pylint: disable=invalid-name
|
|
13
19
|
|
|
14
20
|
|
|
15
21
|
async def acompletion(*args, **kwargs):
|
|
16
|
-
mock = routing_context.get().mock
|
|
22
|
+
mock = AGENTA_LITELLM_MOCK or routing_context.get().mock
|
|
17
23
|
|
|
18
24
|
if mock:
|
|
25
|
+
log.debug("Mocking litellm: %s.", mock)
|
|
26
|
+
|
|
19
27
|
if mock not in MOCKS:
|
|
20
|
-
|
|
28
|
+
mock = "hello"
|
|
21
29
|
|
|
22
30
|
return MOCKS[mock](*args, **kwargs)
|
|
23
31
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from typing import Callable
|
|
2
|
+
from asyncio import sleep
|
|
2
3
|
|
|
3
4
|
from pydantic import BaseModel
|
|
4
5
|
|
|
@@ -30,7 +31,26 @@ def hello_mock_response(*args, **kwargs) -> MockResponseModel:
|
|
|
30
31
|
def chat_mock_response(*args, **kwargs) -> MockResponseModel:
|
|
31
32
|
return MockResponseModel(
|
|
32
33
|
choices=[
|
|
33
|
-
MockChoiceModel(
|
|
34
|
+
MockChoiceModel(
|
|
35
|
+
message=MockMessageModel(
|
|
36
|
+
content="world",
|
|
37
|
+
role="assistant",
|
|
38
|
+
)
|
|
39
|
+
)
|
|
40
|
+
],
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def delay_mock_response(*args, **kwargs) -> MockResponseModel:
|
|
45
|
+
sleep(2)
|
|
46
|
+
|
|
47
|
+
return MockResponseModel(
|
|
48
|
+
choices=[
|
|
49
|
+
MockChoiceModel(
|
|
50
|
+
message=MockMessageModel(
|
|
51
|
+
content="delay",
|
|
52
|
+
)
|
|
53
|
+
)
|
|
34
54
|
],
|
|
35
55
|
)
|
|
36
56
|
|
|
@@ -38,4 +58,5 @@ def chat_mock_response(*args, **kwargs) -> MockResponseModel:
|
|
|
38
58
|
MOCKS: dict[str, Callable[..., MockResponseModel]] = {
|
|
39
59
|
"hello": hello_mock_response,
|
|
40
60
|
"chat": chat_mock_response,
|
|
61
|
+
"delay": delay_mock_response,
|
|
41
62
|
}
|
agenta/sdk/managers/apps.py
CHANGED
|
@@ -12,11 +12,6 @@ AppType = Literal["SERVICE:completion", "SERVICE:chat", "CUSTOM"]
|
|
|
12
12
|
DEFAULT_APP_TYPE = "SERVICE:completion"
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
AppType = Literal["SERVICE:completion", "SERVICE:chat", "CUSTOM"]
|
|
16
|
-
|
|
17
|
-
DEFAULT_APP_TYPE = "SERVICE:completion"
|
|
18
|
-
|
|
19
|
-
|
|
20
15
|
class AppManager:
|
|
21
16
|
@classmethod
|
|
22
17
|
@handle_exceptions()
|
agenta/sdk/middleware/config.py
CHANGED
|
@@ -92,15 +92,21 @@ class ConfigMiddleware(BaseHTTPMiddleware):
|
|
|
92
92
|
return parameters, references
|
|
93
93
|
|
|
94
94
|
config = {}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
95
|
+
|
|
96
|
+
is_test_path = request.url.path.endswith("/test")
|
|
97
|
+
are_refs_missing = not variant_ref and not environment_ref
|
|
98
|
+
should_fetch = not is_test_path or not are_refs_missing
|
|
99
|
+
|
|
100
|
+
if should_fetch:
|
|
101
|
+
async with httpx.AsyncClient() as client:
|
|
102
|
+
response = await client.post(
|
|
103
|
+
f"{self.host}/api/variants/configs/fetch",
|
|
104
|
+
headers=headers,
|
|
105
|
+
json=refs,
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
if response.status_code == 200:
|
|
109
|
+
config = response.json()
|
|
104
110
|
|
|
105
111
|
if not config:
|
|
106
112
|
config["application_ref"] = refs[
|
agenta/sdk/tracing/inline.py
CHANGED
|
@@ -160,6 +160,9 @@ class OTelExtraDTO(BaseModel):
|
|
|
160
160
|
|
|
161
161
|
|
|
162
162
|
class SpanDTO(BaseModel):
|
|
163
|
+
trace_id: str
|
|
164
|
+
span_id: str
|
|
165
|
+
|
|
163
166
|
scope: Optional[ProjectScopeDTO] = None
|
|
164
167
|
|
|
165
168
|
lifecycle: Optional[LifecycleDTO] = None
|
|
@@ -792,6 +795,9 @@ def _parse_from_attributes(
|
|
|
792
795
|
def parse_from_otel_span_dto(
|
|
793
796
|
otel_span_dto: OTelSpanDTO,
|
|
794
797
|
) -> SpanDTO:
|
|
798
|
+
trace_id = str(otel_span_dto.context.trace_id[2:])
|
|
799
|
+
span_id = str(otel_span_dto.context.span_id[2:])
|
|
800
|
+
|
|
795
801
|
lifecyle = LifecycleDTO(
|
|
796
802
|
created_at=datetime.now(),
|
|
797
803
|
)
|
|
@@ -800,7 +806,7 @@ def parse_from_otel_span_dto(
|
|
|
800
806
|
|
|
801
807
|
types = _parse_from_types(otel_span_dto)
|
|
802
808
|
|
|
803
|
-
tree_id = UUID(
|
|
809
|
+
tree_id = UUID(trace_id)
|
|
804
810
|
|
|
805
811
|
tree_type: str = types.get("tree")
|
|
806
812
|
|
|
@@ -809,7 +815,7 @@ def parse_from_otel_span_dto(
|
|
|
809
815
|
type=tree_type.lower() if tree_type else None,
|
|
810
816
|
)
|
|
811
817
|
|
|
812
|
-
node_id = UUID(
|
|
818
|
+
node_id = UUID(trace_id[16:] + span_id)
|
|
813
819
|
|
|
814
820
|
node_type = NodeType.TASK
|
|
815
821
|
try:
|
|
@@ -871,6 +877,8 @@ def parse_from_otel_span_dto(
|
|
|
871
877
|
)
|
|
872
878
|
|
|
873
879
|
span_dto = SpanDTO(
|
|
880
|
+
trace_id=trace_id,
|
|
881
|
+
span_id=span_id,
|
|
874
882
|
lifecycle=lifecyle,
|
|
875
883
|
root=root,
|
|
876
884
|
tree=tree,
|
agenta/sdk/tracing/processors.py
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from typing import Optional, Dict, List
|
|
2
|
+
from threading import Lock
|
|
2
3
|
|
|
3
4
|
from opentelemetry.baggage import get_all as get_baggage
|
|
4
5
|
from opentelemetry.context import Context
|
|
5
|
-
from opentelemetry.sdk.trace import Span
|
|
6
|
+
from opentelemetry.sdk.trace import Span, SpanProcessor
|
|
6
7
|
from opentelemetry.sdk.trace.export import (
|
|
7
8
|
SpanExporter,
|
|
8
9
|
ReadableSpan,
|
|
@@ -154,3 +155,32 @@ class TraceProcessor(BatchSpanProcessor):
|
|
|
154
155
|
# --- INLINE
|
|
155
156
|
|
|
156
157
|
return trace
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
# Internal storage for the last ended span context
|
|
161
|
+
_last_ended_span_context = None
|
|
162
|
+
_lock = Lock()
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def _set_last_ended(span_ctx) -> None:
|
|
166
|
+
"""Set the last ended span context"""
|
|
167
|
+
with _lock:
|
|
168
|
+
global _last_ended_span_context
|
|
169
|
+
_last_ended_span_context = span_ctx
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
def _get_last_ended():
|
|
173
|
+
"""Get the last ended span context"""
|
|
174
|
+
with _lock:
|
|
175
|
+
return _last_ended_span_context
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
class EndedSpanRecorder(SpanProcessor):
|
|
179
|
+
"""Records the last ended span context for later reference.
|
|
180
|
+
|
|
181
|
+
This allows accessing span information even after the span has been ended,
|
|
182
|
+
which is useful for linking annotations to auto-instrumented spans.
|
|
183
|
+
"""
|
|
184
|
+
|
|
185
|
+
def on_end(self, span):
|
|
186
|
+
_set_last_ended(span.get_span_context())
|
agenta/sdk/tracing/tracing.py
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
from typing import Optional, Any, Dict, Callable
|
|
2
2
|
from enum import Enum
|
|
3
|
+
from uuid import UUID
|
|
3
4
|
|
|
5
|
+
from pydantic import BaseModel
|
|
4
6
|
from httpx import get as check
|
|
5
7
|
|
|
8
|
+
|
|
6
9
|
from opentelemetry.trace import (
|
|
7
10
|
get_current_span,
|
|
8
11
|
set_tracer_provider,
|
|
@@ -10,13 +13,19 @@ from opentelemetry.trace import (
|
|
|
10
13
|
Status,
|
|
11
14
|
StatusCode,
|
|
12
15
|
)
|
|
16
|
+
from opentelemetry.sdk import trace
|
|
13
17
|
from opentelemetry.sdk.trace import Span, Tracer, TracerProvider
|
|
14
18
|
from opentelemetry.sdk.resources import Resource
|
|
15
19
|
|
|
20
|
+
|
|
16
21
|
from agenta.sdk.utils.singleton import Singleton
|
|
17
22
|
from agenta.sdk.utils.exceptions import suppress
|
|
18
23
|
from agenta.sdk.utils.logging import get_module_logger
|
|
19
|
-
from agenta.sdk.tracing.processors import
|
|
24
|
+
from agenta.sdk.tracing.processors import (
|
|
25
|
+
TraceProcessor,
|
|
26
|
+
EndedSpanRecorder,
|
|
27
|
+
_get_last_ended,
|
|
28
|
+
)
|
|
20
29
|
from agenta.sdk.tracing.exporters import InlineExporter, OTLPExporter
|
|
21
30
|
from agenta.sdk.tracing.spans import CustomSpan
|
|
22
31
|
from agenta.sdk.tracing.inline import parse_inline_trace
|
|
@@ -24,9 +33,27 @@ from agenta.sdk.tracing.conventions import Reference, is_valid_attribute_key
|
|
|
24
33
|
from agenta.sdk.tracing.propagation import extract, inject
|
|
25
34
|
from agenta.sdk.utils.cache import TTLLRUCache
|
|
26
35
|
|
|
36
|
+
from agenta.sdk.context.tracing import tracing_context
|
|
37
|
+
|
|
27
38
|
log = get_module_logger(__name__)
|
|
28
39
|
|
|
29
40
|
|
|
41
|
+
_original_init = trace.TracerProvider.__init__
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def patched_init(self, *args, **kwargs):
|
|
45
|
+
_original_init(self, *args, **kwargs)
|
|
46
|
+
self.add_span_processor(EndedSpanRecorder())
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
trace.TracerProvider.__init__ = patched_init
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class Link(BaseModel):
|
|
53
|
+
trace_id: str
|
|
54
|
+
span_id: str
|
|
55
|
+
|
|
56
|
+
|
|
30
57
|
class Tracing(metaclass=Singleton):
|
|
31
58
|
VERSION = "0.1.0"
|
|
32
59
|
|
|
@@ -242,6 +269,61 @@ class Tracing(metaclass=Singleton):
|
|
|
242
269
|
):
|
|
243
270
|
return inject(*args, **kwargs)
|
|
244
271
|
|
|
272
|
+
def get_current_span_context(self):
|
|
273
|
+
"""Get the current active span context if available.
|
|
274
|
+
|
|
275
|
+
Returns:
|
|
276
|
+
SpanContext or None if no active span
|
|
277
|
+
"""
|
|
278
|
+
span = get_current_span()
|
|
279
|
+
ctx = span.get_span_context()
|
|
280
|
+
return ctx if ctx and ctx.is_valid else None
|
|
281
|
+
|
|
282
|
+
def get_last_span_context(self):
|
|
283
|
+
"""Get the last closed span context if available.
|
|
284
|
+
|
|
285
|
+
This is useful for accessing span information after a span has closed,
|
|
286
|
+
particularly with auto-instrumentation libraries.
|
|
287
|
+
|
|
288
|
+
Returns:
|
|
289
|
+
SpanContext or None if no spans have been closed
|
|
290
|
+
"""
|
|
291
|
+
return _get_last_ended()
|
|
292
|
+
|
|
293
|
+
def get_span_context(self):
|
|
294
|
+
"""Get the most relevant span context.
|
|
295
|
+
|
|
296
|
+
First tries to get the current active span context.
|
|
297
|
+
If no active span exists, falls back to the last closed span.
|
|
298
|
+
|
|
299
|
+
Returns:
|
|
300
|
+
SpanContext or None if no relevant span context is available
|
|
301
|
+
"""
|
|
302
|
+
return self.get_current_span_context() or self.get_last_span_context()
|
|
303
|
+
|
|
304
|
+
def build_invocation_link(self, span_ctx=None) -> Optional[Link]:
|
|
305
|
+
"""
|
|
306
|
+
Builds a Link object containing the hex-formatted trace_id and span_id
|
|
307
|
+
from the current (or fallback last ended) span context.
|
|
308
|
+
Useful to link annotations to spans.
|
|
309
|
+
|
|
310
|
+
Args:
|
|
311
|
+
span_ctx: Optional SpanContext to convert to a Link
|
|
312
|
+
|
|
313
|
+
Returns:
|
|
314
|
+
Link object with trace_id and span_id or None if no valid context
|
|
315
|
+
"""
|
|
316
|
+
if span_ctx is None:
|
|
317
|
+
span_ctx = self.get_span_context()
|
|
318
|
+
|
|
319
|
+
if span_ctx and span_ctx.is_valid:
|
|
320
|
+
return Link(
|
|
321
|
+
trace_id=f"{span_ctx.trace_id:032x}",
|
|
322
|
+
span_id=f"{span_ctx.span_id:016x}",
|
|
323
|
+
)
|
|
324
|
+
|
|
325
|
+
return None
|
|
326
|
+
|
|
245
327
|
|
|
246
328
|
def get_tracer(
|
|
247
329
|
tracing: Tracing,
|
agenta/sdk/types.py
CHANGED
|
@@ -39,6 +39,8 @@ class BaseResponse(BaseModel):
|
|
|
39
39
|
content_type: Optional[str] = "string"
|
|
40
40
|
tree: Optional[AgentaNodesResponse] = None
|
|
41
41
|
tree_id: Optional[str] = None
|
|
42
|
+
trace_id: Optional[str] = None
|
|
43
|
+
span_id: Optional[str] = None
|
|
42
44
|
|
|
43
45
|
model_config = ConfigDict(use_enum_values=True, exclude_none=True)
|
|
44
46
|
|
|
@@ -206,14 +206,14 @@ agenta/sdk/context/exporting.py,sha256=16X8fgMhl58gehSlqANX97FiKxx4TkGiG4d2B0-7Z
|
|
|
206
206
|
agenta/sdk/context/routing.py,sha256=FEsjw8EttI1SMyUo96ptcUsvHJnhoKwdr1szlkxxJNU,598
|
|
207
207
|
agenta/sdk/context/tracing.py,sha256=xjErrXP1Nq1AfL-Cif1l-lNEfs12eQ3v_VCRgoKe7nY,743
|
|
208
208
|
agenta/sdk/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
209
|
-
agenta/sdk/decorators/routing.py,sha256=
|
|
210
|
-
agenta/sdk/decorators/tracing.py,sha256=
|
|
209
|
+
agenta/sdk/decorators/routing.py,sha256=L3o0Q9flBfb2UIfCIx0OWzkP0W-45_GQ3-Ri8phwNlU,25678
|
|
210
|
+
agenta/sdk/decorators/tracing.py,sha256=pABMVFtqD99W3ErqWDFUmymmXiXdzhdAJG01l-CTLVQ,10110
|
|
211
211
|
agenta/sdk/litellm/__init__.py,sha256=Bpz1gfHQc0MN1yolWcjifLWznv6GjHggvRGQSpxpihM,37
|
|
212
212
|
agenta/sdk/litellm/litellm.py,sha256=dCjw0H_jD3L3UQ3l9SbLm5dfeIGnel6dPtQYJ78beYM,10202
|
|
213
|
-
agenta/sdk/litellm/mockllm.py,sha256=
|
|
214
|
-
agenta/sdk/litellm/mocks/__init__.py,sha256=
|
|
213
|
+
agenta/sdk/litellm/mockllm.py,sha256=mu14jL-hk4OmzW5HdqX6T5_D5nYYhkQf4SVIZhdGdCc,894
|
|
214
|
+
agenta/sdk/litellm/mocks/__init__.py,sha256=BH92MtQNPLfbN6ERk13XuDjVnNHy9joi7E_I3heUDC4,1299
|
|
215
215
|
agenta/sdk/managers/__init__.py,sha256=SN-LRwG0pRRDV3u2Q4JiiSTigN3-mYpzGNM35RzT4mc,238
|
|
216
|
-
agenta/sdk/managers/apps.py,sha256=
|
|
216
|
+
agenta/sdk/managers/apps.py,sha256=BeAlTJlOOM0Wh_XWgjve65Mt-LwFgib_swu-1wvGQi4,2250
|
|
217
217
|
agenta/sdk/managers/config.py,sha256=Dl1L4KGvj3h_temzJzn7FVHacABRuB2Q7_x98EpZJQo,7494
|
|
218
218
|
agenta/sdk/managers/deployment.py,sha256=SEokjZeh6n7HRKZ92Y0WncdG49hIFx-Z3B3HAl2kmUg,1174
|
|
219
219
|
agenta/sdk/managers/secrets.py,sha256=QFWLQY3Enev187sNOvV3yBBYFwcPoDnInwgwlRD0SEw,7458
|
|
@@ -222,7 +222,7 @@ agenta/sdk/managers/variant.py,sha256=A5ga3mq3b0weUTXa9HO72MGaspthGcu1uK9K5OnP73
|
|
|
222
222
|
agenta/sdk/managers/vault.py,sha256=054ce9X_xKa2M4NtQWz-GugO6q_pYVWCP3IxbAJJcRw,337
|
|
223
223
|
agenta/sdk/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
224
224
|
agenta/sdk/middleware/auth.py,sha256=xS8lVlPmapvxz_bbZ2XPxcllA0kK7iFR8TMoMVymp4M,10156
|
|
225
|
-
agenta/sdk/middleware/config.py,sha256=
|
|
225
|
+
agenta/sdk/middleware/config.py,sha256=g3f81uywYCcgT_TSQxZ5O1Db9wGmPuRMlf-8WKqWqdA,7963
|
|
226
226
|
agenta/sdk/middleware/cors.py,sha256=q3r7lGkrIdMcT_vuhsburMcjG7pyl7w0ycxrIrGJ2e8,921
|
|
227
227
|
agenta/sdk/middleware/inline.py,sha256=ee8E4XBGcRSrHTvblqX1yRXuTN_sxLm7lY1jnywrBG8,901
|
|
228
228
|
agenta/sdk/middleware/mock.py,sha256=bCUN9iJBxePyN9MBwBpJs-_iCNkUQeUjIIu3WElS1oQ,759
|
|
@@ -233,12 +233,12 @@ agenta/sdk/tracing/__init__.py,sha256=rQNe5-zT5Kt7_CDhq-lnUIi1EYTBVzVf_MbfcIxVD9
|
|
|
233
233
|
agenta/sdk/tracing/attributes.py,sha256=DwjjOk3mGOvz0jYu8EYr3hhItvawK5GX80_MfciqPrc,5559
|
|
234
234
|
agenta/sdk/tracing/conventions.py,sha256=JBtznBXZ3aRkGKkLl7cPwdMNh3w1G-H2Ta2YrAxbr38,950
|
|
235
235
|
agenta/sdk/tracing/exporters.py,sha256=Vs1aQLRrWvYgWxjPmlfBWTN4wmUzBREqjTdIV1XcV9o,3251
|
|
236
|
-
agenta/sdk/tracing/inline.py,sha256=
|
|
237
|
-
agenta/sdk/tracing/processors.py,sha256=
|
|
236
|
+
agenta/sdk/tracing/inline.py,sha256=ShPAAjk_26I4hgrmC6y0n-I9gxB3Q4VeEYhhsLHInPU,31454
|
|
237
|
+
agenta/sdk/tracing/processors.py,sha256=vDzQItQnDG_bL5rWRZjh-8DOLcfhXJcMVCAbStiTVDA,5102
|
|
238
238
|
agenta/sdk/tracing/propagation.py,sha256=EeOqDMqnh_MoEhGd1do_vy_tQBYUcoC8kpLqVoZeqg0,2561
|
|
239
239
|
agenta/sdk/tracing/spans.py,sha256=nqUOjjirBxB8Eacv8Qj4Ra_6rknGi3lbJdNyKmk5ODQ,3707
|
|
240
|
-
agenta/sdk/tracing/tracing.py,sha256=
|
|
241
|
-
agenta/sdk/types.py,sha256=
|
|
240
|
+
agenta/sdk/tracing/tracing.py,sha256=Yv42drWc2tVu4YugHKWYsgTSf1y7Y9boYL8akxKT4eA,9503
|
|
241
|
+
agenta/sdk/types.py,sha256=Xpmm0D2pJKfoEWWXojvSIUEhU-kNrjF_eFmrPD4JYA4,19111
|
|
242
242
|
agenta/sdk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
243
243
|
agenta/sdk/utils/cache.py,sha256=69pQCtmh10DiYoOdKv4t2fCYDQCuWZtH4uy36kXewpw,1372
|
|
244
244
|
agenta/sdk/utils/constants.py,sha256=zW3R4rjXOo2L5lz6q84l_zYuOM9u4mpPRHw_B1Dr_hI,67
|
|
@@ -250,6 +250,6 @@ agenta/sdk/utils/logging.py,sha256=gBk2ecRvltN7f8qtnUHXBiZPWOdArN_b5civ_3w_Oek,8
|
|
|
250
250
|
agenta/sdk/utils/preinit.py,sha256=YlJL7RLfel0R7DFp-jK7OV-z4ZIQJM0oupYlk7g8b5o,1278
|
|
251
251
|
agenta/sdk/utils/singleton.py,sha256=17Ph7LGnnV8HkPjImruKita2ni03Ari5jr0jqm__4sc,312
|
|
252
252
|
agenta/sdk/utils/timing.py,sha256=nZR-kudVUtKFlHuBhztgSGxj7FVnCB4Uv6sfg-1dkrQ,1556
|
|
253
|
-
agenta-0.
|
|
254
|
-
agenta-0.
|
|
255
|
-
agenta-0.
|
|
253
|
+
agenta-0.45.1.dist-info/METADATA,sha256=mWM-73TJT8NOj9Lsf-vNfnXS8vWmnMGhKR9BnWEqq1Y,31418
|
|
254
|
+
agenta-0.45.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
255
|
+
agenta-0.45.1.dist-info/RECORD,,
|
|
File without changes
|