@plust/datasleuth
Version:
Build LLM-powered research pipelines and output structured data.
65 lines (64 loc) • 2.54 kB
TypeScript
/**
* 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;
};
};
}