Skip to content

Commit c9af672

Browse files
Update schema attributes (#208)
* update schema constants * rename the source metadata to channel --------- Co-authored-by: Nikhil Chitlur Navakiran (from Dev Box) <nikhilc@microsoft.com>
1 parent ba8566d commit c9af672

File tree

24 files changed

+144
-182
lines changed

24 files changed

+144
-182
lines changed

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from .middleware.baggage_builder import BaggageBuilder
2929
from .opentelemetry_scope import OpenTelemetryScope
3030
from .request import Request
31-
from .source_metadata import SourceMetadata
31+
from .channel import Channel
3232
from .tenant_details import TenantDetails
3333
from .tool_call_details import ToolCallDetails
3434
from .tool_type import ToolType
@@ -64,7 +64,7 @@
6464
"AgentDetails",
6565
"TenantDetails",
6666
"ToolCallDetails",
67-
"SourceMetadata",
67+
"Channel",
6868
"Request",
6969
"InferenceCallDetails",
7070
"ServiceEndpoint",
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Copyright (c) Microsoft Corporation.
2+
# Licensed under the MIT License.
3+
4+
# Channel class.
5+
6+
from dataclasses import dataclass
7+
8+
9+
@dataclass
10+
class Channel:
11+
"""Channel information for agent execution context."""
12+
13+
name: str | None = None
14+
link: str | None = None

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/constants.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@
6060
GEN_AI_TOOL_CALL_RESULT_KEY = "gen_ai.tool.call.result"
6161
GEN_AI_TOOL_TYPE_KEY = "gen_ai.tool.type"
6262

63-
# Agent user (user tied to agent instance during creation) or caller dimensions
64-
GEN_AI_CALLER_ID_KEY = "microsoft.caller.id"
65-
GEN_AI_CALLER_NAME_KEY = "microsoft.caller.name"
66-
GEN_AI_CALLER_UPN_KEY = "microsoft.caller.upn"
63+
# Human caller dimensions (OTel user.* namespace)
64+
USER_ID_KEY = "user.id"
65+
USER_NAME_KEY = "user.name"
66+
USER_EMAIL_KEY = "user.email"
6767
GEN_AI_CALLER_CLIENT_IP_KEY = "client.address"
6868

6969
# Agent to Agent caller agent dimensions
7070
GEN_AI_CALLER_AGENT_USER_ID_KEY = "microsoft.a365.caller.agent.user.id"
71-
GEN_AI_CALLER_AGENT_UPN_KEY = "microsoft.a365.caller.agent.user.upn"
71+
GEN_AI_CALLER_AGENT_EMAIL_KEY = "microsoft.a365.caller.agent.user.email"
7272
GEN_AI_CALLER_AGENT_NAME_KEY = "microsoft.a365.caller.agent.name"
7373
GEN_AI_CALLER_AGENT_ID_KEY = "microsoft.a365.caller.agent.id"
7474
GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY = "microsoft.a365.caller.agent.blueprint.id"
@@ -84,7 +84,7 @@
8484

8585
# Baggage keys
8686
GEN_AI_AGENT_AUID_KEY = "microsoft.agent.user.id"
87-
GEN_AI_AGENT_UPN_KEY = "microsoft.agent.user.upn"
87+
GEN_AI_AGENT_EMAIL_KEY = "microsoft.agent.user.email"
8888
GEN_AI_AGENT_BLUEPRINT_ID_KEY = "microsoft.a365.agent.blueprint.id"
8989

9090
# Execution context dimensions

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/execute_tool_scope.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -131,9 +131,9 @@ def __init__(
131131
self.set_tag_maybe(SERVER_PORT_KEY, endpoint.port)
132132

133133
# Set request metadata if provided
134-
if request and request.source_metadata:
135-
self.set_tag_maybe(CHANNEL_NAME_KEY, request.source_metadata.name)
136-
self.set_tag_maybe(CHANNEL_LINK_KEY, request.source_metadata.description)
134+
if request and request.channel:
135+
self.set_tag_maybe(CHANNEL_NAME_KEY, request.channel.name)
136+
self.set_tag_maybe(CHANNEL_LINK_KEY, request.channel.link)
137137

138138
def record_response(self, response: str) -> None:
139139
"""Records response information for telemetry tracking.

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/inference_scope.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,9 @@ def __init__(
124124
self.set_tag_maybe(SERVER_PORT_KEY, str(details.endpoint.port))
125125

126126
# Set request metadata if provided
127-
if request and request.source_metadata:
128-
self.set_tag_maybe(CHANNEL_NAME_KEY, request.source_metadata.name)
129-
self.set_tag_maybe(CHANNEL_LINK_KEY, request.source_metadata.description)
127+
if request and request.channel:
128+
self.set_tag_maybe(CHANNEL_NAME_KEY, request.channel.name)
129+
self.set_tag_maybe(CHANNEL_LINK_KEY, request.channel.link)
130130

131131
def record_input_messages(self, messages: List[str]) -> None:
132132
"""Records the input messages for telemetry tracking.

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/invoke_agent_scope.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@
1414
CHANNEL_LINK_KEY,
1515
CHANNEL_NAME_KEY,
1616
GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY,
17+
GEN_AI_CALLER_AGENT_EMAIL_KEY,
1718
GEN_AI_CALLER_AGENT_ID_KEY,
1819
GEN_AI_CALLER_AGENT_NAME_KEY,
1920
GEN_AI_CALLER_AGENT_PLATFORM_ID_KEY,
20-
GEN_AI_CALLER_AGENT_UPN_KEY,
2121
GEN_AI_CALLER_AGENT_USER_ID_KEY,
2222
GEN_AI_CALLER_CLIENT_IP_KEY,
23-
GEN_AI_CALLER_ID_KEY,
24-
GEN_AI_CALLER_NAME_KEY,
25-
GEN_AI_CALLER_UPN_KEY,
2623
GEN_AI_EXECUTION_TYPE_KEY,
2724
GEN_AI_INPUT_MESSAGES_KEY,
2825
GEN_AI_OUTPUT_MESSAGES_KEY,
2926
INVOKE_AGENT_OPERATION_NAME,
3027
SERVER_ADDRESS_KEY,
3128
SERVER_PORT_KEY,
3229
SESSION_ID_KEY,
30+
USER_EMAIL_KEY,
31+
USER_ID_KEY,
32+
USER_NAME_KEY,
3333
)
3434
from .invoke_agent_details import InvokeAgentDetails
3535
from .models.caller_details import CallerDetails
@@ -149,9 +149,9 @@ def __init__(
149149

150150
# Set request metadata if provided
151151
if request:
152-
if request.source_metadata:
153-
self.set_tag_maybe(CHANNEL_NAME_KEY, request.source_metadata.name)
154-
self.set_tag_maybe(CHANNEL_LINK_KEY, request.source_metadata.description)
152+
if request.channel:
153+
self.set_tag_maybe(CHANNEL_NAME_KEY, request.channel.name)
154+
self.set_tag_maybe(CHANNEL_LINK_KEY, request.channel.link)
155155

156156
self.set_tag_maybe(
157157
GEN_AI_EXECUTION_TYPE_KEY,
@@ -161,9 +161,9 @@ def __init__(
161161

162162
# Set caller details tags
163163
if caller_details:
164-
self.set_tag_maybe(GEN_AI_CALLER_ID_KEY, caller_details.caller_id)
165-
self.set_tag_maybe(GEN_AI_CALLER_UPN_KEY, caller_details.caller_upn)
166-
self.set_tag_maybe(GEN_AI_CALLER_NAME_KEY, caller_details.caller_name)
164+
self.set_tag_maybe(USER_ID_KEY, caller_details.caller_id)
165+
self.set_tag_maybe(USER_EMAIL_KEY, caller_details.caller_upn)
166+
self.set_tag_maybe(USER_NAME_KEY, caller_details.caller_name)
167167
# Validate and set caller client IP
168168
self.set_tag_maybe(
169169
GEN_AI_CALLER_CLIENT_IP_KEY,
@@ -178,7 +178,7 @@ def __init__(
178178
GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY, caller_agent_details.agent_blueprint_id
179179
)
180180
self.set_tag_maybe(GEN_AI_CALLER_AGENT_USER_ID_KEY, caller_agent_details.agent_auid)
181-
self.set_tag_maybe(GEN_AI_CALLER_AGENT_UPN_KEY, caller_agent_details.agent_upn)
181+
self.set_tag_maybe(GEN_AI_CALLER_AGENT_EMAIL_KEY, caller_agent_details.agent_upn)
182182
self.set_tag_maybe(
183183
GEN_AI_CALLER_AGENT_PLATFORM_ID_KEY, caller_agent_details.agent_platform_id
184184
)

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/middleware/baggage_builder.py

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@
1414
GEN_AI_AGENT_AUID_KEY,
1515
GEN_AI_AGENT_BLUEPRINT_ID_KEY,
1616
GEN_AI_AGENT_DESCRIPTION_KEY,
17+
GEN_AI_AGENT_EMAIL_KEY,
1718
GEN_AI_AGENT_ID_KEY,
1819
GEN_AI_AGENT_NAME_KEY,
19-
GEN_AI_AGENT_UPN_KEY,
2020
GEN_AI_CALLER_CLIENT_IP_KEY,
21-
GEN_AI_CALLER_ID_KEY,
22-
GEN_AI_CALLER_NAME_KEY,
23-
GEN_AI_CALLER_UPN_KEY,
2421
GEN_AI_CONVERSATION_ID_KEY,
2522
GEN_AI_CONVERSATION_ITEM_LINK_KEY,
2623
SERVICE_NAME_KEY,
2724
SESSION_DESCRIPTION_KEY,
2825
SESSION_ID_KEY,
2926
TENANT_ID_KEY,
27+
USER_EMAIL_KEY,
28+
USER_ID_KEY,
29+
USER_NAME_KEY,
3030
)
31-
from ..utils import deprecated, validate_and_normalize_ip
31+
from ..utils import validate_and_normalize_ip
3232

3333
logger = logging.getLogger(__name__)
3434

@@ -115,7 +115,7 @@ def agent_upn(self, value: str | None) -> "BaggageBuilder":
115115
Returns:
116116
Self for method chaining
117117
"""
118-
self._set(GEN_AI_AGENT_UPN_KEY, value)
118+
self._set(GEN_AI_AGENT_EMAIL_KEY, value)
119119
return self
120120

121121
def agent_blueprint_id(self, value: str | None) -> "BaggageBuilder":
@@ -139,7 +139,7 @@ def caller_id(self, value: str | None) -> "BaggageBuilder":
139139
Returns:
140140
Self for method chaining
141141
"""
142-
self._set(GEN_AI_CALLER_ID_KEY, value)
142+
self._set(USER_ID_KEY, value)
143143
return self
144144

145145
def agent_name(self, value: str | None) -> "BaggageBuilder":
@@ -154,12 +154,12 @@ def agent_description(self, value: str | None) -> "BaggageBuilder":
154154

155155
def caller_name(self, value: str | None) -> "BaggageBuilder":
156156
"""Set the caller name baggage value."""
157-
self._set(GEN_AI_CALLER_NAME_KEY, value)
157+
self._set(USER_NAME_KEY, value)
158158
return self
159159

160160
def caller_upn(self, value: str | None) -> "BaggageBuilder":
161161
"""Set the caller UPN baggage value."""
162-
self._set(GEN_AI_CALLER_UPN_KEY, value)
162+
self._set(USER_EMAIL_KEY, value)
163163
return self
164164

165165
def caller_client_ip(self, value: str | None) -> "BaggageBuilder":
@@ -177,16 +177,6 @@ def conversation_item_link(self, value: str | None) -> "BaggageBuilder":
177177
self._set(GEN_AI_CONVERSATION_ITEM_LINK_KEY, value)
178178
return self
179179

180-
@deprecated("Use channel_name() instead")
181-
def source_metadata_name(self, value: str | None) -> "BaggageBuilder":
182-
"""Set the execution source metadata name (e.g., channel name)."""
183-
return self.channel_name(value)
184-
185-
@deprecated("Use channel_links() instead")
186-
def source_metadata_description(self, value: str | None) -> "BaggageBuilder":
187-
"""Set the execution source metadata description (e.g., channel description)."""
188-
return self.channel_links(value)
189-
190180
def session_id(self, value: str | None) -> "BaggageBuilder":
191181
"""Set the session ID baggage value."""
192182
self._set(SESSION_ID_KEY, value)
@@ -203,7 +193,7 @@ def channel_name(self, value: str | None) -> "BaggageBuilder":
203193
return self
204194

205195
def channel_links(self, value: str | None) -> "BaggageBuilder":
206-
"""Sets the channel link baggage value. (e.g., channel links or description)."""
196+
"""Sets the channel link baggage value."""
207197
self._set(CHANNEL_LINK_KEY, value)
208198
return self
209199

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/opentelemetry_scope.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
GEN_AI_AGENT_AUID_KEY,
2929
GEN_AI_AGENT_BLUEPRINT_ID_KEY,
3030
GEN_AI_AGENT_DESCRIPTION_KEY,
31+
GEN_AI_AGENT_EMAIL_KEY,
3132
GEN_AI_AGENT_ID_KEY,
3233
GEN_AI_AGENT_NAME_KEY,
3334
GEN_AI_AGENT_PLATFORM_ID_KEY,
34-
GEN_AI_AGENT_UPN_KEY,
3535
GEN_AI_CONVERSATION_ID_KEY,
3636
GEN_AI_ICON_URI_KEY,
3737
GEN_AI_OPERATION_NAME_KEY,
@@ -187,7 +187,7 @@ def __init__(
187187
GEN_AI_AGENT_DESCRIPTION_KEY, agent_details.agent_description
188188
)
189189
self.set_tag_maybe(GEN_AI_AGENT_AUID_KEY, agent_details.agent_auid)
190-
self.set_tag_maybe(GEN_AI_AGENT_UPN_KEY, agent_details.agent_upn)
190+
self.set_tag_maybe(GEN_AI_AGENT_EMAIL_KEY, agent_details.agent_upn)
191191
self.set_tag_maybe(
192192
GEN_AI_AGENT_BLUEPRINT_ID_KEY, agent_details.agent_blueprint_id
193193
)

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/request.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from dataclasses import dataclass
77

88
from .execution_type import ExecutionType
9-
from .source_metadata import SourceMetadata
9+
from .channel import Channel
1010

1111

1212
@dataclass
@@ -16,4 +16,4 @@ class Request:
1616
content: str
1717
execution_type: ExecutionType
1818
session_id: str | None = None
19-
source_metadata: SourceMetadata | None = None
19+
channel: Channel | None = None

libraries/microsoft-agents-a365-observability-core/microsoft_agents_a365/observability/core/source_metadata.py

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)