{"version":3,"sources":["webpack:///../../../src/utils/debug-ids.ts","webpack:///../../../../src/utils/anthropic-ai/index.ts","webpack:///../../../src/utils/cookie.ts","webpack:///../../../src/utils/clientreport.ts","webpack:///../../../src/utils/applyScopeDataToEvent.ts","webpack:///../../../src/utils/baggage.ts","webpack:///../../../src/utils/aggregate-errors.ts","webpack:///../../../../src/utils/anthropic-ai/utils.ts","webpack:///../../src/trpc.ts","webpack:///../../../../src/utils/ai/utils.ts","webpack:///../../../../src/utils/anthropic-ai/constants.ts","webpack:///../../../src/utils/breadcrumb-log-level.ts","webpack:///../../../../src/utils/ai/gen-ai-attributes.ts","webpack:///../../../src/utils/debug-logger.ts","webpack:///../../../src/utils/browser.ts","webpack:///../../../src/utils/debounce.ts","webpack:///../../../../src/utils/anthropic-ai/streaming.ts","webpack:///../../../src/utils/anr.ts"],"names":["parsedStackResults","lastKeysCount","cachedFilenameDebugIds","getFilenameToDebugIdMap","stackParser","debugIdMap","GLOBAL_OBJ","_sentryDebugIds","debugIdKeys","Object","keys","length","reduce","acc","stackKey","result","parsedStack","i","stackFrame","filename","debugId","getDebugImagesForResources","resource_paths","filenameDebugIdMap","images","path","push","type","code_file","debug_id","extractRequestAttributes","args","methodPath","attributes","GEN_AI_SYSTEM_ATTRIBUTE","GEN_AI_OPERATION_NAME_ATTRIBUTE","getFinalOperationName","SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN","_params$model","params","tools","Array","isArray","GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE","JSON","stringify","GEN_AI_REQUEST_MODEL_ATTRIBUTE","model","GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE","temperature","GEN_AI_REQUEST_TOP_P_ATTRIBUTE","top_p","GEN_AI_REQUEST_STREAM_ATTRIBUTE","stream","GEN_AI_REQUEST_TOP_K_ATTRIBUTE","top_k","GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE","frequency_penalty","GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE","max_tokens","addPrivateRequestAttributes","span","setAttributes","GEN_AI_REQUEST_MESSAGES_ATTRIBUTE","messages","input","GEN_AI_PROMPT_ATTRIBUTE","prompt","handleResponseError","response","error","setStatus","code","SPAN_STATUS_ERROR","message","captureException","mechanism","handled","addContentAttributes","content","GEN_AI_RESPONSE_TEXT_ATTRIBUTE","map","item","text","filter","join","toolCalls","GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE","completion","input_tokens","addMetadataAttributes","GEN_AI_RESPONSE_ID_ATTRIBUTE","id","GEN_AI_RESPONSE_MODEL_ATTRIBUTE","created","ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE","Date","toISOString","created_at","usage","setTokenUsageAttributes","output_tokens","cache_creation_input_tokens","cache_read_input_tokens","addResponseAttributes","recordOutputs","handleStreamingError","data","function","isRecording","end","handleStreamingRequest","originalMethod","target","context","requestAttributes","operationName","options","isStreamRequested","_requestAttributes$GE","spanConfig","name","concat","op","getSpanOperation","startSpanManual","_options$recordOutput","recordInputs","apply","instrumentAsyncIterableStream","_options$recordOutput2","messageStream","instrumentMessageStream","instrumentMethod","Proxy","thisArg","_requestAttributes$GE2","undefined","Boolean","isStreamingMethod","startSpan","handleCallbackErrors","createDeepProxy","currentPath","arguments","get","obj","prop","value","buildMethodPath","String","shouldInstrument","bind","instrumentAnthropicAiClient","anthropicAiClient","_getClient","sendDefaultPii","getClient","getOptions","_options","_objectSpread","parseCookie","str","index","eqIdx","indexOf","endIdx","lastIndexOf","key","slice","trim","val","charCodeAt","decodeURIComponent","_unused","createClientReportEnvelope","discarded_events","dsn","timestamp","clientReportItem","dateTimestampInSeconds","createEnvelope","applyScopeDataToEvent","event","fingerprint","breadcrumbs","sdkProcessingMetadata","applyDataToEvent","applySpanToEvent","applyFingerprintToEvent","applyBreadcrumbsToEvent","applySdkMetadataToEvent","mergeScopeData","mergeData","extra","tags","user","contexts","level","eventProcessors","attachments","propagationContext","transactionName","mergeAndOverwriteScopeData","merge","mergeVal","transaction","mergedBreadcrumbs","trace","spanToTraceContext","dynamicSamplingContext","getDynamicSamplingContextFromSpan","rootSpan","getRootSpan","spanToJSON","description","SENTRY_BAGGAGE_KEY_PREFIX","SENTRY_BAGGAGE_KEY_PREFIX_REGEX","MAX_BAGGAGE_STRING_LENGTH","baggageHeaderToDynamicSamplingContext","baggageHeader","baggageObject","parseBaggageHeader","entries","_ref","match","nonPrefixedKey","dynamicSamplingContextToSentryBaggageHeader","sentryPrefixedDSC","_ref2","dscKey","dscValue","objectToBaggageHeader","isString","curr","currBaggageObject","baggageHeaderToObject","forEach","_ref3","split","baggageEntry","keyOrValue","_ref4","object","_ref5","currentIndex","objectKey","objectValue","encodeURIComponent","newBaggageHeader","DEBUG_BUILD","debug","warn","applyAggregateErrorsToEvent","exceptionFromErrorImplementation","parser","limit","hint","_event$exception","exception","values","isInstanceOf","originalException","Error","aggregateExceptionsFromError","prevExceptions","exceptionId","newExceptions","applyExceptionGroupFieldsForParentException","newException","newExceptionId","applyExceptionGroupFieldsForChildException","errors","childError","is_exception_group","exception_id","source","parentId","parent_id","ANTHROPIC_AI_INSTRUMENTED_METHODS","includes","trpcCaptureContext","captureIfError","nextResult","ok","trpcMiddleware","opts","_clientOptions$normal","next","rawInput","getRawInput","client","clientOptions","trpcContext","procedure_path","procedure_type","addNonEnumerableProperty","normalizeDepth","attachRpcInput","normalize","rawRes","withIsolationScope","scope","setContext","SEMANTIC_ATTRIBUTE_SENTRY_SOURCE","forceTransaction","e","pop","promptTokens","completionTokens","cachedInputTokens","cachedOutputTokens","GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE","GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE","totalTokens","GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE","ANTHROPIC_AI_INTEGRATION_NAME","getBreadcrumbLogLevelFromHttpStatusCode","statusCode","GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE","GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE","GEN_AI_RESPONSE_STREAMING_ATTRIBUTE","OPENAI_RESPONSE_ID_ATTRIBUTE","OPENAI_RESPONSE_MODEL_ATTRIBUTE","OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE","OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE","OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE","OPENAI_OPERATIONS","CHAT","RESPONSES","CONSOLE_LEVELS","PREFIX","originalConsoleMethods","consoleSandbox","callback","console","wrappedFuncs","wrappedLevels","originalConsoleMethod","enable","_getLoggerSettings","enabled","disable","isEnabled","log","_len","_key","_maybeLog","_len2","_key2","_len3","_key3","_len4","_key4","getGlobalSingleton","WINDOW","DEFAULT_MAX_STRING_LENGTH","htmlTreeAsString","elem","currentElem","MAX_TRAVERSE_HEIGHT","out","height","len","separator","sepLength","nextStr","keyAttrs","maxStringLength","_htmlElementAsString","parentNode","reverse","el","tagName","HTMLElement","dataset","toLowerCase","keyAttrPairs","keyAttr","getAttribute","keyAttrPair","className","classes","c","allowedAttrs","k","attr","getLocationHref","document","location","href","_unused2","getComponentName","debounce","func","wait","callbackReturnValue","timerId","maxTimerId","maxWait","Math","max","setTimeoutImpl","setTimeout","invokeFunc","cancelTimers","clearTimeout","flush","debounced","cancel","isErrorEvent","_event$error$type","_event$error","handleMessageMetadata","state","responseId","responseModel","stop_reason","finishReasons","cacheCreationInputTokens","cacheReadInputTokens","handleContentBlockStart","content_block","activeToolBlocks","inputJsonParts","handleContentBlockDelta","delta","partial_json","active","responseTexts","handleContentBlockStop","raw","parsedInput","parse","__unparsed","processEvent","isError","finalizeStreamSpan","_x","_x2","_x3","_instrumentAsyncIterableStream","_wrapAsyncGenerator","_iteratorAbruptCompletion","_didIteratorError","_iteratorError","_iterator","_asyncIterator","_step","_awaitAsyncGenerator","done","err","return","on","watchdogTimer","createTimer","pollInterval","anrThreshold","timer","triggered","setInterval","diffMs","getTimeMs","poll","reset","callFrameToStackFrame","frame","url","getModuleFromFilename","replace","colno","columnNumber","lineno","lineNumber","module","functionName","UNKNOWN_FUNCTION","in_app","filenameIsInApp"],"mappings":"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","file":"vendors~e30e670f.71ff2c0ad52d6c797d15.chunk.js","sourcesContent":["import type { DebugImage } from '../types-hoist/debugMeta';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { GLOBAL_OBJ } from './worldwide';\n\ntype StackString = string;\ntype CachedResult = [string, string];\n\nlet parsedStackResults: Record<StackString, CachedResult> | undefined;\nlet lastKeysCount: number | undefined;\nlet cachedFilenameDebugIds: Record<string, string> | undefined;\n\n/**\n * Returns a map of filenames to debug identifiers.\n */\nexport function getFilenameToDebugIdMap(stackParser: StackParser): Record<string, string> {\n  const debugIdMap = GLOBAL_OBJ._sentryDebugIds;\n  if (!debugIdMap) {\n    return {};\n  }\n\n  const debugIdKeys = Object.keys(debugIdMap);\n\n  // If the count of registered globals hasn't changed since the last call, we\n  // can just return the cached result.\n  if (cachedFilenameDebugIds && debugIdKeys.length === lastKeysCount) {\n    return cachedFilenameDebugIds;\n  }\n\n  lastKeysCount = debugIdKeys.length;\n\n  // Build a map of filename -> debug_id.\n  cachedFilenameDebugIds = debugIdKeys.reduce<Record<string, string>>((acc, stackKey) => {\n    if (!parsedStackResults) {\n      parsedStackResults = {};\n    }\n\n    const result = parsedStackResults[stackKey];\n\n    if (result) {\n      acc[result[0]] = result[1];\n    } else {\n      const parsedStack = stackParser(stackKey);\n\n      for (let i = parsedStack.length - 1; i >= 0; i--) {\n        const stackFrame = parsedStack[i];\n        const filename = stackFrame?.filename;\n        const debugId = debugIdMap[stackKey];\n\n        if (filename && debugId) {\n          acc[filename] = debugId;\n          parsedStackResults[stackKey] = [filename, debugId];\n          break;\n        }\n      }\n    }\n\n    return acc;\n  }, {});\n\n  return cachedFilenameDebugIds;\n}\n\n/**\n * Returns a list of debug images for the given resources.\n */\nexport function getDebugImagesForResources(\n  stackParser: StackParser,\n  resource_paths: ReadonlyArray<string>,\n): DebugImage[] {\n  const filenameDebugIdMap = getFilenameToDebugIdMap(stackParser);\n\n  if (!filenameDebugIdMap) {\n    return [];\n  }\n\n  const images: DebugImage[] = [];\n  for (const path of resource_paths) {\n    if (path && filenameDebugIdMap[path]) {\n      images.push({\n        type: 'sourcemap',\n        code_file: path,\n        debug_id: filenameDebugIdMap[path] as string,\n      });\n    }\n  }\n\n  return images;\n}\n","import { getClient } from '../../currentScopes';\nimport { captureException } from '../../exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../../semanticAttributes';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport { startSpan, startSpanManual } from '../../tracing/trace';\nimport type { Span, SpanAttributeValue } from '../../types-hoist/span';\nimport {\n  ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE,\n  GEN_AI_OPERATION_NAME_ATTRIBUTE,\n  GEN_AI_PROMPT_ATTRIBUTE,\n  GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE,\n  GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE,\n  GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE,\n  GEN_AI_REQUEST_MESSAGES_ATTRIBUTE,\n  GEN_AI_REQUEST_MODEL_ATTRIBUTE,\n  GEN_AI_REQUEST_STREAM_ATTRIBUTE,\n  GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE,\n  GEN_AI_REQUEST_TOP_K_ATTRIBUTE,\n  GEN_AI_REQUEST_TOP_P_ATTRIBUTE,\n  GEN_AI_RESPONSE_ID_ATTRIBUTE,\n  GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n  GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n  GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n  GEN_AI_SYSTEM_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { buildMethodPath, getFinalOperationName, getSpanOperation, setTokenUsageAttributes } from '../ai/utils';\nimport { handleCallbackErrors } from '../handleCallbackErrors';\nimport { instrumentAsyncIterableStream, instrumentMessageStream } from './streaming';\nimport type {\n  AnthropicAiInstrumentedMethod,\n  AnthropicAiOptions,\n  AnthropicAiResponse,\n  AnthropicAiStreamingEvent,\n  ContentBlock,\n} from './types';\nimport { shouldInstrument } from './utils';\n\n/**\n * Extract request attributes from method arguments\n */\nfunction extractRequestAttributes(args: unknown[], methodPath: string): Record<string, unknown> {\n  const attributes: Record<string, unknown> = {\n    [GEN_AI_SYSTEM_ATTRIBUTE]: 'anthropic',\n    [GEN_AI_OPERATION_NAME_ATTRIBUTE]: getFinalOperationName(methodPath),\n    [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.ai.anthropic',\n  };\n\n  if (args.length > 0 && typeof args[0] === 'object' && args[0] !== null) {\n    const params = args[0] as Record<string, unknown>;\n    if (params.tools && Array.isArray(params.tools)) {\n      attributes[GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE] = JSON.stringify(params.tools);\n    }\n\n    attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = params.model ?? 'unknown';\n    if ('temperature' in params) attributes[GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE] = params.temperature;\n    if ('top_p' in params) attributes[GEN_AI_REQUEST_TOP_P_ATTRIBUTE] = params.top_p;\n    if ('stream' in params) attributes[GEN_AI_REQUEST_STREAM_ATTRIBUTE] = params.stream;\n    if ('top_k' in params) attributes[GEN_AI_REQUEST_TOP_K_ATTRIBUTE] = params.top_k;\n    if ('frequency_penalty' in params)\n      attributes[GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE] = params.frequency_penalty;\n    if ('max_tokens' in params) attributes[GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE] = params.max_tokens;\n  } else {\n    if (methodPath === 'models.retrieve' || methodPath === 'models.get') {\n      // models.retrieve(model-id) and models.get(model-id)\n      attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = args[0];\n    } else {\n      attributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] = 'unknown';\n    }\n  }\n\n  return attributes;\n}\n\n/**\n * Add private request attributes to spans.\n * This is only recorded if recordInputs is true.\n */\nfunction addPrivateRequestAttributes(span: Span, params: Record<string, unknown>): void {\n  if ('messages' in params) {\n    span.setAttributes({ [GEN_AI_REQUEST_MESSAGES_ATTRIBUTE]: JSON.stringify(params.messages) });\n  }\n  if ('input' in params) {\n    span.setAttributes({ [GEN_AI_REQUEST_MESSAGES_ATTRIBUTE]: JSON.stringify(params.input) });\n  }\n  if ('prompt' in params) {\n    span.setAttributes({ [GEN_AI_PROMPT_ATTRIBUTE]: JSON.stringify(params.prompt) });\n  }\n}\n\n/**\n * Capture error information from the response\n * @see https://docs.anthropic.com/en/api/errors#error-shapes\n */\nfunction handleResponseError(span: Span, response: AnthropicAiResponse): void {\n  if (response.error) {\n    span.setStatus({ code: SPAN_STATUS_ERROR, message: response.error.type || 'unknown_error' });\n\n    captureException(response.error, {\n      mechanism: {\n        handled: false,\n        type: 'auto.ai.anthropic.anthropic_error',\n      },\n    });\n  }\n}\n\n/**\n * Add content attributes when recordOutputs is enabled\n */\nfunction addContentAttributes(span: Span, response: AnthropicAiResponse): void {\n  // Messages.create\n  if ('content' in response) {\n    if (Array.isArray(response.content)) {\n      span.setAttributes({\n        [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.content\n          .map((item: ContentBlock) => item.text)\n          .filter(text => !!text)\n          .join(''),\n      });\n\n      const toolCalls: Array<ContentBlock> = [];\n\n      for (const item of response.content) {\n        if (item.type === 'tool_use' || item.type === 'server_tool_use') {\n          toolCalls.push(item);\n        }\n      }\n      if (toolCalls.length > 0) {\n        span.setAttributes({ [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(toolCalls) });\n      }\n    }\n  }\n  // Completions.create\n  if ('completion' in response) {\n    span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: response.completion });\n  }\n  // Models.countTokens\n  if ('input_tokens' in response) {\n    span.setAttributes({ [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: JSON.stringify(response.input_tokens) });\n  }\n}\n\n/**\n * Add basic metadata attributes from the response\n */\nfunction addMetadataAttributes(span: Span, response: AnthropicAiResponse): void {\n  if ('id' in response && 'model' in response) {\n    span.setAttributes({\n      [GEN_AI_RESPONSE_ID_ATTRIBUTE]: response.id,\n      [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: response.model,\n    });\n\n    if ('created' in response && typeof response.created === 'number') {\n      span.setAttributes({\n        [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created * 1000).toISOString(),\n      });\n    }\n    if ('created_at' in response && typeof response.created_at === 'number') {\n      span.setAttributes({\n        [ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE]: new Date(response.created_at * 1000).toISOString(),\n      });\n    }\n\n    if ('usage' in response && response.usage) {\n      setTokenUsageAttributes(\n        span,\n        response.usage.input_tokens,\n        response.usage.output_tokens,\n        response.usage.cache_creation_input_tokens,\n        response.usage.cache_read_input_tokens,\n      );\n    }\n  }\n}\n\n/**\n * Add response attributes to spans\n */\nfunction addResponseAttributes(span: Span, response: AnthropicAiResponse, recordOutputs?: boolean): void {\n  if (!response || typeof response !== 'object') return;\n\n  // capture error, do not add attributes if error (they shouldn't exist)\n  if ('type' in response && response.type === 'error') {\n    handleResponseError(span, response);\n    return;\n  }\n\n  // Private response attributes that are only recorded if recordOutputs is true.\n  if (recordOutputs) {\n    addContentAttributes(span, response);\n  }\n\n  // Add basic metadata attributes\n  addMetadataAttributes(span, response);\n}\n\n/**\n * Handle common error catching and reporting for streaming requests\n */\nfunction handleStreamingError(error: unknown, span: Span, methodPath: string): never {\n  captureException(error, {\n    mechanism: { handled: false, type: 'auto.ai.anthropic', data: { function: methodPath } },\n  });\n\n  if (span.isRecording()) {\n    span.setStatus({ code: SPAN_STATUS_ERROR, message: 'internal_error' });\n    span.end();\n  }\n  throw error;\n}\n\n/**\n * Handle streaming cases with common logic\n */\nfunction handleStreamingRequest<T extends unknown[], R>(\n  originalMethod: (...args: T) => Promise<R>,\n  target: (...args: T) => Promise<R>,\n  context: unknown,\n  args: T,\n  requestAttributes: Record<string, unknown>,\n  operationName: string,\n  methodPath: string,\n  params: Record<string, unknown> | undefined,\n  options: AnthropicAiOptions,\n  isStreamRequested: boolean,\n): Promise<R> {\n  const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n  const spanConfig = {\n    name: `${operationName} ${model} stream-response`,\n    op: getSpanOperation(methodPath),\n    attributes: requestAttributes as Record<string, SpanAttributeValue>,\n  };\n\n  if (isStreamRequested) {\n    return startSpanManual(spanConfig, async span => {\n      try {\n        if (options.recordInputs && params) {\n          addPrivateRequestAttributes(span, params);\n        }\n        const result = await originalMethod.apply(context, args);\n        return instrumentAsyncIterableStream(\n          result as AsyncIterable<AnthropicAiStreamingEvent>,\n          span,\n          options.recordOutputs ?? false,\n        ) as unknown as R;\n      } catch (error) {\n        return handleStreamingError(error, span, methodPath);\n      }\n    });\n  } else {\n    return startSpanManual(spanConfig, span => {\n      try {\n        if (options.recordInputs && params) {\n          addPrivateRequestAttributes(span, params);\n        }\n        const messageStream = target.apply(context, args);\n        return instrumentMessageStream(messageStream, span, options.recordOutputs ?? false);\n      } catch (error) {\n        return handleStreamingError(error, span, methodPath);\n      }\n    });\n  }\n}\n\n/**\n * Instrument a method with Sentry spans\n * Following Sentry AI Agents Manual Instrumentation conventions\n * @see https://docs.sentry.io/platforms/javascript/guides/node/tracing/instrumentation/ai-agents-module/#manual-instrumentation\n */\nfunction instrumentMethod<T extends unknown[], R>(\n  originalMethod: (...args: T) => Promise<R>,\n  methodPath: AnthropicAiInstrumentedMethod,\n  context: unknown,\n  options: AnthropicAiOptions,\n): (...args: T) => Promise<R> {\n  return new Proxy(originalMethod, {\n    apply(target, thisArg, args: T): Promise<R> {\n      const requestAttributes = extractRequestAttributes(args, methodPath);\n      const model = requestAttributes[GEN_AI_REQUEST_MODEL_ATTRIBUTE] ?? 'unknown';\n      const operationName = getFinalOperationName(methodPath);\n\n      const params = typeof args[0] === 'object' ? (args[0] as Record<string, unknown>) : undefined;\n      const isStreamRequested = Boolean(params?.stream);\n      const isStreamingMethod = methodPath === 'messages.stream';\n\n      if (isStreamRequested || isStreamingMethod) {\n        return handleStreamingRequest(\n          originalMethod,\n          target,\n          context,\n          args,\n          requestAttributes,\n          operationName,\n          methodPath,\n          params,\n          options,\n          isStreamRequested,\n        );\n      }\n\n      return startSpan(\n        {\n          name: `${operationName} ${model}`,\n          op: getSpanOperation(methodPath),\n          attributes: requestAttributes as Record<string, SpanAttributeValue>,\n        },\n        span => {\n          if (options.recordInputs && params) {\n            addPrivateRequestAttributes(span, params);\n          }\n\n          return handleCallbackErrors(\n            () => target.apply(context, args),\n            error => {\n              captureException(error, {\n                mechanism: {\n                  handled: false,\n                  type: 'auto.ai.anthropic',\n                  data: {\n                    function: methodPath,\n                  },\n                },\n              });\n            },\n            () => {},\n            result => addResponseAttributes(span, result as AnthropicAiResponse, options.recordOutputs),\n          );\n        },\n      );\n    },\n  }) as (...args: T) => Promise<R>;\n}\n\n/**\n * Create a deep proxy for Anthropic AI client instrumentation\n */\nfunction createDeepProxy<T extends object>(target: T, currentPath = '', options: AnthropicAiOptions): T {\n  return new Proxy(target, {\n    get(obj: object, prop: string): unknown {\n      const value = (obj as Record<string, unknown>)[prop];\n      const methodPath = buildMethodPath(currentPath, String(prop));\n\n      if (typeof value === 'function' && shouldInstrument(methodPath)) {\n        return instrumentMethod(value as (...args: unknown[]) => Promise<unknown>, methodPath, obj, options);\n      }\n\n      if (typeof value === 'function') {\n        // Bind non-instrumented functions to preserve the original `this` context,\n        return value.bind(obj);\n      }\n\n      if (value && typeof value === 'object') {\n        return createDeepProxy(value, methodPath, options);\n      }\n\n      return value;\n    },\n  }) as T;\n}\n\n/**\n * Instrument an Anthropic AI client with Sentry tracing\n * Can be used across Node.js, Cloudflare Workers, and Vercel Edge\n *\n * @template T - The type of the client that extends object\n * @param client - The Anthropic AI client to instrument\n * @param options - Optional configuration for recording inputs and outputs\n * @returns The instrumented client with the same type as the input\n */\nexport function instrumentAnthropicAiClient<T extends object>(anthropicAiClient: T, options?: AnthropicAiOptions): T {\n  const sendDefaultPii = Boolean(getClient()?.getOptions().sendDefaultPii);\n\n  const _options = {\n    recordInputs: sendDefaultPii,\n    recordOutputs: sendDefaultPii,\n    ...options,\n  };\n  return createDeepProxy(anthropicAiClient, '', _options);\n}\n","/**\n * This code was originally copied from the 'cookie` module at v0.5.0 and was simplified for our use case.\n * https://github.com/jshttp/cookie/blob/a0c84147aab6266bdb3996cf4062e93907c0b0fc/index.js\n * It had the following license:\n *\n * (The MIT License)\n *\n * Copyright (c) 2012-2014 Roman Shtylman <shtylman@gmail.com>\n * Copyright (c) 2015 Douglas Christopher Wilson <doug@somethingdoug.com>\n *\n * Permission is hereby granted, free of charge, to any person obtaining\n * a copy of this software and associated documentation files (the\n * 'Software'), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to\n * permit persons to whom the Software is furnished to do so, subject to\n * the following conditions:\n *\n * The above copyright notice and this permission notice shall be\n * included in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\n * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\n * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\n * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\n * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\n * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n/**\n * Parses a cookie string\n */\nexport function parseCookie(str: string): Record<string, string> {\n  const obj: Record<string, string> = {};\n  let index = 0;\n\n  while (index < str.length) {\n    const eqIdx = str.indexOf('=', index);\n\n    // no more cookie pairs\n    if (eqIdx === -1) {\n      break;\n    }\n\n    let endIdx = str.indexOf(';', index);\n\n    if (endIdx === -1) {\n      endIdx = str.length;\n    } else if (endIdx < eqIdx) {\n      // backtrack on prior semicolon\n      index = str.lastIndexOf(';', eqIdx - 1) + 1;\n      continue;\n    }\n\n    const key = str.slice(index, eqIdx).trim();\n\n    // only assign once\n    if (undefined === obj[key]) {\n      let val = str.slice(eqIdx + 1, endIdx).trim();\n\n      // quoted values\n      if (val.charCodeAt(0) === 0x22) {\n        val = val.slice(1, -1);\n      }\n\n      try {\n        obj[key] = val.indexOf('%') !== -1 ? decodeURIComponent(val) : val;\n      } catch {\n        obj[key] = val;\n      }\n    }\n\n    index = endIdx + 1;\n  }\n\n  return obj;\n}\n","import type { ClientReport } from '../types-hoist/clientreport';\nimport type { ClientReportEnvelope, ClientReportItem } from '../types-hoist/envelope';\nimport { createEnvelope } from './envelope';\nimport { dateTimestampInSeconds } from './time';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nexport function createClientReportEnvelope(\n  discarded_events: ClientReport['discarded_events'],\n  dsn?: string,\n  timestamp?: number,\n): ClientReportEnvelope {\n  const clientReportItem: ClientReportItem = [\n    { type: 'client_report' },\n    {\n      timestamp: timestamp || dateTimestampInSeconds(),\n      discarded_events,\n    },\n  ];\n  return createEnvelope<ClientReportEnvelope>(dsn ? { dsn } : {}, [clientReportItem]);\n}\n","import type { ScopeData } from '../scope';\nimport { getDynamicSamplingContextFromSpan } from '../tracing/dynamicSamplingContext';\nimport type { Breadcrumb } from '../types-hoist/breadcrumb';\nimport type { Event } from '../types-hoist/event';\nimport type { Span } from '../types-hoist/span';\nimport { merge } from './merge';\nimport { getRootSpan, spanToJSON, spanToTraceContext } from './spanUtils';\n\n/**\n * Applies data from the scope to the event and runs all event processors on it.\n */\nexport function applyScopeDataToEvent(event: Event, data: ScopeData): void {\n  const { fingerprint, span, breadcrumbs, sdkProcessingMetadata } = data;\n\n  // Apply general data\n  applyDataToEvent(event, data);\n\n  // We want to set the trace context for normal events only if there isn't already\n  // a trace context on the event. There is a product feature in place where we link\n  // errors with transaction and it relies on that.\n  if (span) {\n    applySpanToEvent(event, span);\n  }\n\n  applyFingerprintToEvent(event, fingerprint);\n  applyBreadcrumbsToEvent(event, breadcrumbs);\n  applySdkMetadataToEvent(event, sdkProcessingMetadata);\n}\n\n/** Merge data of two scopes together. */\nexport function mergeScopeData(data: ScopeData, mergeData: ScopeData): void {\n  const {\n    extra,\n    tags,\n    user,\n    contexts,\n    level,\n    sdkProcessingMetadata,\n    breadcrumbs,\n    fingerprint,\n    eventProcessors,\n    attachments,\n    propagationContext,\n    transactionName,\n    span,\n  } = mergeData;\n\n  mergeAndOverwriteScopeData(data, 'extra', extra);\n  mergeAndOverwriteScopeData(data, 'tags', tags);\n  mergeAndOverwriteScopeData(data, 'user', user);\n  mergeAndOverwriteScopeData(data, 'contexts', contexts);\n\n  data.sdkProcessingMetadata = merge(data.sdkProcessingMetadata, sdkProcessingMetadata, 2);\n\n  if (level) {\n    data.level = level;\n  }\n\n  if (transactionName) {\n    data.transactionName = transactionName;\n  }\n\n  if (span) {\n    data.span = span;\n  }\n\n  if (breadcrumbs.length) {\n    data.breadcrumbs = [...data.breadcrumbs, ...breadcrumbs];\n  }\n\n  if (fingerprint.length) {\n    data.fingerprint = [...data.fingerprint, ...fingerprint];\n  }\n\n  if (eventProcessors.length) {\n    data.eventProcessors = [...data.eventProcessors, ...eventProcessors];\n  }\n\n  if (attachments.length) {\n    data.attachments = [...data.attachments, ...attachments];\n  }\n\n  data.propagationContext = { ...data.propagationContext, ...propagationContext };\n}\n\n/**\n * Merges certain scope data. Undefined values will overwrite any existing values.\n * Exported only for tests.\n */\nexport function mergeAndOverwriteScopeData<\n  Prop extends 'extra' | 'tags' | 'user' | 'contexts' | 'sdkProcessingMetadata',\n  Data extends ScopeData,\n>(data: Data, prop: Prop, mergeVal: Data[Prop]): void {\n  data[prop] = merge(data[prop], mergeVal, 1);\n}\n\n/** Exported only for tests */\nexport function mergeArray<Prop extends 'breadcrumbs' | 'fingerprint'>(\n  event: Event,\n  prop: Prop,\n  mergeVal: ScopeData[Prop],\n): void {\n  const prevVal = event[prop];\n  // If we are not merging any new values,\n  // we only need to proceed if there was an empty array before (as we want to replace it with undefined)\n  if (!mergeVal.length && (!prevVal || prevVal.length)) {\n    return;\n  }\n\n  const merged = [...(prevVal || []), ...mergeVal] as ScopeData[Prop];\n  event[prop] = merged.length ? merged : undefined;\n}\n\nfunction applyDataToEvent(event: Event, data: ScopeData): void {\n  const { extra, tags, user, contexts, level, transactionName } = data;\n\n  if (Object.keys(extra).length) {\n    event.extra = { ...extra, ...event.extra };\n  }\n\n  if (Object.keys(tags).length) {\n    event.tags = { ...tags, ...event.tags };\n  }\n\n  if (Object.keys(user).length) {\n    event.user = { ...user, ...event.user };\n  }\n\n  if (Object.keys(contexts).length) {\n    event.contexts = { ...contexts, ...event.contexts };\n  }\n\n  if (level) {\n    event.level = level;\n  }\n\n  // transaction events get their `transaction` from the root span name\n  if (transactionName && event.type !== 'transaction') {\n    event.transaction = transactionName;\n  }\n}\n\nfunction applyBreadcrumbsToEvent(event: Event, breadcrumbs: Breadcrumb[]): void {\n  const mergedBreadcrumbs = [...(event.breadcrumbs || []), ...breadcrumbs];\n  event.breadcrumbs = mergedBreadcrumbs.length ? mergedBreadcrumbs : undefined;\n}\n\nfunction applySdkMetadataToEvent(event: Event, sdkProcessingMetadata: ScopeData['sdkProcessingMetadata']): void {\n  event.sdkProcessingMetadata = {\n    ...event.sdkProcessingMetadata,\n    ...sdkProcessingMetadata,\n  };\n}\n\nfunction applySpanToEvent(event: Event, span: Span): void {\n  event.contexts = {\n    trace: spanToTraceContext(span),\n    ...event.contexts,\n  };\n\n  event.sdkProcessingMetadata = {\n    dynamicSamplingContext: getDynamicSamplingContextFromSpan(span),\n    ...event.sdkProcessingMetadata,\n  };\n\n  const rootSpan = getRootSpan(span);\n  const transactionName = spanToJSON(rootSpan).description;\n  if (transactionName && !event.transaction && event.type === 'transaction') {\n    event.transaction = transactionName;\n  }\n}\n\n/**\n * Applies fingerprint from the scope to the event if there's one,\n * uses message if there's one instead or get rid of empty fingerprint\n */\nfunction applyFingerprintToEvent(event: Event, fingerprint: ScopeData['fingerprint'] | undefined): void {\n  // Make sure it's an array first and we actually have something in place\n  event.fingerprint = event.fingerprint\n    ? Array.isArray(event.fingerprint)\n      ? event.fingerprint\n      : [event.fingerprint]\n    : [];\n\n  // If we have something on the scope, then merge it with event\n  if (fingerprint) {\n    event.fingerprint = event.fingerprint.concat(fingerprint);\n  }\n\n  // If we have no data at all, remove empty array default\n  if (!event.fingerprint.length) {\n    delete event.fingerprint;\n  }\n}\n","import { DEBUG_BUILD } from '../debug-build';\nimport type { DynamicSamplingContext } from '../types-hoist/envelope';\nimport { debug } from './debug-logger';\nimport { isString } from './is';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX = 'sentry-';\n\nexport const SENTRY_BAGGAGE_KEY_PREFIX_REGEX = /^sentry-/;\n\n/**\n * Max length of a serialized baggage string\n *\n * https://www.w3.org/TR/baggage/#limits\n */\nexport const MAX_BAGGAGE_STRING_LENGTH = 8192;\n\n/**\n * Takes a baggage header and turns it into Dynamic Sampling Context, by extracting all the \"sentry-\" prefixed values\n * from it.\n *\n * @param baggageHeader A very bread definition of a baggage header as it might appear in various frameworks.\n * @returns The Dynamic Sampling Context that was found on `baggageHeader`, if there was any, `undefined` otherwise.\n */\nexport function baggageHeaderToDynamicSamplingContext(\n  // Very liberal definition of what any incoming header might look like\n  baggageHeader: string | string[] | number | null | undefined | boolean,\n): Partial<DynamicSamplingContext> | undefined {\n  const baggageObject = parseBaggageHeader(baggageHeader);\n\n  if (!baggageObject) {\n    return undefined;\n  }\n\n  // Read all \"sentry-\" prefixed values out of the baggage object and put it onto a dynamic sampling context object.\n  const dynamicSamplingContext = Object.entries(baggageObject).reduce<Record<string, string>>((acc, [key, value]) => {\n    if (key.match(SENTRY_BAGGAGE_KEY_PREFIX_REGEX)) {\n      const nonPrefixedKey = key.slice(SENTRY_BAGGAGE_KEY_PREFIX.length);\n      acc[nonPrefixedKey] = value;\n    }\n    return acc;\n  }, {});\n\n  // Only return a dynamic sampling context object if there are keys in it.\n  // A keyless object means there were no sentry values on the header, which means that there is no DSC.\n  if (Object.keys(dynamicSamplingContext).length > 0) {\n    return dynamicSamplingContext as Partial<DynamicSamplingContext>;\n  } else {\n    return undefined;\n  }\n}\n\n/**\n * Turns a Dynamic Sampling Object into a baggage header by prefixing all the keys on the object with \"sentry-\".\n *\n * @param dynamicSamplingContext The Dynamic Sampling Context to turn into a header. For convenience and compatibility\n * with the `getDynamicSamplingContext` method on the Transaction class ,this argument can also be `undefined`. If it is\n * `undefined` the function will return `undefined`.\n * @returns a baggage header, created from `dynamicSamplingContext`, or `undefined` either if `dynamicSamplingContext`\n * was `undefined`, or if `dynamicSamplingContext` didn't contain any values.\n */\nexport function dynamicSamplingContextToSentryBaggageHeader(\n  // this also takes undefined for convenience and bundle size in other places\n  dynamicSamplingContext?: Partial<DynamicSamplingContext>,\n): string | undefined {\n  if (!dynamicSamplingContext) {\n    return undefined;\n  }\n\n  // Prefix all DSC keys with \"sentry-\" and put them into a new object\n  const sentryPrefixedDSC = Object.entries(dynamicSamplingContext).reduce<Record<string, string>>(\n    (acc, [dscKey, dscValue]) => {\n      if (dscValue) {\n        acc[`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`] = dscValue;\n      }\n      return acc;\n    },\n    {},\n  );\n\n  return objectToBaggageHeader(sentryPrefixedDSC);\n}\n\n/**\n * Take a baggage header and parse it into an object.\n */\nexport function parseBaggageHeader(\n  baggageHeader: string | string[] | number | null | undefined | boolean,\n): Record<string, string> | undefined {\n  if (!baggageHeader || (!isString(baggageHeader) && !Array.isArray(baggageHeader))) {\n    return undefined;\n  }\n\n  if (Array.isArray(baggageHeader)) {\n    // Combine all baggage headers into one object containing the baggage values so we can later read the Sentry-DSC-values from it\n    return baggageHeader.reduce<Record<string, string>>((acc, curr) => {\n      const currBaggageObject = baggageHeaderToObject(curr);\n      Object.entries(currBaggageObject).forEach(([key, value]) => {\n        acc[key] = value;\n      });\n      return acc;\n    }, {});\n  }\n\n  return baggageHeaderToObject(baggageHeader);\n}\n\n/**\n * Will parse a baggage header, which is a simple key-value map, into a flat object.\n *\n * @param baggageHeader The baggage header to parse.\n * @returns a flat object containing all the key-value pairs from `baggageHeader`.\n */\nfunction baggageHeaderToObject(baggageHeader: string): Record<string, string> {\n  return baggageHeader\n    .split(',')\n    .map(baggageEntry => {\n      const eqIdx = baggageEntry.indexOf('=');\n      if (eqIdx === -1) {\n        // Likely an invalid entry\n        return [];\n      }\n      const key = baggageEntry.slice(0, eqIdx);\n      const value = baggageEntry.slice(eqIdx + 1);\n      return [key, value].map(keyOrValue => {\n        try {\n          return decodeURIComponent(keyOrValue.trim());\n        } catch {\n          // We ignore errors here, e.g. if the value cannot be URL decoded.\n          // This will then be skipped in the next step\n          return;\n        }\n      });\n    })\n    .reduce<Record<string, string>>((acc, [key, value]) => {\n      if (key && value) {\n        acc[key] = value;\n      }\n      return acc;\n    }, {});\n}\n\n/**\n * Turns a flat object (key-value pairs) into a baggage header, which is also just key-value pairs.\n *\n * @param object The object to turn into a baggage header.\n * @returns a baggage header string, or `undefined` if the object didn't have any values, since an empty baggage header\n * is not spec compliant.\n */\nexport function objectToBaggageHeader(object: Record<string, string>): string | undefined {\n  if (Object.keys(object).length === 0) {\n    // An empty baggage header is not spec compliant: We return undefined.\n    return undefined;\n  }\n\n  return Object.entries(object).reduce((baggageHeader, [objectKey, objectValue], currentIndex) => {\n    const baggageEntry = `${encodeURIComponent(objectKey)}=${encodeURIComponent(objectValue)}`;\n    const newBaggageHeader = currentIndex === 0 ? baggageEntry : `${baggageHeader},${baggageEntry}`;\n    if (newBaggageHeader.length > MAX_BAGGAGE_STRING_LENGTH) {\n      DEBUG_BUILD &&\n        debug.warn(\n          `Not adding key: ${objectKey} with val: ${objectValue} to baggage header due to exceeding baggage size limits.`,\n        );\n      return baggageHeader;\n    } else {\n      return newBaggageHeader;\n    }\n  }, '');\n}\n","import type { ExtendedError } from '../types-hoist/error';\nimport type { Event, EventHint } from '../types-hoist/event';\nimport type { Exception } from '../types-hoist/exception';\nimport type { StackParser } from '../types-hoist/stacktrace';\nimport { isInstanceOf } from './is';\n\n/**\n * Creates exceptions inside `event.exception.values` for errors that are nested on properties based on the `key` parameter.\n */\nexport function applyAggregateErrorsToEvent(\n  exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n  parser: StackParser,\n  key: string,\n  limit: number,\n  event: Event,\n  hint?: EventHint,\n): void {\n  if (!event.exception?.values || !hint || !isInstanceOf(hint.originalException, Error)) {\n    return;\n  }\n\n  // Generally speaking the last item in `event.exception.values` is the exception originating from the original Error\n  const originalException: Exception | undefined =\n    event.exception.values.length > 0 ? event.exception.values[event.exception.values.length - 1] : undefined;\n\n  // We only create exception grouping if there is an exception in the event.\n  if (originalException) {\n    event.exception.values = aggregateExceptionsFromError(\n      exceptionFromErrorImplementation,\n      parser,\n      limit,\n      hint.originalException as ExtendedError,\n      key,\n      event.exception.values,\n      originalException,\n      0,\n    );\n  }\n}\n\nfunction aggregateExceptionsFromError(\n  exceptionFromErrorImplementation: (stackParser: StackParser, ex: Error) => Exception,\n  parser: StackParser,\n  limit: number,\n  error: ExtendedError,\n  key: string,\n  prevExceptions: Exception[],\n  exception: Exception,\n  exceptionId: number,\n): Exception[] {\n  if (prevExceptions.length >= limit + 1) {\n    return prevExceptions;\n  }\n\n  let newExceptions = [...prevExceptions];\n\n  // Recursively call this function in order to walk down a chain of errors\n  if (isInstanceOf(error[key], Error)) {\n    applyExceptionGroupFieldsForParentException(exception, exceptionId);\n    const newException = exceptionFromErrorImplementation(parser, error[key]);\n    const newExceptionId = newExceptions.length;\n    applyExceptionGroupFieldsForChildException(newException, key, newExceptionId, exceptionId);\n    newExceptions = aggregateExceptionsFromError(\n      exceptionFromErrorImplementation,\n      parser,\n      limit,\n      error[key],\n      key,\n      [newException, ...newExceptions],\n      newException,\n      newExceptionId,\n    );\n  }\n\n  // This will create exception grouping for AggregateErrors\n  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/AggregateError\n  if (Array.isArray(error.errors)) {\n    error.errors.forEach((childError, i) => {\n      if (isInstanceOf(childError, Error)) {\n        applyExceptionGroupFieldsForParentException(exception, exceptionId);\n        const newException = exceptionFromErrorImplementation(parser, childError);\n        const newExceptionId = newExceptions.length;\n        applyExceptionGroupFieldsForChildException(newException, `errors[${i}]`, newExceptionId, exceptionId);\n        newExceptions = aggregateExceptionsFromError(\n          exceptionFromErrorImplementation,\n          parser,\n          limit,\n          childError,\n          key,\n          [newException, ...newExceptions],\n          newException,\n          newExceptionId,\n        );\n      }\n    });\n  }\n\n  return newExceptions;\n}\n\nfunction applyExceptionGroupFieldsForParentException(exception: Exception, exceptionId: number): void {\n  exception.mechanism = {\n    handled: true,\n    type: 'auto.core.linked_errors',\n    ...exception.mechanism,\n    ...(exception.type === 'AggregateError' && { is_exception_group: true }),\n    exception_id: exceptionId,\n  };\n}\n\nfunction applyExceptionGroupFieldsForChildException(\n  exception: Exception,\n  source: string,\n  exceptionId: number,\n  parentId: number | undefined,\n): void {\n  exception.mechanism = {\n    handled: true,\n    ...exception.mechanism,\n    type: 'chained',\n    source,\n    exception_id: exceptionId,\n    parent_id: parentId,\n  };\n}\n","import { ANTHROPIC_AI_INSTRUMENTED_METHODS } from './constants';\nimport type { AnthropicAiInstrumentedMethod } from './types';\n\n/**\n * Check if a method path should be instrumented\n */\nexport function shouldInstrument(methodPath: string): methodPath is AnthropicAiInstrumentedMethod {\n  return ANTHROPIC_AI_INSTRUMENTED_METHODS.includes(methodPath as AnthropicAiInstrumentedMethod);\n}\n","import { getClient, withIsolationScope } from './currentScopes';\nimport { captureException } from './exports';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from './semanticAttributes';\nimport { startSpanManual } from './tracing';\nimport { normalize } from './utils/normalize';\nimport { addNonEnumerableProperty } from './utils/object';\n\ninterface SentryTrpcMiddlewareOptions {\n  /** Whether to include procedure inputs in reported events. Defaults to `false`. */\n  attachRpcInput?: boolean;\n  forceTransaction?: boolean;\n}\n\nexport interface SentryTrpcMiddlewareArguments<T> {\n  path?: unknown;\n  type?: unknown;\n  next: () => T;\n  rawInput?: unknown;\n  getRawInput?: () => Promise<unknown>;\n}\n\nconst trpcCaptureContext = { mechanism: { handled: false, type: 'auto.rpc.trpc.middleware' } };\n\nfunction captureIfError(nextResult: unknown): void {\n  // TODO: Set span status based on what TRPCError was encountered\n  if (\n    typeof nextResult === 'object' &&\n    nextResult !== null &&\n    'ok' in nextResult &&\n    !nextResult.ok &&\n    'error' in nextResult\n  ) {\n    captureException(nextResult.error, trpcCaptureContext);\n  }\n}\n\ntype SentryTrpcMiddleware<T> = T extends Promise<unknown> ? T : Promise<T>;\n\n/**\n * Sentry tRPC middleware that captures errors and creates spans for tRPC procedures.\n */\nexport function trpcMiddleware(options: SentryTrpcMiddlewareOptions = {}) {\n  // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n  // @ts-ignore\n  return async function <T>(opts: SentryTrpcMiddlewareArguments<T>): SentryTrpcMiddleware<T> {\n    const { path, type, next, rawInput, getRawInput } = opts;\n\n    const client = getClient();\n    const clientOptions = client?.getOptions();\n\n    const trpcContext: Record<string, unknown> = {\n      procedure_path: path,\n      procedure_type: type,\n    };\n\n    addNonEnumerableProperty(\n      trpcContext,\n      '__sentry_override_normalization_depth__',\n      1 + // 1 for context.input + the normal normalization depth\n        (clientOptions?.normalizeDepth ?? 5), // 5 is a sane depth\n    );\n\n    if (options.attachRpcInput !== undefined ? options.attachRpcInput : clientOptions?.sendDefaultPii) {\n      if (rawInput !== undefined) {\n        trpcContext.input = normalize(rawInput);\n      }\n\n      if (getRawInput !== undefined && typeof getRawInput === 'function') {\n        try {\n          const rawRes = await getRawInput();\n\n          trpcContext.input = normalize(rawRes);\n        } catch {\n          // noop\n        }\n      }\n    }\n\n    return withIsolationScope(scope => {\n      scope.setContext('trpc', trpcContext);\n      return startSpanManual(\n        {\n          name: `trpc/${path}`,\n          op: 'rpc.server',\n          attributes: {\n            [SEMANTIC_ATTRIBUTE_SENTRY_SOURCE]: 'route',\n            [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: 'auto.rpc.trpc',\n          },\n          forceTransaction: !!options.forceTransaction,\n        },\n        async span => {\n          try {\n            const nextResult = await next();\n            captureIfError(nextResult);\n            span.end();\n            return nextResult;\n          } catch (e) {\n            captureException(e, trpcCaptureContext);\n            span.end();\n            throw e;\n          }\n        },\n      ) as SentryTrpcMiddleware<T>;\n    });\n  };\n}\n","/**\n * Shared utils for AI integrations (OpenAI, Anthropic, Verce.AI, etc.)\n */\nimport type { Span } from '../../types-hoist/span';\nimport {\n  GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE,\n  GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE,\n  GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE,\n} from './gen-ai-attributes';\n/**\n * Maps AI method paths to Sentry operation name\n */\nexport function getFinalOperationName(methodPath: string): string {\n  if (methodPath.includes('messages')) {\n    return 'messages';\n  }\n  if (methodPath.includes('completions')) {\n    return 'completions';\n  }\n  if (methodPath.includes('models')) {\n    return 'models';\n  }\n  if (methodPath.includes('chat')) {\n    return 'chat';\n  }\n  return methodPath.split('.').pop() || 'unknown';\n}\n\n/**\n * Get the span operation for AI methods\n * Following Sentry's convention: \"gen_ai.{operation_name}\"\n */\nexport function getSpanOperation(methodPath: string): string {\n  return `gen_ai.${getFinalOperationName(methodPath)}`;\n}\n\n/**\n * Build method path from current traversal\n */\nexport function buildMethodPath(currentPath: string, prop: string): string {\n  return currentPath ? `${currentPath}.${prop}` : prop;\n}\n\n/**\n * Set token usage attributes\n * @param span - The span to add attributes to\n * @param promptTokens - The number of prompt tokens\n * @param completionTokens - The number of completion tokens\n * @param cachedInputTokens - The number of cached input tokens\n * @param cachedOutputTokens - The number of cached output tokens\n */\nexport function setTokenUsageAttributes(\n  span: Span,\n  promptTokens?: number,\n  completionTokens?: number,\n  cachedInputTokens?: number,\n  cachedOutputTokens?: number,\n): void {\n  if (promptTokens !== undefined) {\n    span.setAttributes({\n      [GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE]: promptTokens,\n    });\n  }\n  if (completionTokens !== undefined) {\n    span.setAttributes({\n      [GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE]: completionTokens,\n    });\n  }\n  if (\n    promptTokens !== undefined ||\n    completionTokens !== undefined ||\n    cachedInputTokens !== undefined ||\n    cachedOutputTokens !== undefined\n  ) {\n    /**\n     * Total input tokens in a request is the summation of `input_tokens`,\n     * `cache_creation_input_tokens`, and `cache_read_input_tokens`.\n     */\n    const totalTokens =\n      (promptTokens ?? 0) + (completionTokens ?? 0) + (cachedInputTokens ?? 0) + (cachedOutputTokens ?? 0);\n\n    span.setAttributes({\n      [GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE]: totalTokens,\n    });\n  }\n}\n","export const ANTHROPIC_AI_INTEGRATION_NAME = 'Anthropic_AI';\n\n// https://docs.anthropic.com/en/api/messages\n// https://docs.anthropic.com/en/api/models-list\nexport const ANTHROPIC_AI_INSTRUMENTED_METHODS = [\n  'messages.create',\n  'messages.stream',\n  'messages.countTokens',\n  'models.get',\n  'completions.create',\n  'models.retrieve',\n  'beta.messages.create',\n] as const;\n","import type { SeverityLevel } from '../types-hoist/severity';\n\n/**\n * Determine a breadcrumb's log level (only `warning` or `error`) based on an HTTP status code.\n */\nexport function getBreadcrumbLogLevelFromHttpStatusCode(statusCode: number | undefined): SeverityLevel | undefined {\n  // NOTE: undefined defaults to 'info' in Sentry\n  if (statusCode === undefined) {\n    return undefined;\n  } else if (statusCode >= 400 && statusCode < 500) {\n    return 'warning';\n  } else if (statusCode >= 500) {\n    return 'error';\n  } else {\n    return undefined;\n  }\n}\n","/**\n * OpenAI Integration Telemetry Attributes\n * Based on OpenTelemetry Semantic Conventions for Generative AI\n * @see https://opentelemetry.io/docs/specs/semconv/gen-ai/\n */\n\n// =============================================================================\n// OPENTELEMETRY SEMANTIC CONVENTIONS FOR GENAI\n// =============================================================================\n\n/**\n * The input messages sent to the model\n */\nexport const GEN_AI_PROMPT_ATTRIBUTE = 'gen_ai.prompt';\n\n/**\n * The Generative AI system being used\n * For OpenAI, this should always be \"openai\"\n */\nexport const GEN_AI_SYSTEM_ATTRIBUTE = 'gen_ai.system';\n\n/**\n * The name of the model as requested\n * Examples: \"gpt-4\", \"gpt-3.5-turbo\"\n */\nexport const GEN_AI_REQUEST_MODEL_ATTRIBUTE = 'gen_ai.request.model';\n\n/**\n * Whether streaming was enabled for the request\n */\nexport const GEN_AI_REQUEST_STREAM_ATTRIBUTE = 'gen_ai.request.stream';\n\n/**\n * The temperature setting for the model request\n */\nexport const GEN_AI_REQUEST_TEMPERATURE_ATTRIBUTE = 'gen_ai.request.temperature';\n\n/**\n * The maximum number of tokens requested\n */\nexport const GEN_AI_REQUEST_MAX_TOKENS_ATTRIBUTE = 'gen_ai.request.max_tokens';\n\n/**\n * The frequency penalty setting for the model request\n */\nexport const GEN_AI_REQUEST_FREQUENCY_PENALTY_ATTRIBUTE = 'gen_ai.request.frequency_penalty';\n\n/**\n * The presence penalty setting for the model request\n */\nexport const GEN_AI_REQUEST_PRESENCE_PENALTY_ATTRIBUTE = 'gen_ai.request.presence_penalty';\n\n/**\n * The top_p (nucleus sampling) setting for the model request\n */\nexport const GEN_AI_REQUEST_TOP_P_ATTRIBUTE = 'gen_ai.request.top_p';\n\n/**\n * The top_k setting for the model request\n */\nexport const GEN_AI_REQUEST_TOP_K_ATTRIBUTE = 'gen_ai.request.top_k';\n\n/**\n * Stop sequences for the model request\n */\nexport const GEN_AI_REQUEST_STOP_SEQUENCES_ATTRIBUTE = 'gen_ai.request.stop_sequences';\n\n/**\n * Array of reasons why the model stopped generating tokens\n */\nexport const GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE = 'gen_ai.response.finish_reasons';\n\n/**\n * The name of the model that generated the response\n */\nexport const GEN_AI_RESPONSE_MODEL_ATTRIBUTE = 'gen_ai.response.model';\n\n/**\n * The unique identifier for the response\n */\nexport const GEN_AI_RESPONSE_ID_ATTRIBUTE = 'gen_ai.response.id';\n\n/**\n * The number of tokens used in the prompt\n */\nexport const GEN_AI_USAGE_INPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.input_tokens';\n\n/**\n * The number of tokens used in the response\n */\nexport const GEN_AI_USAGE_OUTPUT_TOKENS_ATTRIBUTE = 'gen_ai.usage.output_tokens';\n\n/**\n * The total number of tokens used (input + output)\n */\nexport const GEN_AI_USAGE_TOTAL_TOKENS_ATTRIBUTE = 'gen_ai.usage.total_tokens';\n\n/**\n * The operation name\n */\nexport const GEN_AI_OPERATION_NAME_ATTRIBUTE = 'gen_ai.operation.name';\n\n/**\n * The prompt messages\n * Only recorded when recordInputs is enabled\n */\nexport const GEN_AI_REQUEST_MESSAGES_ATTRIBUTE = 'gen_ai.request.messages';\n\n/**\n * The response text\n * Only recorded when recordOutputs is enabled\n */\nexport const GEN_AI_RESPONSE_TEXT_ATTRIBUTE = 'gen_ai.response.text';\n\n/**\n * The available tools from incoming request\n * Only recorded when recordInputs is enabled\n */\nexport const GEN_AI_REQUEST_AVAILABLE_TOOLS_ATTRIBUTE = 'gen_ai.request.available_tools';\n\n/**\n * Whether the response is a streaming response\n */\nexport const GEN_AI_RESPONSE_STREAMING_ATTRIBUTE = 'gen_ai.response.streaming';\n\n/**\n * The tool calls from the response\n * Only recorded when recordOutputs is enabled\n */\nexport const GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE = 'gen_ai.response.tool_calls';\n\n// =============================================================================\n// OPENAI-SPECIFIC ATTRIBUTES\n// =============================================================================\n\n/**\n * The response ID from OpenAI\n */\nexport const OPENAI_RESPONSE_ID_ATTRIBUTE = 'openai.response.id';\n\n/**\n * The response model from OpenAI\n */\nexport const OPENAI_RESPONSE_MODEL_ATTRIBUTE = 'openai.response.model';\n\n/**\n * The response timestamp from OpenAI (ISO string)\n */\nexport const OPENAI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'openai.response.timestamp';\n\n/**\n * The number of completion tokens used\n */\nexport const OPENAI_USAGE_COMPLETION_TOKENS_ATTRIBUTE = 'openai.usage.completion_tokens';\n\n/**\n * The number of prompt tokens used\n */\nexport const OPENAI_USAGE_PROMPT_TOKENS_ATTRIBUTE = 'openai.usage.prompt_tokens';\n\n// =============================================================================\n// OPENAI OPERATIONS\n// =============================================================================\n\n/**\n * OpenAI API operations\n */\nexport const OPENAI_OPERATIONS = {\n  CHAT: 'chat',\n  RESPONSES: 'responses',\n} as const;\n\n// =============================================================================\n// ANTHROPIC AI OPERATIONS\n// =============================================================================\n\n/**\n * The response timestamp from Anthropic AI (ISO string)\n */\nexport const ANTHROPIC_AI_RESPONSE_TIMESTAMP_ATTRIBUTE = 'anthropic.response.timestamp';\n","import { getGlobalSingleton } from '../carrier';\nimport { DEBUG_BUILD } from '../debug-build';\nimport type { ConsoleLevel } from '../types-hoist/instrument';\nimport { GLOBAL_OBJ } from './worldwide';\n\nexport interface SentryDebugLogger {\n  disable(): void;\n  enable(): void;\n  isEnabled(): boolean;\n  log(...args: Parameters<typeof console.log>): void;\n  warn(...args: Parameters<typeof console.warn>): void;\n  error(...args: Parameters<typeof console.error>): void;\n}\n\nexport const CONSOLE_LEVELS: readonly ConsoleLevel[] = [\n  'debug',\n  'info',\n  'warn',\n  'error',\n  'log',\n  'assert',\n  'trace',\n] as const;\n\n/** Prefix for logging strings */\nconst PREFIX = 'Sentry Logger ';\n\n/** This may be mutated by the console instrumentation. */\nexport const originalConsoleMethods: Partial<{\n  log(...args: Parameters<typeof console.log>): void;\n  info(...args: Parameters<typeof console.info>): void;\n  warn(...args: Parameters<typeof console.warn>): void;\n  error(...args: Parameters<typeof console.error>): void;\n  debug(...args: Parameters<typeof console.debug>): void;\n  assert(...args: Parameters<typeof console.assert>): void;\n  trace(...args: Parameters<typeof console.trace>): void;\n}> = {};\n\n/**\n * Temporarily disable sentry console instrumentations.\n *\n * @param callback The function to run against the original `console` messages\n * @returns The results of the callback\n */\nexport function consoleSandbox<T>(callback: () => T): T {\n  if (!('console' in GLOBAL_OBJ)) {\n    return callback();\n  }\n\n  const console = GLOBAL_OBJ.console;\n  const wrappedFuncs: Partial<Record<ConsoleLevel, (...args: unknown[]) => void>> = {};\n\n  const wrappedLevels = Object.keys(originalConsoleMethods) as ConsoleLevel[];\n\n  // Restore all wrapped console methods\n  wrappedLevels.forEach(level => {\n    const originalConsoleMethod = originalConsoleMethods[level];\n    wrappedFuncs[level] = console[level] as (...args: unknown[]) => void;\n    console[level] = originalConsoleMethod as (...args: unknown[]) => void;\n  });\n\n  try {\n    return callback();\n  } finally {\n    // Revert restoration to wrapped state\n    wrappedLevels.forEach(level => {\n      console[level] = wrappedFuncs[level] as (...args: unknown[]) => void;\n    });\n  }\n}\n\nfunction enable(): void {\n  _getLoggerSettings().enabled = true;\n}\n\nfunction disable(): void {\n  _getLoggerSettings().enabled = false;\n}\n\nfunction isEnabled(): boolean {\n  return _getLoggerSettings().enabled;\n}\n\nfunction log(...args: Parameters<typeof console.log>): void {\n  _maybeLog('log', ...args);\n}\n\nfunction info(...args: Parameters<typeof console.info>): void {\n  _maybeLog('info', ...args);\n}\n\nfunction warn(...args: Parameters<typeof console.warn>): void {\n  _maybeLog('warn', ...args);\n}\n\nfunction error(...args: Parameters<typeof console.error>): void {\n  _maybeLog('error', ...args);\n}\n\nfunction _maybeLog(level: ConsoleLevel, ...args: Parameters<(typeof console)[typeof level]>): void {\n  if (!DEBUG_BUILD) {\n    return;\n  }\n\n  if (isEnabled()) {\n    consoleSandbox(() => {\n      GLOBAL_OBJ.console[level](`${PREFIX}[${level}]:`, ...args);\n    });\n  }\n}\n\nfunction _getLoggerSettings(): { enabled: boolean } {\n  if (!DEBUG_BUILD) {\n    return { enabled: false };\n  }\n\n  return getGlobalSingleton('loggerSettings', () => ({ enabled: false }));\n}\n\n/**\n * This is a logger singleton which either logs things or no-ops if logging is not enabled.\n */\nexport const debug = {\n  /** Enable logging. */\n  enable,\n  /** Disable logging. */\n  disable,\n  /** Check if logging is enabled. */\n  isEnabled,\n  /** Log a message. */\n  log,\n  /** Log a warning. */\n  warn,\n  /** Log an error. */\n  error,\n} satisfies SentryDebugLogger;\n","import { isString } from './is';\nimport { GLOBAL_OBJ } from './worldwide';\n\nconst WINDOW = GLOBAL_OBJ as unknown as Window;\n\nconst DEFAULT_MAX_STRING_LENGTH = 80;\n\ntype SimpleNode = {\n  parentNode: SimpleNode;\n} | null;\n\n/**\n * Given a child DOM element, returns a query-selector statement describing that\n * and its ancestors\n * e.g. [HTMLElement] => body > div > input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nexport function htmlTreeAsString(\n  elem: unknown,\n  options: string[] | { keyAttrs?: string[]; maxStringLength?: number } = {},\n): string {\n  if (!elem) {\n    return '<unknown>';\n  }\n\n  // try/catch both:\n  // - accessing event.target (see getsentry/raven-js#838, #768)\n  // - `htmlTreeAsString` because it's complex, and just accessing the DOM incorrectly\n  // - can throw an exception in some circumstances.\n  try {\n    let currentElem = elem as SimpleNode;\n    const MAX_TRAVERSE_HEIGHT = 5;\n    const out = [];\n    let height = 0;\n    let len = 0;\n    const separator = ' > ';\n    const sepLength = separator.length;\n    let nextStr;\n    const keyAttrs = Array.isArray(options) ? options : options.keyAttrs;\n    const maxStringLength = (!Array.isArray(options) && options.maxStringLength) || DEFAULT_MAX_STRING_LENGTH;\n\n    while (currentElem && height++ < MAX_TRAVERSE_HEIGHT) {\n      nextStr = _htmlElementAsString(currentElem, keyAttrs);\n      // bail out if\n      // - nextStr is the 'html' element\n      // - the length of the string that would be created exceeds maxStringLength\n      //   (ignore this limit if we are on the first iteration)\n      if (nextStr === 'html' || (height > 1 && len + out.length * sepLength + nextStr.length >= maxStringLength)) {\n        break;\n      }\n\n      out.push(nextStr);\n\n      len += nextStr.length;\n      currentElem = currentElem.parentNode;\n    }\n\n    return out.reverse().join(separator);\n  } catch {\n    return '<unknown>';\n  }\n}\n\n/**\n * Returns a simple, query-selector representation of a DOM element\n * e.g. [HTMLElement] => input#foo.btn[name=baz]\n * @returns generated DOM path\n */\nfunction _htmlElementAsString(el: unknown, keyAttrs?: string[]): string {\n  const elem = el as {\n    tagName?: string;\n    id?: string;\n    className?: string;\n    getAttribute(key: string): string;\n  };\n\n  const out = [];\n\n  if (!elem?.tagName) {\n    return '';\n  }\n\n  // @ts-expect-error WINDOW has HTMLElement\n  if (WINDOW.HTMLElement) {\n    // If using the component name annotation plugin, this value may be available on the DOM node\n    if (elem instanceof HTMLElement && elem.dataset) {\n      if (elem.dataset['sentryComponent']) {\n        return elem.dataset['sentryComponent'];\n      }\n      if (elem.dataset['sentryElement']) {\n        return elem.dataset['sentryElement'];\n      }\n    }\n  }\n\n  out.push(elem.tagName.toLowerCase());\n\n  // Pairs of attribute keys defined in `serializeAttribute` and their values on element.\n  const keyAttrPairs = keyAttrs?.length\n    ? keyAttrs.filter(keyAttr => elem.getAttribute(keyAttr)).map(keyAttr => [keyAttr, elem.getAttribute(keyAttr)])\n    : null;\n\n  if (keyAttrPairs?.length) {\n    keyAttrPairs.forEach(keyAttrPair => {\n      out.push(`[${keyAttrPair[0]}=\"${keyAttrPair[1]}\"]`);\n    });\n  } else {\n    if (elem.id) {\n      out.push(`#${elem.id}`);\n    }\n\n    const className = elem.className;\n    if (className && isString(className)) {\n      const classes = className.split(/\\s+/);\n      for (const c of classes) {\n        out.push(`.${c}`);\n      }\n    }\n  }\n  const allowedAttrs = ['aria-label', 'type', 'name', 'title', 'alt'];\n  for (const k of allowedAttrs) {\n    const attr = elem.getAttribute(k);\n    if (attr) {\n      out.push(`[${k}=\"${attr}\"]`);\n    }\n  }\n\n  return out.join('');\n}\n\n/**\n * A safe form of location.href\n */\nexport function getLocationHref(): string {\n  try {\n    return WINDOW.document.location.href;\n  } catch {\n    return '';\n  }\n}\n\n/**\n * Given a DOM element, traverses up the tree until it finds the first ancestor node\n * that has the `data-sentry-component` or `data-sentry-element` attribute with `data-sentry-component` taking\n * precedence. This attribute is added at build-time by projects that have the component name annotation plugin installed.\n *\n * @returns a string representation of the component for the provided DOM element, or `null` if not found\n */\nexport function getComponentName(elem: unknown): string | null {\n  // @ts-expect-error WINDOW has HTMLElement\n  if (!WINDOW.HTMLElement) {\n    return null;\n  }\n\n  let currentElem = elem as SimpleNode;\n  const MAX_TRAVERSE_HEIGHT = 5;\n  for (let i = 0; i < MAX_TRAVERSE_HEIGHT; i++) {\n    if (!currentElem) {\n      return null;\n    }\n\n    if (currentElem instanceof HTMLElement) {\n      if (currentElem.dataset['sentryComponent']) {\n        return currentElem.dataset['sentryComponent'];\n      }\n      if (currentElem.dataset['sentryElement']) {\n        return currentElem.dataset['sentryElement'];\n      }\n    }\n\n    currentElem = currentElem.parentNode;\n  }\n\n  return null;\n}\n","type DebouncedCallback = {\n  (): void | unknown;\n  flush: () => void | unknown;\n  cancel: () => void;\n};\ntype CallbackFunction = () => unknown;\ntype DebounceOptions = {\n  /** The max. time in ms to wait for the callback to be invoked. */\n  maxWait?: number;\n  /** This can be overwritten to use a different setTimeout implementation, e.g. to avoid triggering change detection in Angular  */\n  setTimeoutImpl?: typeof setTimeout;\n};\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n *          debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n *          was already invoked in the meantime, return @param func's return value.\n *          The debounced function has two additional properties:\n *          - `flush`: Invokes the debounced function immediately and returns its return value\n *          - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nexport function debounce(func: CallbackFunction, wait: number, options?: DebounceOptions): DebouncedCallback {\n  let callbackReturnValue: unknown;\n\n  let timerId: ReturnType<typeof setTimeout> | undefined;\n  let maxTimerId: ReturnType<typeof setTimeout> | undefined;\n\n  const maxWait = options?.maxWait ? Math.max(options.maxWait, wait) : 0;\n  const setTimeoutImpl = options?.setTimeoutImpl || setTimeout;\n\n  function invokeFunc(): unknown {\n    cancelTimers();\n    callbackReturnValue = func();\n    return callbackReturnValue;\n  }\n\n  function cancelTimers(): void {\n    timerId !== undefined && clearTimeout(timerId);\n    maxTimerId !== undefined && clearTimeout(maxTimerId);\n    timerId = maxTimerId = undefined;\n  }\n\n  function flush(): unknown {\n    if (timerId !== undefined || maxTimerId !== undefined) {\n      return invokeFunc();\n    }\n    return callbackReturnValue;\n  }\n\n  function debounced(): unknown {\n    if (timerId) {\n      clearTimeout(timerId);\n    }\n    timerId = setTimeoutImpl(invokeFunc, wait);\n\n    if (maxWait && maxTimerId === undefined) {\n      maxTimerId = setTimeoutImpl(invokeFunc, maxWait);\n    }\n\n    return callbackReturnValue;\n  }\n\n  debounced.cancel = cancelTimers;\n  debounced.flush = flush;\n  return debounced;\n}\n","import { captureException } from '../../exports';\nimport { SPAN_STATUS_ERROR } from '../../tracing';\nimport type { Span } from '../../types-hoist/span';\nimport {\n  GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE,\n  GEN_AI_RESPONSE_ID_ATTRIBUTE,\n  GEN_AI_RESPONSE_MODEL_ATTRIBUTE,\n  GEN_AI_RESPONSE_STREAMING_ATTRIBUTE,\n  GEN_AI_RESPONSE_TEXT_ATTRIBUTE,\n  GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE,\n} from '../ai/gen-ai-attributes';\nimport { setTokenUsageAttributes } from '../ai/utils';\nimport type { AnthropicAiStreamingEvent } from './types';\n\n/**\n * State object used to accumulate information from a stream of Anthropic AI events.\n */\ninterface StreamingState {\n  /** Collected response text fragments (for output recording). */\n  responseTexts: string[];\n  /** Reasons for finishing the response, as reported by the API. */\n  finishReasons: string[];\n  /** The response ID. */\n  responseId: string;\n  /** The model name. */\n  responseModel: string;\n  /** Number of prompt/input tokens used. */\n  promptTokens: number | undefined;\n  /** Number of completion/output tokens used. */\n  completionTokens: number | undefined;\n  /** Number of cache creation input tokens used. */\n  cacheCreationInputTokens: number | undefined;\n  /** Number of cache read input tokens used. */\n  cacheReadInputTokens: number | undefined;\n  /** Accumulated tool calls (finalized) */\n  toolCalls: Array<Record<string, unknown>>;\n  /** In-progress tool call blocks keyed by index */\n  activeToolBlocks: Record<\n    number,\n    {\n      id?: string;\n      name?: string;\n      inputJsonParts: string[];\n    }\n  >;\n}\n\n/**\n * Checks if an event is an error event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n * @returns Whether an error occurred\n */\n\nfunction isErrorEvent(event: AnthropicAiStreamingEvent, span: Span): boolean {\n  if ('type' in event && typeof event.type === 'string') {\n    // If the event is an error, set the span status and capture the error\n    // These error events are not rejected by the API by default, but are sent as metadata of the response\n    if (event.type === 'error') {\n      span.setStatus({ code: SPAN_STATUS_ERROR, message: event.error?.type ?? 'unknown_error' });\n      captureException(event.error, {\n        mechanism: {\n          handled: false,\n          type: 'auto.ai.anthropic.anthropic_error',\n        },\n      });\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * Processes the message metadata of an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n */\n\nfunction handleMessageMetadata(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n  // The token counts shown in the usage field of the message_delta event are cumulative.\n  // @see https://docs.anthropic.com/en/docs/build-with-claude/streaming#event-types\n  if (event.type === 'message_delta' && event.usage) {\n    if ('output_tokens' in event.usage && typeof event.usage.output_tokens === 'number') {\n      state.completionTokens = event.usage.output_tokens;\n    }\n  }\n\n  if (event.message) {\n    const message = event.message;\n\n    if (message.id) state.responseId = message.id;\n    if (message.model) state.responseModel = message.model;\n    if (message.stop_reason) state.finishReasons.push(message.stop_reason);\n\n    if (message.usage) {\n      if (typeof message.usage.input_tokens === 'number') state.promptTokens = message.usage.input_tokens;\n      if (typeof message.usage.cache_creation_input_tokens === 'number')\n        state.cacheCreationInputTokens = message.usage.cache_creation_input_tokens;\n      if (typeof message.usage.cache_read_input_tokens === 'number')\n        state.cacheReadInputTokens = message.usage.cache_read_input_tokens;\n    }\n  }\n}\n\n/**\n * Handle start of a content block (e.g., tool_use)\n */\nfunction handleContentBlockStart(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n  if (event.type !== 'content_block_start' || typeof event.index !== 'number' || !event.content_block) return;\n  if (event.content_block.type === 'tool_use' || event.content_block.type === 'server_tool_use') {\n    state.activeToolBlocks[event.index] = {\n      id: event.content_block.id,\n      name: event.content_block.name,\n      inputJsonParts: [],\n    };\n  }\n}\n\n/**\n * Handle deltas of a content block, including input_json_delta for tool_use\n */\nfunction handleContentBlockDelta(\n  event: AnthropicAiStreamingEvent,\n  state: StreamingState,\n  recordOutputs: boolean,\n): void {\n  if (event.type !== 'content_block_delta' || !event.delta) return;\n\n  // Accumulate tool_use input JSON deltas only when we have an index and an active tool block\n  if (\n    typeof event.index === 'number' &&\n    'partial_json' in event.delta &&\n    typeof event.delta.partial_json === 'string'\n  ) {\n    const active = state.activeToolBlocks[event.index];\n    if (active) {\n      active.inputJsonParts.push(event.delta.partial_json);\n    }\n  }\n\n  // Accumulate streamed response text regardless of index\n  if (recordOutputs && typeof event.delta.text === 'string') {\n    state.responseTexts.push(event.delta.text);\n  }\n}\n\n/**\n * Handle stop of a content block; finalize tool_use entries\n */\nfunction handleContentBlockStop(event: AnthropicAiStreamingEvent, state: StreamingState): void {\n  if (event.type !== 'content_block_stop' || typeof event.index !== 'number') return;\n\n  const active = state.activeToolBlocks[event.index];\n  if (!active) return;\n\n  const raw = active.inputJsonParts.join('');\n  let parsedInput: unknown;\n\n  try {\n    parsedInput = raw ? JSON.parse(raw) : {};\n  } catch {\n    parsedInput = { __unparsed: raw };\n  }\n\n  state.toolCalls.push({\n    type: 'tool_use',\n    id: active.id,\n    name: active.name,\n    input: parsedInput,\n  });\n\n  // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n  delete state.activeToolBlocks[event.index];\n}\n\n/**\n * Processes an event\n * @param event - The event to process\n * @param state - The state of the streaming process\n * @param recordOutputs - Whether to record outputs\n * @param span - The span to update\n */\nfunction processEvent(\n  event: AnthropicAiStreamingEvent,\n  state: StreamingState,\n  recordOutputs: boolean,\n  span: Span,\n): void {\n  if (!(event && typeof event === 'object')) {\n    return;\n  }\n\n  const isError = isErrorEvent(event, span);\n  if (isError) return;\n\n  handleMessageMetadata(event, state);\n\n  // Tool call events are sent via 3 separate events:\n  // - content_block_start (start of the tool call)\n  // - content_block_delta (delta aka input of the tool call)\n  // - content_block_stop (end of the tool call)\n  // We need to handle them all to capture the full tool call.\n  handleContentBlockStart(event, state);\n  handleContentBlockDelta(event, state, recordOutputs);\n  handleContentBlockStop(event, state);\n}\n\n/**\n * Finalizes span attributes when stream processing completes\n */\nfunction finalizeStreamSpan(state: StreamingState, span: Span, recordOutputs: boolean): void {\n  if (!span.isRecording()) {\n    return;\n  }\n\n  // Set common response attributes if available\n  if (state.responseId) {\n    span.setAttributes({\n      [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n    });\n  }\n  if (state.responseModel) {\n    span.setAttributes({\n      [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n    });\n  }\n\n  setTokenUsageAttributes(\n    span,\n    state.promptTokens,\n    state.completionTokens,\n    state.cacheCreationInputTokens,\n    state.cacheReadInputTokens,\n  );\n\n  span.setAttributes({\n    [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n  });\n\n  if (state.finishReasons.length > 0) {\n    span.setAttributes({\n      [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n    });\n  }\n\n  if (recordOutputs && state.responseTexts.length > 0) {\n    span.setAttributes({\n      [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n    });\n  }\n\n  // Set tool calls if any were captured\n  if (recordOutputs && state.toolCalls.length > 0) {\n    span.setAttributes({\n      [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n    });\n  }\n\n  span.end();\n}\n\n/**\n * Instruments an async iterable stream of Anthropic events, updates the span with\n * streaming attributes and (optionally) the aggregated output text, and yields\n * each event from the input stream unchanged.\n */\nexport async function* instrumentAsyncIterableStream(\n  stream: AsyncIterable<AnthropicAiStreamingEvent>,\n  span: Span,\n  recordOutputs: boolean,\n): AsyncGenerator<AnthropicAiStreamingEvent, void, unknown> {\n  const state: StreamingState = {\n    responseTexts: [],\n    finishReasons: [],\n    responseId: '',\n    responseModel: '',\n    promptTokens: undefined,\n    completionTokens: undefined,\n    cacheCreationInputTokens: undefined,\n    cacheReadInputTokens: undefined,\n    toolCalls: [],\n    activeToolBlocks: {},\n  };\n\n  try {\n    for await (const event of stream) {\n      processEvent(event, state, recordOutputs, span);\n      yield event;\n    }\n  } finally {\n    // Set common response attributes if available\n    if (state.responseId) {\n      span.setAttributes({\n        [GEN_AI_RESPONSE_ID_ATTRIBUTE]: state.responseId,\n      });\n    }\n    if (state.responseModel) {\n      span.setAttributes({\n        [GEN_AI_RESPONSE_MODEL_ATTRIBUTE]: state.responseModel,\n      });\n    }\n\n    setTokenUsageAttributes(\n      span,\n      state.promptTokens,\n      state.completionTokens,\n      state.cacheCreationInputTokens,\n      state.cacheReadInputTokens,\n    );\n\n    span.setAttributes({\n      [GEN_AI_RESPONSE_STREAMING_ATTRIBUTE]: true,\n    });\n\n    if (state.finishReasons.length > 0) {\n      span.setAttributes({\n        [GEN_AI_RESPONSE_FINISH_REASONS_ATTRIBUTE]: JSON.stringify(state.finishReasons),\n      });\n    }\n\n    if (recordOutputs && state.responseTexts.length > 0) {\n      span.setAttributes({\n        [GEN_AI_RESPONSE_TEXT_ATTRIBUTE]: state.responseTexts.join(''),\n      });\n    }\n\n    // Set tool calls if any were captured\n    if (recordOutputs && state.toolCalls.length > 0) {\n      span.setAttributes({\n        [GEN_AI_RESPONSE_TOOL_CALLS_ATTRIBUTE]: JSON.stringify(state.toolCalls),\n      });\n    }\n\n    span.end();\n  }\n}\n\n/**\n * Instruments a MessageStream by registering event handlers and preserving the original stream API.\n */\nexport function instrumentMessageStream<R extends { on: (...args: unknown[]) => void }>(\n  stream: R,\n  span: Span,\n  recordOutputs: boolean,\n): R {\n  const state: StreamingState = {\n    responseTexts: [],\n    finishReasons: [],\n    responseId: '',\n    responseModel: '',\n    promptTokens: undefined,\n    completionTokens: undefined,\n    cacheCreationInputTokens: undefined,\n    cacheReadInputTokens: undefined,\n    toolCalls: [],\n    activeToolBlocks: {},\n  };\n\n  stream.on('streamEvent', (event: unknown) => {\n    processEvent(event as AnthropicAiStreamingEvent, state, recordOutputs, span);\n  });\n\n  // The event fired when a message is done being streamed by the API. Corresponds to the message_stop SSE event.\n  // @see https://github.com/anthropics/anthropic-sdk-typescript/blob/d3be31f5a4e6ebb4c0a2f65dbb8f381ae73a9166/helpers.md?plain=1#L42-L44\n  stream.on('message', () => {\n    finalizeStreamSpan(state, span, recordOutputs);\n  });\n\n  stream.on('error', (error: unknown) => {\n    captureException(error, {\n      mechanism: {\n        handled: false,\n        type: 'auto.ai.anthropic.stream_error',\n      },\n    });\n\n    if (span.isRecording()) {\n      span.setStatus({ code: SPAN_STATUS_ERROR, message: 'stream_error' });\n      span.end();\n    }\n  });\n\n  return stream;\n}\n","import type { StackFrame } from '../types-hoist/stackframe';\nimport { filenameIsInApp } from './node-stack-trace';\nimport { UNKNOWN_FUNCTION } from './stacktrace';\n\ntype WatchdogReturn = {\n  /** Resets the watchdog timer */\n  poll: () => void;\n  /** Enables or disables the watchdog timer */\n  enabled: (state: boolean) => void;\n};\n\ntype CreateTimerImpl = () => { getTimeMs: () => number; reset: () => void };\n\n/**\n * A node.js watchdog timer\n * @param pollInterval The interval that we expect to get polled at\n * @param anrThreshold The threshold for when we consider ANR\n * @param callback The callback to call for ANR\n * @returns An object with `poll` and `enabled` functions {@link WatchdogReturn}\n */\nexport function watchdogTimer(\n  createTimer: CreateTimerImpl,\n  pollInterval: number,\n  anrThreshold: number,\n  callback: () => void,\n): WatchdogReturn {\n  const timer = createTimer();\n  let triggered = false;\n  let enabled = true;\n\n  setInterval(() => {\n    const diffMs = timer.getTimeMs();\n\n    if (triggered === false && diffMs > pollInterval + anrThreshold) {\n      triggered = true;\n      if (enabled) {\n        callback();\n      }\n    }\n\n    if (diffMs < pollInterval + anrThreshold) {\n      triggered = false;\n    }\n  }, 20);\n\n  return {\n    poll: () => {\n      timer.reset();\n    },\n    enabled: (state: boolean) => {\n      enabled = state;\n    },\n  };\n}\n\n// types copied from inspector.d.ts\ninterface Location {\n  scriptId: string;\n  lineNumber: number;\n  columnNumber?: number;\n}\n\ninterface CallFrame {\n  functionName: string;\n  location: Location;\n  url: string;\n}\n\n/**\n * Converts Debugger.CallFrame to Sentry StackFrame\n */\nexport function callFrameToStackFrame(\n  frame: CallFrame,\n  url: string | undefined,\n  getModuleFromFilename: (filename: string | undefined) => string | undefined,\n): StackFrame {\n  const filename = url ? url.replace(/^file:\\/\\//, '') : undefined;\n\n  // CallFrame row/col are 0 based, whereas StackFrame are 1 based\n  const colno = frame.location.columnNumber ? frame.location.columnNumber + 1 : undefined;\n  const lineno = frame.location.lineNumber ? frame.location.lineNumber + 1 : undefined;\n\n  return {\n    filename,\n    module: getModuleFromFilename(filename),\n    function: frame.functionName || UNKNOWN_FUNCTION,\n    colno,\n    lineno,\n    in_app: filename ? filenameIsInApp(filename) : undefined,\n  };\n}\n"],"sourceRoot":""}