@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.
Files changed (169) 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 +334 -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 +291 -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 +266 -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 +328 -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 +237 -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 +228 -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 +265 -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 +188 -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 +198 -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 +252 -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/cogitator.d.ts.map +1 -1
  75. package/dist/cogitator.js +10 -5
  76. package/dist/cogitator.js.map +1 -1
  77. package/dist/index.d.ts +4 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +2 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/learning/ab-testing.d.ts.map +1 -1
  82. package/dist/learning/ab-testing.js +6 -5
  83. package/dist/learning/ab-testing.js.map +1 -1
  84. package/dist/learning/auto-optimizer.d.ts.map +1 -1
  85. package/dist/learning/auto-optimizer.js +4 -2
  86. package/dist/learning/auto-optimizer.js.map +1 -1
  87. package/dist/learning/postgres-trace-store.d.ts.map +1 -1
  88. package/dist/learning/postgres-trace-store.js +15 -5
  89. package/dist/learning/postgres-trace-store.js.map +1 -1
  90. package/dist/learning/prompt-monitor.d.ts.map +1 -1
  91. package/dist/learning/prompt-monitor.js.map +1 -1
  92. package/dist/learning/rollback-manager.d.ts.map +1 -1
  93. package/dist/learning/rollback-manager.js.map +1 -1
  94. package/dist/llm/google.d.ts.map +1 -1
  95. package/dist/llm/google.js +5 -3
  96. package/dist/llm/google.js.map +1 -1
  97. package/package.json +5 -5
  98. package/dist/__tests__/agent.test.d.ts +0 -2
  99. package/dist/__tests__/agent.test.d.ts.map +0 -1
  100. package/dist/__tests__/agent.test.js +0 -91
  101. package/dist/__tests__/agent.test.js.map +0 -1
  102. package/dist/__tests__/base64.test.d.ts +0 -2
  103. package/dist/__tests__/base64.test.d.ts.map +0 -1
  104. package/dist/__tests__/base64.test.js +0 -62
  105. package/dist/__tests__/base64.test.js.map +0 -1
  106. package/dist/__tests__/calculator.test.d.ts +0 -2
  107. package/dist/__tests__/calculator.test.d.ts.map +0 -1
  108. package/dist/__tests__/calculator.test.js +0 -146
  109. package/dist/__tests__/calculator.test.js.map +0 -1
  110. package/dist/__tests__/cogitator-memory.test.d.ts +0 -2
  111. package/dist/__tests__/cogitator-memory.test.d.ts.map +0 -1
  112. package/dist/__tests__/cogitator-memory.test.js +0 -176
  113. package/dist/__tests__/cogitator-memory.test.js.map +0 -1
  114. package/dist/__tests__/datetime.test.d.ts +0 -2
  115. package/dist/__tests__/datetime.test.d.ts.map +0 -1
  116. package/dist/__tests__/datetime.test.js +0 -87
  117. package/dist/__tests__/datetime.test.js.map +0 -1
  118. package/dist/__tests__/exec.test.d.ts +0 -2
  119. package/dist/__tests__/exec.test.d.ts.map +0 -1
  120. package/dist/__tests__/exec.test.js +0 -59
  121. package/dist/__tests__/exec.test.js.map +0 -1
  122. package/dist/__tests__/filesystem.test.d.ts +0 -2
  123. package/dist/__tests__/filesystem.test.d.ts.map +0 -1
  124. package/dist/__tests__/filesystem.test.js +0 -148
  125. package/dist/__tests__/filesystem.test.js.map +0 -1
  126. package/dist/__tests__/google-backend.test.d.ts +0 -5
  127. package/dist/__tests__/google-backend.test.d.ts.map +0 -1
  128. package/dist/__tests__/google-backend.test.js +0 -429
  129. package/dist/__tests__/google-backend.test.js.map +0 -1
  130. package/dist/__tests__/hash.test.d.ts +0 -2
  131. package/dist/__tests__/hash.test.d.ts.map +0 -1
  132. package/dist/__tests__/hash.test.js +0 -50
  133. package/dist/__tests__/hash.test.js.map +0 -1
  134. package/dist/__tests__/http.test.d.ts +0 -2
  135. package/dist/__tests__/http.test.d.ts.map +0 -1
  136. package/dist/__tests__/http.test.js +0 -64
  137. package/dist/__tests__/http.test.js.map +0 -1
  138. package/dist/__tests__/json.test.d.ts +0 -2
  139. package/dist/__tests__/json.test.d.ts.map +0 -1
  140. package/dist/__tests__/json.test.js +0 -65
  141. package/dist/__tests__/json.test.js.map +0 -1
  142. package/dist/__tests__/logger.test.d.ts +0 -2
  143. package/dist/__tests__/logger.test.d.ts.map +0 -1
  144. package/dist/__tests__/logger.test.js +0 -186
  145. package/dist/__tests__/logger.test.js.map +0 -1
  146. package/dist/__tests__/random.test.d.ts +0 -2
  147. package/dist/__tests__/random.test.d.ts.map +0 -1
  148. package/dist/__tests__/random.test.js +0 -81
  149. package/dist/__tests__/random.test.js.map +0 -1
  150. package/dist/__tests__/regex.test.d.ts +0 -2
  151. package/dist/__tests__/regex.test.d.ts.map +0 -1
  152. package/dist/__tests__/regex.test.js +0 -75
  153. package/dist/__tests__/regex.test.js.map +0 -1
  154. package/dist/__tests__/registry.test.d.ts +0 -2
  155. package/dist/__tests__/registry.test.d.ts.map +0 -1
  156. package/dist/__tests__/registry.test.js +0 -102
  157. package/dist/__tests__/registry.test.js.map +0 -1
  158. package/dist/__tests__/sleep.test.d.ts +0 -2
  159. package/dist/__tests__/sleep.test.d.ts.map +0 -1
  160. package/dist/__tests__/sleep.test.js +0 -29
  161. package/dist/__tests__/sleep.test.js.map +0 -1
  162. package/dist/__tests__/tool.test.d.ts +0 -2
  163. package/dist/__tests__/tool.test.d.ts.map +0 -1
  164. package/dist/__tests__/tool.test.js +0 -103
  165. package/dist/__tests__/tool.test.js.map +0 -1
  166. package/dist/__tests__/uuid.test.d.ts +0 -2
  167. package/dist/__tests__/uuid.test.d.ts.map +0 -1
  168. package/dist/__tests__/uuid.test.js +0 -37
  169. package/dist/__tests__/uuid.test.js.map +0 -1
@@ -0,0 +1,291 @@
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
104
+ .getParents(step.target)
105
+ .filter((p) => p.variableType === 'confounder');
106
+ for (const confounder of confounders) {
107
+ if (!steps.some((s) => s.target === confounder.id)) {
108
+ vulnerabilities.push(`Uncontrolled confounder: ${confounder.id} affects ${step.target}`);
109
+ robustnessScore *= 0.9;
110
+ }
111
+ }
112
+ }
113
+ }
114
+ const backupPlans = [];
115
+ for (const step of steps) {
116
+ if (step.alternatives && step.alternatives.length > 0) {
117
+ const alternativeSteps = steps.map((s) => s.order === step.order ? step.alternatives[0] : s);
118
+ backupPlans.push({
119
+ goal: 'backup',
120
+ goalValue: true,
121
+ steps: alternativeSteps,
122
+ expectedOutcome: { probability: 0.6, confidence: 0.5 },
123
+ robustness: { score: 0.5, vulnerabilities: [], backupPlans: [] },
124
+ estimatedCost: this.estimateCost(alternativeSteps),
125
+ reasoning: `Backup plan using alternative for step ${step.order}`,
126
+ });
127
+ }
128
+ }
129
+ return {
130
+ score: Math.max(0, robustnessScore),
131
+ vulnerabilities,
132
+ backupPlans: backupPlans.slice(0, 2),
133
+ };
134
+ }
135
+ applyConstraints(interventions, constraints) {
136
+ if (!constraints)
137
+ return interventions;
138
+ let filtered = interventions;
139
+ if (constraints.forbidden) {
140
+ filtered = filtered.filter((i) => !constraints.forbidden.includes(i.variable));
141
+ }
142
+ if (constraints.required) {
143
+ for (const required of constraints.required) {
144
+ if (!filtered.some((i) => i.variable === required)) {
145
+ filtered.push({
146
+ variable: required,
147
+ value: 1,
148
+ effectiveness: 0.5,
149
+ });
150
+ }
151
+ }
152
+ }
153
+ return filtered;
154
+ }
155
+ async buildPlanSteps(interventions, graph, context) {
156
+ const steps = [];
157
+ const sortedInterventions = this.topologicalSortInterventions(interventions, graph);
158
+ for (let i = 0; i < Math.min(sortedInterventions.length, this.maxPlanSteps); i++) {
159
+ const intervention = sortedInterventions[i];
160
+ const action = `Set ${intervention.variable} to ${intervention.value}`;
161
+ const expectedEffect = await this.effectPredictor.predictEffect(action, graph, context);
162
+ const preconditions = this.findPreconditions(intervention.variable, graph);
163
+ const alternatives = await this.findAlternativeSteps(intervention, graph, context);
164
+ steps.push({
165
+ order: i + 1,
166
+ action,
167
+ target: intervention.variable,
168
+ value: intervention.value,
169
+ expectedEffect,
170
+ preconditions,
171
+ alternatives,
172
+ });
173
+ }
174
+ return steps;
175
+ }
176
+ topologicalSortInterventions(interventions, graph) {
177
+ const variableSet = new Set(interventions.map((i) => i.variable));
178
+ const sorted = [];
179
+ const visited = new Set();
180
+ const visit = (variable) => {
181
+ if (visited.has(variable))
182
+ return;
183
+ visited.add(variable);
184
+ const parents = graph.getParents(variable);
185
+ for (const parent of parents) {
186
+ if (variableSet.has(parent.id)) {
187
+ visit(parent.id);
188
+ }
189
+ }
190
+ const intervention = interventions.find((i) => i.variable === variable);
191
+ if (intervention) {
192
+ sorted.push(intervention);
193
+ }
194
+ };
195
+ for (const intervention of interventions) {
196
+ visit(intervention.variable);
197
+ }
198
+ return sorted;
199
+ }
200
+ findPreconditions(variable, graph) {
201
+ const preconditions = [];
202
+ const parents = graph.getParents(variable);
203
+ for (const parent of parents) {
204
+ const edge = graph.getEdgeBetween(parent.id, variable);
205
+ if (edge?.relationType === 'enables') {
206
+ preconditions.push(`${parent.id} must be active`);
207
+ }
208
+ }
209
+ return preconditions;
210
+ }
211
+ async findAlternativeSteps(intervention, graph, context) {
212
+ const alternatives = [];
213
+ const siblings = graph.getParents(intervention.variable);
214
+ for (const sibling of siblings.slice(0, this.maxAlternatives)) {
215
+ if (sibling.variableType === 'treatment') {
216
+ const action = `Use ${sibling.id} instead of ${intervention.variable}`;
217
+ const expectedEffect = await this.effectPredictor.predictEffect(action, graph, context);
218
+ alternatives.push({
219
+ order: 0,
220
+ action,
221
+ target: sibling.id,
222
+ value: intervention.value,
223
+ expectedEffect,
224
+ preconditions: [],
225
+ });
226
+ }
227
+ }
228
+ return alternatives;
229
+ }
230
+ calculateExpectedOutcome(steps) {
231
+ if (steps.length === 0) {
232
+ return { probability: 0, confidence: 0 };
233
+ }
234
+ let probability = 1.0;
235
+ let totalConfidence = 0;
236
+ for (const step of steps) {
237
+ const mainEffects = step.expectedEffect.effects;
238
+ if (mainEffects.length > 0) {
239
+ const avgProbability = mainEffects.reduce((sum, e) => sum + e.probability, 0) / mainEffects.length;
240
+ probability *= avgProbability;
241
+ }
242
+ totalConfidence += step.expectedEffect.confidence;
243
+ }
244
+ return {
245
+ probability: Math.max(0, Math.min(1, probability)),
246
+ confidence: totalConfidence / steps.length,
247
+ };
248
+ }
249
+ estimateCost(steps) {
250
+ let cost = 0;
251
+ for (const step of steps) {
252
+ cost += 1;
253
+ cost += step.preconditions.length * 0.5;
254
+ for (const sideEffect of step.expectedEffect.sideEffects) {
255
+ if (sideEffect.unintended) {
256
+ cost += sideEffect.probability * 2;
257
+ }
258
+ }
259
+ }
260
+ return cost;
261
+ }
262
+ async generatePlanReasoning(goal, goalValue, steps, context) {
263
+ const prompt = `Explain the reasoning behind this causal plan.
264
+
265
+ Goal: ${goal} = ${goalValue}
266
+
267
+ Planned steps:
268
+ ${steps.map((s) => `${s.order}. ${s.action} (targeting ${s.target})`).join('\n')}
269
+
270
+ Context:
271
+ - Agent: ${context.agentId}
272
+ - Current state: ${JSON.stringify(context.observedVariables)}
273
+
274
+ Provide a brief explanation (2-3 sentences) of:
275
+ 1. Why these steps were chosen
276
+ 2. The causal chain from interventions to goal
277
+ 3. Key assumptions made`;
278
+ try {
279
+ const response = await this.llm.chat({
280
+ model: this.model,
281
+ messages: [{ role: 'user', content: prompt }],
282
+ temperature: 0.3,
283
+ });
284
+ return response.content.trim();
285
+ }
286
+ catch {
287
+ return `Plan to achieve ${goal}=${goalValue} through ${steps.length} interventions targeting the causal pathway.`;
288
+ }
289
+ }
290
+ }
291
+ //# 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;IAoBrB,mBAAmB,CACvB,QAAQ,EAAE,aAAa,EAAE,EACzB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAiBlC,cAAc,CAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,sBAAsB,CAAC;IA4D5B,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;IAsBzB,OAAO,CAAC,oBAAoB;IA8C5B,OAAO,CAAC,kBAAkB;YAiDZ,cAAc;IAuE5B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,mBAAmB;CAe5B"}
@@ -0,0 +1,266 @@
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 = [node.id.toLowerCase(), node.name.toLowerCase()];
114
+ for (const actionWord of actionWords) {
115
+ for (const nodeWord of nodeWords) {
116
+ if (nodeWord.includes(actionWord) || actionWord.includes(nodeWord)) {
117
+ relevant.push(node.id);
118
+ break;
119
+ }
120
+ }
121
+ }
122
+ }
123
+ return [...new Set(relevant)];
124
+ }
125
+ predictDirectEffects(_action, relevantNodes, graph, _engine) {
126
+ const effects = [];
127
+ for (const nodeId of relevantNodes) {
128
+ const children = graph.getChildren(nodeId);
129
+ for (const child of children) {
130
+ const edge = graph.getEdgeBetween(nodeId, child.id);
131
+ if (!edge)
132
+ continue;
133
+ let expectedValue;
134
+ if (edge.relationType === 'causes' || edge.relationType === 'enables') {
135
+ expectedValue = true;
136
+ }
137
+ else if (edge.relationType === 'prevents') {
138
+ expectedValue = false;
139
+ }
140
+ else {
141
+ expectedValue = edge.strength;
142
+ }
143
+ effects.push({
144
+ variable: child.id,
145
+ expectedValue,
146
+ probability: edge.strength * edge.confidence,
147
+ mechanism: edge.mechanism || `${nodeId} ${edge.relationType} ${child.id}`,
148
+ });
149
+ }
150
+ }
151
+ return effects;
152
+ }
153
+ predictSideEffects(_action, relevantNodes, graph, _engine, _context) {
154
+ const sideEffects = [];
155
+ const directEffectNodes = new Set();
156
+ for (const nodeId of relevantNodes) {
157
+ for (const child of graph.getChildren(nodeId)) {
158
+ directEffectNodes.add(child.id);
159
+ }
160
+ }
161
+ for (const nodeId of relevantNodes) {
162
+ const descendants = graph.getDescendants(nodeId);
163
+ for (const descendant of descendants) {
164
+ if (directEffectNodes.has(descendant.id))
165
+ continue;
166
+ const paths = graph.findPaths(nodeId, descendant.id);
167
+ if (paths.length === 0)
168
+ continue;
169
+ const bestPath = paths.reduce((a, b) => (a.totalStrength > b.totalStrength ? a : b));
170
+ sideEffects.push({
171
+ variable: descendant.id,
172
+ expectedValue: bestPath.totalStrength > 0.5,
173
+ probability: bestPath.totalStrength * 0.8,
174
+ unintended: true,
175
+ });
176
+ }
177
+ }
178
+ return sideEffects;
179
+ }
180
+ async enhanceWithLLM(action, directEffects, sideEffects, context) {
181
+ const prompt = `Analyze the predicted effects of this action and provide reasoning.
182
+
183
+ Action: ${action}
184
+
185
+ Direct effects predicted:
186
+ ${directEffects.map((e) => `- ${e.variable}: ${e.expectedValue} (${Math.round(e.probability * 100)}% probability) via ${e.mechanism}`).join('\n')}
187
+
188
+ Side effects predicted:
189
+ ${sideEffects.map((e) => `- ${e.variable}: ${e.expectedValue} (${Math.round(e.probability * 100)}% probability, ${e.unintended ? 'unintended' : 'intended'})`).join('\n')}
190
+
191
+ Current context:
192
+ - Agent: ${context.agentId}
193
+ - Observed: ${JSON.stringify(context.observedVariables)}
194
+
195
+ Provide:
196
+ 1. Confidence in these predictions (0-1)
197
+ 2. Reasoning for the predictions
198
+ 3. Any additional effects not captured
199
+
200
+ Respond in JSON:
201
+ {
202
+ "confidence": 0.75,
203
+ "reasoning": "Explanation of the causal chain",
204
+ "additionalEffects": []
205
+ }`;
206
+ try {
207
+ const response = await this.llm.chat({
208
+ model: this.model,
209
+ messages: [{ role: 'user', content: prompt }],
210
+ temperature: 0.3,
211
+ });
212
+ const match = /\{[\s\S]*\}/.exec(response.content);
213
+ if (match) {
214
+ const parsed = JSON.parse(match[0]);
215
+ return {
216
+ action,
217
+ effects: directEffects,
218
+ sideEffects,
219
+ confidence: parsed.confidence ?? 0.5,
220
+ reasoning: parsed.reasoning ?? 'No reasoning provided',
221
+ };
222
+ }
223
+ }
224
+ catch { }
225
+ return {
226
+ action,
227
+ effects: directEffects,
228
+ sideEffects,
229
+ confidence: 0.5,
230
+ reasoning: 'Based on causal graph analysis',
231
+ };
232
+ }
233
+ isNegativeOutcome(variable, value) {
234
+ const negativePatterns = ['error', 'fail', 'crash', 'loss', 'damage', 'risk'];
235
+ const varLower = variable.toLowerCase();
236
+ for (const pattern of negativePatterns) {
237
+ if (varLower.includes(pattern)) {
238
+ return value === true || (typeof value === 'number' && value > 0.5);
239
+ }
240
+ }
241
+ return false;
242
+ }
243
+ findRelatedActions(action, graph) {
244
+ const nodes = graph.getNodes();
245
+ const related = [];
246
+ for (const node of nodes) {
247
+ if (node.variableType === 'treatment' && !action.includes(node.id)) {
248
+ related.push(`Apply ${node.name}`);
249
+ }
250
+ }
251
+ return related;
252
+ }
253
+ normalizeConditions(conditions) {
254
+ const normalized = {};
255
+ for (const [key, value] of Object.entries(conditions)) {
256
+ if (typeof value === 'number' || typeof value === 'string' || typeof value === 'boolean') {
257
+ normalized[key] = value;
258
+ }
259
+ else {
260
+ normalized[key] = String(value);
261
+ }
262
+ }
263
+ return normalized;
264
+ }
265
+ }
266
+ //# 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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"}