{"version":3,"sources":["../src/attributes/builders.ts","../src/attributes/validators.ts","../src/attributes/utils.ts","../src/attributes/attachers.ts","../src/attributes/domains.ts"],"names":["UserAttributes","SessionAttributes","DeviceAttributes","HTTPAttributes","DBAttributes","ServiceAttributes","NetworkAttributes","ServerAddressAttributes","URLAttributes","ErrorAttributes","ExceptionAttributes","ProcessAttributes","ThreadAttributes","ContainerAttributes","K8sAttributes","CloudAttributes","FaaSAttributes","FeatureFlagAttributes","MessagingAttributes","GenAIAttributes","RPCAttributes","GraphQLAttributes","OTelAttributes","CodeAttributes","TLSAttributes","REDACTOR_PATTERNS","replacement","attrs","resourceFromAttributes"],"mappings":"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","file":"chunk-DQ2SUROF.cjs","sourcesContent":["/**\n * Attribute builders for constructing OpenTelemetry attributes\n * Provides both key builders (Pattern A) and object builders (Pattern B)\n *\n * @example Pattern A: Key builders\n * ```typescript\n * attrs.user.id('123')                              // { 'user.id': '123' }\n * attrs.user.email('user@example.com')                 // { 'user.email': 'user@example.com' }\n * attrs.http.request.method('GET')                   // { 'http.request.method': 'GET' }\n * attrs.http.response.statusCode(200)                 // { 'http.response.status_code': 200 }\n * ```\n *\n * @example Pattern B: Object builders\n * ```typescript\n * attrs.user({ id: '123', email: 'user@example.com' })\n * attrs.http.server({ method: 'GET', route: '/users/:id', statusCode: 200 })\n * attrs.db.client({ system: 'postgresql', operation: 'SELECT', collectionName: 'users' })\n * ```\n */\n\nimport {\n  UserAttributes,\n  SessionAttributes,\n  DeviceAttributes,\n  HTTPAttributes,\n  DBAttributes,\n  ServiceAttributes,\n  NetworkAttributes,\n  ServerAddressAttributes,\n  URLAttributes,\n  ErrorAttributes,\n  ExceptionAttributes,\n  ProcessAttributes,\n  ThreadAttributes,\n  ContainerAttributes,\n  K8sAttributes,\n  CloudAttributes,\n  FaaSAttributes,\n  FeatureFlagAttributes,\n  MessagingAttributes,\n  GenAIAttributes,\n  RPCAttributes,\n  GraphQLAttributes,\n  OTelAttributes,\n  CodeAttributes,\n  TLSAttributes,\n} from './registry';\n\nimport type {\n  UserAttrs,\n  SessionAttrs,\n  DeviceAttrs,\n  HTTPServerAttrs,\n  HTTPClientAttrs,\n  DBAttrs,\n  ServiceAttrs,\n  NetworkAttrs,\n  ErrorAttrs,\n  MessagingAttrs,\n  CloudAttrs,\n  ServerAddressAttrs,\n  URLAttrs,\n  ProcessAttrs,\n  ContainerAttrs,\n  ExceptionAttrs,\n} from './types';\n\nexport const attrs = {\n  user: {\n    id: (value: string) => ({ [UserAttributes.id]: value }),\n    email: (value: string) => ({ [UserAttributes.email]: value }),\n    name: (value: string) => ({ [UserAttributes.name]: value }),\n    fullName: (value: string) => ({ [UserAttributes.fullName]: value }),\n    hash: (value: string) => ({ [UserAttributes.hash]: value }),\n    roles: (value: string[]) => ({ [UserAttributes.roles]: value }),\n\n    data: (data: UserAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.id !== undefined) result[UserAttributes.id] = data.id;\n      if (data.email !== undefined) result[UserAttributes.email] = data.email;\n      if (data.name !== undefined) result[UserAttributes.name] = data.name;\n      if (data.fullName !== undefined)\n        result[UserAttributes.fullName] = data.fullName;\n      if (data.hash !== undefined) result[UserAttributes.hash] = data.hash;\n      if (data.roles !== undefined) result[UserAttributes.roles] = data.roles;\n      return result;\n    },\n  },\n\n  session: {\n    id: (value: string) => ({ [SessionAttributes.id]: value }),\n    previousId: (value: string) => ({ [SessionAttributes.previousId]: value }),\n\n    data: (data: SessionAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.id !== undefined) result[SessionAttributes.id] = data.id;\n      if (data.previousId !== undefined)\n        result[SessionAttributes.previousId] = data.previousId;\n      return result;\n    },\n  },\n\n  device: {\n    id: (value: string) => ({ [DeviceAttributes.id]: value }),\n    manufacturer: (value: string) => ({\n      [DeviceAttributes.manufacturer]: value,\n    }),\n    modelIdentifier: (value: string) => ({\n      [DeviceAttributes.modelIdentifier]: value,\n    }),\n    modelName: (value: string) => ({ [DeviceAttributes.modelName]: value }),\n\n    data: (data: DeviceAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.id !== undefined) result[DeviceAttributes.id] = data.id;\n      if (data.manufacturer !== undefined)\n        result[DeviceAttributes.manufacturer] = data.manufacturer;\n      if (data.modelIdentifier !== undefined)\n        result[DeviceAttributes.modelIdentifier] = data.modelIdentifier;\n      if (data.modelName !== undefined)\n        result[DeviceAttributes.modelName] = data.modelName;\n      return result;\n    },\n  },\n\n  http: {\n    request: {\n      method: (value: string) => ({ [HTTPAttributes.requestMethod]: value }),\n      methodOriginal: (value: string) => ({\n        [HTTPAttributes.requestMethodOriginal]: value,\n      }),\n      resendCount: (value: number) => ({\n        [HTTPAttributes.requestResendCount]: value,\n      }),\n      size: (value: number) => ({ [HTTPAttributes.requestSize]: value }),\n      bodySize: (value: number) => ({\n        [HTTPAttributes.requestBodySize]: value,\n      }),\n    },\n\n    response: {\n      statusCode: (value: number) => ({\n        [HTTPAttributes.responseStatusCode]: value,\n      }),\n      size: (value: number) => ({ [HTTPAttributes.responseSize]: value }),\n      bodySize: (value: number) => ({\n        [HTTPAttributes.responseBodySize]: value,\n      }),\n    },\n\n    route: (value: string) => ({ [HTTPAttributes.route]: value }),\n    connectionState: (value: string) => ({\n      [HTTPAttributes.connectionState]: value,\n    }),\n\n    server: (data: HTTPServerAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.method !== undefined)\n        result[HTTPAttributes.requestMethod] = data.method;\n      if (data.route !== undefined) result[HTTPAttributes.route] = data.route;\n      if (data.statusCode !== undefined)\n        result[HTTPAttributes.responseStatusCode] = data.statusCode;\n      if (data.bodySize !== undefined)\n        result[HTTPAttributes.requestBodySize] = data.bodySize;\n      if (data.requestSize !== undefined)\n        result[HTTPAttributes.requestSize] = data.requestSize;\n      if (data.responseSize !== undefined)\n        result[HTTPAttributes.responseSize] = data.responseSize;\n      if (data.resendCount !== undefined)\n        result[HTTPAttributes.requestResendCount] = data.resendCount;\n      return result;\n    },\n\n    client: (data: HTTPClientAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.method !== undefined)\n        result[HTTPAttributes.requestMethod] = data.method;\n      if (data.url !== undefined) result[HTTPAttributes.route] = data.url;\n      if (data.statusCode !== undefined)\n        result[HTTPAttributes.responseStatusCode] = data.statusCode;\n      return result;\n    },\n  },\n\n  db: {\n    client: {\n      system: (value: string) => ({ [DBAttributes.systemName]: value }),\n      operation: (value: string) => ({ [DBAttributes.operationName]: value }),\n      collectionName: (value: string) => ({\n        [DBAttributes.collectionName]: value,\n      }),\n      namespace: (value: string) => ({ [DBAttributes.namespace]: value }),\n      statement: (value: string) => ({ [DBAttributes.statement]: value }),\n      querySummary: (value: string) => ({ [DBAttributes.querySummary]: value }),\n      queryText: (value: string) => ({ [DBAttributes.queryText]: value }),\n      responseStatus: (value: string | number) => ({\n        [DBAttributes.responseStatusCode]: value,\n      }),\n      rowsReturned: (value: number) => ({\n        [DBAttributes.responseReturnedRows]: value,\n      }),\n\n      data: (data: DBAttrs) => {\n        const result: Record<string, unknown> = {};\n        if (data.system !== undefined)\n          result[DBAttributes.systemName] = data.system;\n        if (data.operation !== undefined)\n          result[DBAttributes.operationName] = data.operation;\n        if (data.collectionName !== undefined)\n          result[DBAttributes.collectionName] = data.collectionName;\n        // 'name' maps to db.namespace (db.name is deprecated per OTel semantic conventions)\n        if (data.name !== undefined) result[DBAttributes.namespace] = data.name;\n        // 'namespace' takes precedence over 'name' if both are provided\n        if (data.namespace !== undefined)\n          result[DBAttributes.namespace] = data.namespace;\n        if (data.statement !== undefined)\n          result[DBAttributes.statement] = data.statement;\n        if (data.querySummary !== undefined)\n          result[DBAttributes.querySummary] = data.querySummary;\n        if (data.queryText !== undefined)\n          result[DBAttributes.queryText] = data.queryText;\n        if (data.responseStatus !== undefined)\n          result[DBAttributes.responseStatusCode] = data.responseStatus;\n        if (data.rowsReturned !== undefined)\n          result[DBAttributes.responseReturnedRows] = data.rowsReturned;\n        return result;\n      },\n    },\n  },\n\n  service: {\n    name: (value: string) => ({ [ServiceAttributes.name]: value }),\n    instance: (value: string) => ({ [ServiceAttributes.instance]: value }),\n    version: (value: string) => ({ [ServiceAttributes.version]: value }),\n\n    data: (data: ServiceAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.name !== undefined) result[ServiceAttributes.name] = data.name;\n      if (data.instance !== undefined)\n        result[ServiceAttributes.instance] = data.instance;\n      if (data.version !== undefined)\n        result[ServiceAttributes.version] = data.version;\n      return result;\n    },\n  },\n\n  network: {\n    peerAddress: (value: string) => ({\n      [NetworkAttributes.peerAddress]: value,\n    }),\n    peerPort: (value: number) => ({ [NetworkAttributes.peerPort]: value }),\n    transport: (value: string) => ({ [NetworkAttributes.transport]: value }),\n    protocolName: (value: string) => ({\n      [NetworkAttributes.protocolName]: value,\n    }),\n    protocolVersion: (value: string) => ({\n      [NetworkAttributes.protocolVersion]: value,\n    }),\n\n    data: (data: NetworkAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.peerAddress !== undefined)\n        result[NetworkAttributes.peerAddress] = data.peerAddress;\n      if (data.peerPort !== undefined)\n        result[NetworkAttributes.peerPort] = data.peerPort;\n      if (data.transport !== undefined)\n        result[NetworkAttributes.transport] = data.transport;\n      if (data.protocolName !== undefined)\n        result[NetworkAttributes.protocolName] = data.protocolName;\n      if (data.protocolVersion !== undefined)\n        result[NetworkAttributes.protocolVersion] = data.protocolVersion;\n      return result;\n    },\n  },\n\n  server: {\n    address: (value: string) => ({ [ServerAddressAttributes.address]: value }),\n    port: (value: number) => ({ [ServerAddressAttributes.port]: value }),\n    socketAddress: (value: string) => ({\n      [ServerAddressAttributes.socketAddress]: value,\n    }),\n\n    data: (data: ServerAddressAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.address !== undefined)\n        result[ServerAddressAttributes.address] = data.address;\n      if (data.port !== undefined)\n        result[ServerAddressAttributes.port] = data.port;\n      if (data.socketAddress !== undefined)\n        result[ServerAddressAttributes.socketAddress] = data.socketAddress;\n      return result;\n    },\n  },\n\n  url: {\n    scheme: (value: string) => ({ [URLAttributes.scheme]: value }),\n    full: (value: string) => ({ [URLAttributes.full]: value }),\n    path: (value: string) => ({ [URLAttributes.path]: value }),\n    query: (value: string) => ({ [URLAttributes.query]: value }),\n    fragment: (value: string) => ({ [URLAttributes.fragment]: value }),\n\n    data: (data: URLAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.scheme !== undefined) result[URLAttributes.scheme] = data.scheme;\n      if (data.full !== undefined) result[URLAttributes.full] = data.full;\n      if (data.path !== undefined) result[URLAttributes.path] = data.path;\n      if (data.query !== undefined) result[URLAttributes.query] = data.query;\n      if (data.fragment !== undefined)\n        result[URLAttributes.fragment] = data.fragment;\n      return result;\n    },\n  },\n\n  error: {\n    type: (value: string) => ({ [ErrorAttributes.type]: value }),\n    message: (value: string) => ({ [ErrorAttributes.message]: value }),\n    stackTrace: (value: string) => ({ [ErrorAttributes.stackTrace]: value }),\n    code: (value: string | number) => ({ [ErrorAttributes.code]: value }),\n\n    data: (data: ErrorAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.type !== undefined) result[ErrorAttributes.type] = data.type;\n      if (data.message !== undefined)\n        result[ErrorAttributes.message] = data.message;\n      if (data.stackTrace !== undefined)\n        result[ErrorAttributes.stackTrace] = data.stackTrace;\n      if (data.code !== undefined) result[ErrorAttributes.code] = data.code;\n      return result;\n    },\n  },\n\n  exception: {\n    escaped: (value: boolean) => ({ [ExceptionAttributes.escaped]: value }),\n    message: (value: string) => ({ [ExceptionAttributes.message]: value }),\n    stackTrace: (value: string) => ({\n      [ExceptionAttributes.stackTrace]: value,\n    }),\n    type: (value: string) => ({ [ExceptionAttributes.type]: value }),\n    moduleName: (value: string) => ({\n      [ExceptionAttributes.moduleName]: value,\n    }),\n\n    data: (data: ExceptionAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.escaped !== undefined)\n        result[ExceptionAttributes.escaped] = data.escaped;\n      if (data.message !== undefined)\n        result[ExceptionAttributes.message] = data.message;\n      if (data.stackTrace !== undefined)\n        result[ExceptionAttributes.stackTrace] = data.stackTrace;\n      if (data.type !== undefined) result[ExceptionAttributes.type] = data.type;\n      if (data.moduleName !== undefined)\n        result[ExceptionAttributes.moduleName] = data.moduleName;\n      return result;\n    },\n  },\n\n  process: {\n    pid: (value: number) => ({ [ProcessAttributes.pid]: value }),\n    executablePath: (value: string) => ({\n      [ProcessAttributes.executablePath]: value,\n    }),\n    command: (value: string) => ({ [ProcessAttributes.command]: value }),\n    owner: (value: string) => ({ [ProcessAttributes.owner]: value }),\n\n    data: (data: ProcessAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.pid !== undefined) result[ProcessAttributes.pid] = data.pid;\n      if (data.executablePath !== undefined)\n        result[ProcessAttributes.executablePath] = data.executablePath;\n      if (data.command !== undefined)\n        result[ProcessAttributes.command] = data.command;\n      if (data.owner !== undefined)\n        result[ProcessAttributes.owner] = data.owner;\n      return result;\n    },\n  },\n\n  thread: {\n    id: (value: number) => ({ [ThreadAttributes.id]: value }),\n    name: (value: string) => ({ [ThreadAttributes.name]: value }),\n  },\n\n  container: {\n    id: (value: string) => ({ [ContainerAttributes.id]: value }),\n    name: (value: string) => ({ [ContainerAttributes.name]: value }),\n    image: (value: string) => ({ [ContainerAttributes.image]: value }),\n    tag: (value: string) => ({ [ContainerAttributes.tag]: value }),\n\n    data: (data: ContainerAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.id !== undefined) result[ContainerAttributes.id] = data.id;\n      if (data.name !== undefined) result[ContainerAttributes.name] = data.name;\n      if (data.image !== undefined)\n        result[ContainerAttributes.image] = data.image;\n      if (data.tag !== undefined) result[ContainerAttributes.tag] = data.tag;\n      return result;\n    },\n  },\n\n  k8s: {\n    podName: (value: string) => ({ [K8sAttributes.podName]: value }),\n    namespaceName: (value: string) => ({\n      [K8sAttributes.namespaceName]: value,\n    }),\n    deploymentName: (value: string) => ({\n      [K8sAttributes.deploymentName]: value,\n    }),\n    state: (value: string) => ({ [K8sAttributes.state]: value }),\n  },\n\n  cloud: {\n    provider: (value: string) => ({ [CloudAttributes.provider]: value }),\n    accountId: (value: string) => ({ [CloudAttributes.accountId]: value }),\n    region: (value: string) => ({ [CloudAttributes.region]: value }),\n    availabilityZone: (value: string) => ({\n      [CloudAttributes.availabilityZone]: value,\n    }),\n    platform: (value: string) => ({ [CloudAttributes.platform]: value }),\n\n    data: (data: CloudAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.provider !== undefined)\n        result[CloudAttributes.provider] = data.provider;\n      if (data.accountId !== undefined)\n        result[CloudAttributes.accountId] = data.accountId;\n      if (data.region !== undefined)\n        result[CloudAttributes.region] = data.region;\n      if (data.availabilityZone !== undefined)\n        result[CloudAttributes.availabilityZone] = data.availabilityZone;\n      if (data.platform !== undefined)\n        result[CloudAttributes.platform] = data.platform;\n      return result;\n    },\n  },\n\n  faas: {\n    name: (value: string) => ({ [FaaSAttributes.name]: value }),\n    version: (value: string) => ({ [FaaSAttributes.version]: value }),\n    instance: (value: string) => ({ [FaaSAttributes.instance]: value }),\n    execution: (value: string) => ({ [FaaSAttributes.execution]: value }),\n    coldstart: (value: boolean) => ({ [FaaSAttributes.coldstart]: value }),\n  },\n\n  featureFlag: {\n    key: (value: string) => ({ [FeatureFlagAttributes.key]: value }),\n    provider: (value: string) => ({ [FeatureFlagAttributes.provider]: value }),\n    variant: (value: string) => ({ [FeatureFlagAttributes.variant]: value }),\n  },\n\n  messaging: {\n    system: (value: string) => ({ [MessagingAttributes.system]: value }),\n    destination: (value: string) => ({\n      [MessagingAttributes.destination]: value,\n    }),\n    operation: (value: 'publish' | 'receive' | 'process') => ({\n      [MessagingAttributes.operation]: value,\n    }),\n    messageId: (value: string) => ({ [MessagingAttributes.messageId]: value }),\n    conversationId: (value: string) => ({\n      [MessagingAttributes.conversationId]: value,\n    }),\n\n    data: (data: MessagingAttrs) => {\n      const result: Record<string, unknown> = {};\n      if (data.system !== undefined)\n        result[MessagingAttributes.system] = data.system;\n      if (data.destination !== undefined)\n        result[MessagingAttributes.destination] = data.destination;\n      if (data.operation !== undefined)\n        result[MessagingAttributes.operation] = data.operation;\n      if (data.messageId !== undefined)\n        result[MessagingAttributes.messageId] = data.messageId;\n      if (data.conversationId !== undefined)\n        result[MessagingAttributes.conversationId] = data.conversationId;\n      return result;\n    },\n  },\n\n  genAI: {\n    system: (value: string) => ({ [GenAIAttributes.system]: value }),\n    requestModel: (value: string) => ({\n      [GenAIAttributes.requestModel]: value,\n    }),\n    responseModel: (value: string) => ({\n      [GenAIAttributes.responseModel]: value,\n    }),\n    operationName: (value: 'chat' | 'completion' | 'embedding') => ({\n      [GenAIAttributes.operationName]: value,\n    }),\n    usagePromptTokens: (value: number) => ({\n      [GenAIAttributes.usagePromptTokens]: value,\n    }),\n    usageCompletionTokens: (value: number) => ({\n      [GenAIAttributes.usageCompletionTokens]: value,\n    }),\n    provider: (value: string) => ({ [GenAIAttributes.provider]: value }),\n  },\n\n  rpc: {\n    system: (value: string) => ({ [RPCAttributes.system]: value }),\n    service: (value: string) => ({ [RPCAttributes.service]: value }),\n    method: (value: string) => ({ [RPCAttributes.method]: value }),\n    grpcStatusCode: (value: number) => ({\n      [RPCAttributes.grpcStatusCode]: value,\n    }),\n  },\n\n  graphql: {\n    document: (value: string) => ({ [GraphQLAttributes.document]: value }),\n    operationName: (value: string) => ({\n      [GraphQLAttributes.operationName]: value,\n    }),\n    operationType: (value: 'query' | 'mutation' | 'subscription') => ({\n      [GraphQLAttributes.operationType]: value,\n    }),\n  },\n\n  otel: {\n    libraryName: (value: string) => ({ [OTelAttributes.libraryName]: value }),\n    libraryVersion: (value: string) => ({\n      [OTelAttributes.libraryVersion]: value,\n    }),\n    statusCode: (value: string) => ({ [OTelAttributes.statusCode]: value }),\n  },\n\n  code: {\n    namespace: (value: string) => ({ [CodeAttributes.namespace]: value }),\n    filepath: (value: string) => ({ [CodeAttributes.filepath]: value }),\n    function: (value: string) => ({ [CodeAttributes.function]: value }),\n    class: (value: string) => ({ [CodeAttributes.class]: value }),\n    method: (value: string) => ({ [CodeAttributes.method]: value }),\n    column: (value: string) => ({ [CodeAttributes.column]: value }),\n    lineNumber: (value: number) => ({ [CodeAttributes.lineNumber]: value }),\n    repository: (value: string) => ({ [CodeAttributes.repository]: value }),\n    revision: (value: string) => ({ [CodeAttributes.revision]: value }),\n  },\n\n  tls: {\n    protocolVersion: (value: string) => ({\n      [TLSAttributes.protocolVersion]: value,\n    }),\n    cipher: (value: string) => ({ [TLSAttributes.cipher]: value }),\n    curveName: (value: string) => ({ [TLSAttributes.curveName]: value }),\n    resumed: (value: boolean) => ({ [TLSAttributes.resumed]: value }),\n  },\n} as const;\n","/**\n * Attribute validation, PII detection, and guardrails\n * Provides safe-by-default attribute handling with configurable policies\n */\n\nimport { REDACTOR_PATTERNS } from '../attribute-redacting-processor';\n\nexport interface AttributeGuardrails {\n  /** How to handle PII in attributes */\n  pii?: 'allow' | 'redact' | 'hash' | 'block';\n\n  /** Maximum length for attribute values */\n  maxLength?: number;\n\n  /** Validate enum values against known values */\n  validateEnum?: boolean;\n\n  /** Log warnings for deprecated attributes instead of throwing */\n  warnDeprecated?: boolean;\n\n  /** Custom deprecation warnings */\n  deprecatedWarnings?: Record<string, string>;\n}\n\nexport interface AttributePolicy {\n  guardrails?: AttributeGuardrails;\n  /** Custom deprecation warnings for specific attributes */\n  deprecatedWarnings?: Record<string, string>;\n}\n\nconst DEPRECATED_ATTRIBUTES = {\n  'enduser.id': 'user.id',\n  'enduser.role': 'user.roles',\n  'enduser.scope': undefined,\n  'http.method': 'http.request.method',\n  'http.host': 'server.address',\n  'http.status_code': 'http.response.status_code',\n  'http.target': 'url.path',\n  'http.url': 'url.full',\n  'http.user_agent': 'user_agent.original',\n  'http.flavor': 'network.protocol.name',\n  'http.scheme': 'url.scheme',\n  'http.server_name': 'server.address',\n  'db.name': 'db.namespace',\n  'db.operation': 'db.operation.name',\n  'db.statement': 'db.query.text',\n  'db.system': 'db.system.name',\n  'db.collection': 'db.collection.name',\n  'db.instance.id': undefined,\n  'db.jdbc.driver_classname': undefined,\n  'db.mssql.instance_name': 'mssql.instance.name',\n  'db.sql.table': 'db.collection.name',\n  'http.client_ip': 'client.address',\n  'user_agent.original': 'user_agent.original',\n} as const;\n\nconst HTTP_METHODS = new Set([\n  'GET',\n  'POST',\n  'PUT',\n  'DELETE',\n  'PATCH',\n  'HEAD',\n  'OPTIONS',\n  'TRACE',\n  'QUERY',\n  '_OTHER',\n]);\n\nexport function validateAttribute(\n  key: string,\n  value: unknown,\n  policy: AttributePolicy = {},\n): unknown {\n  const { guardrails = {} } = policy;\n\n  if (value === undefined || value === null) {\n    return undefined;\n  }\n\n  // For non-string values that don't need transformation, preserve the original type\n  if (typeof value !== 'string') {\n    // PII checks only apply to strings\n    // maxLength only applies to strings\n    // validateEnum only applies to strings\n    return value;\n  }\n\n  const stringValue = value;\n\n  if (guardrails.pii) {\n    const piiResult = applyPIIPolicy(key, stringValue, guardrails.pii);\n    if (piiResult !== stringValue) {\n      return piiResult;\n    }\n  }\n\n  if (guardrails.maxLength && stringValue.length > guardrails.maxLength) {\n    return truncateValue(key, stringValue, guardrails.maxLength);\n  }\n\n  if (guardrails.validateEnum && HTTP_METHODS.has(stringValue)) {\n    const normalizedMethod = normalizeHTTPMethod(stringValue);\n    if (normalizedMethod !== stringValue) {\n      return normalizedMethod;\n    }\n  }\n\n  return stringValue;\n}\n\nfunction applyPIIPolicy(\n  key: string,\n  value: string,\n  pii: AttributeGuardrails['pii'],\n): string {\n  if (pii === 'allow') {\n    return value;\n  }\n\n  if (pii === 'redact') {\n    return redactIfPII(key, value);\n  }\n\n  if (pii === 'hash') {\n    return hashIfPII(key, value);\n  }\n\n  if (pii === 'block' && isPIIKey(key)) {\n    throw new Error(\n      `PII attribute \"${key}\" is blocked by guardrails. Use pii: \"allow\" to enable it.`,\n    );\n  }\n\n  return value;\n}\n\nfunction isPIIKey(key: string): boolean {\n  const piiKeyPatterns = [\n    'email',\n    'phone',\n    'ssn',\n    'credit_card',\n    'password',\n    'secret',\n    'token',\n    'api_key',\n    'authorization',\n  ];\n  const lowerKey = key.toLowerCase();\n  return piiKeyPatterns.some((pattern) => lowerKey.includes(pattern));\n}\n\nfunction redactIfPII(key: string, value: string): string {\n  if (isPIIKey(key)) {\n    // REDACTOR_PATTERNS values are RegExp patterns\n    for (const [, pattern] of Object.entries(REDACTOR_PATTERNS)) {\n      if (pattern instanceof RegExp && pattern.test(value)) {\n        return '[REDACTED]';\n      }\n    }\n    // If no pattern matched but key is PII, still redact\n    return '[REDACTED]';\n  }\n  return value;\n}\n\nfunction hashIfPII(key: string, value: string): string {\n  if (!isPIIKey(key)) {\n    return value;\n  }\n\n  // Use a simple but consistent hash that produces 32-char hex\n  // FNV-1a hash variant producing 128-bit output (32 hex chars)\n  const FNV_PRIME = 0x01_00_01_93;\n  const FNV_OFFSET = 0x81_1c_9d_c5;\n\n  // Generate 4 32-bit hashes to produce 32 hex chars\n  const hashes: number[] = [];\n  for (let round = 0; round < 4; round++) {\n    let hash = FNV_OFFSET;\n    for (let i = 0; i < value.length; i++) {\n      hash ^= (value.codePointAt(i) ?? 0) + round;\n      hash = Math.imul(hash, FNV_PRIME);\n    }\n    hashes.push(hash >>> 0); // Convert to unsigned\n  }\n\n  return `hash_${hashes.map((h) => h.toString(16).padStart(8, '0')).join('')}`;\n}\n\nfunction truncateValue(key: string, value: string, maxLength: number): string {\n  if (value.length <= maxLength) {\n    return value;\n  }\n  return value.slice(0, maxLength - 3) + '...';\n}\n\nfunction normalizeHTTPMethod(method: string): string {\n  const upper = method.toUpperCase();\n  if (HTTP_METHODS.has(upper)) {\n    return upper;\n  }\n  return upper;\n}\n\nexport function checkDeprecatedAttribute(\n  key: string,\n  policy: AttributePolicy = {},\n): string | null {\n  const { guardrails = {}, deprecatedWarnings = {} } = policy;\n  const { warnDeprecated = true } = guardrails;\n\n  if (!warnDeprecated) {\n    return null;\n  }\n\n  // Check if the key exists in the deprecated attributes map\n  const isDeprecated = key in DEPRECATED_ATTRIBUTES;\n  if (isDeprecated) {\n    const replacement =\n      DEPRECATED_ATTRIBUTES[key as keyof typeof DEPRECATED_ATTRIBUTES];\n    if (replacement === undefined) {\n      // Deprecated with no replacement (e.g., enduser.scope)\n      console.warn(\n        `[autotel/attributes] Attribute \"${key}\" is deprecated and has no replacement. ` +\n          `Remove or find a replacement in OpenTelemetry semantic conventions.`,\n      );\n    } else {\n      // Deprecated with a known replacement\n      console.warn(\n        `[autotel/attributes] Attribute \"${key}\" is deprecated. Use \"${replacement}\" instead.`,\n      );\n    }\n  }\n\n  if (deprecatedWarnings[key]) {\n    console.warn(`[autotel/attributes] ${deprecatedWarnings[key]}`);\n  }\n\n  const replacement =\n    DEPRECATED_ATTRIBUTES[key as keyof typeof DEPRECATED_ATTRIBUTES];\n  return replacement ?? null;\n}\n\nexport function autoRedactPII(\n  attributes: Record<string, unknown>,\n  policy: AttributePolicy = {},\n): Record<string, unknown> {\n  const { guardrails = { pii: 'redact' } } = policy;\n\n  const redacted: Record<string, unknown> = {};\n  for (const [key, value] of Object.entries(attributes)) {\n    redacted[key] = validateAttribute(key, value, { guardrails });\n  }\n  return redacted;\n}\n\nexport function defaultGuardrails(): AttributeGuardrails {\n  return {\n    pii: 'redact',\n    maxLength: 255,\n    validateEnum: true,\n    warnDeprecated: true,\n  };\n}\n","/**\n * Attribute utility functions\n */\n\nimport type { AttributeValue } from '../trace-context';\nimport {\n  validateAttribute,\n  autoRedactPII,\n  defaultGuardrails,\n  checkDeprecatedAttribute,\n  type AttributePolicy,\n} from './validators';\n\n// Type for objects that have setAttributes method (spans or contexts)\n// Using a generic parameter to accommodate different AttributeValue types\ntype AttributeSetter = {\n  setAttributes: (attrs: Record<string, AttributeValue>) => void;\n};\n\nexport function mergeAttrs(\n  ...attrSets: Array<Record<string, unknown> | undefined>\n): Record<string, unknown> {\n  const result: Record<string, unknown> = {};\n  for (const attrSet of attrSets) {\n    if (attrSet) {\n      Object.assign(result, attrSet);\n    }\n  }\n  return result;\n}\n\nexport function safeSetAttributes(\n  span: AttributeSetter,\n  attrs: Record<string, unknown>,\n  policy?: AttributePolicy,\n): void {\n  // Merge user-supplied guardrails with defaults so callers can tweak\n  // a single option without opting out of the rest\n  const mergedGuardrails = {\n    ...defaultGuardrails(),\n    ...policy?.guardrails,\n  };\n  const effectivePolicy: AttributePolicy = {\n    ...policy,\n    guardrails: mergedGuardrails,\n  };\n\n  const validated = autoRedactPII(attrs, effectivePolicy);\n\n  const sanitizedAttrs: Record<string, AttributeValue> = {};\n  for (const [key, value] of Object.entries(validated)) {\n    if (value !== undefined) {\n      // Check for deprecated attributes and log warnings\n      checkDeprecatedAttribute(key, effectivePolicy);\n      const validatedValue = validateAttribute(key, value, effectivePolicy);\n      if (validatedValue !== undefined) {\n        // Cast to AttributeValue since validateAttribute ensures valid types\n        sanitizedAttrs[key] = validatedValue as AttributeValue;\n      }\n    }\n  }\n\n  span.setAttributes(sanitizedAttrs);\n}\n","/**\n * Signal attachment helpers\n * These functions know WHERE to attach attributes automatically\n * They handle span, resource, and log signals correctly\n */\n\nimport type { Span, Attributes } from '@opentelemetry/api';\nimport {\n  resourceFromAttributes,\n  type Resource,\n} from '@opentelemetry/resources';\nimport type { TraceContext } from '../trace-context';\nimport { attrs } from './builders';\nimport { safeSetAttributes } from './utils';\n\nexport function setUser(\n  spanOrContext: Span | TraceContext,\n  data: import('./types').UserAttrs,\n  guardrails?: import('./validators').AttributePolicy,\n): void {\n  const attributes = attrs.user.data(data);\n  safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function setSession(\n  spanOrContext: Span | TraceContext,\n  data: import('./types').SessionAttrs,\n  guardrails?: import('./validators').AttributePolicy,\n): void {\n  const attributes = attrs.session.data(data);\n  safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function setDevice(\n  spanOrContext: Span | TraceContext,\n  data: import('./types').DeviceAttrs,\n  guardrails?: import('./validators').AttributePolicy,\n): void {\n  const attributes = attrs.device.data(data);\n  safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function httpServer(\n  spanOrContext: Span | TraceContext,\n  data: import('./types').HTTPServerAttrs,\n  guardrails?: import('./validators').AttributePolicy,\n): void {\n  const attributes = attrs.http.server(data);\n\n  if ('updateName' in spanOrContext && data.method && data.route) {\n    const span = spanOrContext as Span;\n    span.updateName(`HTTP ${data.method} ${data.route}`);\n  }\n\n  safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function httpClient(\n  spanOrContext: Span | TraceContext,\n  data: import('./types').HTTPClientAttrs,\n  guardrails?: import('./validators').AttributePolicy,\n): void {\n  const attributes = attrs.http.client(data);\n  safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function dbClient(\n  spanOrContext: Span | TraceContext,\n  data: import('./types').DBAttrs,\n  guardrails?: import('./validators').AttributePolicy,\n): void {\n  const attributes = attrs.db.client.data(data);\n  safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\n/**\n * Merge service attributes into a Resource and return a new Resource.\n *\n * Resource.attributes is readonly, so this function returns a new merged\n * Resource rather than mutating the input.\n *\n * @param resource - The existing resource to merge with\n * @param data - Service attributes to add\n * @returns A new Resource with the merged attributes\n *\n * @example\n * ```typescript\n * const baseResource = Resource.default();\n * const enrichedResource = mergeServiceResource(baseResource, {\n *   name: 'my-service',\n *   version: '1.0.0',\n * });\n * ```\n */\nexport function mergeServiceResource(\n  resource: Resource,\n  data: import('./types').ServiceAttrs,\n): Resource {\n  const attributes = attrs.service.data(data);\n  return resource.merge(resourceFromAttributes(attributes as Attributes));\n}\n\nexport function identify(\n  spanOrContext: Span | TraceContext,\n  data: {\n    user?: import('./types').UserAttrs;\n    session?: import('./types').SessionAttrs;\n    device?: import('./types').DeviceAttrs;\n  },\n  guardrails?: import('./validators').AttributePolicy,\n): void {\n  const allAttrs = [];\n\n  if (data.user) {\n    allAttrs.push(attrs.user.data(data.user));\n  }\n  if (data.session) {\n    allAttrs.push(attrs.session.data(data.session));\n  }\n  if (data.device) {\n    allAttrs.push(attrs.device.data(data.device));\n  }\n\n  const merged: Record<string, unknown> = {};\n  for (const attrSet of allAttrs) {\n    Object.assign(merged, attrSet);\n  }\n\n  safeSetAttributes(spanOrContext, merged, guardrails);\n}\n\nexport function request(\n  spanOrContext: Span | TraceContext,\n  data: import('./types').HTTPServerAttrs & {\n    clientIp?: string;\n  },\n  guardrails?: import('./validators').AttributePolicy,\n): void {\n  const httpAttrs = attrs.http.server(data);\n  const networkAttrs = attrs.network.peerAddress(data.clientIp || '');\n  const merged = { ...httpAttrs, ...networkAttrs };\n  safeSetAttributes(spanOrContext, merged, guardrails);\n}\n\nexport function setError(\n  spanOrContext: Span | TraceContext,\n  data: import('./types').ErrorAttrs,\n  guardrails?: import('./validators').AttributePolicy,\n): void {\n  const attributes = attrs.error.data(data);\n  safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n\nexport function setException(\n  spanOrContext: Span | TraceContext,\n  data: import('./types').ExceptionAttrs,\n  guardrails?: import('./validators').AttributePolicy,\n): void {\n  const attributes = attrs.exception.data(data);\n  safeSetAttributes(spanOrContext, attributes, guardrails);\n}\n","/**\n * Domain helpers for common attribute patterns\n * These bundle multiple attribute groups into semantic helpers\n */\n\nimport { attrs } from './builders';\nimport { safeSetAttributes } from './utils';\n\nexport function transaction(\n  spanOrContext: import('../trace-context').TraceContext,\n  config: {\n    user?: import('./types').UserAttrs;\n    session?: import('./types').SessionAttrs;\n    method?: string;\n    route?: string;\n    statusCode?: number;\n    clientIp?: string;\n  },\n  guardrails?: import('./validators').AttributePolicy,\n): void {\n  const userAttrs = attrs.user.data(config.user || {});\n  const sessionAttrs = attrs.session.data(config.session || {});\n  const httpAttrs = attrs.http.server({\n    method: config.method,\n    route: config.route,\n    statusCode: config.statusCode,\n  });\n  const networkAttrs = attrs.network.peerAddress(config.clientIp || '');\n\n  const merged = {\n    ...userAttrs,\n    ...sessionAttrs,\n    ...httpAttrs,\n    ...networkAttrs,\n  };\n\n  if (config.method && config.route && 'updateName' in spanOrContext) {\n    spanOrContext.updateName(`HTTP ${config.method} ${config.route}`);\n  }\n\n  safeSetAttributes(spanOrContext, merged, guardrails);\n}\n"]}