@cogitator-ai/core 0.3.0 → 0.4.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.
Files changed (91) hide show
  1. package/README.md +117 -0
  2. package/dist/causal/capabilities/causal-explainer.d.ts +33 -0
  3. package/dist/causal/capabilities/causal-explainer.d.ts.map +1 -0
  4. package/dist/causal/capabilities/causal-explainer.js +327 -0
  5. package/dist/causal/capabilities/causal-explainer.js.map +1 -0
  6. package/dist/causal/capabilities/causal-planner.d.ts +42 -0
  7. package/dist/causal/capabilities/causal-planner.d.ts.map +1 -0
  8. package/dist/causal/capabilities/causal-planner.js +289 -0
  9. package/dist/causal/capabilities/causal-planner.js.map +1 -0
  10. package/dist/causal/capabilities/effect-predictor.d.ts +30 -0
  11. package/dist/causal/capabilities/effect-predictor.d.ts.map +1 -0
  12. package/dist/causal/capabilities/effect-predictor.js +270 -0
  13. package/dist/causal/capabilities/effect-predictor.js.map +1 -0
  14. package/dist/causal/causal-reasoner.d.ts +63 -0
  15. package/dist/causal/causal-reasoner.d.ts.map +1 -0
  16. package/dist/causal/causal-reasoner.js +325 -0
  17. package/dist/causal/causal-reasoner.js.map +1 -0
  18. package/dist/causal/discovery/causal-extractor.d.ts +46 -0
  19. package/dist/causal/discovery/causal-extractor.d.ts.map +1 -0
  20. package/dist/causal/discovery/causal-extractor.js +154 -0
  21. package/dist/causal/discovery/causal-extractor.js.map +1 -0
  22. package/dist/causal/discovery/causal-validator.d.ts +50 -0
  23. package/dist/causal/discovery/causal-validator.d.ts.map +1 -0
  24. package/dist/causal/discovery/causal-validator.js +235 -0
  25. package/dist/causal/discovery/causal-validator.js.map +1 -0
  26. package/dist/causal/discovery/hypothesis-generator.d.ts +37 -0
  27. package/dist/causal/discovery/hypothesis-generator.d.ts.map +1 -0
  28. package/dist/causal/discovery/hypothesis-generator.js +225 -0
  29. package/dist/causal/discovery/hypothesis-generator.js.map +1 -0
  30. package/dist/causal/discovery/prompts.d.ts +99 -0
  31. package/dist/causal/discovery/prompts.d.ts.map +1 -0
  32. package/dist/causal/discovery/prompts.js +263 -0
  33. package/dist/causal/discovery/prompts.js.map +1 -0
  34. package/dist/causal/graph/causal-graph.d.ts +38 -0
  35. package/dist/causal/graph/causal-graph.d.ts.map +1 -0
  36. package/dist/causal/graph/causal-graph.js +321 -0
  37. package/dist/causal/graph/causal-graph.js.map +1 -0
  38. package/dist/causal/graph/graph-builder.d.ts +68 -0
  39. package/dist/causal/graph/graph-builder.d.ts.map +1 -0
  40. package/dist/causal/graph/graph-builder.js +128 -0
  41. package/dist/causal/graph/graph-builder.js.map +1 -0
  42. package/dist/causal/index.d.ts +28 -0
  43. package/dist/causal/index.d.ts.map +1 -0
  44. package/dist/causal/index.js +18 -0
  45. package/dist/causal/index.js.map +1 -0
  46. package/dist/causal/inference/adjustment.d.ts +5 -0
  47. package/dist/causal/inference/adjustment.d.ts.map +1 -0
  48. package/dist/causal/inference/adjustment.js +189 -0
  49. package/dist/causal/inference/adjustment.js.map +1 -0
  50. package/dist/causal/inference/counterfactual.d.ts +24 -0
  51. package/dist/causal/inference/counterfactual.d.ts.map +1 -0
  52. package/dist/causal/inference/counterfactual.js +199 -0
  53. package/dist/causal/inference/counterfactual.js.map +1 -0
  54. package/dist/causal/inference/d-separation.d.ts +4 -0
  55. package/dist/causal/inference/d-separation.d.ts.map +1 -0
  56. package/dist/causal/inference/d-separation.js +168 -0
  57. package/dist/causal/inference/d-separation.js.map +1 -0
  58. package/dist/causal/inference/inference-engine.d.ts +33 -0
  59. package/dist/causal/inference/inference-engine.d.ts.map +1 -0
  60. package/dist/causal/inference/inference-engine.js +254 -0
  61. package/dist/causal/inference/inference-engine.js.map +1 -0
  62. package/dist/causal/stores/causal-graph-store.d.ts +12 -0
  63. package/dist/causal/stores/causal-graph-store.d.ts.map +1 -0
  64. package/dist/causal/stores/causal-graph-store.js +60 -0
  65. package/dist/causal/stores/causal-graph-store.js.map +1 -0
  66. package/dist/causal/stores/causal-pattern-store.d.ts +19 -0
  67. package/dist/causal/stores/causal-pattern-store.d.ts.map +1 -0
  68. package/dist/causal/stores/causal-pattern-store.js +117 -0
  69. package/dist/causal/stores/causal-pattern-store.js.map +1 -0
  70. package/dist/causal/stores/intervention-log.d.ts +16 -0
  71. package/dist/causal/stores/intervention-log.d.ts.map +1 -0
  72. package/dist/causal/stores/intervention-log.js +113 -0
  73. package/dist/causal/stores/intervention-log.js.map +1 -0
  74. package/dist/index.d.ts +4 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +2 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/learning/ab-testing.d.ts.map +1 -1
  79. package/dist/learning/ab-testing.js +6 -5
  80. package/dist/learning/ab-testing.js.map +1 -1
  81. package/dist/learning/auto-optimizer.d.ts.map +1 -1
  82. package/dist/learning/auto-optimizer.js +4 -2
  83. package/dist/learning/auto-optimizer.js.map +1 -1
  84. package/dist/learning/postgres-trace-store.d.ts.map +1 -1
  85. package/dist/learning/postgres-trace-store.js +15 -5
  86. package/dist/learning/postgres-trace-store.js.map +1 -1
  87. package/dist/learning/prompt-monitor.d.ts.map +1 -1
  88. package/dist/learning/prompt-monitor.js.map +1 -1
  89. package/dist/learning/rollback-manager.d.ts.map +1 -1
  90. package/dist/learning/rollback-manager.js.map +1 -1
  91. package/package.json +5 -5
@@ -0,0 +1,289 @@
1
+ import { CausalEffectPredictor } from './effect-predictor';
2
+ export class CausalPlanner {
3
+ llm;
4
+ model;
5
+ effectPredictor;
6
+ maxPlanSteps;
7
+ maxAlternatives;
8
+ robustnessThreshold;
9
+ constructor(options) {
10
+ this.llm = options.llmBackend;
11
+ this.model = options.model ?? 'gpt-4';
12
+ this.effectPredictor = new CausalEffectPredictor({ llmBackend: options.llmBackend });
13
+ this.maxPlanSteps = options.maxPlanSteps ?? 10;
14
+ this.maxAlternatives = options.maxAlternatives ?? 2;
15
+ this.robustnessThreshold = options.robustnessThreshold ?? 0.6;
16
+ }
17
+ async planForGoal(goal, goalValue, graph, context, constraints) {
18
+ const interventions = this.findInterventions(goal, goalValue, graph, context);
19
+ const filteredInterventions = this.applyConstraints(interventions, constraints);
20
+ const steps = await this.buildPlanSteps(filteredInterventions, graph, context);
21
+ const robustness = await this.analyzeRobustness(steps, graph, context);
22
+ const expectedOutcome = this.calculateExpectedOutcome(steps);
23
+ const reasoning = await this.generatePlanReasoning(goal, goalValue, steps, context);
24
+ return {
25
+ goal,
26
+ goalValue,
27
+ steps,
28
+ expectedOutcome,
29
+ robustness,
30
+ estimatedCost: this.estimateCost(steps),
31
+ reasoning,
32
+ };
33
+ }
34
+ findInterventions(target, targetValue, graph, _context) {
35
+ const interventions = [];
36
+ const parents = graph.getParents(target);
37
+ for (const parent of parents) {
38
+ const edge = graph.getEdgeBetween(parent.id, target);
39
+ if (!edge)
40
+ continue;
41
+ let interventionValue;
42
+ if (edge.relationType === 'causes' || edge.relationType === 'enables') {
43
+ interventionValue = typeof targetValue === 'boolean' ? targetValue : 1;
44
+ }
45
+ else if (edge.relationType === 'prevents') {
46
+ interventionValue = typeof targetValue === 'boolean' ? !targetValue : 0;
47
+ }
48
+ else {
49
+ interventionValue = 1;
50
+ }
51
+ interventions.push({
52
+ variable: parent.id,
53
+ value: interventionValue,
54
+ effectiveness: edge.strength * edge.confidence,
55
+ });
56
+ }
57
+ const ancestors = graph.getAncestors(target);
58
+ for (const ancestor of ancestors) {
59
+ if (parents.some((p) => p.id === ancestor.id))
60
+ continue;
61
+ const paths = graph.findPaths(ancestor.id, target);
62
+ if (paths.length === 0)
63
+ continue;
64
+ const bestPath = paths.reduce((a, b) => a.totalStrength > b.totalStrength ? a : b);
65
+ if (bestPath.totalStrength > 0.3) {
66
+ interventions.push({
67
+ variable: ancestor.id,
68
+ value: 1,
69
+ effectiveness: bestPath.totalStrength * 0.8,
70
+ });
71
+ }
72
+ }
73
+ interventions.sort((a, b) => b.effectiveness - a.effectiveness);
74
+ return interventions;
75
+ }
76
+ async reverseEngineer(desiredOutcome, graph, context) {
77
+ const plans = [];
78
+ for (const [outcome, value] of Object.entries(desiredOutcome)) {
79
+ const plan = await this.planForGoal(outcome, value, graph, context);
80
+ plans.push(plan);
81
+ }
82
+ plans.sort((a, b) => b.expectedOutcome.probability - a.expectedOutcome.probability);
83
+ return plans;
84
+ }
85
+ async analyzeRobustness(steps, graph, _context) {
86
+ const vulnerabilities = [];
87
+ let robustnessScore = 1.0;
88
+ for (const step of steps) {
89
+ if (step.expectedEffect.confidence < this.robustnessThreshold) {
90
+ vulnerabilities.push(`Step ${step.order}: Low confidence (${Math.round(step.expectedEffect.confidence * 100)}%)`);
91
+ robustnessScore *= step.expectedEffect.confidence;
92
+ }
93
+ for (const sideEffect of step.expectedEffect.sideEffects) {
94
+ if (sideEffect.unintended && sideEffect.probability > 0.3) {
95
+ vulnerabilities.push(`Step ${step.order}: Risk of unintended ${sideEffect.variable}`);
96
+ robustnessScore *= 1 - sideEffect.probability * 0.3;
97
+ }
98
+ }
99
+ }
100
+ for (const step of steps) {
101
+ const node = graph.getNode(step.target);
102
+ if (node) {
103
+ const confounders = graph.getParents(step.target).filter((p) => p.variableType === 'confounder');
104
+ for (const confounder of confounders) {
105
+ if (!steps.some((s) => s.target === confounder.id)) {
106
+ vulnerabilities.push(`Uncontrolled confounder: ${confounder.id} affects ${step.target}`);
107
+ robustnessScore *= 0.9;
108
+ }
109
+ }
110
+ }
111
+ }
112
+ const backupPlans = [];
113
+ for (const step of steps) {
114
+ if (step.alternatives && step.alternatives.length > 0) {
115
+ const alternativeSteps = steps.map((s) => s.order === step.order ? step.alternatives[0] : s);
116
+ backupPlans.push({
117
+ goal: 'backup',
118
+ goalValue: true,
119
+ steps: alternativeSteps,
120
+ expectedOutcome: { probability: 0.6, confidence: 0.5 },
121
+ robustness: { score: 0.5, vulnerabilities: [], backupPlans: [] },
122
+ estimatedCost: this.estimateCost(alternativeSteps),
123
+ reasoning: `Backup plan using alternative for step ${step.order}`,
124
+ });
125
+ }
126
+ }
127
+ return {
128
+ score: Math.max(0, robustnessScore),
129
+ vulnerabilities,
130
+ backupPlans: backupPlans.slice(0, 2),
131
+ };
132
+ }
133
+ applyConstraints(interventions, constraints) {
134
+ if (!constraints)
135
+ return interventions;
136
+ let filtered = interventions;
137
+ if (constraints.forbidden) {
138
+ filtered = filtered.filter((i) => !constraints.forbidden.includes(i.variable));
139
+ }
140
+ if (constraints.required) {
141
+ for (const required of constraints.required) {
142
+ if (!filtered.some((i) => i.variable === required)) {
143
+ filtered.push({
144
+ variable: required,
145
+ value: 1,
146
+ effectiveness: 0.5,
147
+ });
148
+ }
149
+ }
150
+ }
151
+ return filtered;
152
+ }
153
+ async buildPlanSteps(interventions, graph, context) {
154
+ const steps = [];
155
+ const sortedInterventions = this.topologicalSortInterventions(interventions, graph);
156
+ for (let i = 0; i < Math.min(sortedInterventions.length, this.maxPlanSteps); i++) {
157
+ const intervention = sortedInterventions[i];
158
+ const action = `Set ${intervention.variable} to ${intervention.value}`;
159
+ const expectedEffect = await this.effectPredictor.predictEffect(action, graph, context);
160
+ const preconditions = this.findPreconditions(intervention.variable, graph);
161
+ const alternatives = await this.findAlternativeSteps(intervention, graph, context);
162
+ steps.push({
163
+ order: i + 1,
164
+ action,
165
+ target: intervention.variable,
166
+ value: intervention.value,
167
+ expectedEffect,
168
+ preconditions,
169
+ alternatives,
170
+ });
171
+ }
172
+ return steps;
173
+ }
174
+ topologicalSortInterventions(interventions, graph) {
175
+ const variableSet = new Set(interventions.map((i) => i.variable));
176
+ const sorted = [];
177
+ const visited = new Set();
178
+ const visit = (variable) => {
179
+ if (visited.has(variable))
180
+ return;
181
+ visited.add(variable);
182
+ const parents = graph.getParents(variable);
183
+ for (const parent of parents) {
184
+ if (variableSet.has(parent.id)) {
185
+ visit(parent.id);
186
+ }
187
+ }
188
+ const intervention = interventions.find((i) => i.variable === variable);
189
+ if (intervention) {
190
+ sorted.push(intervention);
191
+ }
192
+ };
193
+ for (const intervention of interventions) {
194
+ visit(intervention.variable);
195
+ }
196
+ return sorted;
197
+ }
198
+ findPreconditions(variable, graph) {
199
+ const preconditions = [];
200
+ const parents = graph.getParents(variable);
201
+ for (const parent of parents) {
202
+ const edge = graph.getEdgeBetween(parent.id, variable);
203
+ if (edge?.relationType === 'enables') {
204
+ preconditions.push(`${parent.id} must be active`);
205
+ }
206
+ }
207
+ return preconditions;
208
+ }
209
+ async findAlternativeSteps(intervention, graph, context) {
210
+ const alternatives = [];
211
+ const siblings = graph.getParents(intervention.variable);
212
+ for (const sibling of siblings.slice(0, this.maxAlternatives)) {
213
+ if (sibling.variableType === 'treatment') {
214
+ const action = `Use ${sibling.id} instead of ${intervention.variable}`;
215
+ const expectedEffect = await this.effectPredictor.predictEffect(action, graph, context);
216
+ alternatives.push({
217
+ order: 0,
218
+ action,
219
+ target: sibling.id,
220
+ value: intervention.value,
221
+ expectedEffect,
222
+ preconditions: [],
223
+ });
224
+ }
225
+ }
226
+ return alternatives;
227
+ }
228
+ calculateExpectedOutcome(steps) {
229
+ if (steps.length === 0) {
230
+ return { probability: 0, confidence: 0 };
231
+ }
232
+ let probability = 1.0;
233
+ let totalConfidence = 0;
234
+ for (const step of steps) {
235
+ const mainEffects = step.expectedEffect.effects;
236
+ if (mainEffects.length > 0) {
237
+ const avgProbability = mainEffects.reduce((sum, e) => sum + e.probability, 0) / mainEffects.length;
238
+ probability *= avgProbability;
239
+ }
240
+ totalConfidence += step.expectedEffect.confidence;
241
+ }
242
+ return {
243
+ probability: Math.max(0, Math.min(1, probability)),
244
+ confidence: totalConfidence / steps.length,
245
+ };
246
+ }
247
+ estimateCost(steps) {
248
+ let cost = 0;
249
+ for (const step of steps) {
250
+ cost += 1;
251
+ cost += step.preconditions.length * 0.5;
252
+ for (const sideEffect of step.expectedEffect.sideEffects) {
253
+ if (sideEffect.unintended) {
254
+ cost += sideEffect.probability * 2;
255
+ }
256
+ }
257
+ }
258
+ return cost;
259
+ }
260
+ async generatePlanReasoning(goal, goalValue, steps, context) {
261
+ const prompt = `Explain the reasoning behind this causal plan.
262
+
263
+ Goal: ${goal} = ${goalValue}
264
+
265
+ Planned steps:
266
+ ${steps.map((s) => `${s.order}. ${s.action} (targeting ${s.target})`).join('\n')}
267
+
268
+ Context:
269
+ - Agent: ${context.agentId}
270
+ - Current state: ${JSON.stringify(context.observedVariables)}
271
+
272
+ Provide a brief explanation (2-3 sentences) of:
273
+ 1. Why these steps were chosen
274
+ 2. The causal chain from interventions to goal
275
+ 3. Key assumptions made`;
276
+ try {
277
+ const response = await this.llm.chat({
278
+ model: this.model,
279
+ messages: [{ role: 'user', content: prompt }],
280
+ temperature: 0.3,
281
+ });
282
+ return response.content.trim();
283
+ }
284
+ catch {
285
+ return `Plan to achieve ${goal}=${goalValue} through ${steps.length} interventions targeting the causal pathway.`;
286
+ }
287
+ }
288
+ }
289
+ //# sourceMappingURL=causal-planner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"causal-planner.js","sourceRoot":"","sources":["../../../src/causal/capabilities/causal-planner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { CausalGraph, CausalContext, PredictedEffect, CausalActionEvaluation, LLMBackend, ThoughtBranch } from '@cogitator-ai/types';
2
+ export interface EffectPredictorOptions {
3
+ llmBackend: LLMBackend;
4
+ model?: string;
5
+ safetyThresholds?: {
6
+ maxRisk: number;
7
+ minConfidence: number;
8
+ };
9
+ }
10
+ export declare class CausalEffectPredictor {
11
+ private llm;
12
+ private model;
13
+ private safetyThresholds;
14
+ constructor(options: EffectPredictorOptions);
15
+ predictEffect(action: string, graph: CausalGraph, context: CausalContext): Promise<PredictedEffect>;
16
+ predictEffectsBatch(branches: ThoughtBranch[], graph: CausalGraph, context: CausalContext): Promise<Map<string, PredictedEffect>>;
17
+ evaluateSafety(action: string, graph: CausalGraph, context: CausalContext): Promise<CausalActionEvaluation>;
18
+ whatIf(scenario: {
19
+ action: string;
20
+ conditions: Record<string, unknown>;
21
+ }, graph: CausalGraph, context: CausalContext): Promise<PredictedEffect[]>;
22
+ private findRelevantNodes;
23
+ private predictDirectEffects;
24
+ private predictSideEffects;
25
+ private enhanceWithLLM;
26
+ private isNegativeOutcome;
27
+ private findRelatedActions;
28
+ private normalizeConditions;
29
+ }
30
+ //# sourceMappingURL=effect-predictor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-predictor.d.ts","sourceRoot":"","sources":["../../../src/causal/capabilities/effect-predictor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,gBAAgB,CAA6C;gBAEzD,OAAO,EAAE,sBAAsB;IASrC,aAAa,CACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,eAAe,CAAC;IA0BrB,mBAAmB,CACvB,QAAQ,EAAE,aAAa,EAAE,EACzB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAqBlC,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,sBAAsB,CAAC;IA6D5B,MAAM,CACV,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EACjE,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,eAAe,EAAE,CAAC;IAuB7B,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,oBAAoB;IA8C5B,OAAO,CAAC,kBAAkB;YAmDZ,cAAc;IAwE5B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,mBAAmB;CAe5B"}
@@ -0,0 +1,270 @@
1
+ import { CausalInferenceEngine } from '../inference/inference-engine';
2
+ export class CausalEffectPredictor {
3
+ llm;
4
+ model;
5
+ safetyThresholds;
6
+ constructor(options) {
7
+ this.llm = options.llmBackend;
8
+ this.model = options.model ?? 'gpt-4';
9
+ this.safetyThresholds = options.safetyThresholds ?? {
10
+ maxRisk: 0.7,
11
+ minConfidence: 0.3,
12
+ };
13
+ }
14
+ async predictEffect(action, graph, context) {
15
+ const engine = new CausalInferenceEngine(graph);
16
+ const relevantNodes = this.findRelevantNodes(action, graph);
17
+ const directEffects = this.predictDirectEffects(action, relevantNodes, graph, engine);
18
+ const sideEffects = this.predictSideEffects(action, relevantNodes, graph, engine, context);
19
+ const llmEnhanced = await this.enhanceWithLLM(action, directEffects, sideEffects, context);
20
+ return {
21
+ action,
22
+ effects: llmEnhanced.effects,
23
+ sideEffects: llmEnhanced.sideEffects,
24
+ confidence: llmEnhanced.confidence,
25
+ reasoning: llmEnhanced.reasoning,
26
+ };
27
+ }
28
+ async predictEffectsBatch(branches, graph, context) {
29
+ const results = new Map();
30
+ const predictions = await Promise.all(branches.map(async (branch) => {
31
+ const prediction = await this.predictEffect(branch.thought, graph, context);
32
+ return { branchId: branch.id, prediction };
33
+ }));
34
+ for (const { branchId, prediction } of predictions) {
35
+ results.set(branchId, prediction);
36
+ }
37
+ return results;
38
+ }
39
+ async evaluateSafety(action, graph, context) {
40
+ const prediction = await this.predictEffect(action, graph, context);
41
+ const warnings = [];
42
+ const recommendations = [];
43
+ const blockedReasons = [];
44
+ let riskScore = 0;
45
+ for (const sideEffect of prediction.sideEffects) {
46
+ if (sideEffect.unintended && sideEffect.probability > 0.5) {
47
+ riskScore += sideEffect.probability * 0.3;
48
+ warnings.push(`Potential unintended effect on ${sideEffect.variable} (${Math.round(sideEffect.probability * 100)}% probability)`);
49
+ }
50
+ }
51
+ for (const effect of prediction.effects) {
52
+ if (this.isNegativeOutcome(effect.variable, effect.expectedValue)) {
53
+ riskScore += effect.probability * 0.5;
54
+ warnings.push(`May cause negative outcome: ${effect.variable} = ${effect.expectedValue}`);
55
+ }
56
+ }
57
+ let riskLevel;
58
+ if (riskScore < 0.2) {
59
+ riskLevel = 'low';
60
+ }
61
+ else if (riskScore < 0.4) {
62
+ riskLevel = 'medium';
63
+ }
64
+ else if (riskScore < 0.7) {
65
+ riskLevel = 'high';
66
+ recommendations.push('Consider alternative approaches');
67
+ }
68
+ else {
69
+ riskLevel = 'critical';
70
+ blockedReasons.push('Risk score exceeds safety threshold');
71
+ }
72
+ const isSafe = riskScore < this.safetyThresholds.maxRisk &&
73
+ prediction.confidence >= this.safetyThresholds.minConfidence;
74
+ if (!isSafe && blockedReasons.length === 0) {
75
+ if (prediction.confidence < this.safetyThresholds.minConfidence) {
76
+ warnings.push('Low confidence in effect prediction');
77
+ recommendations.push('Gather more information before proceeding');
78
+ }
79
+ }
80
+ return {
81
+ action,
82
+ isSafe,
83
+ riskLevel,
84
+ predictedEffects: prediction,
85
+ warnings,
86
+ recommendations,
87
+ blockedReasons: blockedReasons.length > 0 ? blockedReasons : undefined,
88
+ };
89
+ }
90
+ async whatIf(scenario, graph, context) {
91
+ const predictions = [];
92
+ const baseContext = {
93
+ ...context,
94
+ observedVariables: {
95
+ ...context.observedVariables,
96
+ ...this.normalizeConditions(scenario.conditions),
97
+ },
98
+ };
99
+ const mainPrediction = await this.predictEffect(scenario.action, graph, baseContext);
100
+ predictions.push(mainPrediction);
101
+ const relatedActions = this.findRelatedActions(scenario.action, graph);
102
+ for (const relatedAction of relatedActions.slice(0, 3)) {
103
+ const prediction = await this.predictEffect(relatedAction, graph, baseContext);
104
+ predictions.push(prediction);
105
+ }
106
+ return predictions;
107
+ }
108
+ findRelevantNodes(action, graph) {
109
+ const nodes = graph.getNodes();
110
+ const relevant = [];
111
+ const actionWords = action.toLowerCase().split(/\s+/);
112
+ for (const node of nodes) {
113
+ const nodeWords = [
114
+ node.id.toLowerCase(),
115
+ node.name.toLowerCase(),
116
+ ];
117
+ for (const actionWord of actionWords) {
118
+ for (const nodeWord of nodeWords) {
119
+ if (nodeWord.includes(actionWord) || actionWord.includes(nodeWord)) {
120
+ relevant.push(node.id);
121
+ break;
122
+ }
123
+ }
124
+ }
125
+ }
126
+ return [...new Set(relevant)];
127
+ }
128
+ predictDirectEffects(_action, relevantNodes, graph, _engine) {
129
+ const effects = [];
130
+ for (const nodeId of relevantNodes) {
131
+ const children = graph.getChildren(nodeId);
132
+ for (const child of children) {
133
+ const edge = graph.getEdgeBetween(nodeId, child.id);
134
+ if (!edge)
135
+ continue;
136
+ let expectedValue;
137
+ if (edge.relationType === 'causes' || edge.relationType === 'enables') {
138
+ expectedValue = true;
139
+ }
140
+ else if (edge.relationType === 'prevents') {
141
+ expectedValue = false;
142
+ }
143
+ else {
144
+ expectedValue = edge.strength;
145
+ }
146
+ effects.push({
147
+ variable: child.id,
148
+ expectedValue,
149
+ probability: edge.strength * edge.confidence,
150
+ mechanism: edge.mechanism || `${nodeId} ${edge.relationType} ${child.id}`,
151
+ });
152
+ }
153
+ }
154
+ return effects;
155
+ }
156
+ predictSideEffects(_action, relevantNodes, graph, _engine, _context) {
157
+ const sideEffects = [];
158
+ const directEffectNodes = new Set();
159
+ for (const nodeId of relevantNodes) {
160
+ for (const child of graph.getChildren(nodeId)) {
161
+ directEffectNodes.add(child.id);
162
+ }
163
+ }
164
+ for (const nodeId of relevantNodes) {
165
+ const descendants = graph.getDescendants(nodeId);
166
+ for (const descendant of descendants) {
167
+ if (directEffectNodes.has(descendant.id))
168
+ continue;
169
+ const paths = graph.findPaths(nodeId, descendant.id);
170
+ if (paths.length === 0)
171
+ continue;
172
+ const bestPath = paths.reduce((a, b) => a.totalStrength > b.totalStrength ? a : b);
173
+ sideEffects.push({
174
+ variable: descendant.id,
175
+ expectedValue: bestPath.totalStrength > 0.5,
176
+ probability: bestPath.totalStrength * 0.8,
177
+ unintended: true,
178
+ });
179
+ }
180
+ }
181
+ return sideEffects;
182
+ }
183
+ async enhanceWithLLM(action, directEffects, sideEffects, context) {
184
+ const prompt = `Analyze the predicted effects of this action and provide reasoning.
185
+
186
+ Action: ${action}
187
+
188
+ Direct effects predicted:
189
+ ${directEffects.map((e) => `- ${e.variable}: ${e.expectedValue} (${Math.round(e.probability * 100)}% probability) via ${e.mechanism}`).join('\n')}
190
+
191
+ Side effects predicted:
192
+ ${sideEffects.map((e) => `- ${e.variable}: ${e.expectedValue} (${Math.round(e.probability * 100)}% probability, ${e.unintended ? 'unintended' : 'intended'})`).join('\n')}
193
+
194
+ Current context:
195
+ - Agent: ${context.agentId}
196
+ - Observed: ${JSON.stringify(context.observedVariables)}
197
+
198
+ Provide:
199
+ 1. Confidence in these predictions (0-1)
200
+ 2. Reasoning for the predictions
201
+ 3. Any additional effects not captured
202
+
203
+ Respond in JSON:
204
+ {
205
+ "confidence": 0.75,
206
+ "reasoning": "Explanation of the causal chain",
207
+ "additionalEffects": []
208
+ }`;
209
+ try {
210
+ const response = await this.llm.chat({
211
+ model: this.model,
212
+ messages: [{ role: 'user', content: prompt }],
213
+ temperature: 0.3,
214
+ });
215
+ const match = response.content.match(/\{[\s\S]*\}/);
216
+ if (match) {
217
+ const parsed = JSON.parse(match[0]);
218
+ return {
219
+ action,
220
+ effects: directEffects,
221
+ sideEffects,
222
+ confidence: parsed.confidence ?? 0.5,
223
+ reasoning: parsed.reasoning ?? 'No reasoning provided',
224
+ };
225
+ }
226
+ }
227
+ catch {
228
+ }
229
+ return {
230
+ action,
231
+ effects: directEffects,
232
+ sideEffects,
233
+ confidence: 0.5,
234
+ reasoning: 'Based on causal graph analysis',
235
+ };
236
+ }
237
+ isNegativeOutcome(variable, value) {
238
+ const negativePatterns = ['error', 'fail', 'crash', 'loss', 'damage', 'risk'];
239
+ const varLower = variable.toLowerCase();
240
+ for (const pattern of negativePatterns) {
241
+ if (varLower.includes(pattern)) {
242
+ return value === true || (typeof value === 'number' && value > 0.5);
243
+ }
244
+ }
245
+ return false;
246
+ }
247
+ findRelatedActions(action, graph) {
248
+ const nodes = graph.getNodes();
249
+ const related = [];
250
+ for (const node of nodes) {
251
+ if (node.variableType === 'treatment' && !action.includes(node.id)) {
252
+ related.push(`Apply ${node.name}`);
253
+ }
254
+ }
255
+ return related;
256
+ }
257
+ normalizeConditions(conditions) {
258
+ const normalized = {};
259
+ for (const [key, value] of Object.entries(conditions)) {
260
+ if (typeof value === 'number' || typeof value === 'string' || typeof value === 'boolean') {
261
+ normalized[key] = value;
262
+ }
263
+ else {
264
+ normalized[key] = String(value);
265
+ }
266
+ }
267
+ return normalized;
268
+ }
269
+ }
270
+ //# sourceMappingURL=effect-predictor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-predictor.js","sourceRoot":"","sources":["../../../src/causal/capabilities/effect-predictor.ts"],"names":[],"mappings":"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"}