66 * OpenTelemetry constants for Agent 365
77 */
88export class OpenTelemetryConstants {
9+ // New telemetry schema feature flag
10+ public static readonly USE_NEW_TELEMETRY_SCHEMA_ENV = 'A365_USE_NEW_TELEMETRY_SCHEMA' ;
11+ // eslint-disable-next-line no-restricted-properties
12+ public static readonly isNewTelemetrySchemaEnabled = process . env [ 'A365_USE_NEW_TELEMETRY_SCHEMA' ] === 'true' ;
13+
914 // Span operation names
1015 public static readonly INVOKE_AGENT_OPERATION_NAME = 'invoke_agent' ;
1116 public static readonly EXECUTE_TOOL_OPERATION_NAME = 'execute_tool' ;
@@ -46,9 +51,10 @@ export class OpenTelemetryConstants {
4651 public static readonly GEN_AI_AGENT_NAME_KEY = 'gen_ai.agent.name' ;
4752 public static readonly GEN_AI_AGENT_TYPE_KEY = 'gen_ai.agent.type' ;
4853 public static readonly GEN_AI_AGENT_DESCRIPTION_KEY = 'gen_ai.agent.description' ;
49- public static readonly GEN_AI_AGENT_PLATFORM_ID_KEY = 'gen_ai.agent.platformid' ;
54+ public static readonly GEN_AI_AGENT_PLATFORM_ID_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.a365.agent.platform.id' : 'gen_ai.agent.platformid' ;
55+ public static readonly GEN_AI_AGENT_THOUGHT_PROCESS_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.a365.agent.thought.process' : 'gen_ai.agent.thought.process' ;
5056 public static readonly GEN_AI_CONVERSATION_ID_KEY = 'gen_ai.conversation.id' ;
51- public static readonly GEN_AI_CONVERSATION_ITEM_LINK_KEY = 'gen_ai.conversation.item.link' ;
57+ public static readonly GEN_AI_CONVERSATION_ITEM_LINK_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.conversation.item.link' : 'gen_ai.conversation.item.link' ;
5258 public static readonly GEN_AI_TOKEN_TYPE_KEY = 'gen_ai.token.type' ;
5359 public static readonly GEN_AI_USAGE_INPUT_TOKENS_KEY = 'gen_ai.usage.input_tokens' ;
5460 public static readonly GEN_AI_USAGE_OUTPUT_TOKENS_KEY = 'gen_ai.usage.output_tokens' ;
@@ -69,36 +75,36 @@ export class OpenTelemetryConstants {
6975 public static readonly GEN_AI_TOOL_TYPE_KEY = 'gen_ai.tool.type' ;
7076
7177 // Agent user (user tied to agent instance during creation) or caller dimensions
72- public static readonly GEN_AI_AGENT_USER_ID_KEY = 'gen_ai.agent.userid' ;
78+ public static readonly GEN_AI_AGENT_USER_ID_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.a365.agent.user.id' : 'gen_ai.agent.userid' ;
7379 public static readonly GEN_AI_CALLER_TENANT_ID_KEY = 'gen_ai.caller.tenantid' ;
74- public static readonly GEN_AI_CALLER_ID_KEY = 'gen_ai.caller.id' ;
75- public static readonly GEN_AI_CALLER_NAME_KEY = 'gen_ai.caller.name' ;
76- public static readonly GEN_AI_CALLER_UPN_KEY = 'gen_ai.caller.upn' ;
77- public static readonly GEN_AI_CALLER_CLIENT_IP_KEY = 'gen_ai.caller.client.ip' ;
80+ public static readonly GEN_AI_CALLER_ID_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.caller.id' : 'gen_ai.caller.id' ;
81+ public static readonly GEN_AI_CALLER_NAME_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.caller.name' : 'gen_ai.caller.name' ;
82+ public static readonly GEN_AI_CALLER_UPN_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.caller.upn' : 'gen_ai.caller.upn' ;
83+ public static readonly GEN_AI_CALLER_CLIENT_IP_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'client.address' : 'gen_ai.caller.client.ip' ;
7884
7985 // Agent to Agent caller agent dimensions
80- public static readonly GEN_AI_CALLER_AGENT_USER_ID_KEY = 'gen_ai.caller.agent.userid' ;
86+ public static readonly GEN_AI_CALLER_AGENT_USER_ID_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.a365.caller.agent.user.id' : 'gen_ai.caller.agent.userid' ;
8187 public static readonly GEN_AI_CALLER_AGENT_UPN_KEY = 'gen_ai.caller.agent.upn' ;
8288 public static readonly GEN_AI_CALLER_AGENT_TENANT_ID_KEY = 'gen_ai.caller.agent.tenantid' ;
83- public static readonly GEN_AI_CALLER_AGENT_NAME_KEY = 'gen_ai.caller.agent.name' ;
84- public static readonly GEN_AI_CALLER_AGENT_ID_KEY = 'gen_ai.caller.agent.id' ;
85- public static readonly GEN_AI_CALLER_AGENT_TYPE_KEY = 'gen_ai.caller.agent.type' ;
86- public static readonly GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY = 'gen_ai.caller.agent.applicationid' ;
89+ public static readonly GEN_AI_CALLER_AGENT_NAME_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.a365.caller.agent.name' : 'gen_ai.caller.agent.name' ;
90+ public static readonly GEN_AI_CALLER_AGENT_ID_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.a365.caller.agent.id' : 'gen_ai.caller.agent.id' ;
91+ public static readonly GEN_AI_CALLER_AGENT_TYPE_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.a365.caller.agent.type' : 'gen_ai.caller.agent.type' ;
92+ public static readonly GEN_AI_CALLER_AGENT_APPLICATION_ID_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.a365.caller.agent.blueprint.id' : 'gen_ai.caller.agent.applicationid' ;
8793 public static readonly GEN_AI_CALLER_AGENT_CLIENT_IP_KEY = 'gen_ai.caller.agent.user.client.ip' ;
88- public static readonly GEN_AI_CALLER_AGENT_PLATFORM_ID_KEY = 'gen_ai.caller.agent.platformid' ;
94+ public static readonly GEN_AI_CALLER_AGENT_PLATFORM_ID_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.a365.caller.agent.platform.id' : 'gen_ai.caller.agent.platformid' ;
8995 // Agent-specific dimensions
9096 public static readonly AGENT_ID_KEY = 'gen_ai.agent.id' ;
9197 public static readonly GEN_AI_TASK_ID_KEY = 'gen_ai.task.id' ;
92- public static readonly SESSION_ID_KEY = 'session.id' ;
93- public static readonly SESSION_DESCRIPTION_KEY = 'session.description' ;
98+ public static readonly SESSION_ID_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.session.id' : 'session.id' ;
99+ public static readonly SESSION_DESCRIPTION_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.session.description' : 'session.description' ;
94100 public static readonly GEN_AI_ICON_URI_KEY = 'gen_ai.agent365.icon_uri' ;
95- public static readonly TENANT_ID_KEY = 'tenant.id' ;
101+ public static readonly TENANT_ID_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.tenant.id' : 'tenant.id' ;
96102
97103 // Baggage keys
98104 public static readonly OPERATION_SOURCE_KEY = 'operation.source' ;
99- public static readonly GEN_AI_AGENT_AUID_KEY = 'gen_ai.agent.user.id' ;
100- public static readonly GEN_AI_AGENT_UPN_KEY = 'gen_ai.agent.upn' ;
101- public static readonly GEN_AI_AGENT_BLUEPRINT_ID_KEY = 'gen_ai.agent.applicationid' ;
105+ public static readonly GEN_AI_AGENT_AUID_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.a365.agent.user.id' : 'gen_ai.agent.user.id' ;
106+ public static readonly GEN_AI_AGENT_UPN_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.agent.user.upn' : 'gen_ai.agent.upn' ;
107+ public static readonly GEN_AI_AGENT_BLUEPRINT_ID_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.agent.blueprint.id' : 'gen_ai.agent.applicationid' ;
102108 public static readonly CORRELATION_ID_KEY = 'correlation.id' ;
103109 public static readonly HIRING_MANAGER_ID_KEY = 'hiring.manager.id' ;
104110
@@ -108,12 +114,20 @@ export class OpenTelemetryConstants {
108114
109115 // Source metadata dimensions
110116 public static readonly GEN_AI_EXECUTION_SOURCE_ID_KEY = 'gen_ai.execution.sourceMetadata.id' ;
111- public static readonly GEN_AI_EXECUTION_SOURCE_NAME_KEY = 'gen_ai.channel.name' ;
112- public static readonly GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY = 'gen_ai.channel.link' ;
117+ public static readonly GEN_AI_EXECUTION_SOURCE_NAME_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.channel.name' : 'gen_ai.channel.name' ;
118+ public static readonly GEN_AI_EXECUTION_SOURCE_DESCRIPTION_KEY = OpenTelemetryConstants . isNewTelemetrySchemaEnabled ? 'microsoft.channel.link' : 'gen_ai.channel.link' ;
113119
114120 // Custom parent id and parent name key
115121 public static readonly CUSTOM_PARENT_SPAN_ID_KEY = 'custom.parent.span.id' ;
116122 public static readonly CUSTOM_SPAN_NAME_KEY = 'custom.span.name' ;
123+
124+ // Telemetry SDK attributes (replace operation.source when isNewTelemetrySchemaEnabled)
125+ public static readonly TELEMETRY_SDK_NAME_KEY = 'telemetry.sdk.name' ;
126+ public static readonly TELEMETRY_SDK_LANGUAGE_KEY = 'telemetry.sdk.language' ;
127+ public static readonly TELEMETRY_SDK_VERSION_KEY = 'telemetry.sdk.version' ;
128+ public static readonly TELEMETRY_SDK_NAME_VALUE = 'Agent365Sdk' ;
129+ public static readonly TELEMETRY_SDK_LANGUAGE_VALUE = 'nodejs' ;
130+ public static readonly TELEMETRY_SDK_VERSION_VALUE = '0.0.0-placeholder' ;
117131}
118132
119133/**
0 commit comments