/**
* CoScientist Research Engine with Hypothesis Testing
*
* Advanced AI-powered research platform with automated hypothesis generation,
* experimental design, data analysis, and scientific validation.
*/
///
import { EventEmitter } from "events";
import { ResearchHypothesis, ResearchMethodology, ServiceResponse, PerformanceMetrics } from "./interfaces.js";
export interface CoScientistConfig {
ai: AIResearchConfig;
experimentation: ExperimentationConfig;
analysis: AnalysisConfig;
validation: ValidationConfig;
knowledge: KnowledgeConfig;
}
export interface AIResearchConfig {
model: string;
capabilities: ResearchCapability[];
reasoning: ReasoningConfig;
learning: LearningConfig;
}
export interface ResearchCapability {
domain: string;
confidence: number;
methods: string[];
limitations: string[];
}
export interface ReasoningConfig {
causalInference: boolean;
statisticalReasoning: boolean;
scientificMethod: boolean;
hypothesisGeneration: boolean;
}
export interface LearningConfig {
continuousLearning: boolean;
knowledgeUpdate: boolean;
experienceRetention: boolean;
crossDomainTransfer: boolean;
}
export interface ExperimentationConfig {
design: ExperimentDesignConfig;
execution: ExecutionConfig;
monitoring: MonitoringConfig;
safety: SafetyConfig;
}
export interface ExperimentDesignConfig {
powerAnalysis: boolean;
randomization: RandomizationConfig;
controls: ControlConfig;
blinding: BlindingConfig;
}
export interface RandomizationConfig {
method: "simple" | "block" | "stratified" | "cluster";
seed?: number;
constraints: string[];
}
export interface ControlConfig {
enabled: boolean;
types: string[];
matching: boolean;
}
export interface BlindingConfig {
enabled: boolean;
level: "single" | "double" | "triple";
methods: string[];
}
export interface ExecutionConfig {
automation: AutomationConfig;
dataCollection: DataCollectionConfig;
qualityControl: QualityControlConfig;
}
export interface AutomationConfig {
enabled: boolean;
platforms: string[];
protocols: string[];
safeguards: string[];
}
export interface DataCollectionConfig {
realTime: boolean;
validation: boolean;
anonymization: boolean;
standardization: boolean;
}
export interface QualityControlConfig {
checks: QualityCheck[];
thresholds: QualityThreshold[];
actions: QualityAction[];
}
export interface QualityCheck {
name: string;
type: "statistical" | "logical" | "domain_specific";
parameters: any;
frequency: string;
}
export interface QualityThreshold {
metric: string;
warning: number;
critical: number;
action: string;
}
export interface QualityAction {
trigger: string;
action: "alert" | "pause" | "abort" | "adjust";
parameters: any;
}
export interface MonitoringConfig {
realTime: boolean;
metrics: string[];
alerts: AlertConfig[];
reporting: ReportingConfig;
}
export interface AlertConfig {
condition: string;
severity: "low" | "medium" | "high" | "critical";
channels: string[];
escalation: EscalationConfig;
}
export interface EscalationConfig {
enabled: boolean;
levels: EscalationLevel[];
}
export interface EscalationLevel {
delay: number;
recipients: string[];
actions: string[];
}
export interface ReportingConfig {
frequency: string;
format: string[];
distribution: string[];
automation: boolean;
}
export interface SafetyConfig {
enabled: boolean;
protocols: SafetyProtocol[];
monitoring: SafetyMonitoring;
emergency: EmergencyConfig;
}
export interface SafetyProtocol {
domain: string;
rules: SafetyRule[];
enforcement: "strict" | "advisory";
}
export interface SafetyRule {
condition: string;
action: string;
severity: string;
}
export interface SafetyMonitoring {
continuous: boolean;
parameters: string[];
thresholds: SafetyThreshold[];
}
export interface SafetyThreshold {
parameter: string;
limit: number;
action: string;
}
export interface EmergencyConfig {
stopConditions: string[];
procedures: EmergencyProcedure[];
contacts: EmergencyContact[];
}
export interface EmergencyProcedure {
trigger: string;
steps: string[];
timeout: number;
}
export interface EmergencyContact {
role: string;
contact: string;
priority: number;
}
export interface AnalysisConfig {
statistical: StatisticalConfig;
machine_learning: MLConfig;
visualization: VisualizationConfig;
interpretation: InterpretationConfig;
}
export interface StatisticalConfig {
methods: string[];
significance: number;
power: number;
corrections: string[];
}
export interface MLConfig {
algorithms: string[];
validation: ValidationMethodConfig;
interpretation: MLInterpretationConfig;
}
export interface ValidationMethodConfig {
crossValidation: CrossValidationConfig;
holdout: HoldoutConfig;
bootstrap: BootstrapConfig;
}
export interface CrossValidationConfig {
folds: number;
stratified: boolean;
repeats: number;
}
export interface HoldoutConfig {
trainRatio: number;
validationRatio: number;
testRatio: number;
}
export interface BootstrapConfig {
samples: number;
confidence: number;
}
export interface MLInterpretationConfig {
featureImportance: boolean;
shap: boolean;
lime: boolean;
partialDependence: boolean;
}
export interface VisualizationConfig {
interactive: boolean;
formats: string[];
themes: string[];
automation: boolean;
}
export interface InterpretationConfig {
causalInference: boolean;
effectSize: boolean;
confidence: boolean;
limitations: boolean;
}
export interface ValidationConfig {
reproducibility: ReproducibilityConfig;
peerReview: PeerReviewConfig;
metaAnalysis: MetaAnalysisConfig;
}
export interface ReproducibilityConfig {
required: boolean;
standards: string[];
documentation: DocumentationConfig;
archival: ArchivalConfig;
}
export interface DocumentationConfig {
protocol: boolean;
data: boolean;
code: boolean;
environment: boolean;
}
export interface ArchivalConfig {
repositories: string[];
metadata: string[];
access: string;
}
export interface PeerReviewConfig {
enabled: boolean;
reviewers: number;
criteria: string[];
blind: boolean;
}
export interface MetaAnalysisConfig {
enabled: boolean;
databases: string[];
criteria: InclusionCriteria;
}
export interface InclusionCriteria {
studyTypes: string[];
populations: string[];
interventions: string[];
outcomes: string[];
}
export interface KnowledgeConfig {
sources: KnowledgeSource[];
integration: IntegrationConfig;
updating: UpdatingConfig;
reasoning: KnowledgeReasoningConfig;
}
export interface KnowledgeSource {
type: "database" | "literature" | "expert" | "experiment";
name: string;
reliability: number;
coverage: string[];
}
export interface IntegrationConfig {
ontologies: string[];
standards: string[];
mapping: boolean;
validation: boolean;
}
export interface UpdatingConfig {
frequency: string;
sources: string[];
validation: boolean;
versioning: boolean;
}
export interface KnowledgeReasoningConfig {
inference: boolean;
consistency: boolean;
uncertainty: boolean;
explanation: boolean;
}
export interface ResearchProject {
id: string;
title: string;
domain: string;
hypothesis: ResearchHypothesis;
methodology: ResearchMethodology;
status: "design" | "execution" | "analysis" | "validation" | "completed" | "failed";
progress: number;
startTime?: Date;
endTime?: Date;
results?: ResearchResults;
publications?: Publication[];
metadata: ProjectMetadata;
}
export interface ResearchResults {
data: ExperimentalData;
analysis: AnalysisResults;
conclusions: Conclusion[];
limitations: string[];
futureWork: string[];
}
export interface ExperimentalData {
raw: DataSet[];
processed: DataSet[];
quality: DataQuality;
metadata: DataMetadata;
}
export interface DataSet {
id: string;
name: string;
type: string;
format: string;
size: number;
path: string;
checksum: string;
}
export interface DataQuality {
completeness: number;
accuracy: number;
consistency: number;
validity: number;
issues: QualityIssue[];
}
export interface QualityIssue {
type: string;
severity: string;
description: string;
location: string;
resolution?: string;
}
export interface DataMetadata {
collection: CollectionMetadata;
processing: ProcessingMetadata;
variables: VariableMetadata[];
}
export interface CollectionMetadata {
startDate: Date;
endDate: Date;
method: string;
instruments: string[];
conditions: string[];
}
export interface ProcessingMetadata {
steps: ProcessingStep[];
software: SoftwareInfo[];
parameters: ProcessingParameters;
}
export interface ProcessingStep {
name: string;
description: string;
timestamp: Date;
parameters: any;
}
export interface SoftwareInfo {
name: string;
version: string;
configuration: any;
}
export interface ProcessingParameters {
normalization: string;
filtering: FilteringParams;
transformation: TransformationParams;
}
export interface FilteringParams {
method: string;
parameters: any;
applied: boolean;
}
export interface TransformationParams {
method: string;
parameters: any;
applied: boolean;
}
export interface VariableMetadata {
name: string;
type: string;
unit: string;
range: [number, number];
missing: number;
distribution: DistributionInfo;
}
export interface DistributionInfo {
type: string;
parameters: any;
statistics: DescriptiveStatistics;
}
export interface DescriptiveStatistics {
mean: number;
median: number;
mode: number;
standardDeviation: number;
variance: number;
skewness: number;
kurtosis: number;
}
export interface AnalysisResults {
statistical: StatisticalResults;
ml: MLResults;
causal: CausalResults;
visualization: VisualizationResults;
}
export interface StatisticalResults {
tests: StatisticalTest[];
models: StatisticalModel[];
summary: StatisticalSummary;
}
export interface StatisticalTest {
name: string;
statistic: number;
pValue: number;
confidence: ConfidenceInterval;
significant: boolean;
effectSize?: EffectSize;
}
export interface ConfidenceInterval {
level: number;
lower: number;
upper: number;
}
export interface EffectSize {
measure: string;
value: number;
interpretation: string;
}
export interface StatisticalModel {
name: string;
formula: string;
coefficients: Coefficient[];
fit: ModelFit;
diagnostics: ModelDiagnostics;
}
export interface Coefficient {
variable: string;
estimate: number;
standardError: number;
tValue: number;
pValue: number;
}
export interface ModelFit {
rSquared: number;
adjustedRSquared: number;
aic: number;
bic: number;
logLikelihood: number;
}
export interface ModelDiagnostics {
residuals: ResidualAnalysis;
assumptions: AssumptionChecks;
outliers: Outlier[];
}
export interface ResidualAnalysis {
normality: NormalityTest;
homoscedasticity: HomoscedasticityTest;
autocorrelation: AutocorrelationTest;
}
export interface NormalityTest {
test: string;
statistic: number;
pValue: number;
normal: boolean;
}
export interface HomoscedasticityTest {
test: string;
statistic: number;
pValue: number;
homoscedastic: boolean;
}
export interface AutocorrelationTest {
test: string;
statistic: number;
pValue: number;
independent: boolean;
}
export interface AssumptionChecks {
linearity: boolean;
independence: boolean;
normality: boolean;
homoscedasticity: boolean;
}
export interface Outlier {
index: number;
value: number;
leverage: number;
residual: number;
influence: number;
}
export interface StatisticalSummary {
hypothesisSupported: boolean;
confidence: number;
powerAnalysis: PowerAnalysis;
recommendations: string[];
}
export interface PowerAnalysis {
observedPower: number;
requiredSampleSize: number;
effectSize: number;
alpha: number;
}
export interface MLResults {
models: MLModel[];
performance: MLPerformance;
interpretation: MLInterpretation;
}
export interface MLModel {
name: string;
algorithm: string;
hyperparameters: any;
training: TrainingResults;
validation: ValidationResults;
}
export interface TrainingResults {
duration: number;
iterations: number;
convergence: boolean;
finalLoss: number;
}
export interface ValidationResults {
metrics: PerformanceMetric[];
confusionMatrix?: ConfusionMatrix;
roc?: ROCCurve;
}
export interface PerformanceMetric {
name: string;
value: number;
confidence?: ConfidenceInterval;
}
export interface ConfusionMatrix {
matrix: number[][];
labels: string[];
normalized: boolean;
}
export interface ROCCurve {
fpr: number[];
tpr: number[];
auc: number;
threshold: number[];
}
export interface MLPerformance {
bestModel: string;
comparison: ModelComparison[];
crossValidation: CrossValidationResults;
}
export interface ModelComparison {
model: string;
metric: string;
value: number;
rank: number;
}
export interface CrossValidationResults {
folds: number;
mean: number;
std: number;
scores: number[];
}
export interface MLInterpretation {
featureImportance: FeatureImportance[];
shap?: SHAPValues;
partialDependence?: PartialDependencePlot[];
}
export interface FeatureImportance {
feature: string;
importance: number;
rank: number;
}
export interface SHAPValues {
global: GlobalSHAP;
local: LocalSHAP[];
}
export interface GlobalSHAP {
features: string[];
values: number[];
baseline: number;
}
export interface LocalSHAP {
instance: number;
features: string[];
values: number[];
prediction: number;
}
export interface PartialDependencePlot {
feature: string;
values: number[];
dependence: number[];
ice?: ICECurve[];
}
export interface ICECurve {
instance: number;
values: number[];
curve: number[];
}
export interface CausalResults {
causalGraph: CausalGraph;
effects: CausalEffect[];
confounders: Confounder[];
}
export interface CausalGraph {
nodes: CausalNode[];
edges: CausalEdge[];
assumptions: string[];
}
export interface CausalNode {
id: string;
name: string;
type: "treatment" | "outcome" | "confounder" | "mediator" | "collider";
}
export interface CausalEdge {
source: string;
target: string;
type: "direct" | "indirect" | "bidirectional";
strength: number;
}
export interface CausalEffect {
treatment: string;
outcome: string;
effect: number;
confidence: ConfidenceInterval;
method: string;
}
export interface Confounder {
variable: string;
strength: number;
controlled: boolean;
method?: string;
}
export interface VisualizationResults {
plots: Plot[];
dashboard: Dashboard;
reports: Report[];
}
export interface Plot {
id: string;
type: string;
title: string;
data: any;
config: PlotConfig;
path?: string;
}
export interface PlotConfig {
theme: string;
interactive: boolean;
annotations: Annotation[];
styling: StylingConfig;
}
export interface Annotation {
type: string;
content: string;
position: Position;
}
export interface Position {
x: number;
y: number;
}
export interface StylingConfig {
colors: string[];
fonts: FontConfig;
layout: LayoutConfig;
}
export interface FontConfig {
family: string;
size: number;
weight: string;
}
export interface LayoutConfig {
margin: Margin;
padding: Padding;
grid: boolean;
}
export interface Margin {
top: number;
right: number;
bottom: number;
left: number;
}
export interface Padding {
top: number;
right: number;
bottom: number;
left: number;
}
export interface Dashboard {
id: string;
title: string;
widgets: Widget[];
layout: DashboardLayout;
}
export interface Widget {
id: string;
type: string;
title: string;
data: any;
position: WidgetPosition;
}
export interface WidgetPosition {
x: number;
y: number;
width: number;
height: number;
}
export interface DashboardLayout {
columns: number;
rows: number;
responsive: boolean;
}
export interface Report {
id: string;
title: string;
format: string;
sections: ReportSection[];
metadata: ReportMetadata;
}
export interface ReportSection {
title: string;
content: string;
figures: string[];
tables: string[];
}
export interface ReportMetadata {
authors: string[];
created: Date;
version: string;
keywords: string[];
}
export interface Conclusion {
statement: string;
confidence: number;
evidence: Evidence[];
implications: string[];
}
export interface Evidence {
type: "statistical" | "observational" | "experimental" | "literature";
description: string;
strength: number;
sources: string[];
}
export interface Publication {
title: string;
authors: string[];
journal?: string;
conference?: string;
year: number;
doi?: string;
status: "draft" | "submitted" | "under_review" | "accepted" | "published";
}
export interface ProjectMetadata {
created: Date;
lastModified: Date;
version: string;
tags: string[];
collaborators: Collaborator[];
funding: FundingInfo[];
}
export interface Collaborator {
name: string;
role: string;
affiliation: string;
contact: string;
}
export interface FundingInfo {
agency: string;
grantNumber: string;
amount: number;
currency: string;
}
export declare class CoScientistResearch extends EventEmitter {
private logger;
private config;
private projects;
private aiEngine;
private experimentEngine;
private analysisEngine;
private validationEngine;
private knowledgeBase;
private performanceMonitor;
constructor(config: CoScientistConfig);
/**
* Initializes the research engine
*/
initialize(): Promise;
/**
* Generates research hypotheses based on domain and initial observations
*/
generateHypotheses(domain: string, observations: string[], constraints?: any): Promise>;
/**
* Creates a new research project
*/
createProject(title: string, domain: string, hypothesis: ResearchHypothesis, methodology?: Partial): Promise>;
/**
* Executes a research project
*/
executeProject(projectId: string): Promise>;
/**
* Gets project status and results
*/
getProject(projectId: string): Promise>;
/**
* Lists all research projects
*/
listProjects(domain?: string): Promise>;
/**
* Validates research results for reproducibility and scientific rigor
*/
validateResults(projectId: string): Promise>;
/**
* Gets performance metrics
*/
getMetrics(): Promise>;
private initializeComponents;
private setupEventHandlers;
private validateHypotheses;
private isValidHypothesis;
private validateProjectDesign;
private executeProjectAsync;
private identifyLimitations;
private suggestFutureWork;
private generateProjectId;
private generateRequestId;
private createErrorResponse;
private handleHypothesisGenerated;
private handleExperimentCompleted;
private handleAnalysisCompleted;
}
//# sourceMappingURL=co-scientist-research.d.ts.map