@@ -10,8 +10,15 @@ import {
1010 ATTR_TELEMETRY_SDK_LANGUAGE ,
1111 ATTR_TELEMETRY_SDK_NAME ,
1212 ATTR_TELEMETRY_SDK_VERSION ,
13+ ATTR_USER_AGENT_ORIGINAL ,
1314 TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS ,
1415} from '@opentelemetry/semantic-conventions'
16+ import {
17+ ATTR_BROWSER_BRANDS ,
18+ ATTR_BROWSER_LANGUAGE ,
19+ ATTR_BROWSER_MOBILE ,
20+ ATTR_BROWSER_PLATFORM ,
21+ } from '@opentelemetry/semantic-conventions/incubating'
1522import { ULIDGenerator } from '@pydantic/logfire-api'
1623import * as logfireApi from '@pydantic/logfire-api'
1724export { DiagLogLevel } from '@opentelemetry/api'
@@ -64,12 +71,22 @@ export function configure(options: LogfireConfigOptions) {
6471 }
6572
6673 const resource = resourceFromAttributes ( {
74+ [ ATTR_BROWSER_LANGUAGE ] : navigator . language ,
6775 [ ATTR_SERVICE_NAME ] : options . serviceName ?? 'logfire-browser' ,
6876 [ ATTR_SERVICE_VERSION ] : options . serviceVersion ?? '0.0.1' ,
6977 [ ATTR_TELEMETRY_SDK_LANGUAGE ] : TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS ,
7078 [ ATTR_TELEMETRY_SDK_NAME ] : 'logfire-browser' ,
7179 // eslint-disable-next-line no-undef
7280 [ ATTR_TELEMETRY_SDK_VERSION ] : PACKAGE_VERSION ,
81+ ...( navigator . userAgentData
82+ ? {
83+ [ ATTR_BROWSER_BRANDS ] : navigator . userAgentData . brands . map ( ( brand ) => `${ brand . brand } ${ brand . version } ` ) ,
84+ [ ATTR_BROWSER_MOBILE ] : navigator . userAgentData . mobile ,
85+ [ ATTR_BROWSER_PLATFORM ] : navigator . userAgentData . platform ,
86+ }
87+ : {
88+ [ ATTR_USER_AGENT_ORIGINAL ] : navigator . userAgent ,
89+ } ) ,
7390 } )
7491
7592 diag . info ( 'logfire-browser: starting' )
0 commit comments