@cognitive-engine/reasoning 0.1.0 → 0.2.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/dist/intention-generator.d.ts.map +1 -1
- package/dist/intention-generator.js +47 -28
- package/dist/intention-generator.js.map +1 -1
- package/dist/reasoner.d.ts +2 -0
- package/dist/reasoner.d.ts.map +1 -1
- package/dist/reasoner.js +42 -43
- package/dist/reasoner.js.map +1 -1
- package/dist/world-model.d.ts +2 -0
- package/dist/world-model.d.ts.map +1 -1
- package/dist/world-model.js +27 -14
- package/dist/world-model.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intention-generator.d.ts","sourceRoot":"","sources":["../src/intention-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,SAAS,EAET,MAAM,EACN,aAAa,EACb,eAAe,EAChB,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"intention-generator.d.ts","sourceRoot":"","sources":["../src/intention-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,SAAS,EAET,MAAM,EACN,aAAa,EACb,eAAe,EAChB,MAAM,wBAAwB,CAAA;AAuB/B;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,cAAc,GACpB,SAAS,EAAE,CAcb;AAmGD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,GAAE,aAAa,EAAO,GAChC,eAAe,EAAE,CAWnB"}
|
|
@@ -9,62 +9,81 @@ const REQUEST_TO_INTENTION = {
|
|
|
9
9
|
feedback: 'empathize',
|
|
10
10
|
};
|
|
11
11
|
const NEGATIVE_EMOTIONS = new Set(['frustrated', 'anxious', 'negative']);
|
|
12
|
+
const PRIORITY_HIGHEST = 10;
|
|
13
|
+
const PRIORITY_URGENT = 9;
|
|
14
|
+
const PRIORITY_EMPATHY = 8;
|
|
15
|
+
const PRIORITY_CLARIFY = 4;
|
|
16
|
+
const URGENCY_HIGH_THRESHOLD = 7;
|
|
17
|
+
const MIN_BELIEFS_FOR_CONTEXT = 5;
|
|
18
|
+
const TARGET_PREVIEW_LENGTH = 50;
|
|
12
19
|
/**
|
|
13
20
|
* Generate intentions from percept + cognitive state using BDI rules.
|
|
14
21
|
*/
|
|
15
22
|
export function generateIntentions(percept, state) {
|
|
16
|
-
const intentions = [];
|
|
17
|
-
// CRITICAL: listening mode = ONLY empathize, no advice
|
|
18
23
|
if (percept.responseMode === 'listening') {
|
|
19
|
-
return [
|
|
20
|
-
{
|
|
21
|
-
type: 'empathize',
|
|
22
|
-
target: percept.emotionalTone || 'neutral',
|
|
23
|
-
priority: 10,
|
|
24
|
-
reason: 'User is sharing, not asking for advice',
|
|
25
|
-
},
|
|
26
|
-
];
|
|
24
|
+
return [buildListeningIntention(percept)];
|
|
27
25
|
}
|
|
28
|
-
|
|
26
|
+
const intentions = [
|
|
27
|
+
buildPrimaryIntention(percept),
|
|
28
|
+
];
|
|
29
|
+
appendEmpathyIntention(intentions, percept);
|
|
30
|
+
appendUrgencyIntention(intentions, percept);
|
|
31
|
+
appendClarifyIntention(intentions, state);
|
|
32
|
+
return intentions.sort((a, b) => b.priority - a.priority);
|
|
33
|
+
}
|
|
34
|
+
function buildListeningIntention(percept) {
|
|
35
|
+
return {
|
|
36
|
+
type: 'empathize',
|
|
37
|
+
target: percept.emotionalTone || 'neutral',
|
|
38
|
+
priority: PRIORITY_HIGHEST,
|
|
39
|
+
reason: 'User is sharing, not asking for advice',
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function buildPrimaryIntention(percept) {
|
|
29
43
|
const intentionType = REQUEST_TO_INTENTION[percept.requestType] ?? 'inform';
|
|
30
|
-
|
|
44
|
+
return {
|
|
31
45
|
type: intentionType,
|
|
32
|
-
target: percept.rawText.substring(0,
|
|
33
|
-
priority:
|
|
46
|
+
target: percept.rawText.substring(0, TARGET_PREVIEW_LENGTH),
|
|
47
|
+
priority: PRIORITY_HIGHEST,
|
|
34
48
|
reason: `Primary response to ${percept.requestType}`,
|
|
35
|
-
}
|
|
36
|
-
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function appendEmpathyIntention(intentions, percept) {
|
|
37
52
|
if (NEGATIVE_EMOTIONS.has(percept.emotionalTone)) {
|
|
38
53
|
intentions.push({
|
|
39
54
|
type: 'empathize',
|
|
40
55
|
target: percept.emotionalTone,
|
|
41
|
-
priority:
|
|
56
|
+
priority: PRIORITY_EMPATHY,
|
|
42
57
|
reason: 'User is experiencing negative emotion',
|
|
43
58
|
});
|
|
44
59
|
}
|
|
45
|
-
|
|
46
|
-
|
|
60
|
+
}
|
|
61
|
+
function appendUrgencyIntention(intentions, percept) {
|
|
62
|
+
if (percept.urgency > URGENCY_HIGH_THRESHOLD) {
|
|
47
63
|
intentions.push({
|
|
48
64
|
type: 'inform',
|
|
49
65
|
target: 'urgent_response',
|
|
50
|
-
priority:
|
|
66
|
+
priority: PRIORITY_URGENT,
|
|
51
67
|
reason: 'High urgency detected',
|
|
52
68
|
});
|
|
53
69
|
}
|
|
54
|
-
|
|
55
|
-
|
|
70
|
+
}
|
|
71
|
+
function appendClarifyIntention(intentions, state) {
|
|
72
|
+
if (state.beliefs.length < MIN_BELIEFS_FOR_CONTEXT) {
|
|
56
73
|
intentions.push({
|
|
57
74
|
type: 'clarify',
|
|
58
75
|
target: 'user_context',
|
|
59
|
-
priority:
|
|
76
|
+
priority: PRIORITY_CLARIFY,
|
|
60
77
|
reason: 'Not enough context about user',
|
|
61
78
|
});
|
|
62
79
|
}
|
|
63
|
-
return intentions.sort((a, b) => b.priority - a.priority);
|
|
64
80
|
}
|
|
65
81
|
// ═══════════════════════════════════════════
|
|
66
82
|
// Built-in inference rules
|
|
67
83
|
// ═══════════════════════════════════════════
|
|
84
|
+
const CONFIDENCE_PROBLEM_INFERENCE = 0.6;
|
|
85
|
+
const CONFIDENCE_CREATIVE_INFERENCE = 0.5;
|
|
86
|
+
const CONFIDENCE_SPEED_INFERENCE = 0.7;
|
|
68
87
|
const BUILTIN_RULES = [
|
|
69
88
|
{
|
|
70
89
|
name: 'negative_emotion_problem',
|
|
@@ -74,7 +93,7 @@ const BUILTIN_RULES = [
|
|
|
74
93
|
subject: 'user',
|
|
75
94
|
predicate: 'has_problem_with',
|
|
76
95
|
object: percept.entities[0]?.value ?? 'unknown',
|
|
77
|
-
confidence:
|
|
96
|
+
confidence: CONFIDENCE_PROBLEM_INFERENCE,
|
|
78
97
|
}),
|
|
79
98
|
},
|
|
80
99
|
{
|
|
@@ -85,17 +104,17 @@ const BUILTIN_RULES = [
|
|
|
85
104
|
subject: 'user',
|
|
86
105
|
predicate: 'is_creative',
|
|
87
106
|
object: 'true',
|
|
88
|
-
confidence:
|
|
107
|
+
confidence: CONFIDENCE_CREATIVE_INFERENCE,
|
|
89
108
|
}),
|
|
90
109
|
},
|
|
91
110
|
{
|
|
92
111
|
name: 'values_speed',
|
|
93
|
-
condition: (percept) => percept.urgency >
|
|
112
|
+
condition: (percept) => percept.urgency > URGENCY_HIGH_THRESHOLD,
|
|
94
113
|
action: () => ({
|
|
95
114
|
subject: 'user',
|
|
96
115
|
predicate: 'values',
|
|
97
116
|
object: 'speed',
|
|
98
|
-
confidence:
|
|
117
|
+
confidence: CONFIDENCE_SPEED_INFERENCE,
|
|
99
118
|
}),
|
|
100
119
|
},
|
|
101
120
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"intention-generator.js","sourceRoot":"","sources":["../src/intention-generator.ts"],"names":[],"mappings":"AAUA,MAAM,oBAAoB,GAAkC;IAC1D,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,WAAW;CACtB,CAAA;AAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;AAExE;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAgB,EAChB,KAAqB;IAErB,MAAM,UAAU,GAAgB,
|
|
1
|
+
{"version":3,"file":"intention-generator.js","sourceRoot":"","sources":["../src/intention-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/reasoner.d.ts
CHANGED
|
@@ -22,6 +22,8 @@ export declare class Reasoner {
|
|
|
22
22
|
reason(percept: Percept): ReasoningResult;
|
|
23
23
|
/** Get current cognitive state snapshot. */
|
|
24
24
|
getState(): CognitiveState;
|
|
25
|
+
private inferBeliefs;
|
|
26
|
+
private buildCognitiveState;
|
|
25
27
|
private generateHypotheses;
|
|
26
28
|
private generateQuestions;
|
|
27
29
|
private calculateConfidence;
|
package/dist/reasoner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasoner.d.ts","sourceRoot":"","sources":["../src/reasoner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,eAAe,EACf,eAAe,
|
|
1
|
+
{"version":3,"file":"reasoner.d.ts","sourceRoot":"","sources":["../src/reasoner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,eAAe,EACf,eAAe,EAGhB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAenD;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IACnB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;gBAEjC,MAAM,GAAE,eAAoB;IAMxC;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe;IAgBzC,4CAA4C;IAC5C,QAAQ,IAAI,cAAc;IAY1B,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,mBAAmB;CAkB5B"}
|
package/dist/reasoner.js
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
import { WorldModel } from './world-model.js';
|
|
2
2
|
import { WorkingMemory } from './working-memory.js';
|
|
3
3
|
import { generateIntentions, applyInferenceRules } from './intention-generator.js';
|
|
4
|
+
const DEFAULT_MAX_WORKING_MEMORY = 50;
|
|
5
|
+
const CONFIDENCE_BASE = 0.5;
|
|
6
|
+
const CONFIDENCE_BELIEF_FACTOR = 0.02;
|
|
7
|
+
const CONFIDENCE_BELIEF_CAP = 0.2;
|
|
8
|
+
const CONFIDENCE_CLEAR_INTENTION_BOOST = 0.1;
|
|
9
|
+
const CONFIDENCE_FEW_INTENTIONS_BOOST = 0.1;
|
|
10
|
+
const CONFIDENCE_MAX = 0.95;
|
|
11
|
+
const HIGH_PRIORITY_THRESHOLD = 8;
|
|
12
|
+
const MAX_CONFLICTING_INTENTIONS = 3;
|
|
13
|
+
const MIN_BELIEFS_FOR_CONTEXT = 3;
|
|
14
|
+
const TARGET_PREVIEW_LENGTH = 50;
|
|
4
15
|
/**
|
|
5
16
|
* BDI Reasoning Engine.
|
|
6
17
|
*
|
|
@@ -17,44 +28,24 @@ export class Reasoner {
|
|
|
17
28
|
customRules;
|
|
18
29
|
constructor(config = {}) {
|
|
19
30
|
this.worldModel = new WorldModel();
|
|
20
|
-
this.workingMemory = new WorkingMemory(config.maxWorkingMemory ??
|
|
31
|
+
this.workingMemory = new WorkingMemory(config.maxWorkingMemory ?? DEFAULT_MAX_WORKING_MEMORY);
|
|
21
32
|
this.customRules = config.customRules ?? [];
|
|
22
33
|
}
|
|
23
34
|
/**
|
|
24
35
|
* Main reasoning loop: perceive → reason → decide.
|
|
25
36
|
*/
|
|
26
37
|
reason(percept) {
|
|
27
|
-
// 1. Update working memory
|
|
28
38
|
this.workingMemory.update(percept);
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
const candidates = applyInferenceRules(percept, beliefs, this.customRules);
|
|
32
|
-
// 3. Update world model with inferred beliefs
|
|
33
|
-
const newBeliefs = candidates.map((c) => this.worldModel.addBelief(c, 'inferred'));
|
|
34
|
-
// 4. Build cognitive state
|
|
35
|
-
const state = {
|
|
36
|
-
beliefs: this.worldModel.getBeliefs(),
|
|
37
|
-
goals: [],
|
|
38
|
-
workingMemory: this.workingMemory.getItems(),
|
|
39
|
-
currentIntentions: [],
|
|
40
|
-
emotionalContext: percept.emotionalTone,
|
|
41
|
-
attentionFocus: percept.entities.map((e) => e.value),
|
|
42
|
-
lastUpdated: new Date(),
|
|
43
|
-
};
|
|
44
|
-
// 5. Generate intentions
|
|
39
|
+
const newBeliefs = this.inferBeliefs(percept);
|
|
40
|
+
const state = this.buildCognitiveState(percept);
|
|
45
41
|
const intentions = generateIntentions(percept, state);
|
|
46
|
-
// 6. Generate hypotheses and questions
|
|
47
|
-
const hypotheses = this.generateHypotheses(percept);
|
|
48
|
-
const questionsToAsk = this.generateQuestions(percept, state);
|
|
49
|
-
// 7. Calculate confidence
|
|
50
|
-
const confidence = this.calculateConfidence(intentions, state);
|
|
51
42
|
return {
|
|
52
43
|
intentions,
|
|
53
44
|
newBeliefs,
|
|
54
|
-
hypotheses,
|
|
55
|
-
questionsToAsk,
|
|
45
|
+
hypotheses: this.generateHypotheses(percept),
|
|
46
|
+
questionsToAsk: this.generateQuestions(percept, state),
|
|
56
47
|
suggestedActions: [],
|
|
57
|
-
confidence,
|
|
48
|
+
confidence: this.calculateConfidence(intentions, state),
|
|
58
49
|
};
|
|
59
50
|
}
|
|
60
51
|
/** Get current cognitive state snapshot. */
|
|
@@ -69,34 +60,42 @@ export class Reasoner {
|
|
|
69
60
|
lastUpdated: new Date(),
|
|
70
61
|
};
|
|
71
62
|
}
|
|
63
|
+
inferBeliefs(percept) {
|
|
64
|
+
const beliefs = this.worldModel.getBeliefs();
|
|
65
|
+
const candidates = applyInferenceRules(percept, beliefs, this.customRules);
|
|
66
|
+
return candidates.map((c) => this.worldModel.addBelief(c, 'inferred'));
|
|
67
|
+
}
|
|
68
|
+
buildCognitiveState(percept) {
|
|
69
|
+
return {
|
|
70
|
+
beliefs: this.worldModel.getBeliefs(),
|
|
71
|
+
goals: [],
|
|
72
|
+
workingMemory: this.workingMemory.getItems(),
|
|
73
|
+
currentIntentions: [],
|
|
74
|
+
emotionalContext: percept.emotionalTone,
|
|
75
|
+
attentionFocus: percept.entities.map((e) => e.value),
|
|
76
|
+
lastUpdated: new Date(),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
72
79
|
generateHypotheses(percept) {
|
|
73
|
-
|
|
74
|
-
for (const need of percept.implicitNeeds) {
|
|
75
|
-
hypotheses.push(`User might need ${need}`);
|
|
76
|
-
}
|
|
77
|
-
return hypotheses;
|
|
80
|
+
return percept.implicitNeeds.map((need) => `User might need ${need}`);
|
|
78
81
|
}
|
|
79
82
|
generateQuestions(percept, state) {
|
|
80
83
|
const questions = [];
|
|
81
|
-
|
|
82
|
-
if (state.beliefs.length < 3 && percept.requestType !== 'greeting') {
|
|
84
|
+
if (state.beliefs.length < MIN_BELIEFS_FOR_CONTEXT && percept.requestType !== 'greeting') {
|
|
83
85
|
questions.push('What specific outcome are you looking for?');
|
|
84
86
|
}
|
|
85
87
|
return questions;
|
|
86
88
|
}
|
|
87
89
|
calculateConfidence(intentions, state) {
|
|
88
|
-
let confidence =
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if (intentions.length > 0 && intentions[0].priority >= 8) {
|
|
93
|
-
confidence += 0.1;
|
|
90
|
+
let confidence = CONFIDENCE_BASE;
|
|
91
|
+
confidence += Math.min(CONFIDENCE_BELIEF_CAP, state.beliefs.length * CONFIDENCE_BELIEF_FACTOR);
|
|
92
|
+
if (intentions.length > 0 && intentions[0].priority >= HIGH_PRIORITY_THRESHOLD) {
|
|
93
|
+
confidence += CONFIDENCE_CLEAR_INTENTION_BOOST;
|
|
94
94
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
confidence += 0.1;
|
|
95
|
+
if (intentions.length <= MAX_CONFLICTING_INTENTIONS) {
|
|
96
|
+
confidence += CONFIDENCE_FEW_INTENTIONS_BOOST;
|
|
98
97
|
}
|
|
99
|
-
return Math.min(
|
|
98
|
+
return Math.min(CONFIDENCE_MAX, confidence);
|
|
100
99
|
}
|
|
101
100
|
}
|
|
102
101
|
//# sourceMappingURL=reasoner.js.map
|
package/dist/reasoner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reasoner.js","sourceRoot":"","sources":["../src/reasoner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reasoner.js","sourceRoot":"","sources":["../src/reasoner.ts"],"names":[],"mappings":"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"}
|
package/dist/world-model.d.ts
CHANGED
|
@@ -15,6 +15,8 @@ export declare class WorldModel {
|
|
|
15
15
|
* If the belief already exists, performs Bayesian confidence update.
|
|
16
16
|
*/
|
|
17
17
|
addBelief(candidate: BeliefCandidate, source: BeliefSource): Belief;
|
|
18
|
+
private reinforceExistingBelief;
|
|
19
|
+
private createNewBelief;
|
|
18
20
|
/** Strengthen belief confidence. */
|
|
19
21
|
confirmBelief(beliefId: string): void;
|
|
20
22
|
/** Weaken belief confidence. Auto-deletes if below threshold. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world-model.d.ts","sourceRoot":"","sources":["../src/world-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"world-model.d.ts","sourceRoot":"","sources":["../src/world-model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAgBnF;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAAiC;IAEhD,+BAA+B;IAC/B,UAAU,IAAI,MAAM,EAAE;IAItB,wCAAwC;IACxC,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAI5C,gEAAgE;IAChE,YAAY,CACV,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS;IASrB;;;OAGG;IACH,SAAS,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,YAAY,GAAG,MAAM;IAcnE,OAAO,CAAC,uBAAuB;IAmB/B,OAAO,CAAC,eAAe;IAiBvB,oCAAoC;IACpC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUrC,iEAAiE;IACjE,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAwB,GAAG,IAAI;IAepE,gDAAgD;IAChD,UAAU,IAAI,IAAI;IAYlB,gCAAgC;IAChC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIpC,yBAAyB;IACzB,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,OAAO,CAAC,gBAAgB;CASzB"}
|
package/dist/world-model.js
CHANGED
|
@@ -4,6 +4,13 @@ const SOURCE_WEIGHTS = {
|
|
|
4
4
|
observed: 0.6,
|
|
5
5
|
inferred: 0.4,
|
|
6
6
|
};
|
|
7
|
+
const CONFIDENCE_MAX = 0.99;
|
|
8
|
+
const CONFIDENCE_MIN = 0.01;
|
|
9
|
+
const CONFIDENCE_CONFIRM_BOOST = 0.1;
|
|
10
|
+
const CONFIDENCE_DELETION_THRESHOLD = 0.1;
|
|
11
|
+
const DEFAULT_WEAKEN_AMOUNT = 0.15;
|
|
12
|
+
const DECAY_RATE_INFERRED = 0.1;
|
|
13
|
+
const DECAY_RATE_DEFAULT = 0.05;
|
|
7
14
|
/**
|
|
8
15
|
* Manages user beliefs (world model) with Bayesian confidence updates.
|
|
9
16
|
*/
|
|
@@ -30,15 +37,21 @@ export class WorldModel {
|
|
|
30
37
|
addBelief(candidate, source) {
|
|
31
38
|
const existing = this.findByTriple(candidate.subject, candidate.predicate, candidate.object);
|
|
32
39
|
if (existing) {
|
|
33
|
-
|
|
34
|
-
...existing,
|
|
35
|
-
confidence: this.updateConfidence(existing.confidence, candidate.confidence, source),
|
|
36
|
-
evidence: [...existing.evidence, `Updated at ${new Date().toISOString()}`],
|
|
37
|
-
updatedAt: new Date(),
|
|
38
|
-
};
|
|
39
|
-
this.beliefs.set(updated.id, updated);
|
|
40
|
-
return updated;
|
|
40
|
+
return this.reinforceExistingBelief(existing, candidate, source);
|
|
41
41
|
}
|
|
42
|
+
return this.createNewBelief(candidate, source);
|
|
43
|
+
}
|
|
44
|
+
reinforceExistingBelief(existing, candidate, source) {
|
|
45
|
+
const updated = {
|
|
46
|
+
...existing,
|
|
47
|
+
confidence: this.updateConfidence(existing.confidence, candidate.confidence, source),
|
|
48
|
+
evidence: [...existing.evidence, `Updated at ${new Date().toISOString()}`],
|
|
49
|
+
updatedAt: new Date(),
|
|
50
|
+
};
|
|
51
|
+
this.beliefs.set(updated.id, updated);
|
|
52
|
+
return updated;
|
|
53
|
+
}
|
|
54
|
+
createNewBelief(candidate, source) {
|
|
42
55
|
const now = new Date();
|
|
43
56
|
const belief = {
|
|
44
57
|
id: uid('belief'),
|
|
@@ -61,17 +74,17 @@ export class WorldModel {
|
|
|
61
74
|
return;
|
|
62
75
|
this.beliefs.set(beliefId, {
|
|
63
76
|
...belief,
|
|
64
|
-
confidence: Math.min(
|
|
77
|
+
confidence: Math.min(CONFIDENCE_MAX, belief.confidence + CONFIDENCE_CONFIRM_BOOST),
|
|
65
78
|
updatedAt: new Date(),
|
|
66
79
|
});
|
|
67
80
|
}
|
|
68
81
|
/** Weaken belief confidence. Auto-deletes if below threshold. */
|
|
69
|
-
weakenBelief(beliefId, amount =
|
|
82
|
+
weakenBelief(beliefId, amount = DEFAULT_WEAKEN_AMOUNT) {
|
|
70
83
|
const belief = this.beliefs.get(beliefId);
|
|
71
84
|
if (!belief)
|
|
72
85
|
return;
|
|
73
86
|
const newConfidence = belief.confidence - amount;
|
|
74
|
-
if (newConfidence <
|
|
87
|
+
if (newConfidence < CONFIDENCE_DELETION_THRESHOLD) {
|
|
75
88
|
this.beliefs.delete(beliefId);
|
|
76
89
|
}
|
|
77
90
|
else {
|
|
@@ -85,9 +98,9 @@ export class WorldModel {
|
|
|
85
98
|
/** Apply periodic decay to inferred beliefs. */
|
|
86
99
|
applyDecay() {
|
|
87
100
|
for (const [id, belief] of this.beliefs) {
|
|
88
|
-
const decayRate = belief.source === 'inferred' ?
|
|
101
|
+
const decayRate = belief.source === 'inferred' ? DECAY_RATE_INFERRED : DECAY_RATE_DEFAULT;
|
|
89
102
|
const newConfidence = belief.confidence * (1 - decayRate);
|
|
90
|
-
if (newConfidence <
|
|
103
|
+
if (newConfidence < CONFIDENCE_DELETION_THRESHOLD) {
|
|
91
104
|
this.beliefs.delete(id);
|
|
92
105
|
}
|
|
93
106
|
else {
|
|
@@ -109,7 +122,7 @@ export class WorldModel {
|
|
|
109
122
|
updateConfidence(prior, newEvidence, source) {
|
|
110
123
|
const weight = SOURCE_WEIGHTS[source];
|
|
111
124
|
const updated = prior * (1 - weight) + newEvidence * weight;
|
|
112
|
-
return Math.min(
|
|
125
|
+
return Math.min(CONFIDENCE_MAX, Math.max(CONFIDENCE_MIN, updated));
|
|
113
126
|
}
|
|
114
127
|
}
|
|
115
128
|
//# sourceMappingURL=world-model.js.map
|
package/dist/world-model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world-model.js","sourceRoot":"","sources":["../src/world-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAA;AAG5C,MAAM,cAAc,GAAiC;IACnD,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;CACd,CAAA;AAED;;GAEG;AACH,MAAM,OAAO,UAAU;IACb,OAAO,GAAwB,IAAI,GAAG,EAAE,CAAA;IAEhD,+BAA+B;IAC/B,UAAU;QACR,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,wCAAwC;IACxC,eAAe,CAAC,SAAiB;QAC/B,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA;IACnE,CAAC;IAED,gEAAgE;IAChE,YAAY,CACV,OAAe,EACf,SAAiB,EACjB,MAAc;QAEd,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,KAAK,OAAO;YACrB,CAAC,CAAC,SAAS,KAAK,SAAS;YACzB,CAAC,CAAC,MAAM,KAAK,MAAM,CACtB,CAAA;IACH,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,SAA0B,EAAE,MAAoB;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAChC,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,MAAM,CACjB,CAAA;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,OAAO,GAAW;
|
|
1
|
+
{"version":3,"file":"world-model.js","sourceRoot":"","sources":["../src/world-model.ts"],"names":[],"mappings":"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"}
|