agentx-python 0.6.26__tar.gz → 0.6.27__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agentx_python-0.6.26/agentx_python.egg-info → agentx_python-0.6.27}/PKG-INFO +1 -1
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/tracing/tracer.py +31 -3
- agentx_python-0.6.27/agentx/version.py +1 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27/agentx_python.egg-info}/PKG-INFO +1 -1
- agentx_python-0.6.26/agentx/version.py +0 -1
- {agentx_python-0.6.26 → agentx_python-0.6.27}/LICENSE +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/README.md +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/__init__.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/agentx.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/cli.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/__init__.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/_term.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/adapters/__init__.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/adapters/http_endpoint.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/adapters/precomputed.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/adapters/raw.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/client.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/datasets.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/evaluation_settings.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/models.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/prompts.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/redaction.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/reporting.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/results.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/runner.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/evaluations/tracing.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/exceptions.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/feedback.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/__init__.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/_traced_call.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/anthropic.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/autogen.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/crewai.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/databricks.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/google_adk.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/google_genai.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/langchain.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/litellm.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/llamaindex.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/moveworks.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/openai.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/integrations/openai_agents.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/monitor/__init__.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/monitor/client.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/monitor/models.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/monitor/online_evaluators.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/monitor/patterns.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/monitor/profile.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/monitor/signals.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/outcomes.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/py.typed +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/resources/__init__.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/resources/agent.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/resources/conversation.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/resources/workforce.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/tracing/__init__.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/tracing/ci_types.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/tracing/ingest_client.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx/util.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx_python.egg-info/SOURCES.txt +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx_python.egg-info/dependency_links.txt +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx_python.egg-info/entry_points.txt +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx_python.egg-info/not-zip-safe +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx_python.egg-info/requires.txt +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/agentx_python.egg-info/top_level.txt +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/setup.cfg +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/setup.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/tests/test_integration.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/tests/test_integrations.py +0 -0
- {agentx_python-0.6.26 → agentx_python-0.6.27}/tests/test_span_tree.py +0 -0
|
@@ -414,6 +414,7 @@ class _TraceSpan:
|
|
|
414
414
|
duration_ms=step.get("duration_ms"),
|
|
415
415
|
input=step.get("query"),
|
|
416
416
|
output=step.get("output"),
|
|
417
|
+
metadata={"kind": "retrieval"},
|
|
417
418
|
)
|
|
418
419
|
|
|
419
420
|
if self.input is None and input is not None:
|
|
@@ -561,6 +562,7 @@ class Tracer:
|
|
|
561
562
|
def __init__(self, ingest_client: IngestClient) -> None:
|
|
562
563
|
self._client = ingest_client
|
|
563
564
|
self._pending_tool_calls: List[Dict[str, Any]] = []
|
|
565
|
+
self._pending_retrievals: List[Dict[str, Any]] = []
|
|
564
566
|
self._local = threading.local()
|
|
565
567
|
|
|
566
568
|
# ------------------------------------------------------------------
|
|
@@ -736,12 +738,27 @@ class Tracer:
|
|
|
736
738
|
Manually record a knowledge-base / vector-store retrieval that an
|
|
737
739
|
auto-instrumented framework integration can't see on its own - e.g. a
|
|
738
740
|
hand-rolled RAG lookup wrapped around a raw Anthropic/OpenAI call or a
|
|
739
|
-
CrewAI kickoff. Sent as a real child-span row of the active span (see ``current_span``)
|
|
740
|
-
|
|
741
|
-
|
|
741
|
+
CrewAI kickoff. Sent as a real child-span row of the active span (see ``current_span``);
|
|
742
|
+
with no active span it queues and merges into the very next trace this tracer sends
|
|
743
|
+
(same behavior as ``record_tool_call``, covering the patched-client flow where the
|
|
744
|
+
retrieval runs just before a standalone ``messages.create()`` /
|
|
745
|
+
``chat.completions.create()`` call).
|
|
742
746
|
"""
|
|
743
747
|
active_span = self.current_span
|
|
744
748
|
if active_span is None:
|
|
749
|
+
latency_ms = (
|
|
750
|
+
int(duration_ms)
|
|
751
|
+
if duration_ms is not None
|
|
752
|
+
else int((end_time - start_time) * 1000)
|
|
753
|
+
if start_time is not None and end_time is not None
|
|
754
|
+
else None
|
|
755
|
+
)
|
|
756
|
+
self._pending_retrievals.append({
|
|
757
|
+
"name": name,
|
|
758
|
+
"query": _safe_serialize(query) if query is not None else None,
|
|
759
|
+
"output": _safe_serialize(output) if output is not None else None,
|
|
760
|
+
"duration_ms": latency_ms,
|
|
761
|
+
})
|
|
745
762
|
return
|
|
746
763
|
# The kind marker is what tells the engine (retrieval-context extraction for RAG
|
|
747
764
|
# judges) and the dashboard timeline that this span is a retrieval regardless of its
|
|
@@ -1104,6 +1121,17 @@ class Tracer:
|
|
|
1104
1121
|
# a projection that predates them would silently strip exactly the failure evidence.
|
|
1105
1122
|
wire["tool_calls"] = list(wire.get("tool_calls") or []) + [dict(t) for t in pending_tool_calls]
|
|
1106
1123
|
|
|
1124
|
+
# record_retrieval entries queued with no active span ride the root's
|
|
1125
|
+
# performance_summary.retrieval_steps - the same shape older flat traces used, which the
|
|
1126
|
+
# engine's retrieval-context extraction and the dashboard's references panel both read.
|
|
1127
|
+
pending_retrievals, self._pending_retrievals = self._pending_retrievals, []
|
|
1128
|
+
if pending_retrievals:
|
|
1129
|
+
summary = dict(wire.get("performance_summary") or {})
|
|
1130
|
+
summary["retrieval_steps"] = list(summary.get("retrieval_steps") or []) + [
|
|
1131
|
+
dict(r) for r in pending_retrievals
|
|
1132
|
+
]
|
|
1133
|
+
wire["performance_summary"] = summary
|
|
1134
|
+
|
|
1107
1135
|
return self._dispatch(wire, sync=sync)
|
|
1108
1136
|
|
|
1109
1137
|
def _dispatch(self, wire: Dict[str, Any], *, sync: bool = False) -> Optional[str]:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
VERSION = "0.6.27"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
VERSION = "0.6.26"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|