velixar-mcp-server 0.2.4 → 1.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/README.md +120 -64
- package/dist/api.d.ts +64 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +405 -0
- package/dist/api.js.map +1 -0
- package/dist/errors.d.ts +19 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +52 -0
- package/dist/errors.js.map +1 -0
- package/dist/justify.d.ts +9 -0
- package/dist/justify.d.ts.map +1 -0
- package/dist/justify.js +114 -0
- package/dist/justify.js.map +1 -0
- package/dist/prompts.d.ts +88 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +693 -0
- package/dist/prompts.js.map +1 -0
- package/dist/resources.d.ts +25 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +278 -0
- package/dist/resources.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +392 -0
- package/dist/server.js.map +1 -0
- package/dist/simulation/personas.d.ts +41 -0
- package/dist/simulation/personas.d.ts.map +1 -0
- package/dist/simulation/personas.js +173 -0
- package/dist/simulation/personas.js.map +1 -0
- package/dist/simulation/report.d.ts +28 -0
- package/dist/simulation/report.d.ts.map +1 -0
- package/dist/simulation/report.js +105 -0
- package/dist/simulation/report.js.map +1 -0
- package/dist/simulation/runner.d.ts +63 -0
- package/dist/simulation/runner.d.ts.map +1 -0
- package/dist/simulation/runner.js +167 -0
- package/dist/simulation/runner.js.map +1 -0
- package/dist/temporal_merge.d.ts +70 -0
- package/dist/temporal_merge.d.ts.map +1 -0
- package/dist/temporal_merge.js +258 -0
- package/dist/temporal_merge.js.map +1 -0
- package/dist/tools/clairvoyance.d.ts +9 -0
- package/dist/tools/clairvoyance.d.ts.map +1 -0
- package/dist/tools/clairvoyance.js +321 -0
- package/dist/tools/clairvoyance.js.map +1 -0
- package/dist/tools/cognitive.d.ts +10 -0
- package/dist/tools/cognitive.d.ts.map +1 -0
- package/dist/tools/cognitive.js +462 -0
- package/dist/tools/cognitive.js.map +1 -0
- package/dist/tools/construction.d.ts +9 -0
- package/dist/tools/construction.d.ts.map +1 -0
- package/dist/tools/construction.js +350 -0
- package/dist/tools/construction.js.map +1 -0
- package/dist/tools/graph.d.ts +14 -0
- package/dist/tools/graph.d.ts.map +1 -0
- package/dist/tools/graph.js +263 -0
- package/dist/tools/graph.js.map +1 -0
- package/dist/tools/graph_sanitizer.d.ts +24 -0
- package/dist/tools/graph_sanitizer.d.ts.map +1 -0
- package/dist/tools/graph_sanitizer.js +79 -0
- package/dist/tools/graph_sanitizer.js.map +1 -0
- package/dist/tools/lifecycle.d.ts +9 -0
- package/dist/tools/lifecycle.d.ts.map +1 -0
- package/dist/tools/lifecycle.js +1091 -0
- package/dist/tools/lifecycle.js.map +1 -0
- package/dist/tools/livedata.d.ts +9 -0
- package/dist/tools/livedata.d.ts.map +1 -0
- package/dist/tools/livedata.js +222 -0
- package/dist/tools/livedata.js.map +1 -0
- package/dist/tools/memory.d.ts +10 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +275 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/recall.d.ts +9 -0
- package/dist/tools/recall.d.ts.map +1 -0
- package/dist/tools/recall.js +206 -0
- package/dist/tools/recall.js.map +1 -0
- package/dist/tools/retrieval.d.ts +9 -0
- package/dist/tools/retrieval.d.ts.map +1 -0
- package/dist/tools/retrieval.js +338 -0
- package/dist/tools/retrieval.js.map +1 -0
- package/dist/tools/system.d.ts +12 -0
- package/dist/tools/system.d.ts.map +1 -0
- package/dist/tools/system.js +228 -0
- package/dist/tools/system.js.map +1 -0
- package/dist/types.d.ts +234 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/validate.d.ts +79 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +174 -0
- package/dist/validate.js.map +1 -0
- package/dist/validate_retrieval.d.ts +33 -0
- package/dist/validate_retrieval.d.ts.map +1 -0
- package/dist/validate_retrieval.js +97 -0
- package/dist/validate_retrieval.js.map +1 -0
- package/package.json +22 -6
- package/server.json +2 -2
- package/.github/workflows/ci.yml +0 -18
- package/.mcpregistry_github_token +0 -1
- package/.mcpregistry_registry_token +0 -1
- package/src/index.js +0 -262
- package/tests/server.test.js +0 -193
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cognitive.d.ts","sourceRoot":"","sources":["../../src/tools/cognitive.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AASzD,wBAAgB,wBAAwB,IAAI,IAAI,CAAqC;AAErF,eAAO,MAAM,cAAc,EAAE,IAAI,EAiEhC,CAAC;AAEF,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAyd9C"}
|
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
// ── Cognitive Tools ──
|
|
2
|
+
// velixar_identity, velixar_contradictions, velixar_timeline, velixar_patterns
|
|
3
|
+
import { normalizeMemory, wrapResponse } from '../api.js';
|
|
4
|
+
import { justify } from '../justify.js';
|
|
5
|
+
import { validateIdentityResponse, validateSearchResponse } from '../validate.js';
|
|
6
|
+
// H10/H11: Track identity freshness
|
|
7
|
+
let _lastIdentityUpdate = 0;
|
|
8
|
+
let _toolCallsSinceIdentityUpdate = 0;
|
|
9
|
+
const IDENTITY_STALE_CALLS = 20; // suggest refresh after this many tool calls
|
|
10
|
+
export function trackToolCallForIdentity() { _toolCallsSinceIdentityUpdate++; }
|
|
11
|
+
export const cognitiveTools = [
|
|
12
|
+
{
|
|
13
|
+
name: 'velixar_identity',
|
|
14
|
+
description: 'User profile — preferences, expertise, communication style, recurring goals, stable constraints. ' +
|
|
15
|
+
'Supports get (default), store, update, delete, list, and history actions. Workspace-scoped.',
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: 'object',
|
|
18
|
+
properties: {
|
|
19
|
+
action: { type: 'string', enum: ['get', 'store', 'update', 'delete', 'list', 'history'], description: 'Action (default: get)' },
|
|
20
|
+
field: { type: 'string', description: 'Identity field to store/update/delete/history (e.g. "expertise", "communication_style")' },
|
|
21
|
+
value: { description: 'Value to store/update (string or array of strings)' },
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'velixar_contradictions',
|
|
27
|
+
description: 'Surface conflicting beliefs, preferences, or facts. Supports resolve action to mark contradictions as resolved. ' +
|
|
28
|
+
'Returns pairs of contradicting statements with severity and linked memory IDs.',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {
|
|
32
|
+
status: { type: 'string', enum: ['open', 'resolved', 'all'], description: 'Filter by status (default: open)' },
|
|
33
|
+
topic: { type: 'string', description: 'Filter contradictions by topic (semantic relevance)' },
|
|
34
|
+
severity_min: { type: 'number', description: 'Minimum severity threshold (0-1)' },
|
|
35
|
+
action: { type: 'string', enum: ['list', 'resolve'], description: 'Action (default: list)' },
|
|
36
|
+
contradiction_id: { type: 'string', description: 'Contradiction ID to resolve (required for resolve action)' },
|
|
37
|
+
resolution: { type: 'string', description: 'Resolution note (required for resolve action)' },
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
name: 'velixar_timeline',
|
|
43
|
+
description: 'Show how a topic, entity, or belief evolved over time. ' +
|
|
44
|
+
'Supports date range filtering and summary mode for long histories.',
|
|
45
|
+
inputSchema: {
|
|
46
|
+
type: 'object',
|
|
47
|
+
properties: {
|
|
48
|
+
topic: { type: 'string', description: 'Topic or entity to trace' },
|
|
49
|
+
memory_id: { type: 'string', description: 'Starting memory ID (alternative to topic)' },
|
|
50
|
+
limit: { type: 'number', description: 'Max entries (default 10)' },
|
|
51
|
+
before: { type: 'string', description: 'ISO timestamp — only return entries before this time' },
|
|
52
|
+
after: { type: 'string', description: 'ISO timestamp — only return entries after this time' },
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'velixar_patterns',
|
|
58
|
+
description: 'Surface recurring problem/solution motifs from memory. ' +
|
|
59
|
+
'Omit topic to return all detected patterns. Supports dismiss action.',
|
|
60
|
+
inputSchema: {
|
|
61
|
+
type: 'object',
|
|
62
|
+
properties: {
|
|
63
|
+
topic: { type: 'string', description: 'Topic to find patterns for (optional — omit for all patterns)' },
|
|
64
|
+
limit: { type: 'number', description: 'Max results (default 5)' },
|
|
65
|
+
min_confidence: { type: 'number', description: 'Minimum confidence threshold (0-1)' },
|
|
66
|
+
evidence: { type: 'boolean', description: 'Include supporting memory IDs (default false)' },
|
|
67
|
+
action: { type: 'string', enum: ['list', 'dismiss'], description: 'Action (default: list)' },
|
|
68
|
+
pattern_id: { type: 'string', description: 'Pattern ID to dismiss (required for dismiss action)' },
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
];
|
|
73
|
+
export async function handleCognitiveTool(name, args, api, config) {
|
|
74
|
+
if (name === 'velixar_identity') {
|
|
75
|
+
const action = args.action || 'get';
|
|
76
|
+
// Build 4.1: delete — remove an identity field
|
|
77
|
+
if (action === 'delete') {
|
|
78
|
+
const field = args.field;
|
|
79
|
+
if (!field)
|
|
80
|
+
throw new Error('field required for delete');
|
|
81
|
+
// Search for identity memories with this field tag, then delete them
|
|
82
|
+
const params = new URLSearchParams({ q: `[identity:${field}]`, user_id: config.userId, limit: '10' });
|
|
83
|
+
const raw = await api.get(`/memory/search?${params}`, true);
|
|
84
|
+
const validated = validateSearchResponse(raw, '/memory/search');
|
|
85
|
+
const toDelete = validated.memories.filter(m => m.tags?.includes(`identity:${field}`));
|
|
86
|
+
for (const m of toDelete) {
|
|
87
|
+
await api.delete(`/memory/${m.id}`).catch(() => { });
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
text: JSON.stringify(wrapResponse({ action: 'delete', field, deleted_count: toDelete.length, message: `Identity field "${field}" deleted (${toDelete.length} memories removed)` }, config)),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
// Build 4.1: list — return all stored identity field names
|
|
94
|
+
if (action === 'list') {
|
|
95
|
+
const params = new URLSearchParams({ q: '[identity:', user_id: config.userId, limit: '50' });
|
|
96
|
+
const raw = await api.get(`/memory/search?${params}`, true);
|
|
97
|
+
const validated = validateSearchResponse(raw, '/memory/search');
|
|
98
|
+
const fields = new Set();
|
|
99
|
+
for (const m of validated.memories) {
|
|
100
|
+
for (const tag of (m.tags || [])) {
|
|
101
|
+
if (tag.startsWith('identity:'))
|
|
102
|
+
fields.add(tag.slice(9));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
text: JSON.stringify(wrapResponse({ action: 'list', fields: [...fields], count: fields.size }, config, { data_absent: fields.size === 0 })),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// Build 4.1: history — return evolution of a specific field over time
|
|
110
|
+
if (action === 'history') {
|
|
111
|
+
const field = args.field;
|
|
112
|
+
if (!field)
|
|
113
|
+
throw new Error('field required for history');
|
|
114
|
+
const params = new URLSearchParams({ q: `[identity:${field}]`, user_id: config.userId, limit: '20' });
|
|
115
|
+
const raw = await api.get(`/memory/search?${params}`, true);
|
|
116
|
+
const validated = validateSearchResponse(raw, '/memory/search');
|
|
117
|
+
const history = validated.memories
|
|
118
|
+
.filter(m => m.tags?.includes(`identity:${field}`))
|
|
119
|
+
.map(m => ({
|
|
120
|
+
id: m.id,
|
|
121
|
+
value: m.content.replace(`[identity:${field}] `, ''),
|
|
122
|
+
timestamp: m.created_at || '',
|
|
123
|
+
}))
|
|
124
|
+
.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
|
|
125
|
+
return {
|
|
126
|
+
text: JSON.stringify(wrapResponse({ action: 'history', field, entries: history, count: history.length }, config, { data_absent: history.length === 0 })),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// Store or update: persist identity facet as a tagged memory
|
|
130
|
+
if (action === 'store' || action === 'update') {
|
|
131
|
+
const field = args.field;
|
|
132
|
+
const value = args.value;
|
|
133
|
+
if (!field || value === undefined)
|
|
134
|
+
throw new Error('field and value required for store/update');
|
|
135
|
+
// Store as semantic memory tagged with identity field
|
|
136
|
+
const content = `[identity:${field}] ${typeof value === 'string' ? value : JSON.stringify(value)}`;
|
|
137
|
+
await api.post('/memory', {
|
|
138
|
+
content,
|
|
139
|
+
user_id: config.userId,
|
|
140
|
+
tier: 0, // pinned — identity is durable
|
|
141
|
+
tags: ['identity', `identity:${field}`],
|
|
142
|
+
author: { type: 'user' },
|
|
143
|
+
});
|
|
144
|
+
// H10: Track identity update
|
|
145
|
+
_lastIdentityUpdate = Date.now();
|
|
146
|
+
_toolCallsSinceIdentityUpdate = 0;
|
|
147
|
+
return {
|
|
148
|
+
text: JSON.stringify(wrapResponse({ action, field, value, message: `Identity field "${field}" ${action}d` }, config)),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
// Get: fetch synthesized identity profile
|
|
152
|
+
const raw = await api.get('/memory/identity', true);
|
|
153
|
+
const result = validateIdentityResponse(raw, '/memory/identity');
|
|
154
|
+
const identity = result.identity || {};
|
|
155
|
+
const profile = {
|
|
156
|
+
preferences: identity.preferences || {},
|
|
157
|
+
expertise: identity.expertise || [],
|
|
158
|
+
communication_style: identity.communication_style,
|
|
159
|
+
recurring_goals: identity.recurring_goals || [],
|
|
160
|
+
stable_constraints: identity.stable_constraints || [],
|
|
161
|
+
shifts: (result.shifts || []).map(s => ({
|
|
162
|
+
field: s.field,
|
|
163
|
+
from: s.from,
|
|
164
|
+
to: s.to,
|
|
165
|
+
timestamp: s.timestamp,
|
|
166
|
+
})),
|
|
167
|
+
contradictions: (result.contradictions || []).map(c => ({
|
|
168
|
+
existing: c.existing,
|
|
169
|
+
new: c.new,
|
|
170
|
+
severity: c.severity,
|
|
171
|
+
})),
|
|
172
|
+
snapshot_count: result.snapshot_count || 0,
|
|
173
|
+
workspace_scope: 'workspace_local',
|
|
174
|
+
// H10: Identity staleness detection
|
|
175
|
+
stale_identity: _lastIdentityUpdate > 0 && _toolCallsSinceIdentityUpdate > IDENTITY_STALE_CALLS,
|
|
176
|
+
// H11: Refresh hint
|
|
177
|
+
...(_toolCallsSinceIdentityUpdate > IDENTITY_STALE_CALLS
|
|
178
|
+
? { refresh_hint: 'Identity has not been updated recently. Consider storing new preferences or expertise if they have changed.' }
|
|
179
|
+
: {}),
|
|
180
|
+
justification: justify('User identity profile synthesized from stored preferences and behavioral patterns', Object.keys(identity).length > 0 ? 'synthesized_summary' : 'hypothesis', [], config.workspaceId, { contradictionCount: (result.contradictions || []).length }),
|
|
181
|
+
};
|
|
182
|
+
return {
|
|
183
|
+
text: JSON.stringify(wrapResponse(profile, config, {
|
|
184
|
+
data_absent: Object.keys(identity).length === 0,
|
|
185
|
+
})),
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
if (name === 'velixar_contradictions') {
|
|
189
|
+
const action = args.action || 'list';
|
|
190
|
+
// Build 4.2: resolve action
|
|
191
|
+
if (action === 'resolve') {
|
|
192
|
+
const contradictionId = args.contradiction_id;
|
|
193
|
+
const resolution = args.resolution;
|
|
194
|
+
if (!contradictionId || !resolution)
|
|
195
|
+
throw new Error('contradiction_id and resolution required for resolve action');
|
|
196
|
+
try {
|
|
197
|
+
await api.post(`/exocortex/contradictions/${contradictionId}`, {
|
|
198
|
+
resolution,
|
|
199
|
+
status: 'resolved',
|
|
200
|
+
});
|
|
201
|
+
return {
|
|
202
|
+
text: JSON.stringify(wrapResponse({ action: 'resolve', contradiction_id: contradictionId, resolution, message: 'Contradiction resolved' }, config)),
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
// Fallback: store resolution as a memory linking the contradiction
|
|
207
|
+
await api.post('/memory', {
|
|
208
|
+
content: `[contradiction-resolved:${contradictionId}] ${resolution}`,
|
|
209
|
+
user_id: config.userId,
|
|
210
|
+
tags: ['contradiction-resolution', `contradiction:${contradictionId}`],
|
|
211
|
+
author: { type: 'user' },
|
|
212
|
+
});
|
|
213
|
+
return {
|
|
214
|
+
text: JSON.stringify(wrapResponse({ action: 'resolve', contradiction_id: contradictionId, resolution, message: 'Resolution stored as memory (backend resolve endpoint unavailable)', _fallback: true }, config)),
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
const status = args.status || 'open';
|
|
219
|
+
const raw = await api.get(`/exocortex/contradictions?status=${status}`, true);
|
|
220
|
+
const rObj = (raw && typeof raw === 'object') ? raw : {};
|
|
221
|
+
const rawContradictions = Array.isArray(rObj.contradictions) ? rObj.contradictions : [];
|
|
222
|
+
// Temporal supersession threshold: if two conflicting memories are >7 days apart,
|
|
223
|
+
// classify as "superseded" (temporal update) rather than "contradiction"
|
|
224
|
+
const SUPERSESSION_DAYS = 7;
|
|
225
|
+
const items = rawContradictions.map((c) => {
|
|
226
|
+
const detectedA = String(c.memory_a_created_at || c.created_at_a || '');
|
|
227
|
+
const detectedB = String(c.memory_b_created_at || c.created_at_b || '');
|
|
228
|
+
let classification = 'contradiction';
|
|
229
|
+
if (detectedA && detectedB) {
|
|
230
|
+
const timeA = new Date(detectedA).getTime();
|
|
231
|
+
const timeB = new Date(detectedB).getTime();
|
|
232
|
+
if (!isNaN(timeA) && !isNaN(timeB)) {
|
|
233
|
+
const daysDiff = Math.abs(timeB - timeA) / (1000 * 60 * 60 * 24);
|
|
234
|
+
if (daysDiff > SUPERSESSION_DAYS)
|
|
235
|
+
classification = 'superseded';
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return {
|
|
239
|
+
id: String(c.id || ''),
|
|
240
|
+
statement_a: String(c.statement_a || c.memory_a_content || ''),
|
|
241
|
+
statement_b: String(c.statement_b || c.memory_b_content || ''),
|
|
242
|
+
memory_id_a: String(c.memory_a_id || ''),
|
|
243
|
+
memory_id_b: String(c.memory_b_id || ''),
|
|
244
|
+
severity: String(c.severity || 'medium'),
|
|
245
|
+
confidence: typeof c.confidence === 'number' ? c.confidence : 0.5,
|
|
246
|
+
explanation: String(c.explanation || c.description || ''),
|
|
247
|
+
workspace_id: config.workspaceId,
|
|
248
|
+
detected_at: String(c.detected_at || c.created_at || ''),
|
|
249
|
+
classification,
|
|
250
|
+
};
|
|
251
|
+
});
|
|
252
|
+
const activeContradictions = items.filter(i => i.classification === 'contradiction');
|
|
253
|
+
const superseded = items.filter(i => i.classification === 'superseded');
|
|
254
|
+
// Phase 0 filters: topic and severity
|
|
255
|
+
let filtered = activeContradictions;
|
|
256
|
+
if (args.topic) {
|
|
257
|
+
const topicLower = args.topic.toLowerCase();
|
|
258
|
+
filtered = filtered.filter(i => i.statement_a.toLowerCase().includes(topicLower) ||
|
|
259
|
+
i.statement_b.toLowerCase().includes(topicLower) ||
|
|
260
|
+
i.explanation.toLowerCase().includes(topicLower));
|
|
261
|
+
}
|
|
262
|
+
if (args.severity_min !== undefined) {
|
|
263
|
+
const severityMap = { low: 0.25, medium: 0.5, high: 0.75, critical: 1.0 };
|
|
264
|
+
const minSev = args.severity_min;
|
|
265
|
+
filtered = filtered.filter(i => (severityMap[i.severity] ?? i.confidence) >= minSev);
|
|
266
|
+
}
|
|
267
|
+
return {
|
|
268
|
+
text: JSON.stringify(wrapResponse({
|
|
269
|
+
conflict_summary: `${filtered.length} active contradiction${filtered.length !== 1 ? 's' : ''}, ${superseded.length} superseded (temporal updates)`,
|
|
270
|
+
evidence: filtered,
|
|
271
|
+
superseded,
|
|
272
|
+
likely_interpretation: filtered.length > 0
|
|
273
|
+
? `${filtered.filter(i => i.severity === 'high').length} high-severity conflicts require attention`
|
|
274
|
+
: 'No active contradictions — beliefs are consistent',
|
|
275
|
+
next_step: filtered.length > 0
|
|
276
|
+
? 'Use velixar_inspect on linked memory IDs to understand each side, then velixar_timeline to trace belief evolution'
|
|
277
|
+
: null,
|
|
278
|
+
count: filtered.length,
|
|
279
|
+
superseded_count: superseded.length,
|
|
280
|
+
justification: justify(`${filtered.length} contradiction${filtered.length !== 1 ? 's' : ''} detected, ${superseded.length} classified as temporal supersession`, filtered.length > 0 ? 'retrieved_fact' : 'synthesized_summary', [], config.workspaceId, { contradictionCount: filtered.length }),
|
|
281
|
+
}, config, { data_absent: items.length === 0, contradictions_present: filtered.length > 0 })),
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
if (name === 'velixar_timeline') {
|
|
285
|
+
const topic = args.topic;
|
|
286
|
+
const memoryId = args.memory_id;
|
|
287
|
+
const limit = Math.min(args.limit || 10, 50);
|
|
288
|
+
if (!topic && !memoryId)
|
|
289
|
+
throw new Error('Either topic or memory_id required');
|
|
290
|
+
// Use search to find temporally-related memories, sorted by time
|
|
291
|
+
if (topic) {
|
|
292
|
+
// H14: Synonym expansion — query graph for entity aliases to broaden search
|
|
293
|
+
let expandedTerms = [topic];
|
|
294
|
+
try {
|
|
295
|
+
const graphResult = await api.post('/graph/traverse', { entity: topic, max_hops: 1 });
|
|
296
|
+
const gObj = (graphResult && typeof graphResult === 'object') ? graphResult : {};
|
|
297
|
+
const gNodes = Array.isArray(gObj.nodes) ? gObj.nodes : [];
|
|
298
|
+
if (gNodes.length) {
|
|
299
|
+
const aliases = gNodes
|
|
300
|
+
.filter((n) => String(n.relationship || '').match(/alias|also_known_as|synonym/i))
|
|
301
|
+
.map((n) => String(n.label || ''))
|
|
302
|
+
.filter(Boolean);
|
|
303
|
+
if (aliases.length)
|
|
304
|
+
expandedTerms.push(...aliases.slice(0, 3));
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
catch { /* graph unavailable — proceed with original term */ }
|
|
308
|
+
// H13: Search with expanded terms for better recall
|
|
309
|
+
const searchQuery = expandedTerms.join(' OR ');
|
|
310
|
+
const params = new URLSearchParams({ q: searchQuery, user_id: config.userId, limit: String(limit) });
|
|
311
|
+
const raw = await api.get(`/memory/search?${params}`, true);
|
|
312
|
+
// H13: Also fetch graph relationships for the entity
|
|
313
|
+
let relatedEntities = [];
|
|
314
|
+
try {
|
|
315
|
+
const graphResult = await api.post('/graph/traverse', { entity: topic, max_hops: 1 });
|
|
316
|
+
const gObj = (graphResult && typeof graphResult === 'object') ? graphResult : {};
|
|
317
|
+
const gEdges = Array.isArray(gObj.edges) ? gObj.edges : [];
|
|
318
|
+
relatedEntities = gEdges.map((e) => ({
|
|
319
|
+
label: String(e.target || ''),
|
|
320
|
+
relationship: String(e.relationship || 'related'),
|
|
321
|
+
})).slice(0, 10);
|
|
322
|
+
}
|
|
323
|
+
catch { /* graph unavailable */ }
|
|
324
|
+
const result = validateSearchResponse(raw, '/memory/search');
|
|
325
|
+
const entries = result.memories
|
|
326
|
+
.map(m => {
|
|
327
|
+
const mem = normalizeMemory(m);
|
|
328
|
+
mem.workspace_id = config.workspaceId;
|
|
329
|
+
return {
|
|
330
|
+
id: mem.id,
|
|
331
|
+
content: mem.content,
|
|
332
|
+
summary: mem.content.slice(0, 120),
|
|
333
|
+
timestamp: mem.provenance.created_at,
|
|
334
|
+
memory_type: mem.memory_type,
|
|
335
|
+
chain_position: 0,
|
|
336
|
+
tags: mem.tags,
|
|
337
|
+
previous_memory_id: m.previous_memory_id || null,
|
|
338
|
+
};
|
|
339
|
+
})
|
|
340
|
+
// Prefer episodic memories (event-specific), then sort by time
|
|
341
|
+
.sort((a, b) => {
|
|
342
|
+
if (a.memory_type === 'episodic' && b.memory_type !== 'episodic')
|
|
343
|
+
return -1;
|
|
344
|
+
if (a.memory_type !== 'episodic' && b.memory_type === 'episodic')
|
|
345
|
+
return 1;
|
|
346
|
+
return a.timestamp.localeCompare(b.timestamp);
|
|
347
|
+
});
|
|
348
|
+
// Timeline output form per strategy memo
|
|
349
|
+
const changePoints = entries.filter((e, i) => i > 0 && e.tags.some(t => entries[i - 1].tags.indexOf(t) === -1));
|
|
350
|
+
return {
|
|
351
|
+
text: JSON.stringify(wrapResponse({
|
|
352
|
+
phases: entries,
|
|
353
|
+
key_change_points: changePoints.map(e => ({ id: e.id, summary: e.summary, timestamp: e.timestamp })),
|
|
354
|
+
current_state: entries.length > 0 ? entries[entries.length - 1].summary : null,
|
|
355
|
+
uncertainty: entries.length < 3 ? 'Limited data — timeline may be incomplete' : null,
|
|
356
|
+
count: entries.length,
|
|
357
|
+
// H13: Related entities from knowledge graph
|
|
358
|
+
...(relatedEntities.length ? { related_entities: relatedEntities } : {}),
|
|
359
|
+
// H14: Search terms used (including synonyms)
|
|
360
|
+
...(expandedTerms.length > 1 ? { search_expanded: expandedTerms } : {}),
|
|
361
|
+
}, config, { data_absent: entries.length === 0 })),
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
// Start from a specific memory and follow chain links
|
|
365
|
+
const memResult = await api.get(`/memory/${memoryId}`, true);
|
|
366
|
+
if (!memResult || typeof memResult !== 'object' || !memResult.memory)
|
|
367
|
+
throw new Error(`Memory ${memoryId} not found`);
|
|
368
|
+
const rawMem = memResult.memory;
|
|
369
|
+
const normalized = normalizeMemory({
|
|
370
|
+
id: String(rawMem.id || ''),
|
|
371
|
+
content: String(rawMem.content || ''),
|
|
372
|
+
score: typeof rawMem.score === 'number' ? rawMem.score : undefined,
|
|
373
|
+
tier: typeof rawMem.tier === 'number' ? rawMem.tier : undefined,
|
|
374
|
+
type: typeof rawMem.type === 'string' ? rawMem.type : null,
|
|
375
|
+
tags: Array.isArray(rawMem.tags) ? rawMem.tags.filter((t) => typeof t === 'string') : [],
|
|
376
|
+
salience: typeof rawMem.salience === 'number' ? rawMem.salience : undefined,
|
|
377
|
+
created_at: typeof rawMem.created_at === 'string' ? rawMem.created_at : undefined,
|
|
378
|
+
updated_at: typeof rawMem.updated_at === 'string' ? rawMem.updated_at : undefined,
|
|
379
|
+
previous_memory_id: typeof rawMem.previous_memory_id === 'string' ? rawMem.previous_memory_id : null,
|
|
380
|
+
});
|
|
381
|
+
normalized.workspace_id = config.workspaceId;
|
|
382
|
+
return {
|
|
383
|
+
text: JSON.stringify(wrapResponse({
|
|
384
|
+
entries: [{
|
|
385
|
+
id: normalized.id,
|
|
386
|
+
content: normalized.content,
|
|
387
|
+
summary: normalized.content.slice(0, 120),
|
|
388
|
+
timestamp: normalized.provenance.created_at,
|
|
389
|
+
memory_type: normalized.memory_type,
|
|
390
|
+
chain_position: 0,
|
|
391
|
+
tags: normalized.tags,
|
|
392
|
+
}],
|
|
393
|
+
count: 1,
|
|
394
|
+
}, config)),
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
if (name === 'velixar_patterns') {
|
|
398
|
+
const action = args.action || 'list';
|
|
399
|
+
// Build 4.3: dismiss action
|
|
400
|
+
if (action === 'dismiss') {
|
|
401
|
+
const patternId = args.pattern_id;
|
|
402
|
+
if (!patternId)
|
|
403
|
+
throw new Error('pattern_id required for dismiss action');
|
|
404
|
+
try {
|
|
405
|
+
await api.post('/patterns/dismiss', { pattern_id: patternId });
|
|
406
|
+
}
|
|
407
|
+
catch {
|
|
408
|
+
// Fallback: store dismissal as memory
|
|
409
|
+
await api.post('/memory', {
|
|
410
|
+
content: `[pattern-dismissed:${patternId}]`,
|
|
411
|
+
user_id: config.userId,
|
|
412
|
+
tags: ['pattern-dismissed', `pattern:${patternId}`],
|
|
413
|
+
author: { type: 'user' },
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
return {
|
|
417
|
+
text: JSON.stringify(wrapResponse({ action: 'dismiss', pattern_id: patternId, message: 'Pattern dismissed' }, config)),
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
const includeEvidence = args.evidence === true;
|
|
421
|
+
const params = new URLSearchParams({ q: args.topic });
|
|
422
|
+
if (args.limit)
|
|
423
|
+
params.set('limit', String(args.limit));
|
|
424
|
+
const raw = await api.get(`/patterns/suggest?${params}`, true);
|
|
425
|
+
const rObj = (raw && typeof raw === 'object') ? raw : {};
|
|
426
|
+
const rawPatterns = Array.isArray(rObj.patterns) ? rObj.patterns : [];
|
|
427
|
+
const patterns = rawPatterns.map((p) => {
|
|
428
|
+
const occurrences = p.occurrence_count || p.frequency || 0;
|
|
429
|
+
const memoryIds = p.supporting_memories || [];
|
|
430
|
+
const rawConfidence = p.confidence ?? 0.5;
|
|
431
|
+
// H18: Confidence decay — fewer supporting memories or old patterns get reduced confidence
|
|
432
|
+
let adjustedConfidence = rawConfidence;
|
|
433
|
+
if (occurrences < 3)
|
|
434
|
+
adjustedConfidence *= 0.7; // weak support
|
|
435
|
+
if (occurrences < 2)
|
|
436
|
+
adjustedConfidence *= 0.5; // very weak
|
|
437
|
+
// H19: Causal indicator — check if supporting memories have temporal ordering
|
|
438
|
+
const patternType = (p.temporal_order || p.ordered) ? 'temporal' : 'co-occurrence';
|
|
439
|
+
return {
|
|
440
|
+
name: p.name || p.id,
|
|
441
|
+
problem_signature: p.problem || p.context || '',
|
|
442
|
+
prior_solution: p.solution || '',
|
|
443
|
+
confidence: Math.round(adjustedConfidence * 100) / 100,
|
|
444
|
+
confidence_raw: rawConfidence,
|
|
445
|
+
// Build 4.3: conditionally include evidence
|
|
446
|
+
...(includeEvidence ? { supporting_memories: memoryIds } : {}),
|
|
447
|
+
occurrence_count: occurrences,
|
|
448
|
+
pattern_type: patternType, // H19
|
|
449
|
+
...(adjustedConfidence < rawConfidence ? { confidence_decay_reason: `Only ${occurrences} supporting observation${occurrences !== 1 ? 's' : ''}` } : {}),
|
|
450
|
+
};
|
|
451
|
+
});
|
|
452
|
+
return {
|
|
453
|
+
text: JSON.stringify(wrapResponse({
|
|
454
|
+
patterns,
|
|
455
|
+
count: patterns.length,
|
|
456
|
+
justification: justify(`${patterns.length} recurring pattern${patterns.length !== 1 ? 's' : ''} identified`, patterns.length > 0 ? 'pattern_inference' : 'hypothesis', [], config.workspaceId),
|
|
457
|
+
}, config, { data_absent: patterns.length === 0 })),
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
throw new Error(`Unknown cognitive tool: ${name}`);
|
|
461
|
+
}
|
|
462
|
+
//# sourceMappingURL=cognitive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cognitive.js","sourceRoot":"","sources":["../../src/tools/cognitive.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import type { ApiClient } from '../api.js';
|
|
3
|
+
import type { ApiConfig } from '../types.js';
|
|
4
|
+
export declare const constructionTools: Tool[];
|
|
5
|
+
export declare function handleConstructionTool(name: string, args: Record<string, unknown>, api: ApiClient, config: ApiConfig): Promise<{
|
|
6
|
+
text: string;
|
|
7
|
+
isError?: boolean;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=construction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construction.d.ts","sourceRoot":"","sources":["../../src/tools/construction.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,aAAa,CAAC;AAkDzD,eAAO,MAAM,iBAAiB,EAAE,IAAI,EAqCnC,CAAC;AAEF,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,SAAS,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAgT9C"}
|