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,350 @@
|
|
|
1
|
+
// ── Context Construction Tools ──
|
|
2
|
+
// velixar_prepare_context — task-aware context assembly with anti-hallucination
|
|
3
|
+
// velixar_refine_context — iterative mid-generation refinement
|
|
4
|
+
// Phase 5: The capstone — consumes all retrieval tools internally.
|
|
5
|
+
import { randomUUID } from 'node:crypto';
|
|
6
|
+
import { normalizeMemory, wrapResponse } from '../api.js';
|
|
7
|
+
import { validateSearchResponse } from '../validate.js';
|
|
8
|
+
import { validateCoverageResponse } from '../validate_retrieval.js';
|
|
9
|
+
import { temporalMerge, mergeMultiQueryResults } from '../temporal_merge.js';
|
|
10
|
+
const contextCache = new Map();
|
|
11
|
+
const MAX_REFINEMENTS = 5;
|
|
12
|
+
function cacheKey(workspaceId, contextId) {
|
|
13
|
+
return `${workspaceId}:${contextId}`;
|
|
14
|
+
}
|
|
15
|
+
function getContext(workspaceId, contextId) {
|
|
16
|
+
const key = cacheKey(workspaceId, contextId);
|
|
17
|
+
const state = contextCache.get(key);
|
|
18
|
+
if (!state)
|
|
19
|
+
return null;
|
|
20
|
+
if (Date.now() - state.createdAt > state.ttlMs) {
|
|
21
|
+
contextCache.delete(key);
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
return state;
|
|
25
|
+
}
|
|
26
|
+
// ── Token Estimation ──
|
|
27
|
+
function estimateTokens(text) {
|
|
28
|
+
return Math.ceil(text.length / 4);
|
|
29
|
+
}
|
|
30
|
+
const SECTION_PRIORITY = {
|
|
31
|
+
task_answer: ['current_state', 'key_decisions', 'unknowns', 'history'],
|
|
32
|
+
decision_support: ['contradictions', 'current_state', 'alternatives', 'precedents'],
|
|
33
|
+
historical_review: ['timeline', 'evolution', 'superseded', 'current_state'],
|
|
34
|
+
exploration: ['broad_coverage', 'related_entities', 'patterns', 'unknowns'],
|
|
35
|
+
};
|
|
36
|
+
export const constructionTools = [
|
|
37
|
+
{
|
|
38
|
+
name: 'velixar_prepare_context',
|
|
39
|
+
description: 'Assemble a token-budgeted, task-aware context package with explicit gap declaration. ' +
|
|
40
|
+
'Runs multi-angle search, coverage check, and temporal analysis internally.',
|
|
41
|
+
inputSchema: {
|
|
42
|
+
type: 'object',
|
|
43
|
+
properties: {
|
|
44
|
+
queries: { type: 'array', items: { type: 'string' }, description: 'Explicit search queries (recommended). If omitted, queries are auto-generated from intent.' },
|
|
45
|
+
intent: { type: 'string', description: 'What you are about to do — drives section prioritization' },
|
|
46
|
+
token_budget: { type: 'number', description: 'Max tokens for context package. Auto-scales by strategy if omitted: task_answer=4000, decision_support=6000, historical_review=8000, exploration=3000.' },
|
|
47
|
+
strategy: { type: 'string', enum: ['task_answer', 'decision_support', 'historical_review', 'exploration'], description: 'Shapes section priority (default: task_answer)' },
|
|
48
|
+
include_ids: { type: 'array', items: { type: 'string' }, description: 'Memory IDs that MUST be included' },
|
|
49
|
+
exclude_ids: { type: 'array', items: { type: 'string' }, description: 'Memory IDs to exclude' },
|
|
50
|
+
context_ttl: { type: 'number', description: 'TTL in seconds for the context package (default: 600). After expiry, refine_context will fail.' },
|
|
51
|
+
},
|
|
52
|
+
required: ['intent'],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: 'velixar_refine_context',
|
|
57
|
+
description: 'Expand a section, fill a gap, or add a topic to an existing context package. ' +
|
|
58
|
+
'Accepts a single action or an array of actions for batch refinement.',
|
|
59
|
+
inputSchema: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
context_id: { type: 'string', description: 'ID from prepare_context response' },
|
|
63
|
+
action: { type: 'string', enum: ['expand_section', 'fill_gap', 'add_topic'], description: 'What to do (single action)' },
|
|
64
|
+
target: { type: 'string', description: 'Section label, gap name, or new topic (single action)' },
|
|
65
|
+
actions: { type: 'array', items: { type: 'object', properties: { action: { type: 'string' }, target: { type: 'string' }, budget: { type: 'number' } } }, description: 'Batch: array of {action, target, budget?} for multiple refinements in one call' },
|
|
66
|
+
additional_budget: { type: 'number', description: 'Extra tokens (default 1000)' },
|
|
67
|
+
},
|
|
68
|
+
required: ['context_id'],
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
export async function handleConstructionTool(name, args, api, config) {
|
|
73
|
+
if (name === 'velixar_prepare_context') {
|
|
74
|
+
const intent = args.intent;
|
|
75
|
+
const strategy = args.strategy || (intent.length < 20 ? 'exploration' : 'task_answer');
|
|
76
|
+
// Build 5.1: Smart token budget — auto-scale by strategy
|
|
77
|
+
const STRATEGY_BUDGETS = { task_answer: 4000, decision_support: 6000, historical_review: 8000, exploration: 3000 };
|
|
78
|
+
const budget = Math.min(args.token_budget || STRATEGY_BUDGETS[strategy], 12000);
|
|
79
|
+
const contextTtlSec = args.context_ttl || 600;
|
|
80
|
+
const contextTtlMs = contextTtlSec * 1000;
|
|
81
|
+
const includeIds = new Set(args.include_ids || []);
|
|
82
|
+
const excludeIds = new Set(args.exclude_ids || []);
|
|
83
|
+
// Include wins over exclude
|
|
84
|
+
for (const id of includeIds)
|
|
85
|
+
excludeIds.delete(id);
|
|
86
|
+
const contextId = randomUUID();
|
|
87
|
+
const provenanceLog = [];
|
|
88
|
+
const INTERNAL_TIMEOUT = 3000;
|
|
89
|
+
// Step 1: Multi-angle retrieval (with timeout)
|
|
90
|
+
// Prefer explicit queries from LLM (they know the vocabulary); fall back to intent extraction
|
|
91
|
+
const explicitQueries = args.queries;
|
|
92
|
+
let angles;
|
|
93
|
+
if (explicitQueries?.length) {
|
|
94
|
+
angles = explicitQueries.slice(0, 5);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
const intentClean = intent.replace(/[?!.]+$/g, '').trim();
|
|
98
|
+
const significant = intentClean.split(/\s+/).filter(w => w.length > 3 && !/^(what|that|this|with|from|about|should|could|would|does|have|been|their|there|which|where|when|into|status|current)$/i.test(w));
|
|
99
|
+
const topicPhrase = significant.slice(0, 3).join(' ') || intentClean.slice(0, 30);
|
|
100
|
+
angles = [topicPhrase, `${topicPhrase} plan`, `${topicPhrase} strategy`];
|
|
101
|
+
}
|
|
102
|
+
const searchStart = Date.now();
|
|
103
|
+
let allMemories = [];
|
|
104
|
+
try {
|
|
105
|
+
const searchResults = await Promise.race([
|
|
106
|
+
Promise.allSettled(angles.map(q => {
|
|
107
|
+
const params = new URLSearchParams({ q, user_id: config.userId, limit: '10' });
|
|
108
|
+
return api.get(`/memory/search?${params}`, true);
|
|
109
|
+
})),
|
|
110
|
+
new Promise(resolve => setTimeout(() => resolve([]), INTERNAL_TIMEOUT)),
|
|
111
|
+
]);
|
|
112
|
+
const perQuery = searchResults.map((r, i) => {
|
|
113
|
+
if (r.status !== 'fulfilled')
|
|
114
|
+
return { query: angles[i], memories: [] };
|
|
115
|
+
try {
|
|
116
|
+
const validated = validateSearchResponse(r.value, '/memory/search');
|
|
117
|
+
return {
|
|
118
|
+
query: angles[i],
|
|
119
|
+
memories: validated.memories.map(m => { const mem = normalizeMemory(m); mem.workspace_id = config.workspaceId; return mem; }),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return { query: angles[i], memories: [] };
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
const { merged } = mergeMultiQueryResults(perQuery, 'weighted', 20);
|
|
127
|
+
allMemories = merged;
|
|
128
|
+
provenanceLog.push({ step: 'multi_search', queries: angles, results: merged.length, ms: Date.now() - searchStart });
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
provenanceLog.push({ step: 'multi_search', error: 'timeout', ms: INTERNAL_TIMEOUT });
|
|
132
|
+
}
|
|
133
|
+
// Add forced includes
|
|
134
|
+
for (const id of includeIds) {
|
|
135
|
+
if (!allMemories.some(m => m.id === id)) {
|
|
136
|
+
try {
|
|
137
|
+
const raw = await api.get(`/memory/${id}`, true);
|
|
138
|
+
const rObj = (raw && typeof raw === 'object') ? raw : {};
|
|
139
|
+
const memData = (rObj.memory && typeof rObj.memory === 'object') ? rObj.memory : null;
|
|
140
|
+
if (memData) {
|
|
141
|
+
const mem = normalizeMemory({
|
|
142
|
+
id: String(memData.id || ''), content: String(memData.content || ''),
|
|
143
|
+
score: typeof memData.score === 'number' ? memData.score : undefined,
|
|
144
|
+
tier: typeof memData.tier === 'number' ? memData.tier : undefined,
|
|
145
|
+
type: typeof memData.type === 'string' ? memData.type : null,
|
|
146
|
+
tags: Array.isArray(memData.tags) ? memData.tags.filter((t) => typeof t === 'string') : [],
|
|
147
|
+
created_at: typeof memData.created_at === 'string' ? memData.created_at : undefined,
|
|
148
|
+
previous_memory_id: typeof memData.previous_memory_id === 'string' ? memData.previous_memory_id : null,
|
|
149
|
+
});
|
|
150
|
+
mem.workspace_id = config.workspaceId;
|
|
151
|
+
allMemories.push(mem);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch { /* skip unfetchable includes */ }
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// Remove excludes
|
|
158
|
+
allMemories = allMemories.filter(m => !excludeIds.has(m.id));
|
|
159
|
+
// Step 2: Temporal merge
|
|
160
|
+
const temporal = temporalMerge(allMemories);
|
|
161
|
+
const currentMemories = temporal.current;
|
|
162
|
+
provenanceLog.push({ step: 'temporal_merge', current: currentMemories.length, superseded: temporal.superseded.length });
|
|
163
|
+
// Step 3: Coverage check (best-effort, skip if slow)
|
|
164
|
+
let coverageRatio = null;
|
|
165
|
+
let gaps = [];
|
|
166
|
+
let suggestedQueries = [];
|
|
167
|
+
try {
|
|
168
|
+
const covRaw = await Promise.race([
|
|
169
|
+
api.post('/memory/coverage', { topic: intent, memory_ids: currentMemories.map(m => m.id) }),
|
|
170
|
+
new Promise(resolve => setTimeout(() => resolve(null), 2000)),
|
|
171
|
+
]);
|
|
172
|
+
if (covRaw) {
|
|
173
|
+
const cov = validateCoverageResponse(covRaw, '/memory/coverage');
|
|
174
|
+
coverageRatio = cov.coverage_ratio;
|
|
175
|
+
gaps = cov.gaps;
|
|
176
|
+
suggestedQueries = cov.suggested_queries;
|
|
177
|
+
provenanceLog.push({ step: 'coverage_check', ratio: coverageRatio, gaps: gaps.length });
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
// Fallback: estimate from search
|
|
182
|
+
coverageRatio = null;
|
|
183
|
+
provenanceLog.push({ step: 'coverage_check', status: 'unavailable' });
|
|
184
|
+
}
|
|
185
|
+
// Step 4: Build sections by strategy priority
|
|
186
|
+
const sectionOrder = SECTION_PRIORITY[strategy];
|
|
187
|
+
const sections = [];
|
|
188
|
+
let usedTokens = 0;
|
|
189
|
+
const charBudget = budget * 4;
|
|
190
|
+
// Current state section
|
|
191
|
+
const currentContent = currentMemories.slice(0, 8).map(m => m.content).join('\n\n');
|
|
192
|
+
if (currentContent) {
|
|
193
|
+
const tokens = estimateTokens(currentContent);
|
|
194
|
+
const truncated = usedTokens + tokens > charBudget / 4 && sections.length > 0;
|
|
195
|
+
const finalContent = truncated ? currentContent.slice(0, Math.max(200, (charBudget - usedTokens * 4))) : currentContent;
|
|
196
|
+
sections.push({
|
|
197
|
+
label: 'current_state',
|
|
198
|
+
content: finalContent,
|
|
199
|
+
memory_ids: currentMemories.slice(0, 8).map(m => m.id),
|
|
200
|
+
confidence: coverageRatio !== null ? Math.min(0.95, coverageRatio + 0.1) : 0.7,
|
|
201
|
+
truncated,
|
|
202
|
+
});
|
|
203
|
+
usedTokens += estimateTokens(finalContent);
|
|
204
|
+
}
|
|
205
|
+
// Decisions section
|
|
206
|
+
const decisions = currentMemories.filter(m => /\b(decided|decision|chose|going with)\b/i.test(m.content));
|
|
207
|
+
if (decisions.length > 0 && usedTokens * 4 < charBudget * 0.8) {
|
|
208
|
+
const decContent = decisions.slice(0, 5).map(m => m.content).join('\n\n');
|
|
209
|
+
const finalContent = decContent.slice(0, Math.max(200, charBudget - usedTokens * 4));
|
|
210
|
+
sections.push({
|
|
211
|
+
label: 'key_decisions',
|
|
212
|
+
content: finalContent,
|
|
213
|
+
memory_ids: decisions.slice(0, 5).map(m => m.id),
|
|
214
|
+
confidence: 0.85,
|
|
215
|
+
truncated: finalContent.length < decContent.length,
|
|
216
|
+
});
|
|
217
|
+
usedTokens += estimateTokens(finalContent);
|
|
218
|
+
}
|
|
219
|
+
// Unknowns section (always included — anti-hallucination)
|
|
220
|
+
const gapDescriptions = gaps.map(g => g.preview).filter(Boolean);
|
|
221
|
+
const unknownsContent = gapDescriptions.length > 0
|
|
222
|
+
? `No data retrieved for: ${gapDescriptions.slice(0, 5).join('; ')}`
|
|
223
|
+
: coverageRatio !== null && coverageRatio < 0.7
|
|
224
|
+
? 'Coverage is below 70% — some relevant context may be missing.'
|
|
225
|
+
: '';
|
|
226
|
+
if (unknownsContent) {
|
|
227
|
+
sections.push({
|
|
228
|
+
label: 'unknowns',
|
|
229
|
+
content: unknownsContent,
|
|
230
|
+
memory_ids: [],
|
|
231
|
+
confidence: 1.0,
|
|
232
|
+
truncated: false,
|
|
233
|
+
});
|
|
234
|
+
usedTokens += estimateTokens(unknownsContent);
|
|
235
|
+
}
|
|
236
|
+
// Cache state for refine_context
|
|
237
|
+
const state = {
|
|
238
|
+
contextId, intent, strategy, memories: currentMemories,
|
|
239
|
+
gaps, coverageRatio, refinementCount: 0,
|
|
240
|
+
createdAt: Date.now(), ttlMs: contextTtlMs, provenance: provenanceLog,
|
|
241
|
+
};
|
|
242
|
+
contextCache.set(cacheKey(config.workspaceId, contextId), state);
|
|
243
|
+
const expiresAt = new Date(state.createdAt + contextTtlMs).toISOString();
|
|
244
|
+
return {
|
|
245
|
+
text: JSON.stringify(wrapResponse({
|
|
246
|
+
context_id: contextId,
|
|
247
|
+
context_package: {
|
|
248
|
+
sections,
|
|
249
|
+
token_count: usedTokens,
|
|
250
|
+
budget_used: Math.round((usedTokens / budget) * 100) / 100,
|
|
251
|
+
},
|
|
252
|
+
retrieval_metadata: {
|
|
253
|
+
memories_considered: allMemories.length + (excludeIds.size),
|
|
254
|
+
memories_included: currentMemories.length,
|
|
255
|
+
memories_excluded_superseded: temporal.superseded.length,
|
|
256
|
+
memories_excluded_budget: Math.max(0, currentMemories.length - 8),
|
|
257
|
+
coverage_ratio: coverageRatio,
|
|
258
|
+
temporal_span: {
|
|
259
|
+
from: temporal.temporal_context.oldest_memory,
|
|
260
|
+
to: temporal.temporal_context.newest_memory,
|
|
261
|
+
},
|
|
262
|
+
chain_count: temporal.temporal_context.chain_count,
|
|
263
|
+
},
|
|
264
|
+
anti_hallucination: {
|
|
265
|
+
explicit_gaps: gapDescriptions.slice(0, 10),
|
|
266
|
+
low_confidence_sections: sections.filter(s => s.confidence < 0.5).map(s => s.label),
|
|
267
|
+
contradictions_active: 0,
|
|
268
|
+
instruction: gaps.length > 0
|
|
269
|
+
? 'Do NOT fill gaps listed above with inference. State them as unknown.'
|
|
270
|
+
: coverageRatio !== null && coverageRatio < 0.7
|
|
271
|
+
? 'Coverage is incomplete. Qualify your answer and note what may be missing.'
|
|
272
|
+
: 'Context appears adequate for synthesis.',
|
|
273
|
+
suggested_queries: suggestedQueries,
|
|
274
|
+
},
|
|
275
|
+
provenance: { context_id: contextId, created_at: new Date().toISOString(), expires_at: expiresAt, intent, strategy, steps: provenanceLog },
|
|
276
|
+
}, config, {
|
|
277
|
+
data_absent: currentMemories.length === 0,
|
|
278
|
+
partial_context: coverageRatio !== null && coverageRatio < 0.5,
|
|
279
|
+
})),
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
if (name === 'velixar_refine_context') {
|
|
283
|
+
const contextId = args.context_id;
|
|
284
|
+
const state = getContext(config.workspaceId, contextId);
|
|
285
|
+
if (!state) {
|
|
286
|
+
return { text: JSON.stringify(wrapResponse({ error: 'Context expired or not found. Call velixar_prepare_context again.' }, config)), isError: true };
|
|
287
|
+
}
|
|
288
|
+
const actionsList = args.actions
|
|
289
|
+
? args.actions
|
|
290
|
+
: (args.action && args.target)
|
|
291
|
+
? [{ action: args.action, target: args.target, budget: args.additional_budget }]
|
|
292
|
+
: [];
|
|
293
|
+
if (actionsList.length === 0) {
|
|
294
|
+
return { text: JSON.stringify(wrapResponse({ error: 'Provide action+target or actions array.' }, config)), isError: true };
|
|
295
|
+
}
|
|
296
|
+
if (state.refinementCount + actionsList.length > MAX_REFINEMENTS) {
|
|
297
|
+
return { text: JSON.stringify(wrapResponse({ error: `Would exceed max ${MAX_REFINEMENTS} refinements (current: ${state.refinementCount}, requested: ${actionsList.length}).` }, config)), isError: true };
|
|
298
|
+
}
|
|
299
|
+
const existingIds = new Set(state.memories.map(m => m.id));
|
|
300
|
+
const results = [];
|
|
301
|
+
for (const act of actionsList) {
|
|
302
|
+
const additionalBudget = Math.min(act.budget || 1000, 2000);
|
|
303
|
+
let newMemories = [];
|
|
304
|
+
const params = new URLSearchParams({ q: act.target, user_id: config.userId, limit: '10' });
|
|
305
|
+
try {
|
|
306
|
+
const raw = await api.get(`/memory/search?${params}`, true);
|
|
307
|
+
const validated = validateSearchResponse(raw, '/memory/search');
|
|
308
|
+
newMemories = validated.memories
|
|
309
|
+
.map(m => { const mem = normalizeMemory(m); mem.workspace_id = config.workspaceId; return mem; })
|
|
310
|
+
.filter(m => !existingIds.has(m.id));
|
|
311
|
+
}
|
|
312
|
+
catch { /* empty */ }
|
|
313
|
+
const temporal = temporalMerge(newMemories);
|
|
314
|
+
const added = temporal.current.slice(0, 5);
|
|
315
|
+
state.memories.push(...added);
|
|
316
|
+
for (const m of added)
|
|
317
|
+
existingIds.add(m.id);
|
|
318
|
+
state.refinementCount++;
|
|
319
|
+
if (act.action === 'fill_gap') {
|
|
320
|
+
state.gaps = state.gaps.filter(g => !g.preview.toLowerCase().includes(act.target.toLowerCase()));
|
|
321
|
+
}
|
|
322
|
+
state.provenance.push({ step: 'refinement', action: act.action, target: act.target, memories_added: added.length, refinement_number: state.refinementCount });
|
|
323
|
+
const newContent = added.map(m => m.content).join('\n\n');
|
|
324
|
+
results.push({
|
|
325
|
+
action: act.action,
|
|
326
|
+
target: act.target,
|
|
327
|
+
memories_added: added.length,
|
|
328
|
+
new_section: newContent ? {
|
|
329
|
+
label: `${act.action}:${act.target}`,
|
|
330
|
+
content: newContent.slice(0, additionalBudget * 4),
|
|
331
|
+
memory_ids: added.map(m => m.id),
|
|
332
|
+
confidence: added.length >= 3 ? 0.8 : added.length >= 1 ? 0.6 : 0.3,
|
|
333
|
+
truncated: newContent.length > additionalBudget * 4,
|
|
334
|
+
} : null,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
return {
|
|
338
|
+
text: JSON.stringify(wrapResponse({
|
|
339
|
+
context_id: contextId,
|
|
340
|
+
refinements: results,
|
|
341
|
+
remaining_gaps: state.gaps.map(g => g.preview),
|
|
342
|
+
refinements_remaining: MAX_REFINEMENTS - state.refinementCount,
|
|
343
|
+
}, config, {
|
|
344
|
+
data_absent: results.every(r => r.memories_added === 0),
|
|
345
|
+
})),
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
throw new Error(`Unknown construction tool: ${name}`);
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=construction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"construction.js","sourceRoot":"","sources":["../../src/tools/construction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
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 function getGraphTelemetry(): {
|
|
5
|
+
total_calls: number;
|
|
6
|
+
no_entity_calls: number;
|
|
7
|
+
listing_pct: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const graphTools: Tool[];
|
|
10
|
+
export declare function handleGraphTool(name: string, args: Record<string, unknown>, api: ApiClient, config: ApiConfig): Promise<{
|
|
11
|
+
text: string;
|
|
12
|
+
isError?: boolean;
|
|
13
|
+
}>;
|
|
14
|
+
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/tools/graph.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAO7C,wBAAgB,iBAAiB;;;;EAEhC;AAED,eAAO,MAAM,UAAU,EAAE,IAAI,EAwC5B,CAAC;AAEF,wBAAsB,eAAe,CACnC,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,CA+O9C"}
|