UNPKG

@plust/datasleuth

Version:

Build LLM-powered research pipelines and output structured data.

65 lines (64 loc) 2.54 kB
/** * Utilities for merging and resolving conflicts between research tracks */ import { TrackResult } from '../steps/track.js'; import { ResearchState } from '../types/pipeline.js'; /** * Options for conflict resolution */ export interface ConflictResolutionOptions { /** Strategy to use when resolving conflicts */ strategy: 'first' | 'last' | 'mostConfident' | 'majority' | 'weighted' | 'custom'; /** Weights to apply to different tracks (for weighted strategy) */ weights?: Record<string, number>; /** Custom resolution function (for custom strategy) */ customResolver?: (values: any[], metadata: any[]) => any; /** Function to extract confidence scores (for mostConfident strategy) */ confidenceExtractor?: (trackResult: TrackResult) => number; } /** * Result merger utility to combine results from multiple research tracks */ export declare class ResultMerger { /** * Merges research data from multiple tracks * * @param tracks Track results to merge * @param options Conflict resolution options * @returns Merged data object */ static mergeTrackData(tracks: Record<string, TrackResult>, options?: ConflictResolutionOptions): Record<string, any>; /** * Merges results from multiple tracks into a cohesive output * * @param tracks Track results to merge * @param state Current research state * @param options Conflict resolution options * @returns Merged results object */ static mergeTrackResults(tracks: Record<string, TrackResult>, state: ResearchState, options?: ConflictResolutionOptions): any; /** * Resolves conflicts between multiple values using the specified strategy * * @param values Array of values to resolve * @param metadata Metadata for each value * @param options Conflict resolution options * @returns Resolved value */ private static resolveConflict; /** * Creates a merge function for use with parallel research * * @param options Conflict resolution options * @returns A merge function that can be used with the parallel step */ static createMergeFunction(options?: ConflictResolutionOptions): (tracks: Record<string, TrackResult>, state: ResearchState) => { data: Record<string, any>; results: any; metadata: { mergeStrategy: "custom" | "first" | "last" | "mostConfident" | "majority" | "weighted"; tracksCount: number; mergedAt: string; }; }; }