monocle-apptrace 0.5.2__tar.gz → 0.6.0__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.
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/.gitignore +6 -1
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/PKG-INFO +9 -77
- monocle_apptrace-0.6.0/README.md +28 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/pyproject.toml +18 -8
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/exporters/file_exporter.py +15 -2
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/common/instrumentor.py +1 -1
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/common/span_handler.py +8 -4
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/common/utils.py +10 -2
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/common/wrapper_method.py +5 -1
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/adk/_helper.py +6 -4
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/adk/entities/agent.py +12 -2
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/adk/entities/tool.py +8 -3
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/agents/_helper.py +5 -5
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/agents/entities/inference.py +22 -5
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/aiohttp/_helper.py +22 -7
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/aiohttp/entities/http.py +14 -3
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/azfunc/_helper.py +21 -11
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/azfunc/entities/http.py +7 -2
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/fastapi/_helper.py +19 -6
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/fastapi/entities/http.py +6 -2
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/fastapi/methods.py +23 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/finish_types.py +32 -1
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/flask/_helper.py +20 -6
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/flask/entities/http.py +7 -2
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/hugging_face/_helper.py +138 -0
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/hugging_face/entities/inference.py +97 -0
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/hugging_face/methods.py +23 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/lambdafunc/_helper.py +25 -14
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/lambdafunc/entities/http.py +7 -2
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/langgraph/_helper.py +4 -2
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/langgraph/entities/inference.py +8 -3
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/llamaindex/entities/agent.py +1 -1
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/mcp/_helper.py +6 -5
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/mcp/entities/inference.py +5 -0
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/mistral/_helper.py +223 -0
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/mistral/entities/inference.py +94 -0
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/mistral/entities/retrieval.py +41 -0
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/mistral/methods.py +58 -0
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/openai/entities/__init__.py +0 -0
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/teamsai/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/teamsai/_helper.py +2 -2
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/teamsai/entities/__init__.py +0 -0
- monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/teamsai/entities/inference/__init__.py +0 -0
- monocle_apptrace-0.5.2/NOTICE +0 -4
- monocle_apptrace-0.5.2/README.md +0 -96
- monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/fastapi/methods.py +0 -23
- monocle_apptrace-0.5.2/src/monocle_apptrace/mcp_server.py +0 -94
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/LICENSE +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace → monocle_apptrace-0.6.0/src}/README.md +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/__main__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/exporters/aws/s3_exporter.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/exporters/aws/s3_exporter_opendal.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/exporters/azure/blob_exporter.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/exporters/azure/blob_exporter_opendal.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/exporters/base_exporter.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/exporters/exporter_processor.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/exporters/monocle_exporters.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/exporters/okahu/okahu_exporter.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/common/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/common/constants.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/common/method_wrappers.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/common/scope_wrapper.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/common/tracing.md +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/common/wrapper.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/a2a/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/a2a/_helper.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/a2a/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/a2a/entities/inference.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/a2a/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/adk/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/adk/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/agents/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/agents/agents_processor.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/agents/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/agents/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/aiohttp/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/aiohttp/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/anthropic/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/anthropic/_helper.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/anthropic/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/anthropic/entities/inference.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/anthropic/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/azfunc/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/azfunc/wrapper.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/azureaiinference/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/azureaiinference/_helper.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/azureaiinference/entities/inference.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/azureaiinference/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/botocore/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/botocore/_helper.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/botocore/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/botocore/entities/inference.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/botocore/handlers/botocore_span_handler.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/botocore/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/fastapi/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/fastapi/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/flask/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/flask/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/gemini/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/gemini/_helper.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/gemini/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/gemini/entities/inference.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/gemini/entities/retrieval.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/gemini/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/haystack/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/haystack/_helper.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/haystack/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/haystack/entities/inference.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/haystack/entities/retrieval.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/haystack/methods.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/langchain → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/hugging_face}/__init__.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/langchain → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/hugging_face}/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/lambdafunc/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/lambdafunc/wrapper.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/langgraph → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/langchain}/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/langchain/_helper.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/langgraph → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/langchain}/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/langchain/entities/inference.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/langchain/entities/retrieval.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/langchain/methods.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/litellm → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/langgraph}/__init__.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/litellm → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/langgraph}/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/langgraph/langgraph_processor.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/langgraph/methods.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/llamaindex → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/litellm}/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/litellm/_helper.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/llamaindex → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/litellm}/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/litellm/entities/inference.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/litellm/methods.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/mcp → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/llamaindex}/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/llamaindex/_helper.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/mcp → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/llamaindex}/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/llamaindex/entities/inference.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/llamaindex/entities/retrieval.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/llamaindex/llamaindex_processor.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/llamaindex/methods.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/openai → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/mcp}/__init__.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/openai → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/mcp}/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/mcp/mcp_processor.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/mcp/methods.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/teamsai → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/mistral}/__init__.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/teamsai → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/mistral}/entities/__init__.py +0 -0
- {monocle_apptrace-0.5.2/src/monocle_apptrace/instrumentation/metamodel/teamsai/entities/inference → monocle_apptrace-0.6.0/src/monocle_apptrace/instrumentation/metamodel/openai}/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/openai/_helper.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/openai/entities/inference.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/openai/entities/retrieval.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/openai/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/requests/__init__.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/requests/_helper.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/requests/entities/http.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/requests/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/teamsai/entities/inference/actionplanner_output_processor.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/teamsai/entities/inference/teamsai_output_processor.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/teamsai/methods.py +0 -0
- {monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/instrumentation/metamodel/teamsai/sample.json +0 -0
|
@@ -1,31 +1,29 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: monocle_apptrace
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.6.0
|
|
4
4
|
Summary: package with monocle genAI tracing
|
|
5
5
|
Project-URL: Homepage, https://github.com/monocle2ai/monocle
|
|
6
6
|
Project-URL: Issues, https://github.com/monocle2ai/monocle/issues
|
|
7
7
|
Author-email: "Okahu Inc." <okahu-pypi@okahu.ai>
|
|
8
8
|
License: Apache-2.0
|
|
9
|
-
License-File: LICENSE
|
|
10
|
-
License-File: NOTICE
|
|
11
9
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
12
10
|
Classifier: Operating System :: OS Independent
|
|
13
11
|
Classifier: Programming Language :: Python :: 3
|
|
14
12
|
Requires-Python: >=3.8
|
|
15
|
-
Requires-Dist: click==8.2.1
|
|
16
|
-
Requires-Dist: mcp>=1.13.1
|
|
17
13
|
Requires-Dist: opentelemetry-api>=1.21.0
|
|
18
14
|
Requires-Dist: opentelemetry-instrumentation
|
|
19
15
|
Requires-Dist: opentelemetry-sdk>=1.21.0
|
|
20
|
-
Requires-Dist: pydantic>=2.11.7
|
|
21
16
|
Requires-Dist: requests
|
|
22
17
|
Requires-Dist: wrapt>=1.14.0
|
|
18
|
+
Provides-Extra: ai-test
|
|
19
|
+
Requires-Dist: bert-score; extra == 'ai-test'
|
|
20
|
+
Requires-Dist: transformers; extra == 'ai-test'
|
|
23
21
|
Provides-Extra: aws
|
|
24
22
|
Requires-Dist: boto3==1.37.24; extra == 'aws'
|
|
25
23
|
Provides-Extra: azure
|
|
26
24
|
Requires-Dist: azure-storage-blob==12.22.0; extra == 'azure'
|
|
27
25
|
Provides-Extra: dev
|
|
28
|
-
Requires-Dist: a2a-sdk==0.
|
|
26
|
+
Requires-Dist: a2a-sdk==0.3.6; extra == 'dev'
|
|
29
27
|
Requires-Dist: anthropic-haystack; extra == 'dev'
|
|
30
28
|
Requires-Dist: anthropic==0.57.1; extra == 'dev'
|
|
31
29
|
Requires-Dist: azure-storage-blob==12.22.0; extra == 'dev'
|
|
@@ -40,12 +38,13 @@ Requires-Dist: google-adk==1.10.0; extra == 'dev'
|
|
|
40
38
|
Requires-Dist: google-generativeai==0.8.5; extra == 'dev'
|
|
41
39
|
Requires-Dist: haystack-ai==2.3.0; extra == 'dev'
|
|
42
40
|
Requires-Dist: httpx==0.28.1; extra == 'dev'
|
|
41
|
+
Requires-Dist: huggingface-hub==0.35.3; extra == 'dev'
|
|
43
42
|
Requires-Dist: instructorembedding==1.0.1; extra == 'dev'
|
|
44
43
|
Requires-Dist: langchain-anthropic==0.3.13; extra == 'dev'
|
|
45
44
|
Requires-Dist: langchain-aws==0.2.23; extra == 'dev'
|
|
46
45
|
Requires-Dist: langchain-chroma==0.2.4; extra == 'dev'
|
|
47
46
|
Requires-Dist: langchain-community==0.3.24; extra == 'dev'
|
|
48
|
-
Requires-Dist: langchain-google-genai==2.
|
|
47
|
+
Requires-Dist: langchain-google-genai==2.0.10; extra == 'dev'
|
|
49
48
|
Requires-Dist: langchain-mcp-adapters==0.1.8; extra == 'dev'
|
|
50
49
|
Requires-Dist: langchain-mistralai==0.2.10; extra == 'dev'
|
|
51
50
|
Requires-Dist: langchain-openai==0.3.18; extra == 'dev'
|
|
@@ -64,6 +63,7 @@ Requires-Dist: llama-index-vector-stores-opensearch==0.6.0; extra == 'dev'
|
|
|
64
63
|
Requires-Dist: llama-index==0.13.0; extra == 'dev'
|
|
65
64
|
Requires-Dist: mcp==1.12.1; extra == 'dev'
|
|
66
65
|
Requires-Dist: mistral-haystack==0.0.2; extra == 'dev'
|
|
66
|
+
Requires-Dist: mistralai==1.9.9; extra == 'dev'
|
|
67
67
|
Requires-Dist: numpy==1.26.4; extra == 'dev'
|
|
68
68
|
Requires-Dist: openai-agents==0.2.6; extra == 'dev'
|
|
69
69
|
Requires-Dist: opendal==0.45.14; extra == 'dev'
|
|
@@ -80,42 +80,12 @@ Requires-Dist: types-requests==2.31.0.20240106; extra == 'dev'
|
|
|
80
80
|
Requires-Dist: uvicorn==0.35.0; extra == 'dev'
|
|
81
81
|
Description-Content-Type: text/markdown
|
|
82
82
|
|
|
83
|
-
# Monocle
|
|
83
|
+
# Monocle Apptrace
|
|
84
84
|
|
|
85
85
|
**Monocle** helps developers and platform engineers building or managing GenAI apps monitor these in prod by making it easy to instrument their code to capture traces that are compliant with open-source cloud-native observability ecosystem.
|
|
86
86
|
|
|
87
87
|
**Monocle** is a community-driven OSS framework for tracing GenAI app code governed as a [Linux Foundation AI & Data project](https://lfaidata.foundation/projects/monocle/).
|
|
88
88
|
|
|
89
|
-
## Why Monocle
|
|
90
|
-
|
|
91
|
-
Monocle is built for:
|
|
92
|
-
- **app developers** to trace their app code in any environment without lots of custom code decoration
|
|
93
|
-
- **platform engineers** to instrument apps in prod through wrapping instead of asking app devs to recode
|
|
94
|
-
- **GenAI component providers** to add observability features to their products
|
|
95
|
-
- **enterprises** to consume traces from GenAI apps in their existing open-source observability stack
|
|
96
|
-
|
|
97
|
-
Benefits:
|
|
98
|
-
- Monocle provides an implementation + package, not just a spec
|
|
99
|
-
- No expertise in OpenTelemetry spec required
|
|
100
|
-
- No bespoke implementation of that spec required
|
|
101
|
-
- No last-mile GenAI domain specific code required to instrument your app
|
|
102
|
-
- Monocle provides consistency
|
|
103
|
-
- Connect traces across app code executions, model inference or data retrievals
|
|
104
|
-
- No cleansing of telemetry data across GenAI component providers required
|
|
105
|
-
- Works the same in personal lab dev or org cloud prod environments
|
|
106
|
-
- Send traces to location that fits your scale, budget and observability stack
|
|
107
|
-
- Monocle is fully open source and community driven
|
|
108
|
-
- No vendor lock-in
|
|
109
|
-
- Implementation is transparent
|
|
110
|
-
- You can freely use or customize it to fit your needs
|
|
111
|
-
|
|
112
|
-
## What Monocle provides
|
|
113
|
-
|
|
114
|
-
- Easy to [use](#use-monocle) code instrumentation
|
|
115
|
-
- OpenTelemetry compatible format for [spans](src/monocle_apptrace/metamodel/spans/span_format.json).
|
|
116
|
-
- Community-curated and extensible [metamodel](src/monocle_apptrace/metamodel/README.md) for consisent tracing of GenAI components.
|
|
117
|
-
- Export to local and cloud storage
|
|
118
|
-
|
|
119
89
|
## Use Monocle
|
|
120
90
|
|
|
121
91
|
- Get the Monocle package
|
|
@@ -137,42 +107,4 @@ Benefits:
|
|
|
137
107
|
See [Monocle user guide](Monocle_User_Guide.md) for more details.
|
|
138
108
|
|
|
139
109
|
|
|
140
|
-
## Use Monocle MCP
|
|
141
|
-
|
|
142
|
-
First install monocle-apptrace: pip install monocle-apptrace
|
|
143
|
-
|
|
144
|
-
Open bash and run the following command to run the monocle mcp server with stdio:
|
|
145
|
-
monocle_apptrace
|
|
146
|
-
|
|
147
|
-
If you are using VS Code you can add following entry to your .vscode/mcp.json
|
|
148
|
-
|
|
149
|
-
```json
|
|
150
|
-
"monocle-mcp-server": {
|
|
151
|
-
"type": "stdio",
|
|
152
|
-
"command": "uvx",
|
|
153
|
-
"args": [
|
|
154
|
-
"monocle_apptrace"
|
|
155
|
-
],
|
|
156
|
-
"env": {}
|
|
157
|
-
}
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## Roadmap
|
|
161
|
-
|
|
162
|
-
Goal of Monocle is to support tracing for apps written in *any language* with *any LLM orchestration or agentic framework* and built using models, vectors, agents or other components served up by *any cloud or model inference provider*.
|
|
163
|
-
|
|
164
|
-
Current version supports:
|
|
165
|
-
- Language: (🟢) Python , (🔜) [Typescript](https://github.com/monocle2ai/monocle-typescript)
|
|
166
|
-
- LLM-frameworks: (🟢) Langchain, (🟢) Llamaindex, (🟢) Haystack, (🔜) Flask
|
|
167
|
-
- LLM inference providers: (🟢) OpenAI, (🟢) Azure OpenAI, (🟢) Nvidia Triton, (🔜) AWS Bedrock, (🔜) Google Vertex, (🔜) Azure ML, (🔜) Hugging Face
|
|
168
|
-
- Vector stores: (🟢) FAISS, (🔜) OpenSearch, (🔜) Milvus
|
|
169
|
-
- Exporter: (🟢) stdout, (🟢) file, (🔜) Azure Blob Storage, (🔜) AWS S3, (🔜) Google Cloud Storage
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
## Get involved
|
|
173
|
-
### Provide feedback
|
|
174
|
-
- Submit issues and enhancements requests via Github issues
|
|
175
|
-
|
|
176
|
-
### Contribute
|
|
177
|
-
- Monocle is community based open source project. We welcome your contributions. Please refer to the CONTRIBUTING and CODE_OF_CONDUCT for guidelines. The [contributor's guide](CONTRIBUTING.md) provides technical details of the project.
|
|
178
110
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Monocle Apptrace
|
|
2
|
+
|
|
3
|
+
**Monocle** helps developers and platform engineers building or managing GenAI apps monitor these in prod by making it easy to instrument their code to capture traces that are compliant with open-source cloud-native observability ecosystem.
|
|
4
|
+
|
|
5
|
+
**Monocle** is a community-driven OSS framework for tracing GenAI app code governed as a [Linux Foundation AI & Data project](https://lfaidata.foundation/projects/monocle/).
|
|
6
|
+
|
|
7
|
+
## Use Monocle
|
|
8
|
+
|
|
9
|
+
- Get the Monocle package
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
pip install monocle_apptrace
|
|
13
|
+
```
|
|
14
|
+
- Instrument your app code
|
|
15
|
+
- Import the Monocle package
|
|
16
|
+
```
|
|
17
|
+
from monocle_apptrace.instrumentor import setup_monocle_telemetry
|
|
18
|
+
```
|
|
19
|
+
- Setup instrumentation in your ```main()``` function
|
|
20
|
+
```
|
|
21
|
+
setup_monocle_telemetry(workflow_name="your-app-name")
|
|
22
|
+
```
|
|
23
|
+
- (Optionally) Modify config to alter where traces are sent
|
|
24
|
+
|
|
25
|
+
See [Monocle user guide](Monocle_User_Guide.md) for more details.
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["hatchling"]
|
|
2
|
+
requires = ["hatchling","hatch-build-scripts"]
|
|
3
3
|
build-backend = "hatchling.build"
|
|
4
4
|
|
|
5
|
+
[[tool.hatch.build.hooks.build-scripts.scripts]]
|
|
6
|
+
commands = [
|
|
7
|
+
"echo 'Running a pre-build step..copying license'",
|
|
8
|
+
"if [ -f \"LICENSE\" ]; then echo \"✅ LICENSE already exists\"; elif [ -f \"../LICENSE\" ]; then cp \"../LICENSE\" \"LICENSE\" && echo \"✅ LICENSE copied from parent\"; else echo \"❌ ERROR: LICENSE not found\" && exit 1; fi"
|
|
9
|
+
]
|
|
10
|
+
|
|
5
11
|
[project]
|
|
6
12
|
name = "monocle_apptrace"
|
|
7
|
-
version = "0.
|
|
13
|
+
version = "0.6.0"
|
|
8
14
|
authors = [
|
|
9
15
|
{ name="Okahu Inc.", email="okahu-pypi@okahu.ai" },
|
|
10
16
|
]
|
|
@@ -23,9 +29,6 @@ dependencies = [
|
|
|
23
29
|
'opentelemetry-api>=1.21.0',
|
|
24
30
|
'opentelemetry-sdk>=1.21.0',
|
|
25
31
|
'opentelemetry-instrumentation',
|
|
26
|
-
'mcp>=1.13.1',
|
|
27
|
-
'pydantic>=2.11.7',
|
|
28
|
-
'click==8.2.1'
|
|
29
32
|
]
|
|
30
33
|
|
|
31
34
|
[tool.pytest.ini_options]
|
|
@@ -46,6 +49,11 @@ markers = [
|
|
|
46
49
|
]
|
|
47
50
|
|
|
48
51
|
[project.optional-dependencies]
|
|
52
|
+
ai_test = [
|
|
53
|
+
'bert-score',
|
|
54
|
+
'transformers'
|
|
55
|
+
]
|
|
56
|
+
|
|
49
57
|
dev = [
|
|
50
58
|
'langchain-openai==0.3.18',
|
|
51
59
|
'langchain-chroma==0.2.4',
|
|
@@ -89,17 +97,19 @@ dev = [
|
|
|
89
97
|
'langchain-anthropic==0.3.13',
|
|
90
98
|
'langchain-mcp-adapters==0.1.8',
|
|
91
99
|
'mcp==1.12.1',
|
|
92
|
-
'a2a-sdk==0.
|
|
100
|
+
'a2a-sdk==0.3.6',
|
|
93
101
|
'httpx==0.28.1',
|
|
94
102
|
'fastapi>=0.115.0',
|
|
95
103
|
'pydantic==2.11.7',
|
|
96
104
|
'uvicorn==0.35.0',
|
|
97
105
|
'click==8.2.1',
|
|
98
106
|
'python-dotenv>=1.1.0',
|
|
99
|
-
'langchain-google-genai==2.
|
|
107
|
+
'langchain-google-genai==2.0.10',
|
|
100
108
|
'google-adk==1.10.0',
|
|
101
109
|
'google-generativeai==0.8.5',
|
|
102
|
-
'openai-agents==0.2.6'
|
|
110
|
+
'openai-agents==0.2.6',
|
|
111
|
+
'mistralai==1.9.9',
|
|
112
|
+
'huggingface_hub==0.35.3'
|
|
103
113
|
]
|
|
104
114
|
|
|
105
115
|
azure = [
|
{monocle_apptrace-0.5.2 → monocle_apptrace-0.6.0}/src/monocle_apptrace/exporters/file_exporter.py
RENAMED
|
@@ -14,12 +14,13 @@ from monocle_apptrace.exporters.exporter_processor import ExportTaskProcessor
|
|
|
14
14
|
DEFAULT_FILE_PREFIX:str = "monocle_trace_"
|
|
15
15
|
DEFAULT_TIME_FORMAT:str = "%Y-%m-%d_%H.%M.%S"
|
|
16
16
|
HANDLE_TIMEOUT_SECONDS: int = 60 # 1 minute timeout
|
|
17
|
+
DEFAULT_TRACE_FOLDER = ".monocle"
|
|
17
18
|
|
|
18
19
|
class FileSpanExporter(SpanExporterBase):
|
|
19
20
|
def __init__(
|
|
20
21
|
self,
|
|
21
22
|
service_name: Optional[str] = None,
|
|
22
|
-
out_path:str = ".",
|
|
23
|
+
out_path:str = path.join(".", DEFAULT_TRACE_FOLDER),
|
|
23
24
|
file_prefix = DEFAULT_FILE_PREFIX,
|
|
24
25
|
time_format = DEFAULT_TIME_FORMAT,
|
|
25
26
|
formatter: Callable[
|
|
@@ -34,12 +35,16 @@ class FileSpanExporter(SpanExporterBase):
|
|
|
34
35
|
self.formatter = formatter
|
|
35
36
|
self.service_name = service_name
|
|
36
37
|
self.output_path = os.getenv("MONOCLE_TRACE_OUTPUT_PATH", out_path)
|
|
38
|
+
if not os.path.exists(self.output_path):
|
|
39
|
+
os.makedirs(self.output_path)
|
|
37
40
|
self.file_prefix = file_prefix
|
|
38
41
|
self.time_format = time_format
|
|
39
42
|
self.task_processor = task_processor
|
|
40
43
|
self.is_first_span_in_file = True # Track if this is the first span in the current file
|
|
41
44
|
if self.task_processor is not None:
|
|
42
45
|
self.task_processor.start()
|
|
46
|
+
self.last_file_processed:str = None
|
|
47
|
+
self.last_trace_id = None
|
|
43
48
|
|
|
44
49
|
def export(self, spans: Sequence[ReadableSpan]) -> SpanExportResult:
|
|
45
50
|
is_root_span = any(not span.parent for span in spans)
|
|
@@ -50,6 +55,9 @@ class FileSpanExporter(SpanExporterBase):
|
|
|
50
55
|
else:
|
|
51
56
|
return self._process_spans(spans, is_root_span=is_root_span)
|
|
52
57
|
|
|
58
|
+
def set_service_name(self, service_name: str) -> None:
|
|
59
|
+
self.service_name = service_name
|
|
60
|
+
|
|
53
61
|
def _cleanup_expired_handles(self) -> None:
|
|
54
62
|
"""Close and remove file handles that have exceeded the timeout."""
|
|
55
63
|
current_time = datetime.now()
|
|
@@ -96,6 +104,8 @@ class FileSpanExporter(SpanExporterBase):
|
|
|
96
104
|
print(f"Error closing file {file_path}: {e}")
|
|
97
105
|
finally:
|
|
98
106
|
del self.file_handles[trace_id]
|
|
107
|
+
self.last_file_processed = file_path
|
|
108
|
+
self.last_trace_id = trace_id
|
|
99
109
|
|
|
100
110
|
def _mark_span_written(self, trace_id: int) -> None:
|
|
101
111
|
"""Mark that a span has been written for this trace (no longer first span)."""
|
|
@@ -123,7 +133,10 @@ class FileSpanExporter(SpanExporterBase):
|
|
|
123
133
|
|
|
124
134
|
# Process spans for each trace
|
|
125
135
|
for trace_id, trace_spans in spans_by_trace.items():
|
|
126
|
-
service_name
|
|
136
|
+
if self.service_name is not None:
|
|
137
|
+
service_name = self.service_name
|
|
138
|
+
else:
|
|
139
|
+
service_name = trace_spans[0].resource.attributes.get(SERVICE_NAME, "unknown")
|
|
127
140
|
handle, file_path, is_first_span = self._get_or_create_handle(trace_id, service_name)
|
|
128
141
|
|
|
129
142
|
if handle is None:
|
|
@@ -165,7 +165,7 @@ def setup_monocle_telemetry(
|
|
|
165
165
|
span_handlers: Dict[str,SpanHandler] = None,
|
|
166
166
|
wrapper_methods: List[Union[dict,WrapperMethod]] = None,
|
|
167
167
|
union_with_default_methods: bool = True,
|
|
168
|
-
monocle_exporters_list:str = None) ->
|
|
168
|
+
monocle_exporters_list:str = None) -> MonocleInstrumentor:
|
|
169
169
|
"""
|
|
170
170
|
Set up Monocle telemetry for the application.
|
|
171
171
|
|
|
@@ -26,6 +26,8 @@ WORKFLOW_TYPE_MAP = {
|
|
|
26
26
|
"anthropic": "workflow.anthropic",
|
|
27
27
|
"gemini": "workflow.gemini",
|
|
28
28
|
"litellm": "workflow.litellm",
|
|
29
|
+
"mistralai": "workflow.mistral",
|
|
30
|
+
"huggingface_hub": "workflow.huggingface"
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
FRAMEWORK_WORKFLOW_LIST = [
|
|
@@ -185,7 +187,12 @@ class SpanHandler:
|
|
|
185
187
|
accessor = attribute.get("accessor")
|
|
186
188
|
if accessor:
|
|
187
189
|
try:
|
|
188
|
-
|
|
190
|
+
try:
|
|
191
|
+
result = accessor(arguments)
|
|
192
|
+
except MonocleSpanException as e:
|
|
193
|
+
span.set_status(StatusCode.ERROR, e.message)
|
|
194
|
+
detected_error = True
|
|
195
|
+
result = e.get_err_code()
|
|
189
196
|
if result and isinstance(result, dict):
|
|
190
197
|
result = dict((key, value) for key, value in result.items() if value is not None)
|
|
191
198
|
if result and isinstance(result, (int, str, list, dict)):
|
|
@@ -193,9 +200,6 @@ class SpanHandler:
|
|
|
193
200
|
event_attributes[attribute_key] = result
|
|
194
201
|
else:
|
|
195
202
|
event_attributes.update(result)
|
|
196
|
-
except MonocleSpanException as e:
|
|
197
|
-
span.set_status(StatusCode.ERROR, e.message)
|
|
198
|
-
detected_error = True
|
|
199
203
|
except Exception as e:
|
|
200
204
|
logger.debug(f"Error evaluating accessor for attribute '{attribute_key}': {e}")
|
|
201
205
|
matching_timestamp = getattr(ret_result, "timestamps", {}).get(event_name, None)
|
|
@@ -30,7 +30,7 @@ except Exception as e:
|
|
|
30
30
|
logger.warning("Exception finding monocle-apptrace version.")
|
|
31
31
|
|
|
32
32
|
class MonocleSpanException(Exception):
|
|
33
|
-
def __init__(self, err_message:str):
|
|
33
|
+
def __init__(self, err_message:str, err_code:str = None):
|
|
34
34
|
"""
|
|
35
35
|
Monocle exeption to indicate error in span processing.
|
|
36
36
|
Parameters:
|
|
@@ -39,10 +39,15 @@ class MonocleSpanException(Exception):
|
|
|
39
39
|
"""
|
|
40
40
|
super().__init__(err_message)
|
|
41
41
|
self.message = err_message
|
|
42
|
+
self.err_code = err_code
|
|
42
43
|
|
|
43
44
|
def __str__(self):
|
|
44
45
|
"""String representation of the exception."""
|
|
45
|
-
return f"[Monocle Span Error: {self.message}
|
|
46
|
+
return f"[Monocle Span Error: {self.message}"
|
|
47
|
+
|
|
48
|
+
def get_err_code(self):
|
|
49
|
+
"""Retrieve the error code."""
|
|
50
|
+
return self.err_code
|
|
46
51
|
|
|
47
52
|
def set_span_attribute(span, name, value):
|
|
48
53
|
if value is not None:
|
|
@@ -98,6 +103,7 @@ def with_tracer_wrapper(func):
|
|
|
98
103
|
|
|
99
104
|
return _with_tracer
|
|
100
105
|
|
|
106
|
+
|
|
101
107
|
def resolve_from_alias(my_map, alias):
|
|
102
108
|
"""Find a alias that is not none from list of aliases"""
|
|
103
109
|
|
|
@@ -393,6 +399,7 @@ def get_exception_message(arguments):
|
|
|
393
399
|
else:
|
|
394
400
|
return ''
|
|
395
401
|
|
|
402
|
+
|
|
396
403
|
def get_error_message(arguments):
|
|
397
404
|
status_code = get_status_code(arguments)
|
|
398
405
|
if status_code == 'success':
|
|
@@ -400,6 +407,7 @@ def get_error_message(arguments):
|
|
|
400
407
|
else:
|
|
401
408
|
return status_code
|
|
402
409
|
|
|
410
|
+
|
|
403
411
|
def get_status_code(arguments):
|
|
404
412
|
if arguments["exception"] is not None:
|
|
405
413
|
return get_exception_status_code(arguments)
|
|
@@ -5,6 +5,7 @@ from monocle_apptrace.instrumentation.common.span_handler import SpanHandler, No
|
|
|
5
5
|
from monocle_apptrace.instrumentation.metamodel.azureaiinference.methods import AZURE_AI_INFERENCE_METHODS
|
|
6
6
|
from monocle_apptrace.instrumentation.metamodel.botocore.methods import BOTOCORE_METHODS
|
|
7
7
|
from monocle_apptrace.instrumentation.metamodel.botocore.handlers.botocore_span_handler import BotoCoreSpanHandler
|
|
8
|
+
from monocle_apptrace.instrumentation.metamodel.hugging_face.methods import HUGGING_FACE_METHODS
|
|
8
9
|
from monocle_apptrace.instrumentation.metamodel.langchain.methods import (
|
|
9
10
|
LANGCHAIN_METHODS,
|
|
10
11
|
)
|
|
@@ -37,6 +38,7 @@ from monocle_apptrace.instrumentation.metamodel.mcp.mcp_processor import MCPAgen
|
|
|
37
38
|
from monocle_apptrace.instrumentation.metamodel.a2a.methods import A2A_CLIENT_METHODS
|
|
38
39
|
from monocle_apptrace.instrumentation.metamodel.litellm.methods import LITELLM_METHODS
|
|
39
40
|
from monocle_apptrace.instrumentation.metamodel.adk.methods import ADK_METHODS
|
|
41
|
+
from monocle_apptrace.instrumentation.metamodel.mistral.methods import MISTRAL_METHODS
|
|
40
42
|
|
|
41
43
|
class WrapperMethod:
|
|
42
44
|
def __init__(
|
|
@@ -107,7 +109,9 @@ DEFAULT_METHODS_LIST = (
|
|
|
107
109
|
MCP_METHODS +
|
|
108
110
|
A2A_CLIENT_METHODS +
|
|
109
111
|
LITELLM_METHODS +
|
|
110
|
-
ADK_METHODS
|
|
112
|
+
ADK_METHODS +
|
|
113
|
+
MISTRAL_METHODS +
|
|
114
|
+
HUGGING_FACE_METHODS
|
|
111
115
|
)
|
|
112
116
|
|
|
113
117
|
MONOCLE_SPAN_HANDLERS: Dict[str, SpanHandler] = {
|
|
@@ -82,7 +82,7 @@ def extract_agent_input(arguments: Dict[str, Any]) -> Any:
|
|
|
82
82
|
Returns:
|
|
83
83
|
Any: The extracted input data
|
|
84
84
|
"""
|
|
85
|
-
return arguments['args'][0].user_content.parts[0].text
|
|
85
|
+
return [arguments['args'][0].user_content.parts[0].text]
|
|
86
86
|
|
|
87
87
|
def extract_agent_request_input(arguments: Dict[str, Any]) -> Any:
|
|
88
88
|
"""
|
|
@@ -94,7 +94,7 @@ def extract_agent_request_input(arguments: Dict[str, Any]) -> Any:
|
|
|
94
94
|
Returns:
|
|
95
95
|
Any: The extracted input data
|
|
96
96
|
"""
|
|
97
|
-
return arguments['kwargs']['new_message'].parts[0].text if 'new_message' in arguments['kwargs'] else
|
|
97
|
+
return [arguments['kwargs']['new_message'].parts[0].text] if 'new_message' in arguments['kwargs'] else []
|
|
98
98
|
|
|
99
99
|
def extract_agent_response(result: Any) -> Any:
|
|
100
100
|
"""
|
|
@@ -107,7 +107,9 @@ def extract_agent_response(result: Any) -> Any:
|
|
|
107
107
|
Any: The extracted response data
|
|
108
108
|
"""
|
|
109
109
|
if result:
|
|
110
|
-
return result.content.parts[0].text
|
|
110
|
+
return str(result.content.parts[0].text)
|
|
111
|
+
else:
|
|
112
|
+
return ""
|
|
111
113
|
|
|
112
114
|
def get_tool_name(instance: Any) -> str:
|
|
113
115
|
"""
|
|
@@ -179,7 +181,7 @@ def extract_tool_input(arguments: Dict[str, Any]) -> Any:
|
|
|
179
181
|
Returns:
|
|
180
182
|
Any: The extracted input data
|
|
181
183
|
"""
|
|
182
|
-
return str(arguments['kwargs'].get('args'))
|
|
184
|
+
return [str(arguments['kwargs'].get('args'))]
|
|
183
185
|
|
|
184
186
|
def extract_tool_response(result: Any) -> Any:
|
|
185
187
|
"""
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from monocle_apptrace.instrumentation.common.constants import SPAN_SUBTYPES, SPAN_TYPES
|
|
2
|
+
from monocle_apptrace.instrumentation.common.utils import get_error_message
|
|
2
3
|
from monocle_apptrace.instrumentation.metamodel.adk import _helper
|
|
4
|
+
from monocle_apptrace.instrumentation.common.utils import get_error_message
|
|
3
5
|
AGENT = {
|
|
4
6
|
"type": SPAN_TYPES.AGENTIC_INVOCATION,
|
|
5
7
|
"subtype": SPAN_SUBTYPES.ROUTING,
|
|
@@ -33,7 +35,7 @@ AGENT = {
|
|
|
33
35
|
"attributes": [
|
|
34
36
|
{
|
|
35
37
|
"_comment": "this is Agent input",
|
|
36
|
-
"attribute": "
|
|
38
|
+
"attribute": "input",
|
|
37
39
|
"accessor": lambda arguments: _helper.extract_agent_input(arguments)
|
|
38
40
|
}
|
|
39
41
|
]
|
|
@@ -41,10 +43,18 @@ AGENT = {
|
|
|
41
43
|
{
|
|
42
44
|
"name":"data.output",
|
|
43
45
|
"attributes": [
|
|
46
|
+
{
|
|
47
|
+
"attribute": "error_code",
|
|
48
|
+
"accessor": lambda arguments: get_error_message(arguments)
|
|
49
|
+
},
|
|
44
50
|
{
|
|
45
51
|
"_comment": "this is response from LLM",
|
|
46
52
|
"attribute": "response",
|
|
47
53
|
"accessor": lambda arguments: _helper.extract_agent_response(arguments['result'])
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"attribute": "error_code",
|
|
57
|
+
"accessor": lambda arguments: get_error_message(arguments)
|
|
48
58
|
}
|
|
49
59
|
]
|
|
50
60
|
}
|
|
@@ -108,4 +118,4 @@ DELEGATION = {
|
|
|
108
118
|
}
|
|
109
119
|
]
|
|
110
120
|
]
|
|
111
|
-
}
|
|
121
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from monocle_apptrace.instrumentation.common.constants import SPAN_SUBTYPES, SPAN_TYPES
|
|
2
|
+
from monocle_apptrace.instrumentation.common.utils import get_error_message
|
|
2
3
|
from monocle_apptrace.instrumentation.metamodel.adk import _helper
|
|
3
4
|
TOOL = {
|
|
4
5
|
"type": SPAN_TYPES.AGENTIC_TOOL_INVOCATION,
|
|
@@ -40,7 +41,7 @@ TOOL = {
|
|
|
40
41
|
"attributes": [
|
|
41
42
|
{
|
|
42
43
|
"_comment": "this is Tool input",
|
|
43
|
-
"attribute": "
|
|
44
|
+
"attribute": "input",
|
|
44
45
|
"accessor": lambda arguments: _helper.extract_tool_input(arguments)
|
|
45
46
|
},
|
|
46
47
|
]
|
|
@@ -52,8 +53,12 @@ TOOL = {
|
|
|
52
53
|
"_comment": "this is response from Tool",
|
|
53
54
|
"attribute": "response",
|
|
54
55
|
"accessor": lambda arguments: _helper.extract_tool_response(arguments['result'])
|
|
55
|
-
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"attribute": "error_code",
|
|
59
|
+
"accessor": lambda arguments: get_error_message(arguments)
|
|
60
|
+
},
|
|
56
61
|
]
|
|
57
62
|
}
|
|
58
63
|
]
|
|
59
|
-
}
|
|
64
|
+
}
|
|
@@ -50,21 +50,21 @@ def extract_agent_input(arguments):
|
|
|
50
50
|
if len(arguments["args"]) > 1:
|
|
51
51
|
input_data = arguments["args"][1]
|
|
52
52
|
if isinstance(input_data, str):
|
|
53
|
-
return input_data
|
|
53
|
+
return [input_data]
|
|
54
54
|
elif isinstance(input_data, list):
|
|
55
55
|
# Handle list of input items
|
|
56
|
-
return
|
|
56
|
+
return input_data
|
|
57
57
|
|
|
58
58
|
# Fallback to kwargs
|
|
59
59
|
if "original_input" in arguments["kwargs"]:
|
|
60
60
|
input_data = arguments["kwargs"]["original_input"]
|
|
61
61
|
if isinstance(input_data, str):
|
|
62
|
-
return input_data
|
|
62
|
+
return [input_data]
|
|
63
63
|
elif isinstance(input_data, list):
|
|
64
|
-
return
|
|
64
|
+
return input_data
|
|
65
65
|
except Exception as e:
|
|
66
66
|
logger.warning("Warning: Error occurred in extract_agent_input: %s", str(e))
|
|
67
|
-
return
|
|
67
|
+
return []
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
def get_agent_name(arguments) -> str:
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
from monocle_apptrace.instrumentation.common.constants import AGENT_REQUEST_SPAN_NAME, SPAN_SUBTYPES, SPAN_TYPES
|
|
2
|
+
from monocle_apptrace.instrumentation.common.utils import get_error_message
|
|
2
3
|
from monocle_apptrace.instrumentation.metamodel.agents import _helper
|
|
4
|
+
from monocle_apptrace.instrumentation.common.utils import get_error_message
|
|
3
5
|
|
|
4
6
|
AGENT = {
|
|
5
7
|
"type": SPAN_TYPES.AGENTIC_INVOCATION,
|
|
@@ -34,7 +36,7 @@ AGENT = {
|
|
|
34
36
|
"attributes": [
|
|
35
37
|
{
|
|
36
38
|
"_comment": "this is Agent input",
|
|
37
|
-
"attribute": "
|
|
39
|
+
"attribute": "input",
|
|
38
40
|
"accessor": lambda arguments: _helper.extract_agent_input(
|
|
39
41
|
arguments
|
|
40
42
|
),
|
|
@@ -44,12 +46,20 @@ AGENT = {
|
|
|
44
46
|
{
|
|
45
47
|
"name": "data.output",
|
|
46
48
|
"attributes": [
|
|
49
|
+
{
|
|
50
|
+
"attribute": "error_code",
|
|
51
|
+
"accessor": lambda arguments: get_error_message(arguments)
|
|
52
|
+
},
|
|
47
53
|
{
|
|
48
54
|
"_comment": "this is response from Agent",
|
|
49
55
|
"attribute": "response",
|
|
50
56
|
"accessor": lambda arguments: _helper.extract_agent_response(
|
|
51
57
|
arguments["result"]
|
|
52
58
|
),
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"attribute": "error_code",
|
|
62
|
+
"accessor": lambda arguments: get_error_message(arguments)
|
|
53
63
|
}
|
|
54
64
|
],
|
|
55
65
|
},
|
|
@@ -68,7 +78,7 @@ AGENT = {
|
|
|
68
78
|
}
|
|
69
79
|
|
|
70
80
|
AGENT_REQUEST = {
|
|
71
|
-
"type":
|
|
81
|
+
"type": SPAN_TYPES.AGENTIC_REQUEST,
|
|
72
82
|
"subtype": SPAN_SUBTYPES.PLANNING,
|
|
73
83
|
"attributes": [
|
|
74
84
|
[
|
|
@@ -101,8 +111,11 @@ AGENT_REQUEST = {
|
|
|
101
111
|
"accessor": lambda arguments: _helper.extract_agent_response(
|
|
102
112
|
arguments["result"]
|
|
103
113
|
),
|
|
104
|
-
|
|
105
|
-
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"attribute": "error_code",
|
|
117
|
+
"accessor": lambda arguments: get_error_message(arguments)
|
|
118
|
+
}],
|
|
106
119
|
},
|
|
107
120
|
],
|
|
108
121
|
}
|
|
@@ -151,7 +164,7 @@ TOOLS = {
|
|
|
151
164
|
"attributes": [
|
|
152
165
|
{
|
|
153
166
|
"_comment": "this is Tool input",
|
|
154
|
-
"attribute": "
|
|
167
|
+
"attribute": "input",
|
|
155
168
|
"accessor": lambda arguments: _helper.extract_tool_input(arguments),
|
|
156
169
|
},
|
|
157
170
|
],
|
|
@@ -165,6 +178,10 @@ TOOLS = {
|
|
|
165
178
|
"accessor": lambda arguments: _helper.extract_tool_response(
|
|
166
179
|
arguments["result"]
|
|
167
180
|
),
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"attribute": "error_code",
|
|
184
|
+
"accessor": lambda arguments: get_error_message(arguments)
|
|
168
185
|
}
|
|
169
186
|
],
|
|
170
187
|
},
|