jaf-py 2.4.7__tar.gz → 2.4.8__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.
- {jaf_py-2.4.7/jaf_py.egg-info → jaf_py-2.4.8}/PKG-INFO +1 -1
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/tracing.py +11 -10
- {jaf_py-2.4.7 → jaf_py-2.4.8/jaf_py.egg-info}/PKG-INFO +1 -1
- {jaf_py-2.4.7 → jaf_py-2.4.8}/pyproject.toml +1 -1
- {jaf_py-2.4.7 → jaf_py-2.4.8}/LICENSE +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/README.md +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/agent.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/agent_card.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/client.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/examples/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/examples/client_example.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/examples/integration_example.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/examples/rag_demo/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/examples/server_demo/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/examples/server_example.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/cleanup.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/factory.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/providers/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/providers/composite.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/providers/in_memory.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/providers/postgres.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/providers/redis.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/serialization.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/tests/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/tests/run_comprehensive_tests.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/tests/test_cleanup.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/tests/test_serialization.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/tests/test_stress_concurrency.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/tests/test_task_lifecycle.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/memory/types.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/protocol.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/server.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/standalone_client.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/tests/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/tests/run_tests.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/tests/test_agent.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/tests/test_client.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/tests/test_integration.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/tests/test_protocol.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/tests/test_types.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/a2a/types.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/cli.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/agent_tool.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/analytics.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/composition.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/engine.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/errors.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/guardrails.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/parallel_agents.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/performance.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/proxy.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/proxy_helpers.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/state.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/streaming.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/tool_results.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/tools.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/types.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/core/workflows.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/exceptions.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/memory/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/memory/approval_storage.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/memory/factory.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/memory/providers/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/memory/providers/in_memory.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/memory/providers/postgres.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/memory/providers/redis.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/memory/types.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/memory/utils.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/plugins/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/plugins/base.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/policies/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/policies/handoff.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/policies/validation.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/providers/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/providers/mcp.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/providers/model.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/server/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/server/main.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/server/server.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/server/types.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/utils/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/utils/attachments.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/utils/document_processor.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/visualization/__init__.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/visualization/example.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/visualization/functional_core.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/visualization/graphviz.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/visualization/imperative_shell.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf/visualization/types.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf_py.egg-info/SOURCES.txt +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf_py.egg-info/dependency_links.txt +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf_py.egg-info/entry_points.txt +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf_py.egg-info/requires.txt +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/jaf_py.egg-info/top_level.txt +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/setup.cfg +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/setup.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_a2a_deep.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_a2a_examples.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_api_reference_examples.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_attachments.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_callback_system_examples.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_coffee_tool.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_conversation_id_fix.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_deployment_examples.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_docs_code_examples.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_engine.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_engine_manual.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_error_handling_examples.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_getting_started_examples.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_manual.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_math_tool.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_mcp_comprehensive.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_mcp_docs.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_mcp_real_functionality.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_mcp_transports.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_memory_system_examples.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_model_providers_examples.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_property_based.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_proxy_simple.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_redis_fixes.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_redis_memory.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_server_api_examples.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_session_continuity.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_streamable_http_mcp_example.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_timeout_functionality.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_tool_integration.py +0 -0
- {jaf_py-2.4.7 → jaf_py-2.4.8}/tests/test_validation.py +0 -0
|
@@ -341,7 +341,7 @@ class LangfuseTraceCollector:
|
|
|
341
341
|
public_key=public_key,
|
|
342
342
|
secret_key=secret_key,
|
|
343
343
|
host=host,
|
|
344
|
-
release="jaf-py-v2.
|
|
344
|
+
release="jaf-py-v2.4.8"
|
|
345
345
|
)
|
|
346
346
|
self.active_spans: Dict[str, Any] = {}
|
|
347
347
|
self.trace_spans: Dict[TraceId, Any] = {}
|
|
@@ -399,15 +399,15 @@ class LangfuseTraceCollector:
|
|
|
399
399
|
print(f"[LANGFUSE DEBUG] Found user_query from history: {user_query}")
|
|
400
400
|
break
|
|
401
401
|
|
|
402
|
-
# Try to extract user_id from
|
|
403
|
-
if hasattr(context, '
|
|
404
|
-
|
|
405
|
-
print(f"[LANGFUSE DEBUG] Found
|
|
406
|
-
if isinstance(
|
|
407
|
-
user_id =
|
|
402
|
+
# Try to extract user_id from user_info
|
|
403
|
+
if hasattr(context, 'user_info'):
|
|
404
|
+
user_info = context.user_info
|
|
405
|
+
print(f"[LANGFUSE DEBUG] Found user_info: {type(user_info)}")
|
|
406
|
+
if isinstance(user_info, dict):
|
|
407
|
+
user_id = user_info.get("email") or user_info.get("username")
|
|
408
408
|
print(f"[LANGFUSE DEBUG] Extracted user_id: {user_id}")
|
|
409
|
-
elif hasattr(
|
|
410
|
-
user_id =
|
|
409
|
+
elif hasattr(user_info, 'email'):
|
|
410
|
+
user_id = user_info.email
|
|
411
411
|
print(f"[LANGFUSE DEBUG] Extracted user_id from attr: {user_id}")
|
|
412
412
|
|
|
413
413
|
# Extract conversation history and current user query from messages
|
|
@@ -524,7 +524,8 @@ class LangfuseTraceCollector:
|
|
|
524
524
|
"agent_name": event.data.get("agent_name", "analytics_agent_jaf"),
|
|
525
525
|
"conversation_history": conversation_history,
|
|
526
526
|
"tool_calls": [],
|
|
527
|
-
"tool_results": []
|
|
527
|
+
"tool_results": [],
|
|
528
|
+
"user_info": event.data.get("context").user_info if event.data.get("context") and hasattr(event.data.get("context"), 'user_info') else None
|
|
528
529
|
}
|
|
529
530
|
)
|
|
530
531
|
self.trace_spans[trace_id] = trace
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "jaf-py"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.8"
|
|
8
8
|
description = "A purely functional agent framework with immutable state and composable tools - Python implementation"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
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
|
|
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
|