{"version":3,"sources":["jsdelivr-header.js","/npm/@thinkhive/sdk@4.2.6/src/index.ts"],"names":[],"mappings":"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","file":"/npm/@thinkhive/sdk@4.2.6/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@thinkhive/sdk@4.2.6/dist/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\n * ThinkHive SDK v4.1.0\n *\n * Run-centric AI agent observability platform with:\n * - Facts vs Inferences (claims API)\n * - Deterministic ticket linking (7 methods)\n * - Customer context snapshots (time-series)\n * - Calibrated predictions (Brier scores)\n * - Configurable ROI calculation engine\n *\n * @version 4.1.0\n * @license MIT\n */\n\nimport { trace, context, SpanStatusCode } from '@opentelemetry/api';\nimport { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-proto';\nimport { resourceFromAttributes, defaultResource } from '@opentelemetry/resources';\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base';\n\n// Core\nimport {\n  initConfig,\n  getConfig,\n  isInitialized,\n  resetConfig,\n  debugLog,\n  SDK_VERSION,\n  DEFAULT_ENDPOINT,\n} from './core/config';\nimport {\n  apiRequestWithData,\n  ThinkHiveError,\n  ThinkHiveApiError,\n  ThinkHiveValidationError,\n  PermissionDeniedError,\n  AgentScopeError,\n  RateLimitError,\n  IpWhitelistError,\n} from './core/client';\n\n// API clients\nimport { runs, createRunWithContext, toOpenAIMessages, fromOpenAIMessages } from './api/runs';\nimport {\n  claims,\n  isFact,\n  isInference,\n  isComputed,\n  getHighConfidenceClaims,\n  groupClaimsByType,\n  groupClaimsByCategory,\n} from './api/claims';\nimport {\n  calibration,\n  calculateBrierScore,\n  calculateECE,\n  isWellCalibrated,\n  getCalibrationQuality,\n} from './api/calibration';\n\n// New Evaluation APIs\nimport { humanReview } from './api/human-review';\nimport {\n  nondeterminism,\n  calculatePassAtK,\n  calculatePassToK,\n  requiredPassRateForPassAtK,\n  isReliableEvaluation,\n  getReliabilityRecommendation,\n} from './api/nondeterminism';\nimport {\n  evalHealth,\n  hasHealthIssue,\n  getSeverityLevel as getHealthSeverityLevel,\n  isSaturated,\n  getSaturationRecommendation,\n} from './api/eval-health';\nimport {\n  deterministicGraders,\n  createRegexRule,\n  createContainsRule,\n  createLengthRule,\n  createJsonSchemaRule,\n  allRulesPassed,\n  getFailedRules,\n  calculateAverageScore,\n} from './api/deterministic-graders';\nimport {\n  conversationEval,\n  aggregateWorst,\n  aggregateAverage,\n  aggregateWeighted,\n  aggregateFinalTurn,\n  aggregateMajority,\n  getAggregator,\n  getProblematicTurns,\n  analyzeConversationTrend,\n} from './api/conversation-eval';\nimport {\n  transcriptPatterns,\n  isHighRisk,\n  getMatchesByCategory,\n  getCriticalInsights,\n  hasPiiExposure,\n  hasFrustrationSignals,\n  hasEscalationRequest,\n  getCategoryDistribution,\n  getRecommendations,\n  needsAttention,\n  sortMatchesBySeverity,\n} from './api/transcript-patterns';\n\n// Agents Management\nimport {\n  agents,\n} from './api/agents';\n\n// Eval Runs\nimport { evalRuns } from './api/eval-runs';\n\n// Signals\nimport { signals } from './api/signals';\n\n// Notifications\nimport { notifications } from './api/notifications';\n\n// Documents\nimport { documents } from './api/documents';\n\n// Shadow Tests\nimport { shadowTests } from './api/shadow-tests';\n\n// Sessions\nimport { sessions } from './api/sessions';\n\n// Drift\nimport { drift, hasDrift, getDriftSeverity } from './api/drift';\n\n// LLM Costs\nimport { llmCosts, formatCost as formatLLMCost } from './api/llm-costs';\n\n// Guardrails\nimport { guardrails } from './guardrails';\n\n// API Key Management (Phase 2 Security)\nimport {\n  apiKeys,\n  hasPermission,\n  isExpired as isApiKeyExpired,\n  isValid as isApiKeyValid,\n  getTimeUntilExpiry,\n  canAccessAgent,\n} from './api/apiKeys';\n\n// ROI Analytics API\nimport {\n  roiAnalytics,\n  calculateRevenueAtRisk,\n  calculateAutomationSavings,\n  formatCurrency,\n  getROIQuality,\n} from './api/roi-analytics';\n\n// Business Metrics API\nimport {\n  businessMetrics,\n  isMetricReady,\n  needsMoreTraces,\n  awaitingExternalData,\n  isMetricStale,\n  getStatusMessage,\n  getTraceProgress,\n  formatMetricValue,\n  getTrendEmoji,\n} from './api/business-metrics';\n\n// Quality Metrics API\nimport {\n  qualityMetrics,\n  passesQualityThreshold,\n  isHallucinationRiskAcceptable,\n  getQualityRecommendations,\n  formatQualityScore,\n  getGradeColor,\n} from './api/quality-metrics';\n\n// Integrations\nimport {\n  linking,\n  generateZendeskMarker,\n  parseZendeskMarker,\n  hasZendeskMarker,\n  removeZendeskMarker,\n  linkRunToTicket,\n  linkRunToZendeskTicket,\n  getBestLinkMethod,\n  LINK_METHOD_CONFIDENCE,\n} from './integrations/ticket-linking';\nimport {\n  customerContext,\n  captureCustomerContext,\n  getContextAsOf,\n  toContextSnapshot,\n  calculateArrChange,\n  calculateHealthTrend,\n} from './integrations/customer-context';\n\n// Re-export types\nexport type {\n  InitOptions,\n  Framework,\n  RunOptions,\n  RunOutcome,\n  ConversationMessage,\n  CustomerContextSnapshot,\n  TicketLinkingOptions,\n  LinkMethod,\n  TraceOptions,\n  TraceCustomFlag,\n  SpanData,\n  BusinessContext,\n  Claim,\n  ClaimType,\n  ClaimCategory,\n  ConfidenceCalibration,\n  EvidenceReference,\n  AnalysisResult,\n  CalibrationStatus,\n  CalibrationBucket,\n  PredictionType,\n  RoiConfig,\n  RoiSummary,\n  ExplainabilityResult,\n  ApiResponse,\n  PaginatedResponse,\n  RunResponse,\n} from './core/types';\n\n// Re-export evaluation types\nexport type {\n  HumanReviewStatus,\n  HumanReviewType,\n  HumanReviewQueueItem,\n  CalibrationSet,\n  ReviewerCalibration,\n  QueueStats,\n} from './api/human-review';\n\nexport type {\n  NondeterminismRunType,\n  NondeterminismRunStatus,\n  NondeterminismRun,\n  NondeterminismSample,\n  TraceAnalysis,\n  CriterionAnalysis,\n  RunSummary,\n} from './api/nondeterminism';\n\nexport type {\n  SaturationType,\n  HealthStatus,\n  RegressionSeverity,\n  EvalHealthSnapshot,\n  EvalRegression,\n  HealthReport,\n} from './api/eval-health';\n\nexport type {\n  RuleType,\n  DeterministicEvalResult,\n  RuleResult,\n  RuleTypeInfo,\n  RuleTemplate,\n} from './api/deterministic-graders';\n\nexport type {\n  AggregateMethod,\n  SessionTrace,\n  TurnEvaluation,\n  ConversationEvalResult,\n  AggregationMethodInfo,\n} from './api/conversation-eval';\n\nexport type {\n  PatternCategory,\n  PatternOutcome,\n  PatternSeverity,\n  PatternMatch,\n  PatternInsight,\n  AnalysisResult as PatternAnalysisResult,\n  PatternCategoryInfo,\n  BuiltInPattern,\n} from './api/transcript-patterns';\n\n// Re-export API Key types (Phase 2 Security)\nexport type {\n  ApiKeyPermissions,\n  ScopeType,\n  Environment,\n  CreateApiKeyOptions,\n  ApiKey,\n  CreateApiKeyResult,\n} from './api/apiKeys';\n\n// Re-export ROI Analytics types\nexport type {\n  IndustryConfig,\n  CustomIndustryConfig,\n  ROIMetrics,\n  BusinessImpact,\n  ROISummary,\n  TrendDataPoint,\n  Correlation,\n  PatternCluster,\n  CorrelationAnalysis,\n} from './api/roi-analytics';\n\n// Re-export Quality Metrics types\nexport type {\n  RetrievedContext,\n  GroundTruthContext,\n  GroundedSpan,\n  UngroundedSpan,\n  CitationMap,\n  RAGEvaluation,\n  RAGEvidence,\n  HallucinationInstance,\n  HallucinationReport,\n  GroundednessResult,\n  BatchEvaluationResult,\n  BatchEvaluationSummary,\n} from './api/quality-metrics';\n\n// Re-export Business Metrics types\nexport type {\n  MetricTrend,\n  MetricStatus,\n  CurrentMetricResponse,\n  MetricHistoryPoint,\n  MetricHistorySummary,\n  MetricHistoryResponse,\n  RecordMetricOptions,\n  RecordMetricResponse,\n} from './api/business-metrics';\n\n// Re-export Agent types\nexport type {\n  Agent,\n  CreateAgentOptions,\n  UpdateAgentOptions,\n  AgentConfig,\n  UpdateAgentConfigOptions,\n  DeleteAgentOptions,\n  CascadeImpact,\n} from './api/agents';\n\n// Re-export Eval Runs types\nexport type {\n  CreateEvalRunOptions,\n  GetEvalRunResultsOptions,\n  ListEvalRunsOptions,\n  EstimateCostOptions,\n  GetTraceResultsOptions,\n  EvalRun,\n  EvalResult,\n  EvalCostEstimate,\n} from './api/eval-runs';\n\n// Re-export Signals types\nexport type {\n  DetectionConfig,\n  CreateSignalOptions,\n  UpdateSignalOptions,\n  ListSignalsOptions,\n  SignalStatsOptions,\n  SignalTrendsOptions,\n  SignalTracesOptions,\n  SignalEventsOptions,\n  Signal,\n  SignalStats,\n  SignalTrendPoint,\n  SignalEvent,\n} from './api/signals';\n\n// Re-export Notifications types\nexport type {\n  NotificationRule,\n  CreateNotificationRuleData,\n  UpdateNotificationRuleData,\n  Notification,\n} from './api/notifications';\n\n// Re-export Documents types\nexport type {\n  Document,\n  DocumentUploadResponse,\n} from './api/documents';\n\n// Re-export Shadow Tests types\nexport type {\n  CreateShadowTestData,\n  UpdateShadowTestData,\n  ShadowTest,\n} from './api/shadow-tests';\n\n// Re-export Sessions types\nexport type {\n  ListSessionsOptions,\n  Session,\n  SessionTrace as SessionTraceRecord,\n} from './api/sessions';\n\n// Re-export Drift types\nexport type {\n  DetectDriftOptions,\n  DriftReport,\n  DriftDimension,\n  DetectAllResult,\n} from './api/drift';\n\n// Re-export LLM Costs types\nexport type {\n  CostQueryOptions,\n  CostSummary,\n  CostBreakdownItem,\n  AgentCostBreakdown,\n  CostSavings,\n  OptimizationEntry,\n  OptimizationStats,\n  OptimizationRecommendation,\n} from './api/llm-costs';\n\n// ============================================================================\n// GLOBAL STATE\n// ============================================================================\n\nlet tracer: ReturnType<typeof trace.getTracer> | null = null;\nlet provider: NodeTracerProvider | null = null;\n\n// ============================================================================\n// INITIALIZATION\n// ============================================================================\n\n/**\n * Initialize ThinkHive SDK v3\n *\n * @example\n * ```typescript\n * import { init } from '@thinkhive/sdk';\n *\n * init({\n *   apiKey: 'th_your_api_key',\n *   serviceName: 'my-ai-agent',\n *   autoInstrument: true,\n *   frameworks: ['langchain', 'openai'],\n * });\n * ```\n */\nexport function init(options: import('./core/types').InitOptions = {}): void {\n  if (isInitialized()) {\n    debugLog('ThinkHive SDK already initialized');\n    return;\n  }\n\n  const config = initConfig(options);\n\n  // Configure OTLP exporter\n  const exporterHeaders: Record<string, string> = {};\n  if (config.apiKey) {\n    exporterHeaders['Authorization'] = `Bearer ${config.apiKey}`;\n  } else {\n    throw new Error(\n      'OTLP tracing requires an API key. Agent ID alone is not sufficient for OTLP ingestion. ' +\n      'Provide apiKey in init() or set the THINKHIVE_API_KEY environment variable.'\n    );\n  }\n\n  const otlpUrl = config.endpoint.replace(/\\/+$/, '') + '/v1/traces';\n  const exporter = new OTLPTraceExporter({\n    url: otlpUrl,\n    headers: exporterHeaders,\n  });\n\n  // Create OpenTelemetry resource\n  const resource = defaultResource().merge(\n    resourceFromAttributes({\n      'service.name': config.serviceName,\n      'thinkhive.sdk.version': SDK_VERSION,\n      'thinkhive.sdk.language': 'typescript',\n    })\n  );\n\n  // Create provider with span processor\n  provider = new NodeTracerProvider({\n    resource,\n    spanProcessors: [new BatchSpanProcessor(exporter)],\n  });\n\n  // Register provider\n  provider.register();\n\n  // Get tracer\n  tracer = trace.getTracer('thinkhive', SDK_VERSION);\n\n  if (config.debug) {\n    console.log(`✅ ThinkHive SDK v${SDK_VERSION} initialized`);\n    console.log(`   Endpoint: ${config.endpoint}`);\n    console.log(`   Service: ${config.serviceName}`);\n    console.log(`   Auto-instrument: ${config.autoInstrument}`);\n  }\n\n  // Setup auto-instrumentation if enabled\n  if (config.autoInstrument) {\n    setupAutoInstrumentation(config.frameworks);\n  }\n}\n\n/**\n * Get the global tracer\n */\nexport function getTracer() {\n  if (!tracer) {\n    throw new Error('ThinkHive SDK not initialized. Call init() first.');\n  }\n  return tracer;\n}\n\n/**\n * Shutdown the SDK and flush pending spans\n */\nexport async function shutdown(): Promise<void> {\n  if (provider) {\n    await provider.shutdown();\n    provider = null;\n  }\n  tracer = null;\n  resetConfig();\n  debugLog('ThinkHive SDK shutdown complete');\n}\n\n// ============================================================================\n// TRACING FUNCTIONS\n// ============================================================================\n\n/**\n * Trace an LLM call\n */\nexport function traceLLM<T>(\n  options: {\n    name: string;\n    modelName?: string;\n    provider?: string;\n    input?: unknown;\n  },\n  fn: () => Promise<T>\n): Promise<T> {\n  const t = getTracer();\n\n  return t.startActiveSpan(\n    options.name,\n    {\n      attributes: {\n        'openinference.span.kind': 'LLM',\n        'llm.model_name': options.modelName,\n        'llm.provider': options.provider,\n        'input.value': options.input ? JSON.stringify(options.input).substring(0, 10000) : undefined,\n      },\n    },\n    async (span) => {\n      const startTime = Date.now();\n      try {\n        const result = await fn();\n        span.setAttribute('output.value', JSON.stringify(result).substring(0, 10000));\n        span.setStatus({ code: SpanStatusCode.OK });\n        return result;\n      } catch (error: unknown) {\n        const message = error instanceof Error ? error.message : String(error);\n        span.setStatus({ code: SpanStatusCode.ERROR, message });\n        span.recordException(error as Error);\n        throw error;\n      } finally {\n        span.setAttribute('duration_ms', Date.now() - startTime);\n        span.end();\n      }\n    }\n  );\n}\n\n/**\n * Trace a retrieval operation\n */\nexport function traceRetrieval<T>(\n  options: {\n    name: string;\n    query?: string;\n    topK?: number;\n  },\n  fn: () => Promise<T>\n): Promise<T> {\n  const t = getTracer();\n\n  return t.startActiveSpan(\n    options.name,\n    {\n      attributes: {\n        'openinference.span.kind': 'RETRIEVER',\n        'retrieval.query': options.query,\n        'retrieval.top_k': options.topK,\n      },\n    },\n    async (span) => {\n      const startTime = Date.now();\n      try {\n        const result = await fn();\n        if (Array.isArray(result)) {\n          span.setAttribute('retrieval.document_count', result.length);\n        }\n        span.setStatus({ code: SpanStatusCode.OK });\n        return result;\n      } catch (error: unknown) {\n        const message = error instanceof Error ? error.message : String(error);\n        span.setStatus({ code: SpanStatusCode.ERROR, message });\n        span.recordException(error as Error);\n        throw error;\n      } finally {\n        span.setAttribute('duration_ms', Date.now() - startTime);\n        span.end();\n      }\n    }\n  );\n}\n\n/**\n * Trace a tool call\n */\nexport function traceTool<T>(\n  options: {\n    name: string;\n    toolName?: string;\n    parameters?: Record<string, unknown>;\n  },\n  fn: () => Promise<T>\n): Promise<T> {\n  const t = getTracer();\n\n  return t.startActiveSpan(\n    options.toolName || options.name,\n    {\n      attributes: {\n        'openinference.span.kind': 'TOOL',\n        'tool.name': options.toolName || options.name,\n        'tool.parameters': options.parameters ? JSON.stringify(options.parameters) : undefined,\n      },\n    },\n    async (span) => {\n      const startTime = Date.now();\n      try {\n        const result = await fn();\n        span.setAttribute('tool.output', JSON.stringify(result).substring(0, 10000));\n        span.setStatus({ code: SpanStatusCode.OK });\n        return result;\n      } catch (error: unknown) {\n        const message = error instanceof Error ? error.message : String(error);\n        span.setStatus({ code: SpanStatusCode.ERROR, message });\n        span.recordException(error as Error);\n        throw error;\n      } finally {\n        span.setAttribute('duration_ms', Date.now() - startTime);\n        span.end();\n      }\n    }\n  );\n}\n\n/**\n * Trace a chain/workflow\n */\nexport function traceChain<T>(\n  options: {\n    name: string;\n    input?: unknown;\n  },\n  fn: () => Promise<T>\n): Promise<T> {\n  const t = getTracer();\n\n  return t.startActiveSpan(\n    options.name,\n    {\n      attributes: {\n        'openinference.span.kind': 'CHAIN',\n        'input.value': options.input ? JSON.stringify(options.input).substring(0, 10000) : undefined,\n      },\n    },\n    async (span) => {\n      const startTime = Date.now();\n      try {\n        const result = await fn();\n        span.setAttribute('output.value', JSON.stringify(result).substring(0, 10000));\n        span.setStatus({ code: SpanStatusCode.OK });\n        return result;\n      } catch (error: unknown) {\n        const message = error instanceof Error ? error.message : String(error);\n        span.setStatus({ code: SpanStatusCode.ERROR, message });\n        span.recordException(error as Error);\n        throw error;\n      } finally {\n        span.setAttribute('duration_ms', Date.now() - startTime);\n        span.end();\n      }\n    }\n  );\n}\n\n// ============================================================================\n// V2 TERMINOLOGY - ISSUES API (replaces Cases)\n// Per ITIL best practices, \"Issues\" is more customer-friendly than \"Cases\"\n// ============================================================================\n\n/**\n * Issues API client\n * This is the recommended API for managing clustered failure patterns\n *\n * @since 3.1.0\n */\nexport const issues = {\n  /**\n   * List issues for an agent\n   */\n  async list(agentId: string, options?: {\n    status?: string;\n    startDate?: Date;\n    endDate?: Date;\n    limit?: number;\n    offset?: number;\n  }): Promise<any[]> {\n    const params = new URLSearchParams({ agentId });\n    if (options?.status) params.set('status', options.status);\n    if (options?.startDate) params.set('startDate', options.startDate.toISOString());\n    if (options?.endDate) params.set('endDate', options.endDate.toISOString());\n    if (options?.limit) params.set('limit', options.limit.toString());\n    if (options?.offset) params.set('offset', options.offset.toString());\n\n    const response = await apiRequestWithData(`/issues?${params}`, { apiVersion: 'v2' });\n    return (response as any).data || response;\n  },\n\n  /**\n   * Get a single issue by ID\n   */\n  async get(id: string): Promise<any> {\n    const response = await apiRequestWithData(`/issues/${id}`, { apiVersion: 'v2' });\n    return (response as any).data || response;\n  },\n\n  /**\n   * Create a new issue\n   */\n  async create(data: {\n    agentId: string;\n    title: string;\n    description?: string;\n    type: string;\n    severity?: string;\n    pattern?: string;\n    exampleTraceIds?: string[];\n  }): Promise<any> {\n    const response = await apiRequestWithData('/issues', {\n      method: 'POST',\n      body: data,\n      apiVersion: 'v2',\n    });\n    return (response as any).data || response;\n  },\n\n  /**\n   * Update an issue\n   */\n  async update(id: string, data: {\n    title?: string;\n    description?: string;\n    status?: string;\n    severity?: string;\n    assignedTo?: string;\n    resolutionNotes?: string;\n  }): Promise<any> {\n    const response = await apiRequestWithData(`/issues/${id}`, {\n      method: 'PATCH',\n      body: data,\n      apiVersion: 'v2',\n    });\n    return (response as any).data || response;\n  },\n\n  /**\n   * Get fixes for an issue\n   */\n  async getFixes(issueId: string): Promise<any[]> {\n    const response = await apiRequestWithData(`/issues/${issueId}/fixes`, { apiVersion: 'v2' });\n    return (response as any).data || response;\n  },\n};\n\n\n// ============================================================================\n// V2 TERMINOLOGY - ANALYZER API (replaces Explainer user-facing)\n// Per industry distinction: Analyzer = pattern detection/observation\n// ============================================================================\n\n/**\n * Analyzer API client\n * User-selected trace analysis with cost estimation and smart sampling\n *\n * Key improvements over v1 Explainer:\n * - User-selected trace analysis (not automatic)\n * - Cost estimation before execution\n * - Smart sampling strategies\n * - Root cause analysis by layer\n * - Pattern aggregation across traces\n *\n * @since 3.1.0\n */\nexport const analyzer = {\n  /**\n   * Analyze specific traces (user-selected)\n   */\n  async analyze(options: {\n    traceIds: string[];\n    tier?: 'fast' | 'standard' | 'deep';\n    includeRootCause?: boolean;\n    includeLayers?: boolean;\n  }): Promise<any> {\n    const { traceIds, tier, includeRootCause, includeLayers } = options;\n    const response = await apiRequestWithData('/analyzer/analyze', {\n      method: 'POST',\n      body: {\n        traceIds,\n        options: {\n          tier,\n          includeRootCause,\n          includeLayers,\n        },\n      },\n      apiVersion: 'v2',\n    });\n    return (response as any).data || response;\n  },\n\n  /**\n   * Analyze traces by time window\n   */\n  async analyzeWindow(options: {\n    agentId: string;\n    startDate: Date;\n    endDate: Date;\n    filters?: {\n      outcomes?: ('failure' | 'error' | 'success')[];\n      minSeverity?: 'low' | 'medium' | 'high' | 'critical';\n    };\n    sampling?: {\n      strategy: 'all' | 'failures_only' | 'smart' | 'random';\n      samplePercent?: number;\n    };\n  }): Promise<any> {\n    const response = await apiRequestWithData('/analyzer/analyze-window', {\n      method: 'POST',\n      body: {\n        ...options,\n        startDate: options.startDate.toISOString(),\n        endDate: options.endDate.toISOString(),\n      },\n      apiVersion: 'v2',\n    });\n    return (response as any).data || response;\n  },\n\n  /**\n   * Estimate cost before running analysis\n   */\n  async estimateCost(options: {\n    traceIds?: string[];\n    agentId?: string;\n    startDate?: Date;\n    endDate?: Date;\n    tier: 'fast' | 'standard' | 'deep';\n  }): Promise<{\n    estimatedTraces: number;\n    estimatedTokens: number;\n    estimatedCost: number;\n    estimatedCredits: number;\n    tier: string;\n    note: string;\n  }> {\n    const response = await apiRequestWithData('/analyzer/estimate-cost', {\n      method: 'POST',\n      body: {\n        ...options,\n        startDate: options.startDate?.toISOString(),\n        endDate: options.endDate?.toISOString(),\n      },\n      apiVersion: 'v2',\n    });\n    return (response as any).data || response;\n  },\n\n  /**\n   * Get analysis results for a specific trace\n   */\n  async get(traceId: string): Promise<any> {\n    const response = await apiRequestWithData(`/analyzer/${traceId}`, { apiVersion: 'v2' });\n    return (response as any).data || response;\n  },\n\n  /**\n   * Aggregate insights across multiple analyzed traces\n   */\n  async summarize(options: {\n    analysisIds?: string[];\n    agentId?: string;\n    startDate?: Date;\n    endDate?: Date;\n  }): Promise<any> {\n    const response = await apiRequestWithData('/analyzer/summarize', {\n      method: 'POST',\n      body: {\n        ...options,\n        startDate: options.startDate?.toISOString(),\n        endDate: options.endDate?.toISOString(),\n      },\n      apiVersion: 'v2',\n    });\n    return (response as any).data || response;\n  },\n};\n\n\n// ============================================================================\n// AUTO-INSTRUMENTATION\n// ============================================================================\n\nfunction setupAutoInstrumentation(\n  frameworks: import('./core/types').Framework[]\n): void {\n  debugLog(`Setting up auto-instrumentation for: ${frameworks.join(', ')}`);\n\n  for (const framework of frameworks) {\n    try {\n      switch (framework) {\n        case 'openai':\n        case 'openai-assistants':\n          debugLog('OpenAI instrumentation ready (use instrumentOpenAIClient)');\n          break;\n        case 'langchain':\n        case 'langgraph':\n          debugLog('LangChain/LangGraph instrumentation ready (use ThinkHiveCallbackHandler)');\n          break;\n        case 'anthropic':\n          debugLog('Anthropic instrumentation ready');\n          break;\n        case 'llamaindex':\n          debugLog('LlamaIndex instrumentation ready');\n          break;\n        case 'n8n':\n          debugLog('n8n instrumentation ready');\n          break;\n        case 'voiceflow':\n          debugLog('Voiceflow instrumentation ready');\n          break;\n      }\n    } catch (error) {\n      debugLog(`Failed to setup ${framework} instrumentation:`, error);\n    }\n  }\n}\n\n// ============================================================================\n// RE-EXPORTS (non-duplicated)\n// ============================================================================\n\n// Re-export from config (not yet exported)\nexport { isInitialized, SDK_VERSION, DEFAULT_ENDPOINT };\n\n// Re-export API clients (v3)\nexport {\n  runs,\n  claims,\n  calibration,\n  linking,\n  customerContext,\n  // New evaluation APIs\n  humanReview,\n  nondeterminism,\n  evalHealth,\n  deterministicGraders,\n  conversationEval,\n  transcriptPatterns,\n  // API Key Management (Phase 2 Security)\n  apiKeys,\n  // Agents Management\n  agents,\n  // ROI Analytics, Quality Metrics, and Business Metrics\n  roiAnalytics,\n  qualityMetrics,\n  businessMetrics,\n  // Eval Runs, Signals, Notifications, Documents, Shadow Tests, Sessions, Drift, LLM Costs\n  evalRuns,\n  signals,\n  notifications,\n  documents,\n  shadowTests,\n  sessions,\n  drift,\n  llmCosts,\n  // Guardrails\n  guardrails,\n};\n\n// Note: issues, analyzer, and guardrails are already exported via 'export const' above\n\n// Re-export helper functions\nexport {\n  // Runs helpers\n  createRunWithContext,\n  toOpenAIMessages,\n  fromOpenAIMessages,\n  // Claims helpers\n  isFact,\n  isInference,\n  isComputed,\n  getHighConfidenceClaims,\n  groupClaimsByType,\n  groupClaimsByCategory,\n  // Calibration helpers\n  calculateBrierScore,\n  calculateECE,\n  isWellCalibrated,\n  getCalibrationQuality,\n  // Linking helpers\n  generateZendeskMarker,\n  parseZendeskMarker,\n  hasZendeskMarker,\n  removeZendeskMarker,\n  linkRunToTicket,\n  linkRunToZendeskTicket,\n  getBestLinkMethod,\n  LINK_METHOD_CONFIDENCE,\n  // Customer context helpers\n  captureCustomerContext,\n  getContextAsOf,\n  toContextSnapshot,\n  calculateArrChange,\n  calculateHealthTrend,\n  // Non-determinism helpers\n  calculatePassAtK,\n  calculatePassToK,\n  requiredPassRateForPassAtK,\n  isReliableEvaluation,\n  getReliabilityRecommendation,\n  // Eval health helpers\n  hasHealthIssue,\n  getHealthSeverityLevel,\n  isSaturated,\n  getSaturationRecommendation,\n  // Deterministic graders helpers\n  createRegexRule,\n  createContainsRule,\n  createLengthRule,\n  createJsonSchemaRule,\n  allRulesPassed,\n  getFailedRules,\n  calculateAverageScore,\n  // Conversation eval helpers\n  aggregateWorst,\n  aggregateAverage,\n  aggregateWeighted,\n  aggregateFinalTurn,\n  aggregateMajority,\n  getAggregator,\n  getProblematicTurns,\n  analyzeConversationTrend,\n  // Transcript patterns helpers\n  isHighRisk,\n  getMatchesByCategory,\n  getCriticalInsights,\n  hasPiiExposure,\n  hasFrustrationSignals,\n  hasEscalationRequest,\n  getCategoryDistribution,\n  getRecommendations,\n  needsAttention,\n  sortMatchesBySeverity,\n  // API Key helpers\n  hasPermission,\n  isApiKeyExpired,\n  isApiKeyValid,\n  getTimeUntilExpiry,\n  canAccessAgent,\n  // ROI Analytics helpers\n  calculateRevenueAtRisk,\n  calculateAutomationSavings,\n  formatCurrency,\n  getROIQuality,\n  // Quality Metrics helpers\n  passesQualityThreshold,\n  isHallucinationRiskAcceptable,\n  getQualityRecommendations,\n  formatQualityScore,\n  getGradeColor,\n  // Business Metrics helpers\n  isMetricReady,\n  needsMoreTraces,\n  awaitingExternalData,\n  isMetricStale,\n  getStatusMessage,\n  getTraceProgress,\n  formatMetricValue,\n  getTrendEmoji,\n  // Drift helpers\n  hasDrift,\n  getDriftSeverity,\n  // LLM Costs helpers\n  formatLLMCost,\n};\n\n// Re-export Guardrails\nexport { type ScanRequest, type ScanResponse, type Finding, type ScannerResult } from './guardrails';\n\n// Re-export errors (including new security errors)\nexport {\n  ThinkHiveError,\n  ThinkHiveApiError,\n  ThinkHiveValidationError,\n  PermissionDeniedError,\n  AgentScopeError,\n  RateLimitError,\n  IpWhitelistError,\n};\n\n// Default export for convenience\nexport default {\n  init,\n  getTracer,\n  shutdown,\n  isInitialized,\n  // Tracing\n  traceLLM,\n  traceRetrieval,\n  traceTool,\n  traceChain,\n  // API clients\n  runs,\n  claims,\n  calibration,\n  linking,\n  customerContext,\n  // Evaluation APIs\n  humanReview,\n  nondeterminism,\n  evalHealth,\n  deterministicGraders,\n  conversationEval,\n  transcriptPatterns,\n  // API Key Management (Phase 2 Security)\n  apiKeys,\n  // Agents Management\n  agents,\n  // Issues and Analyzer APIs\n  issues,\n  analyzer,\n  // ROI Analytics, Quality Metrics, and Business Metrics\n  roiAnalytics,\n  qualityMetrics,\n  businessMetrics,\n  // Eval Runs, Signals, Notifications, Documents, Shadow Tests, Sessions, Drift, LLM Costs\n  evalRuns,\n  signals,\n  notifications,\n  documents,\n  shadowTests,\n  sessions,\n  drift,\n  llmCosts,\n  // Guardrails\n  guardrails,\n  // Helpers\n  generateZendeskMarker,\n  parseZendeskMarker,\n  linkRunToTicket,\n  createRunWithContext,\n  // Utilities\n  isFact,\n  isInference,\n  calculateBrierScore,\n  isWellCalibrated,\n  calculatePassAtK,\n  isReliableEvaluation,\n  isHighRisk,\n  needsAttention,\n  // ROI helpers\n  calculateRevenueAtRisk,\n  formatCurrency,\n  // Quality helpers\n  passesQualityThreshold,\n  isHallucinationRiskAcceptable,\n  // Business Metrics helpers\n  isMetricReady,\n  needsMoreTraces,\n  getStatusMessage,\n  // Drift helpers\n  hasDrift,\n  getDriftSeverity,\n  // LLM Costs helpers\n  formatLLMCost,\n};\n"]}