@cogitator-ai/core 0.3.0 → 0.5.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/README.md +117 -0
- package/dist/causal/capabilities/causal-explainer.d.ts +33 -0
- package/dist/causal/capabilities/causal-explainer.d.ts.map +1 -0
- package/dist/causal/capabilities/causal-explainer.js +334 -0
- package/dist/causal/capabilities/causal-explainer.js.map +1 -0
- package/dist/causal/capabilities/causal-planner.d.ts +42 -0
- package/dist/causal/capabilities/causal-planner.d.ts.map +1 -0
- package/dist/causal/capabilities/causal-planner.js +291 -0
- package/dist/causal/capabilities/causal-planner.js.map +1 -0
- package/dist/causal/capabilities/effect-predictor.d.ts +30 -0
- package/dist/causal/capabilities/effect-predictor.d.ts.map +1 -0
- package/dist/causal/capabilities/effect-predictor.js +266 -0
- package/dist/causal/capabilities/effect-predictor.js.map +1 -0
- package/dist/causal/causal-reasoner.d.ts +63 -0
- package/dist/causal/causal-reasoner.d.ts.map +1 -0
- package/dist/causal/causal-reasoner.js +328 -0
- package/dist/causal/causal-reasoner.js.map +1 -0
- package/dist/causal/discovery/causal-extractor.d.ts +46 -0
- package/dist/causal/discovery/causal-extractor.d.ts.map +1 -0
- package/dist/causal/discovery/causal-extractor.js +154 -0
- package/dist/causal/discovery/causal-extractor.js.map +1 -0
- package/dist/causal/discovery/causal-validator.d.ts +50 -0
- package/dist/causal/discovery/causal-validator.d.ts.map +1 -0
- package/dist/causal/discovery/causal-validator.js +237 -0
- package/dist/causal/discovery/causal-validator.js.map +1 -0
- package/dist/causal/discovery/hypothesis-generator.d.ts +37 -0
- package/dist/causal/discovery/hypothesis-generator.d.ts.map +1 -0
- package/dist/causal/discovery/hypothesis-generator.js +228 -0
- package/dist/causal/discovery/hypothesis-generator.js.map +1 -0
- package/dist/causal/discovery/prompts.d.ts +99 -0
- package/dist/causal/discovery/prompts.d.ts.map +1 -0
- package/dist/causal/discovery/prompts.js +265 -0
- package/dist/causal/discovery/prompts.js.map +1 -0
- package/dist/causal/graph/causal-graph.d.ts +38 -0
- package/dist/causal/graph/causal-graph.d.ts.map +1 -0
- package/dist/causal/graph/causal-graph.js +321 -0
- package/dist/causal/graph/causal-graph.js.map +1 -0
- package/dist/causal/graph/graph-builder.d.ts +68 -0
- package/dist/causal/graph/graph-builder.d.ts.map +1 -0
- package/dist/causal/graph/graph-builder.js +128 -0
- package/dist/causal/graph/graph-builder.js.map +1 -0
- package/dist/causal/index.d.ts +28 -0
- package/dist/causal/index.d.ts.map +1 -0
- package/dist/causal/index.js +18 -0
- package/dist/causal/index.js.map +1 -0
- package/dist/causal/inference/adjustment.d.ts +5 -0
- package/dist/causal/inference/adjustment.d.ts.map +1 -0
- package/dist/causal/inference/adjustment.js +188 -0
- package/dist/causal/inference/adjustment.js.map +1 -0
- package/dist/causal/inference/counterfactual.d.ts +24 -0
- package/dist/causal/inference/counterfactual.d.ts.map +1 -0
- package/dist/causal/inference/counterfactual.js +198 -0
- package/dist/causal/inference/counterfactual.js.map +1 -0
- package/dist/causal/inference/d-separation.d.ts +4 -0
- package/dist/causal/inference/d-separation.d.ts.map +1 -0
- package/dist/causal/inference/d-separation.js +168 -0
- package/dist/causal/inference/d-separation.js.map +1 -0
- package/dist/causal/inference/inference-engine.d.ts +33 -0
- package/dist/causal/inference/inference-engine.d.ts.map +1 -0
- package/dist/causal/inference/inference-engine.js +252 -0
- package/dist/causal/inference/inference-engine.js.map +1 -0
- package/dist/causal/stores/causal-graph-store.d.ts +12 -0
- package/dist/causal/stores/causal-graph-store.d.ts.map +1 -0
- package/dist/causal/stores/causal-graph-store.js +60 -0
- package/dist/causal/stores/causal-graph-store.js.map +1 -0
- package/dist/causal/stores/causal-pattern-store.d.ts +19 -0
- package/dist/causal/stores/causal-pattern-store.d.ts.map +1 -0
- package/dist/causal/stores/causal-pattern-store.js +117 -0
- package/dist/causal/stores/causal-pattern-store.js.map +1 -0
- package/dist/causal/stores/intervention-log.d.ts +16 -0
- package/dist/causal/stores/intervention-log.d.ts.map +1 -0
- package/dist/causal/stores/intervention-log.js +113 -0
- package/dist/causal/stores/intervention-log.js.map +1 -0
- package/dist/cogitator.d.ts.map +1 -1
- package/dist/cogitator.js +10 -5
- package/dist/cogitator.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/learning/ab-testing.d.ts.map +1 -1
- package/dist/learning/ab-testing.js +6 -5
- package/dist/learning/ab-testing.js.map +1 -1
- package/dist/learning/auto-optimizer.d.ts.map +1 -1
- package/dist/learning/auto-optimizer.js +4 -2
- package/dist/learning/auto-optimizer.js.map +1 -1
- package/dist/learning/postgres-trace-store.d.ts.map +1 -1
- package/dist/learning/postgres-trace-store.js +15 -5
- package/dist/learning/postgres-trace-store.js.map +1 -1
- package/dist/learning/prompt-monitor.d.ts.map +1 -1
- package/dist/learning/prompt-monitor.js.map +1 -1
- package/dist/learning/rollback-manager.d.ts.map +1 -1
- package/dist/learning/rollback-manager.js.map +1 -1
- package/dist/llm/google.d.ts.map +1 -1
- package/dist/llm/google.js +5 -3
- package/dist/llm/google.js.map +1 -1
- package/package.json +5 -5
- package/dist/__tests__/agent.test.d.ts +0 -2
- package/dist/__tests__/agent.test.d.ts.map +0 -1
- package/dist/__tests__/agent.test.js +0 -91
- package/dist/__tests__/agent.test.js.map +0 -1
- package/dist/__tests__/base64.test.d.ts +0 -2
- package/dist/__tests__/base64.test.d.ts.map +0 -1
- package/dist/__tests__/base64.test.js +0 -62
- package/dist/__tests__/base64.test.js.map +0 -1
- package/dist/__tests__/calculator.test.d.ts +0 -2
- package/dist/__tests__/calculator.test.d.ts.map +0 -1
- package/dist/__tests__/calculator.test.js +0 -146
- package/dist/__tests__/calculator.test.js.map +0 -1
- package/dist/__tests__/cogitator-memory.test.d.ts +0 -2
- package/dist/__tests__/cogitator-memory.test.d.ts.map +0 -1
- package/dist/__tests__/cogitator-memory.test.js +0 -176
- package/dist/__tests__/cogitator-memory.test.js.map +0 -1
- package/dist/__tests__/datetime.test.d.ts +0 -2
- package/dist/__tests__/datetime.test.d.ts.map +0 -1
- package/dist/__tests__/datetime.test.js +0 -87
- package/dist/__tests__/datetime.test.js.map +0 -1
- package/dist/__tests__/exec.test.d.ts +0 -2
- package/dist/__tests__/exec.test.d.ts.map +0 -1
- package/dist/__tests__/exec.test.js +0 -59
- package/dist/__tests__/exec.test.js.map +0 -1
- package/dist/__tests__/filesystem.test.d.ts +0 -2
- package/dist/__tests__/filesystem.test.d.ts.map +0 -1
- package/dist/__tests__/filesystem.test.js +0 -148
- package/dist/__tests__/filesystem.test.js.map +0 -1
- package/dist/__tests__/google-backend.test.d.ts +0 -5
- package/dist/__tests__/google-backend.test.d.ts.map +0 -1
- package/dist/__tests__/google-backend.test.js +0 -429
- package/dist/__tests__/google-backend.test.js.map +0 -1
- package/dist/__tests__/hash.test.d.ts +0 -2
- package/dist/__tests__/hash.test.d.ts.map +0 -1
- package/dist/__tests__/hash.test.js +0 -50
- package/dist/__tests__/hash.test.js.map +0 -1
- package/dist/__tests__/http.test.d.ts +0 -2
- package/dist/__tests__/http.test.d.ts.map +0 -1
- package/dist/__tests__/http.test.js +0 -64
- package/dist/__tests__/http.test.js.map +0 -1
- package/dist/__tests__/json.test.d.ts +0 -2
- package/dist/__tests__/json.test.d.ts.map +0 -1
- package/dist/__tests__/json.test.js +0 -65
- package/dist/__tests__/json.test.js.map +0 -1
- package/dist/__tests__/logger.test.d.ts +0 -2
- package/dist/__tests__/logger.test.d.ts.map +0 -1
- package/dist/__tests__/logger.test.js +0 -186
- package/dist/__tests__/logger.test.js.map +0 -1
- package/dist/__tests__/random.test.d.ts +0 -2
- package/dist/__tests__/random.test.d.ts.map +0 -1
- package/dist/__tests__/random.test.js +0 -81
- package/dist/__tests__/random.test.js.map +0 -1
- package/dist/__tests__/regex.test.d.ts +0 -2
- package/dist/__tests__/regex.test.d.ts.map +0 -1
- package/dist/__tests__/regex.test.js +0 -75
- package/dist/__tests__/regex.test.js.map +0 -1
- package/dist/__tests__/registry.test.d.ts +0 -2
- package/dist/__tests__/registry.test.d.ts.map +0 -1
- package/dist/__tests__/registry.test.js +0 -102
- package/dist/__tests__/registry.test.js.map +0 -1
- package/dist/__tests__/sleep.test.d.ts +0 -2
- package/dist/__tests__/sleep.test.d.ts.map +0 -1
- package/dist/__tests__/sleep.test.js +0 -29
- package/dist/__tests__/sleep.test.js.map +0 -1
- package/dist/__tests__/tool.test.d.ts +0 -2
- package/dist/__tests__/tool.test.d.ts.map +0 -1
- package/dist/__tests__/tool.test.js +0 -103
- package/dist/__tests__/tool.test.js.map +0 -1
- package/dist/__tests__/uuid.test.d.ts +0 -2
- package/dist/__tests__/uuid.test.d.ts.map +0 -1
- package/dist/__tests__/uuid.test.js +0 -37
- package/dist/__tests__/uuid.test.js.map +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { CausalGraph, CausalEffectEstimate, CounterfactualQuery, CounterfactualResult, InterventionQuery, AdjustmentSet, CausalReasoningConfig } from '@cogitator-ai/types';
|
|
2
|
+
import { CounterfactualReasonerOptions } from './counterfactual';
|
|
3
|
+
export interface CausalInferenceEngineOptions {
|
|
4
|
+
config?: Partial<CausalReasoningConfig>;
|
|
5
|
+
counterfactualOptions?: CounterfactualReasonerOptions;
|
|
6
|
+
}
|
|
7
|
+
export declare class CausalInferenceEngine {
|
|
8
|
+
private graph;
|
|
9
|
+
private config;
|
|
10
|
+
private counterfactualReasoner;
|
|
11
|
+
constructor(graph: CausalGraph, options?: CausalInferenceEngineOptions);
|
|
12
|
+
isIdentifiable(treatment: string, outcome: string): {
|
|
13
|
+
identifiable: boolean;
|
|
14
|
+
reason: string;
|
|
15
|
+
adjustmentSet?: AdjustmentSet;
|
|
16
|
+
};
|
|
17
|
+
computeInterventionalEffect(query: InterventionQuery, observedData?: Record<string, number[]>): CausalEffectEstimate;
|
|
18
|
+
private estimateEffectFromData;
|
|
19
|
+
private stratifyData;
|
|
20
|
+
computeCounterfactual(query: CounterfactualQuery): CounterfactualResult;
|
|
21
|
+
estimateATE(treatment: string, outcome: string, data: Record<string, number[]>): CausalEffectEstimate;
|
|
22
|
+
estimateATT(treatment: string, outcome: string, data: Record<string, number[]>): CausalEffectEstimate;
|
|
23
|
+
checkConditionalIndependence(x: string, y: string, z: string[]): {
|
|
24
|
+
independent: boolean;
|
|
25
|
+
paths: number;
|
|
26
|
+
openPaths: number;
|
|
27
|
+
};
|
|
28
|
+
findInstrumentalVariables(treatment: string, outcome: string): string[];
|
|
29
|
+
getAllAdjustmentSets(treatment: string, outcome: string): AdjustmentSet[];
|
|
30
|
+
updateGraph(graph: CausalGraph): void;
|
|
31
|
+
getGraph(): CausalGraph;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=inference-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference-engine.d.ts","sourceRoot":"","sources":["../../../src/causal/inference/inference-engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EAA0B,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAEzF,MAAM,WAAW,4BAA4B;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxC,qBAAqB,CAAC,EAAE,6BAA6B,CAAC;CACvD;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,sBAAsB,CAAyB;gBAE3C,KAAK,EAAE,WAAW,EAAE,OAAO,GAAE,4BAAiC;IAM1E,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,aAAa,CAAA;KAAE;IA0B3E,2BAA2B,CACzB,KAAK,EAAE,iBAAiB,EACxB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GACtC,oBAAoB;IAkDvB,OAAO,CAAC,sBAAsB;IA6G9B,OAAO,CAAC,YAAY;IAwBpB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,oBAAoB;IAOvE,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC7B,oBAAoB;IAOvB,WAAW,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC7B,oBAAoB;IAkDvB,4BAA4B,CAC1B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EAAE,GACV;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAS7D,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAsBvE,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE;IAIzE,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAIrC,QAAQ,IAAI,WAAW;CAGxB"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { DEFAULT_CAUSAL_CONFIG } from '@cogitator-ai/types';
|
|
2
|
+
import { dSeparation } from './d-separation';
|
|
3
|
+
import { findBackdoorAdjustment, findFrontdoorAdjustment, findAllAdjustmentSets, } from './adjustment';
|
|
4
|
+
import { CounterfactualReasoner } from './counterfactual';
|
|
5
|
+
export class CausalInferenceEngine {
|
|
6
|
+
graph;
|
|
7
|
+
config;
|
|
8
|
+
counterfactualReasoner;
|
|
9
|
+
constructor(graph, options = {}) {
|
|
10
|
+
this.graph = graph;
|
|
11
|
+
this.config = { ...DEFAULT_CAUSAL_CONFIG, ...options.config };
|
|
12
|
+
this.counterfactualReasoner = new CounterfactualReasoner(options.counterfactualOptions);
|
|
13
|
+
}
|
|
14
|
+
isIdentifiable(treatment, outcome) {
|
|
15
|
+
const backdoor = findBackdoorAdjustment(this.graph, treatment, outcome);
|
|
16
|
+
if (backdoor) {
|
|
17
|
+
return {
|
|
18
|
+
identifiable: true,
|
|
19
|
+
reason: 'Identifiable via backdoor criterion',
|
|
20
|
+
adjustmentSet: backdoor,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const frontdoor = findFrontdoorAdjustment(this.graph, treatment, outcome);
|
|
24
|
+
if (frontdoor) {
|
|
25
|
+
return {
|
|
26
|
+
identifiable: true,
|
|
27
|
+
reason: 'Identifiable via frontdoor criterion',
|
|
28
|
+
adjustmentSet: frontdoor,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
identifiable: false,
|
|
33
|
+
reason: 'No valid adjustment set found. Effect may not be identifiable from observational data.',
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
computeInterventionalEffect(query, observedData) {
|
|
37
|
+
const treatment = Object.keys(query.interventions)[0];
|
|
38
|
+
const outcome = query.target;
|
|
39
|
+
const identifiability = this.isIdentifiable(treatment, outcome);
|
|
40
|
+
if (!identifiability.identifiable || !identifiability.adjustmentSet) {
|
|
41
|
+
return {
|
|
42
|
+
effect: NaN,
|
|
43
|
+
isIdentifiable: false,
|
|
44
|
+
adjustmentSet: {
|
|
45
|
+
variables: [],
|
|
46
|
+
type: 'backdoor',
|
|
47
|
+
formula: 'Not identifiable',
|
|
48
|
+
isMinimal: false,
|
|
49
|
+
isValid: false,
|
|
50
|
+
},
|
|
51
|
+
formula: identifiability.reason,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const adjustmentSet = identifiability.adjustmentSet;
|
|
55
|
+
if (observedData) {
|
|
56
|
+
const effect = this.estimateEffectFromData(treatment, outcome, adjustmentSet.variables, observedData, query.interventions[treatment]);
|
|
57
|
+
return {
|
|
58
|
+
effect: effect.estimate,
|
|
59
|
+
standardError: effect.standardError,
|
|
60
|
+
confidenceInterval: effect.confidenceInterval,
|
|
61
|
+
adjustmentSet,
|
|
62
|
+
isIdentifiable: true,
|
|
63
|
+
formula: adjustmentSet.formula,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
effect: NaN,
|
|
68
|
+
adjustmentSet,
|
|
69
|
+
isIdentifiable: true,
|
|
70
|
+
formula: adjustmentSet.formula,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
estimateEffectFromData(treatment, outcome, adjustmentVars, data, interventionValue) {
|
|
74
|
+
const treatmentValues = data[treatment];
|
|
75
|
+
const outcomeValues = data[outcome];
|
|
76
|
+
if (!treatmentValues || !outcomeValues) {
|
|
77
|
+
return { estimate: NaN, standardError: NaN, confidenceInterval: [NaN, NaN] };
|
|
78
|
+
}
|
|
79
|
+
const n = Math.min(treatmentValues.length, outcomeValues.length);
|
|
80
|
+
if (n === 0) {
|
|
81
|
+
return { estimate: NaN, standardError: NaN, confidenceInterval: [NaN, NaN] };
|
|
82
|
+
}
|
|
83
|
+
const targetTreatment = typeof interventionValue === 'number' ? interventionValue : interventionValue ? 1 : 0;
|
|
84
|
+
if (adjustmentVars.length === 0) {
|
|
85
|
+
const treatedIndices = [];
|
|
86
|
+
const controlIndices = [];
|
|
87
|
+
for (let i = 0; i < n; i++) {
|
|
88
|
+
if (Math.abs(treatmentValues[i] - targetTreatment) < 0.5) {
|
|
89
|
+
treatedIndices.push(i);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
controlIndices.push(i);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
const treatedOutcome = treatedIndices.length > 0
|
|
96
|
+
? treatedIndices.reduce((sum, i) => sum + outcomeValues[i], 0) / treatedIndices.length
|
|
97
|
+
: NaN;
|
|
98
|
+
const controlOutcome = controlIndices.length > 0
|
|
99
|
+
? controlIndices.reduce((sum, i) => sum + outcomeValues[i], 0) / controlIndices.length
|
|
100
|
+
: NaN;
|
|
101
|
+
const effect = treatedOutcome - controlOutcome;
|
|
102
|
+
const treatedVar = treatedIndices.length > 1
|
|
103
|
+
? treatedIndices.reduce((sum, i) => sum + Math.pow(outcomeValues[i] - treatedOutcome, 2), 0) /
|
|
104
|
+
(treatedIndices.length - 1)
|
|
105
|
+
: 0;
|
|
106
|
+
const controlVar = controlIndices.length > 1
|
|
107
|
+
? controlIndices.reduce((sum, i) => sum + Math.pow(outcomeValues[i] - controlOutcome, 2), 0) /
|
|
108
|
+
(controlIndices.length - 1)
|
|
109
|
+
: 0;
|
|
110
|
+
const se = Math.sqrt(treatedVar / treatedIndices.length + controlVar / controlIndices.length);
|
|
111
|
+
return {
|
|
112
|
+
estimate: effect,
|
|
113
|
+
standardError: se,
|
|
114
|
+
confidenceInterval: [effect - 1.96 * se, effect + 1.96 * se],
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
let weightedEffect = 0;
|
|
118
|
+
let totalWeight = 0;
|
|
119
|
+
const strata = this.stratifyData(data, adjustmentVars, n);
|
|
120
|
+
for (const stratum of strata) {
|
|
121
|
+
const stratumTreated = [];
|
|
122
|
+
const stratumControl = [];
|
|
123
|
+
for (const i of stratum.indices) {
|
|
124
|
+
if (Math.abs(treatmentValues[i] - targetTreatment) < 0.5) {
|
|
125
|
+
stratumTreated.push(outcomeValues[i]);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
stratumControl.push(outcomeValues[i]);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (stratumTreated.length > 0 && stratumControl.length > 0) {
|
|
132
|
+
const treatedMean = stratumTreated.reduce((a, b) => a + b, 0) / stratumTreated.length;
|
|
133
|
+
const controlMean = stratumControl.reduce((a, b) => a + b, 0) / stratumControl.length;
|
|
134
|
+
const stratumEffect = treatedMean - controlMean;
|
|
135
|
+
const weight = stratum.indices.length / n;
|
|
136
|
+
weightedEffect += stratumEffect * weight;
|
|
137
|
+
totalWeight += weight;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const effect = totalWeight > 0 ? weightedEffect / totalWeight : NaN;
|
|
141
|
+
return {
|
|
142
|
+
estimate: effect,
|
|
143
|
+
standardError: NaN,
|
|
144
|
+
confidenceInterval: [NaN, NaN],
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
stratifyData(data, adjustmentVars, n) {
|
|
148
|
+
const strataMap = new Map();
|
|
149
|
+
for (let i = 0; i < n; i++) {
|
|
150
|
+
const key = adjustmentVars
|
|
151
|
+
.map((v) => {
|
|
152
|
+
const val = data[v]?.[i];
|
|
153
|
+
return val !== undefined ? Math.round(val).toString() : 'NA';
|
|
154
|
+
})
|
|
155
|
+
.join('|');
|
|
156
|
+
if (!strataMap.has(key)) {
|
|
157
|
+
strataMap.set(key, []);
|
|
158
|
+
}
|
|
159
|
+
strataMap.get(key).push(i);
|
|
160
|
+
}
|
|
161
|
+
return Array.from(strataMap.entries()).map(([key, indices]) => ({ key, indices }));
|
|
162
|
+
}
|
|
163
|
+
computeCounterfactual(query) {
|
|
164
|
+
if (!this.config.enableCounterfactual) {
|
|
165
|
+
throw new Error('Counterfactual reasoning is disabled in config');
|
|
166
|
+
}
|
|
167
|
+
return this.counterfactualReasoner.evaluate(this.graph, query);
|
|
168
|
+
}
|
|
169
|
+
estimateATE(treatment, outcome, data) {
|
|
170
|
+
return this.computeInterventionalEffect({ target: outcome, interventions: { [treatment]: 1 } }, data);
|
|
171
|
+
}
|
|
172
|
+
estimateATT(treatment, outcome, data) {
|
|
173
|
+
const treatmentValues = data[treatment];
|
|
174
|
+
const outcomeValues = data[outcome];
|
|
175
|
+
if (!treatmentValues || !outcomeValues) {
|
|
176
|
+
return {
|
|
177
|
+
effect: NaN,
|
|
178
|
+
isIdentifiable: false,
|
|
179
|
+
adjustmentSet: {
|
|
180
|
+
variables: [],
|
|
181
|
+
type: 'backdoor',
|
|
182
|
+
formula: 'No data available',
|
|
183
|
+
isMinimal: false,
|
|
184
|
+
isValid: false,
|
|
185
|
+
},
|
|
186
|
+
formula: 'No data available',
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
const identifiability = this.isIdentifiable(treatment, outcome);
|
|
190
|
+
if (!identifiability.identifiable) {
|
|
191
|
+
return {
|
|
192
|
+
effect: NaN,
|
|
193
|
+
isIdentifiable: false,
|
|
194
|
+
adjustmentSet: identifiability.adjustmentSet || {
|
|
195
|
+
variables: [],
|
|
196
|
+
type: 'backdoor',
|
|
197
|
+
formula: 'Not identifiable',
|
|
198
|
+
isMinimal: false,
|
|
199
|
+
isValid: false,
|
|
200
|
+
},
|
|
201
|
+
formula: identifiability.reason,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
const ateResult = this.estimateATE(treatment, outcome, data);
|
|
205
|
+
const att = ateResult.effect;
|
|
206
|
+
return {
|
|
207
|
+
effect: att,
|
|
208
|
+
standardError: ateResult.standardError,
|
|
209
|
+
confidenceInterval: ateResult.confidenceInterval,
|
|
210
|
+
adjustmentSet: identifiability.adjustmentSet,
|
|
211
|
+
isIdentifiable: true,
|
|
212
|
+
formula: `ATT = E[Y(1) - Y(0) | T=1] estimated via ${identifiability.adjustmentSet.type} adjustment`,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
checkConditionalIndependence(x, y, z) {
|
|
216
|
+
const result = dSeparation(this.graph, x, y, z);
|
|
217
|
+
return {
|
|
218
|
+
independent: result.separated,
|
|
219
|
+
paths: result.paths.length,
|
|
220
|
+
openPaths: result.openPaths.length,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
findInstrumentalVariables(treatment, outcome) {
|
|
224
|
+
const instruments = [];
|
|
225
|
+
const allNodes = this.graph.getNodes();
|
|
226
|
+
for (const node of allNodes) {
|
|
227
|
+
if (node.id === treatment || node.id === outcome)
|
|
228
|
+
continue;
|
|
229
|
+
const hasPathToTreatment = this.graph.findPaths(node.id, treatment).length > 0;
|
|
230
|
+
if (!hasPathToTreatment)
|
|
231
|
+
continue;
|
|
232
|
+
const directPathToOutcome = this.graph.getEdgeBetween(node.id, outcome);
|
|
233
|
+
if (directPathToOutcome)
|
|
234
|
+
continue;
|
|
235
|
+
const independenceResult = dSeparation(this.graph, node.id, outcome, [treatment]);
|
|
236
|
+
if (independenceResult.separated) {
|
|
237
|
+
instruments.push(node.id);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return instruments;
|
|
241
|
+
}
|
|
242
|
+
getAllAdjustmentSets(treatment, outcome) {
|
|
243
|
+
return findAllAdjustmentSets(this.graph, treatment, outcome);
|
|
244
|
+
}
|
|
245
|
+
updateGraph(graph) {
|
|
246
|
+
this.graph = graph;
|
|
247
|
+
}
|
|
248
|
+
getGraph() {
|
|
249
|
+
return this.graph;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=inference-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inference-engine.js","sourceRoot":"","sources":["../../../src/causal/inference/inference-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CausalGraphData, CausalGraphStore } from '@cogitator-ai/types';
|
|
2
|
+
export declare class InMemoryCausalGraphStore implements CausalGraphStore {
|
|
3
|
+
private graphs;
|
|
4
|
+
private agentIndex;
|
|
5
|
+
save(graph: CausalGraphData): Promise<void>;
|
|
6
|
+
load(graphId: string): Promise<CausalGraphData | null>;
|
|
7
|
+
loadForAgent(agentId: string): Promise<CausalGraphData | null>;
|
|
8
|
+
delete(graphId: string): Promise<void>;
|
|
9
|
+
list(agentId?: string): Promise<CausalGraphData[]>;
|
|
10
|
+
clear(): void;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=causal-graph-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"causal-graph-store.d.ts","sourceRoot":"","sources":["../../../src/causal/stores/causal-graph-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,UAAU,CAA+B;IAE3C,IAAI,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3C,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAKtD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAQ9D,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBtC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAcxD,KAAK,IAAI,IAAI;CAId"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export class InMemoryCausalGraphStore {
|
|
2
|
+
graphs = new Map();
|
|
3
|
+
agentIndex = new Map();
|
|
4
|
+
async save(graph) {
|
|
5
|
+
this.graphs.set(graph.id, { ...graph });
|
|
6
|
+
const agentId = graph.metadata?.agentId;
|
|
7
|
+
if (agentId) {
|
|
8
|
+
const agentGraphs = this.agentIndex.get(agentId) || [];
|
|
9
|
+
if (!agentGraphs.includes(graph.id)) {
|
|
10
|
+
agentGraphs.push(graph.id);
|
|
11
|
+
this.agentIndex.set(agentId, agentGraphs);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
async load(graphId) {
|
|
16
|
+
const graph = this.graphs.get(graphId);
|
|
17
|
+
return graph ? { ...graph } : null;
|
|
18
|
+
}
|
|
19
|
+
async loadForAgent(agentId) {
|
|
20
|
+
const graphIds = this.agentIndex.get(agentId);
|
|
21
|
+
if (!graphIds || graphIds.length === 0)
|
|
22
|
+
return null;
|
|
23
|
+
const latestId = graphIds[graphIds.length - 1];
|
|
24
|
+
return this.load(latestId);
|
|
25
|
+
}
|
|
26
|
+
async delete(graphId) {
|
|
27
|
+
const graph = this.graphs.get(graphId);
|
|
28
|
+
if (graph) {
|
|
29
|
+
const agentId = graph.metadata?.agentId;
|
|
30
|
+
if (agentId) {
|
|
31
|
+
const agentGraphs = this.agentIndex.get(agentId);
|
|
32
|
+
if (agentGraphs) {
|
|
33
|
+
const idx = agentGraphs.indexOf(graphId);
|
|
34
|
+
if (idx >= 0) {
|
|
35
|
+
agentGraphs.splice(idx, 1);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
this.graphs.delete(graphId);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async list(agentId) {
|
|
43
|
+
if (agentId) {
|
|
44
|
+
const graphIds = this.agentIndex.get(agentId) || [];
|
|
45
|
+
const graphs = [];
|
|
46
|
+
for (const id of graphIds) {
|
|
47
|
+
const graph = await this.load(id);
|
|
48
|
+
if (graph)
|
|
49
|
+
graphs.push(graph);
|
|
50
|
+
}
|
|
51
|
+
return graphs;
|
|
52
|
+
}
|
|
53
|
+
return Array.from(this.graphs.values()).map((g) => ({ ...g }));
|
|
54
|
+
}
|
|
55
|
+
clear() {
|
|
56
|
+
this.graphs.clear();
|
|
57
|
+
this.agentIndex.clear();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=causal-graph-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"causal-graph-store.js","sourceRoot":"","sources":["../../../src/causal/stores/causal-graph-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CausalPattern, CausalPatternStore } from '@cogitator-ai/types';
|
|
2
|
+
export declare class InMemoryCausalPatternStore implements CausalPatternStore {
|
|
3
|
+
private patterns;
|
|
4
|
+
private agentIndex;
|
|
5
|
+
save(pattern: CausalPattern): Promise<void>;
|
|
6
|
+
findRelevant(agentId: string, context: {
|
|
7
|
+
trigger?: string;
|
|
8
|
+
effect?: string;
|
|
9
|
+
}, limit: number): Promise<CausalPattern[]>;
|
|
10
|
+
markUsed(patternId: string): Promise<void>;
|
|
11
|
+
prune(agentId: string, maxAge: number, maxCount: number): Promise<number>;
|
|
12
|
+
getStats(agentId: string): Promise<{
|
|
13
|
+
totalPatterns: number;
|
|
14
|
+
avgSuccessRate: number;
|
|
15
|
+
topPatterns: CausalPattern[];
|
|
16
|
+
}>;
|
|
17
|
+
clear(agentId?: string): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=causal-pattern-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"causal-pattern-store.d.ts","sourceRoot":"","sources":["../../../src/causal/stores/causal-pattern-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,qBAAa,0BAA2B,YAAW,kBAAkB;IACnE,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,UAAU,CAAkC;IAE9C,IAAI,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3C,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAC9C,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC;IA8BrB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ1C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuCzE,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QACvC,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,aAAa,EAAE,CAAC;KAC9B,CAAC;IA8BF,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAc9B"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
export class InMemoryCausalPatternStore {
|
|
2
|
+
patterns = new Map();
|
|
3
|
+
agentIndex = new Map();
|
|
4
|
+
async save(pattern) {
|
|
5
|
+
this.patterns.set(pattern.id, { ...pattern });
|
|
6
|
+
if (!this.agentIndex.has(pattern.agentId)) {
|
|
7
|
+
this.agentIndex.set(pattern.agentId, new Set());
|
|
8
|
+
}
|
|
9
|
+
this.agentIndex.get(pattern.agentId).add(pattern.id);
|
|
10
|
+
}
|
|
11
|
+
async findRelevant(agentId, context, limit) {
|
|
12
|
+
const patternIds = this.agentIndex.get(agentId);
|
|
13
|
+
if (!patternIds)
|
|
14
|
+
return [];
|
|
15
|
+
const patterns = [];
|
|
16
|
+
for (const id of patternIds) {
|
|
17
|
+
const pattern = this.patterns.get(id);
|
|
18
|
+
if (!pattern)
|
|
19
|
+
continue;
|
|
20
|
+
const triggerMatch = !context.trigger ||
|
|
21
|
+
pattern.pattern.trigger.toLowerCase().includes(context.trigger.toLowerCase());
|
|
22
|
+
const effectMatch = !context.effect ||
|
|
23
|
+
pattern.pattern.effect.toLowerCase().includes(context.effect.toLowerCase());
|
|
24
|
+
if (triggerMatch || effectMatch) {
|
|
25
|
+
patterns.push({ ...pattern });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
patterns.sort((a, b) => {
|
|
29
|
+
const scoreA = a.occurrences * a.successRate * a.avgStrength;
|
|
30
|
+
const scoreB = b.occurrences * b.successRate * b.avgStrength;
|
|
31
|
+
return scoreB - scoreA;
|
|
32
|
+
});
|
|
33
|
+
return patterns.slice(0, limit);
|
|
34
|
+
}
|
|
35
|
+
async markUsed(patternId) {
|
|
36
|
+
const pattern = this.patterns.get(patternId);
|
|
37
|
+
if (pattern) {
|
|
38
|
+
pattern.lastSeen = Date.now();
|
|
39
|
+
pattern.occurrences++;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async prune(agentId, maxAge, maxCount) {
|
|
43
|
+
const patternIds = this.agentIndex.get(agentId);
|
|
44
|
+
if (!patternIds)
|
|
45
|
+
return 0;
|
|
46
|
+
const now = Date.now();
|
|
47
|
+
const toRemove = [];
|
|
48
|
+
const agentPatterns = [];
|
|
49
|
+
for (const id of patternIds) {
|
|
50
|
+
const pattern = this.patterns.get(id);
|
|
51
|
+
if (pattern) {
|
|
52
|
+
if (now - pattern.lastSeen > maxAge) {
|
|
53
|
+
toRemove.push(id);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
agentPatterns.push(pattern);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (agentPatterns.length > maxCount) {
|
|
61
|
+
agentPatterns.sort((a, b) => {
|
|
62
|
+
const scoreA = a.occurrences * a.successRate;
|
|
63
|
+
const scoreB = b.occurrences * b.successRate;
|
|
64
|
+
return scoreB - scoreA;
|
|
65
|
+
});
|
|
66
|
+
for (let i = maxCount; i < agentPatterns.length; i++) {
|
|
67
|
+
toRemove.push(agentPatterns[i].id);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
for (const id of toRemove) {
|
|
71
|
+
this.patterns.delete(id);
|
|
72
|
+
patternIds.delete(id);
|
|
73
|
+
}
|
|
74
|
+
return toRemove.length;
|
|
75
|
+
}
|
|
76
|
+
async getStats(agentId) {
|
|
77
|
+
const patternIds = this.agentIndex.get(agentId);
|
|
78
|
+
if (!patternIds || patternIds.size === 0) {
|
|
79
|
+
return { totalPatterns: 0, avgSuccessRate: 0, topPatterns: [] };
|
|
80
|
+
}
|
|
81
|
+
const patterns = [];
|
|
82
|
+
let totalSuccessRate = 0;
|
|
83
|
+
for (const id of patternIds) {
|
|
84
|
+
const pattern = this.patterns.get(id);
|
|
85
|
+
if (pattern) {
|
|
86
|
+
patterns.push({ ...pattern });
|
|
87
|
+
totalSuccessRate += pattern.successRate;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
patterns.sort((a, b) => {
|
|
91
|
+
const scoreA = a.occurrences * a.successRate * a.avgStrength;
|
|
92
|
+
const scoreB = b.occurrences * b.successRate * b.avgStrength;
|
|
93
|
+
return scoreB - scoreA;
|
|
94
|
+
});
|
|
95
|
+
return {
|
|
96
|
+
totalPatterns: patterns.length,
|
|
97
|
+
avgSuccessRate: patterns.length > 0 ? totalSuccessRate / patterns.length : 0,
|
|
98
|
+
topPatterns: patterns.slice(0, 5),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
clear(agentId) {
|
|
102
|
+
if (agentId) {
|
|
103
|
+
const patternIds = this.agentIndex.get(agentId);
|
|
104
|
+
if (patternIds) {
|
|
105
|
+
for (const id of patternIds) {
|
|
106
|
+
this.patterns.delete(id);
|
|
107
|
+
}
|
|
108
|
+
this.agentIndex.delete(agentId);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
this.patterns.clear();
|
|
113
|
+
this.agentIndex.clear();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=causal-pattern-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"causal-pattern-store.js","sourceRoot":"","sources":["../../../src/causal/stores/causal-pattern-store.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,0BAA0B;IAC7B,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC5C,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEpD,KAAK,CAAC,IAAI,CAAC,OAAsB;QAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAE9C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAE,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,OAAe,EACf,OAA8C,EAC9C,KAAa;QAEb,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU;YAAE,OAAO,EAAE,CAAC;QAE3B,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO;gBAAE,SAAS;YAEvB,MAAM,YAAY,GAChB,CAAC,OAAO,CAAC,OAAO;gBAChB,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAChF,MAAM,WAAW,GACf,CAAC,OAAO,CAAC,MAAM;gBACf,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAE9E,IAAI,YAAY,IAAI,WAAW,EAAE,CAAC;gBAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;YAC7D,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;YAC7D,OAAO,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9B,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,MAAc,EAAE,QAAgB;QAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU;YAAE,OAAO,CAAC,CAAC;QAE1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,aAAa,GAAoB,EAAE,CAAC;QAC1C,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,GAAG,MAAM,EAAE,CAAC;oBACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YACpC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;gBAC7C,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;gBAC7C,OAAO,MAAM,GAAG,MAAM,CAAC;YACzB,CAAC,CAAC,CAAC;YAEH,KAAK,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzB,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAe;QAK5B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAClE,CAAC;QAED,MAAM,QAAQ,GAAoB,EAAE,CAAC;QACrC,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;gBAC9B,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;YAC7D,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;YAC7D,OAAO,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,aAAa,EAAE,QAAQ,CAAC,MAAM;YAC9B,cAAc,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC5E,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SAClC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAgB;QACpB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;oBAC5B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC3B,CAAC;gBACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { InterventionRecord, InterventionLog } from '@cogitator-ai/types';
|
|
2
|
+
export declare class InMemoryInterventionLog implements InterventionLog {
|
|
3
|
+
private records;
|
|
4
|
+
private agentIndex;
|
|
5
|
+
log(record: InterventionRecord): Promise<void>;
|
|
6
|
+
getHistory(agentId: string, limit: number): Promise<InterventionRecord[]>;
|
|
7
|
+
findSimilar(agentId: string, intervention: Record<string, unknown>): Promise<InterventionRecord[]>;
|
|
8
|
+
getStats(agentId: string): Promise<{
|
|
9
|
+
totalInterventions: number;
|
|
10
|
+
successRate: number;
|
|
11
|
+
avgEffectAccuracy: number;
|
|
12
|
+
}>;
|
|
13
|
+
private calculateEffectAccuracy;
|
|
14
|
+
clear(agentId?: string): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=intervention-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intervention-log.d.ts","sourceRoot":"","sources":["../../../src/causal/stores/intervention-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE/E,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,UAAU,CAA+B;IAE3C,GAAG,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS9C,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAiBzE,WAAW,CACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAwB1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QACvC,kBAAkB,EAAE,MAAM,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IA8BF,OAAO,CAAC,uBAAuB;IA8B/B,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAc9B"}
|