@thinkhive/sdk 4.0.1 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  /**
2
- * ThinkHive SDK v3.0.0
2
+ * ThinkHive SDK v4.1.0
3
3
  *
4
4
  * Run-centric AI agent observability platform with:
5
5
  * - Facts vs Inferences (claims API)
6
6
  * - Deterministic ticket linking (7 methods)
7
7
  * - Customer context snapshots (time-series)
8
8
  * - Calibrated predictions (Brier scores)
9
+ * - Configurable ROI calculation engine
9
10
  *
10
- * @version 3.0.0
11
+ * @version 4.1.0
11
12
  * @license MIT
12
13
  */
13
14
  import { isInitialized, SDK_VERSION, DEFAULT_ENDPOINT } from './core/config';
@@ -22,6 +23,15 @@ import { deterministicGraders, createRegexRule, createContainsRule, createLength
22
23
  import { conversationEval, aggregateWorst, aggregateAverage, aggregateWeighted, aggregateFinalTurn, aggregateMajority, getAggregator, getProblematicTurns, analyzeConversationTrend } from './api/conversation-eval';
23
24
  import { transcriptPatterns, isHighRisk, getMatchesByCategory, getCriticalInsights, hasPiiExposure, hasFrustrationSignals, hasEscalationRequest, getCategoryDistribution, getRecommendations, needsAttention, sortMatchesBySeverity } from './api/transcript-patterns';
24
25
  import { agents } from './api/agents';
26
+ import { evalRuns } from './api/eval-runs';
27
+ import { signals } from './api/signals';
28
+ import { notifications } from './api/notifications';
29
+ import { documents } from './api/documents';
30
+ import { shadowTests } from './api/shadow-tests';
31
+ import { sessions } from './api/sessions';
32
+ import { drift, hasDrift, getDriftSeverity } from './api/drift';
33
+ import { llmCosts, formatCost as formatLLMCost } from './api/llm-costs';
34
+ import { guardrails } from './guardrails';
25
35
  import { apiKeys, hasPermission, isExpired as isApiKeyExpired, isValid as isApiKeyValid, getTimeUntilExpiry, canAccessAgent } from './api/apiKeys';
26
36
  import { roiAnalytics, calculateRevenueAtRisk, calculateAutomationSavings, formatCurrency, getROIQuality } from './api/roi-analytics';
27
37
  import { businessMetrics, isMetricReady, needsMoreTraces, awaitingExternalData, isMetricStale, getStatusMessage, getTraceProgress, formatMetricValue, getTrendEmoji } from './api/business-metrics';
@@ -40,6 +50,14 @@ export type { IndustryConfig, CustomIndustryConfig, ROIMetrics, BusinessImpact,
40
50
  export type { RetrievedContext, GroundTruthContext, GroundedSpan, UngroundedSpan, CitationMap, RAGEvaluation, RAGEvidence, HallucinationInstance, HallucinationReport, GroundednessResult, BatchEvaluationResult, BatchEvaluationSummary, } from './api/quality-metrics';
41
51
  export type { MetricTrend, MetricStatus, CurrentMetricResponse, MetricHistoryPoint, MetricHistorySummary, MetricHistoryResponse, RecordMetricOptions, RecordMetricResponse, } from './api/business-metrics';
42
52
  export type { Agent, CreateAgentOptions, UpdateAgentOptions, AgentConfig, UpdateAgentConfigOptions, DeleteAgentOptions, CascadeImpact, } from './api/agents';
53
+ export type { CreateEvalRunOptions, GetEvalRunResultsOptions, ListEvalRunsOptions, EstimateCostOptions, GetTraceResultsOptions, EvalRun, EvalResult, EvalCostEstimate, } from './api/eval-runs';
54
+ export type { DetectionConfig, CreateSignalOptions, UpdateSignalOptions, ListSignalsOptions, SignalStatsOptions, SignalTrendsOptions, SignalTracesOptions, SignalEventsOptions, Signal, SignalStats, SignalTrendPoint, SignalEvent, } from './api/signals';
55
+ export type { NotificationRule, CreateNotificationRuleData, UpdateNotificationRuleData, Notification, } from './api/notifications';
56
+ export type { Document, DocumentUploadResponse, } from './api/documents';
57
+ export type { CreateShadowTestData, UpdateShadowTestData, ShadowTest, } from './api/shadow-tests';
58
+ export type { ListSessionsOptions, Session, SessionTrace as SessionTraceRecord, } from './api/sessions';
59
+ export type { DetectDriftOptions, DriftReport, DriftDimension, DetectAllResult, } from './api/drift';
60
+ export type { CostQueryOptions, CostSummary, CostBreakdownItem, AgentCostBreakdown, CostSavings, OptimizationEntry, OptimizationStats, OptimizationRecommendation, } from './api/llm-costs';
43
61
  /**
44
62
  * Initialize ThinkHive SDK v3
45
63
  *
@@ -216,8 +234,9 @@ export declare const analyzer: {
216
234
  }): Promise<any>;
217
235
  };
218
236
  export { isInitialized, SDK_VERSION, DEFAULT_ENDPOINT };
219
- export { runs, claims, calibration, linking, customerContext, humanReview, nondeterminism, evalHealth, deterministicGraders, conversationEval, transcriptPatterns, apiKeys, agents, roiAnalytics, qualityMetrics, businessMetrics, };
220
- export { createRunWithContext, toOpenAIMessages, fromOpenAIMessages, isFact, isInference, isComputed, getHighConfidenceClaims, groupClaimsByType, groupClaimsByCategory, calculateBrierScore, calculateECE, isWellCalibrated, getCalibrationQuality, generateZendeskMarker, parseZendeskMarker, hasZendeskMarker, removeZendeskMarker, linkRunToTicket, linkRunToZendeskTicket, getBestLinkMethod, LINK_METHOD_CONFIDENCE, captureCustomerContext, getContextAsOf, toContextSnapshot, calculateArrChange, calculateHealthTrend, calculatePassAtK, calculatePassToK, requiredPassRateForPassAtK, isReliableEvaluation, getReliabilityRecommendation, hasHealthIssue, getHealthSeverityLevel, isSaturated, getSaturationRecommendation, createRegexRule, createContainsRule, createLengthRule, createJsonSchemaRule, allRulesPassed, getFailedRules, calculateAverageScore, aggregateWorst, aggregateAverage, aggregateWeighted, aggregateFinalTurn, aggregateMajority, getAggregator, getProblematicTurns, analyzeConversationTrend, isHighRisk, getMatchesByCategory, getCriticalInsights, hasPiiExposure, hasFrustrationSignals, hasEscalationRequest, getCategoryDistribution, getRecommendations, needsAttention, sortMatchesBySeverity, hasPermission, isApiKeyExpired, isApiKeyValid, getTimeUntilExpiry, canAccessAgent, calculateRevenueAtRisk, calculateAutomationSavings, formatCurrency, getROIQuality, passesQualityThreshold, isHallucinationRiskAcceptable, getQualityRecommendations, formatQualityScore, getGradeColor, isMetricReady, needsMoreTraces, awaitingExternalData, isMetricStale, getStatusMessage, getTraceProgress, formatMetricValue, getTrendEmoji, };
237
+ export { runs, claims, calibration, linking, customerContext, humanReview, nondeterminism, evalHealth, deterministicGraders, conversationEval, transcriptPatterns, apiKeys, agents, roiAnalytics, qualityMetrics, businessMetrics, evalRuns, signals, notifications, documents, shadowTests, sessions, drift, llmCosts, guardrails, };
238
+ export { createRunWithContext, toOpenAIMessages, fromOpenAIMessages, isFact, isInference, isComputed, getHighConfidenceClaims, groupClaimsByType, groupClaimsByCategory, calculateBrierScore, calculateECE, isWellCalibrated, getCalibrationQuality, generateZendeskMarker, parseZendeskMarker, hasZendeskMarker, removeZendeskMarker, linkRunToTicket, linkRunToZendeskTicket, getBestLinkMethod, LINK_METHOD_CONFIDENCE, captureCustomerContext, getContextAsOf, toContextSnapshot, calculateArrChange, calculateHealthTrend, calculatePassAtK, calculatePassToK, requiredPassRateForPassAtK, isReliableEvaluation, getReliabilityRecommendation, hasHealthIssue, getHealthSeverityLevel, isSaturated, getSaturationRecommendation, createRegexRule, createContainsRule, createLengthRule, createJsonSchemaRule, allRulesPassed, getFailedRules, calculateAverageScore, aggregateWorst, aggregateAverage, aggregateWeighted, aggregateFinalTurn, aggregateMajority, getAggregator, getProblematicTurns, analyzeConversationTrend, isHighRisk, getMatchesByCategory, getCriticalInsights, hasPiiExposure, hasFrustrationSignals, hasEscalationRequest, getCategoryDistribution, getRecommendations, needsAttention, sortMatchesBySeverity, hasPermission, isApiKeyExpired, isApiKeyValid, getTimeUntilExpiry, canAccessAgent, calculateRevenueAtRisk, calculateAutomationSavings, formatCurrency, getROIQuality, passesQualityThreshold, isHallucinationRiskAcceptable, getQualityRecommendations, formatQualityScore, getGradeColor, isMetricReady, needsMoreTraces, awaitingExternalData, isMetricStale, getStatusMessage, getTraceProgress, formatMetricValue, getTrendEmoji, hasDrift, getDriftSeverity, formatLLMCost, };
239
+ export { type ScanRequest, type ScanResponse, type Finding, type ScannerResult } from './guardrails';
221
240
  export { ThinkHiveError, ThinkHiveApiError, ThinkHiveValidationError, PermissionDeniedError, AgentScopeError, RateLimitError, IpWhitelistError, };
222
241
  declare const _default: {
223
242
  init: typeof init;
@@ -327,21 +346,27 @@ declare const _default: {
327
346
  verify(linkId: string, options: {
328
347
  verified: boolean;
329
348
  notes?: string;
330
- }): Promise<{
331
- linkId: string;
332
- verified: boolean;
333
- message: string;
334
- }>;
349
+ }): Promise<import("./integrations/ticket-linking").LinkResponse>;
335
350
  delete(linkId: string): Promise<void>;
336
- autoLink(runId: string): Promise<{
337
- runId: string;
338
- created: import("./integrations/ticket-linking").LinkResponse[];
339
- candidates: Array<{
340
- ticketId: string;
341
- method: import("./core/types").LinkMethod;
342
- confidence: number;
343
- reason: string;
344
- }>;
351
+ autoLink(runId: string): Promise<import("./integrations/ticket-linking").LinkResponse | null>;
352
+ stats(): Promise<{
353
+ totalLinks: number;
354
+ byMethod: Record<string, number>;
355
+ avgConfidence: number;
356
+ verifiedCount: number;
357
+ unverifiedCount: number;
358
+ }>;
359
+ generateMarker(options: {
360
+ traceId: string;
361
+ runId?: string;
362
+ format?: "html_comment" | "base64" | "custom";
363
+ customTemplate?: string;
364
+ }): Promise<{
365
+ marker: string;
366
+ format: string;
367
+ traceId: string;
368
+ runId: string | null;
369
+ instructions: string;
345
370
  }>;
346
371
  };
347
372
  customerContext: {
@@ -598,6 +623,87 @@ declare const _default: {
598
623
  endDate?: string | Date;
599
624
  agentId?: string;
600
625
  }): Promise<import("./api/roi-analytics").CorrelationAnalysis>;
626
+ getConfig(): Promise<{
627
+ id: string;
628
+ companyId: string;
629
+ version: number;
630
+ isActive: boolean;
631
+ costConfig: Record<string, unknown>;
632
+ deflectionConfig: Record<string, unknown>;
633
+ resolutionConfig: Record<string, unknown>;
634
+ attributionConfig: Record<string, unknown>;
635
+ slaConfig: Record<string, unknown>;
636
+ displayConfig: Record<string, unknown>;
637
+ createdAt: string;
638
+ updatedAt: string;
639
+ }>;
640
+ createConfig(data: {
641
+ costConfig?: Record<string, unknown>;
642
+ deflectionConfig?: Record<string, unknown>;
643
+ resolutionConfig?: Record<string, unknown>;
644
+ attributionConfig?: Record<string, unknown>;
645
+ slaConfig?: Record<string, unknown>;
646
+ displayConfig?: Record<string, unknown>;
647
+ }): Promise<{
648
+ id: string;
649
+ companyId: string;
650
+ version: number;
651
+ isActive: boolean;
652
+ costConfig: Record<string, unknown>;
653
+ deflectionConfig: Record<string, unknown>;
654
+ resolutionConfig: Record<string, unknown>;
655
+ attributionConfig: Record<string, unknown>;
656
+ slaConfig: Record<string, unknown>;
657
+ displayConfig: Record<string, unknown>;
658
+ createdAt: string;
659
+ updatedAt: string;
660
+ }>;
661
+ updateConfig(data: {
662
+ costConfig?: Record<string, unknown>;
663
+ deflectionConfig?: Record<string, unknown>;
664
+ resolutionConfig?: Record<string, unknown>;
665
+ attributionConfig?: Record<string, unknown>;
666
+ slaConfig?: Record<string, unknown>;
667
+ displayConfig?: Record<string, unknown>;
668
+ }): Promise<{
669
+ id: string;
670
+ companyId: string;
671
+ version: number;
672
+ isActive: boolean;
673
+ costConfig: Record<string, unknown>;
674
+ deflectionConfig: Record<string, unknown>;
675
+ resolutionConfig: Record<string, unknown>;
676
+ attributionConfig: Record<string, unknown>;
677
+ slaConfig: Record<string, unknown>;
678
+ displayConfig: Record<string, unknown>;
679
+ createdAt: string;
680
+ updatedAt: string;
681
+ }>;
682
+ configVersions(options?: {
683
+ limit?: number;
684
+ offset?: number;
685
+ }): Promise<{
686
+ data: Record<string, unknown>[];
687
+ pagination: {
688
+ limit: number;
689
+ offset: number;
690
+ hasMore: boolean;
691
+ };
692
+ }>;
693
+ calculateV3(options: {
694
+ agentId?: string;
695
+ startDate: string | Date;
696
+ endDate: string | Date;
697
+ configurationVersion?: number;
698
+ includeBreakdown?: boolean;
699
+ includeConfidenceIntervals?: boolean;
700
+ }): Promise<Record<string, unknown>>;
701
+ trendV3(options: {
702
+ agentId?: string;
703
+ granularity: "day" | "week" | "month";
704
+ startDate: string | Date;
705
+ endDate: string | Date;
706
+ }): Promise<Record<string, unknown>>;
601
707
  };
602
708
  qualityMetrics: {
603
709
  getRagScores(traceId: string): Promise<{
@@ -669,6 +775,88 @@ declare const _default: {
669
775
  record(agentId: string, options: import("./api/business-metrics").RecordMetricOptions): Promise<import("./api/business-metrics").RecordMetricResponse>;
670
776
  recordBatch(agentId: string, metrics: import("./api/business-metrics").RecordMetricOptions[]): Promise<import("./api/business-metrics").RecordMetricResponse[]>;
671
777
  };
778
+ evalRuns: {
779
+ create(agentId: string, opts?: import("./api/eval-runs").CreateEvalRunOptions): Promise<import("./api/eval-runs").EvalRun>;
780
+ get(runId: string): Promise<import("./api/eval-runs").EvalRun>;
781
+ getResults(runId: string, opts?: import("./api/eval-runs").GetEvalRunResultsOptions): Promise<{
782
+ results: import("./api/eval-runs").EvalResult[];
783
+ limit: number;
784
+ offset: number;
785
+ hasMore: boolean;
786
+ }>;
787
+ list(opts?: import("./api/eval-runs").ListEvalRunsOptions): Promise<import("./api/eval-runs").EvalRun[]>;
788
+ estimateCost(agentId: string, opts?: import("./api/eval-runs").EstimateCostOptions): Promise<import("./api/eval-runs").EvalCostEstimate>;
789
+ getTraceResults(traceId: string, opts?: import("./api/eval-runs").GetTraceResultsOptions): Promise<import("./api/eval-runs").EvalResult[]>;
790
+ remove(runId: string): Promise<void>;
791
+ };
792
+ signals: {
793
+ list(opts?: import("./api/signals").ListSignalsOptions): Promise<import("./api/signals").Signal[]>;
794
+ create(name: string, group: string, detectionConfig: import("./api/signals").DetectionConfig, opts?: import("./api/signals").CreateSignalOptions): Promise<import("./api/signals").Signal>;
795
+ update(id: string, opts: import("./api/signals").UpdateSignalOptions): Promise<import("./api/signals").Signal>;
796
+ remove(id: string): Promise<void>;
797
+ seedDefaults(): Promise<import("./api/signals").Signal[]>;
798
+ getStats(opts?: import("./api/signals").SignalStatsOptions): Promise<import("./api/signals").SignalStats[]>;
799
+ getTrends(opts?: import("./api/signals").SignalTrendsOptions): Promise<import("./api/signals").SignalTrendPoint[]>;
800
+ getTraces(id: string, opts?: import("./api/signals").SignalTracesOptions): Promise<{
801
+ traces: any[];
802
+ limit: number;
803
+ offset: number;
804
+ hasMore: boolean;
805
+ }>;
806
+ getEvents(id: string, opts?: import("./api/signals").SignalEventsOptions): Promise<{
807
+ events: import("./api/signals").SignalEvent[];
808
+ limit: number;
809
+ offset: number;
810
+ hasMore: boolean;
811
+ }>;
812
+ };
813
+ notifications: {
814
+ listRules(agentId: string): Promise<import("./api/notifications").NotificationRule[]>;
815
+ getRule(id: string, agentId?: string): Promise<import("./api/notifications").NotificationRule>;
816
+ createRule(data: import("./api/notifications").CreateNotificationRuleData): Promise<import("./api/notifications").NotificationRule>;
817
+ updateRule(id: string, data: import("./api/notifications").UpdateNotificationRuleData): Promise<import("./api/notifications").NotificationRule>;
818
+ deleteRule(id: string): Promise<void>;
819
+ listNotifications(agentId: string, unreadOnly?: boolean): Promise<import("./api/notifications").Notification[]>;
820
+ markAsRead(id: string): Promise<import("./api/notifications").Notification>;
821
+ };
822
+ documents: {
823
+ list(agentId: string): Promise<import("./api/documents").Document[]>;
824
+ upload(agentId: string, fileName: string, fileType: string, fileSize: number): Promise<import("./api/documents").DocumentUploadResponse>;
825
+ remove(agentId: string, docId: string): Promise<void>;
826
+ };
827
+ shadowTests: {
828
+ list(agentId: string): Promise<import("./api/shadow-tests").ShadowTest[]>;
829
+ get(id: string): Promise<import("./api/shadow-tests").ShadowTest>;
830
+ getByFix(fixId: string): Promise<import("./api/shadow-tests").ShadowTest[]>;
831
+ create(data: import("./api/shadow-tests").CreateShadowTestData): Promise<import("./api/shadow-tests").ShadowTest>;
832
+ update(id: string, data: import("./api/shadow-tests").UpdateShadowTestData): Promise<import("./api/shadow-tests").ShadowTest>;
833
+ };
834
+ sessions: {
835
+ list(agentId: string, opts?: import("./api/sessions").ListSessionsOptions): Promise<{
836
+ sessions: import("./api/sessions").Session[];
837
+ limit: number;
838
+ offset: number;
839
+ hasMore: boolean;
840
+ }>;
841
+ getTraces(sessionId: string, agentId: string): Promise<import("./api/sessions").SessionTrace[]>;
842
+ };
843
+ drift: {
844
+ detect(agentId: string, opts?: import("./api/drift").DetectDriftOptions): Promise<import("./api/drift").DriftReport>;
845
+ detectAll(): Promise<import("./api/drift").DetectAllResult>;
846
+ };
847
+ llmCosts: {
848
+ getSummary(opts?: import("./api/llm-costs").CostQueryOptions): Promise<import("./api/llm-costs").CostSummary>;
849
+ getBreakdown(agentId: string, opts?: import("./api/llm-costs").CostQueryOptions): Promise<import("./api/llm-costs").AgentCostBreakdown>;
850
+ getSavings(): Promise<import("./api/llm-costs").CostSavings>;
851
+ getOptimizationStats(): Promise<import("./api/llm-costs").OptimizationStats>;
852
+ };
853
+ guardrails: {
854
+ scan(request: import("./guardrails").ScanRequest): Promise<import("./guardrails").ScanResponse>;
855
+ listScanners(): Promise<Array<{
856
+ name: string;
857
+ description: string;
858
+ }>>;
859
+ };
672
860
  generateZendeskMarker: typeof generateZendeskMarker;
673
861
  parseZendeskMarker: typeof parseZendeskMarker;
674
862
  linkRunToTicket: typeof linkRunToTicket;
@@ -688,5 +876,8 @@ declare const _default: {
688
876
  isMetricReady: typeof isMetricReady;
689
877
  needsMoreTraces: typeof needsMoreTraces;
690
878
  getStatusMessage: typeof getStatusMessage;
879
+ hasDrift: typeof hasDrift;
880
+ getDriftSeverity: typeof getDriftSeverity;
881
+ formatLLMCost: typeof formatLLMCost;
691
882
  };
692
883
  export default _default;