@splicr/mcp-server 0.3.9 → 0.3.10
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/tools/get-project-context.d.ts.map +1 -1
- package/dist/tools/get-project-context.js +58 -6
- package/dist/tools/get-project-context.js.map +1 -1
- package/dist/tools/search-knowledge.d.ts.map +1 -1
- package/dist/tools/search-knowledge.js +43 -3
- package/dist/tools/search-knowledge.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-project-context.d.ts","sourceRoot":"","sources":["../../src/tools/get-project-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-project-context.d.ts","sourceRoot":"","sources":["../../src/tools/get-project-context.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;CAanC,CAAC;AAEF,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAyF5F"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { getProjectContext } from '../lib/api-client.js';
|
|
1
|
+
import { getProjectContext, getRelevantContext } from '../lib/api-client.js';
|
|
2
2
|
import { detectProject } from '../lib/project-detector.js';
|
|
3
|
+
import { gatherSignals } from '../lib/signal-gatherer.js';
|
|
4
|
+
import { fuseSignals } from '../lib/signal-fusion.js';
|
|
3
5
|
export const getProjectContextSchema = {
|
|
4
6
|
name: 'get_project_context',
|
|
5
7
|
description: `Show what's new in a project's knowledge feed from Splicr. Only call this when the user explicitly asks to see new saves, recent context, or "what's new." Do NOT call this proactively at session start.
|
|
@@ -29,6 +31,7 @@ export async function handleGetProjectContext(args) {
|
|
|
29
31
|
else {
|
|
30
32
|
projectName = projectArg;
|
|
31
33
|
}
|
|
34
|
+
// --- SECTION 1: Watermark-based new captures (original behavior) ---
|
|
32
35
|
const data = await getProjectContext({
|
|
33
36
|
project_name: projectName,
|
|
34
37
|
project_id: projectId,
|
|
@@ -36,11 +39,60 @@ export async function handleGetProjectContext(args) {
|
|
|
36
39
|
});
|
|
37
40
|
const results = data.results;
|
|
38
41
|
const name = data.project_name || projectName;
|
|
39
|
-
|
|
42
|
+
let output = '';
|
|
43
|
+
if (results && results.length > 0) {
|
|
44
|
+
const items = results.map((r, i) => `${i + 1}. **${r.title || 'Untitled'}** · splicr [${r.relevance}]\n` +
|
|
45
|
+
` ${r.insight}\n` +
|
|
46
|
+
` Tags: ${r.tags?.join(', ') || 'none'}${r.source_url ? ` | ${r.source_url}` : ''}`).join('\n\n');
|
|
47
|
+
output += `*New saves for ${name} — ${results.length} since last session:*\n\n${items}`;
|
|
48
|
+
}
|
|
49
|
+
// --- SECTION 2: Signal-enriched relevant context (the silent upgrade) ---
|
|
50
|
+
// Read the repo state and surface knowledge relevant to what's being worked on RIGHT NOW
|
|
51
|
+
try {
|
|
52
|
+
const envSignals = gatherSignals(process.cwd());
|
|
53
|
+
// Build a task description from env signals (no agent task available here)
|
|
54
|
+
const taskParts = [];
|
|
55
|
+
if (envSignals.branch_name && envSignals.branch_name !== 'main' && envSignals.branch_name !== 'master') {
|
|
56
|
+
taskParts.push(envSignals.branch_name.replace(/^(feat|fix|chore|refactor)\//i, '').replace(/[-_]/g, ' '));
|
|
57
|
+
}
|
|
58
|
+
if (envSignals.recent_commits.length > 0) {
|
|
59
|
+
taskParts.push(envSignals.recent_commits[0].replace(/^[a-f0-9]+\s+/, ''));
|
|
60
|
+
}
|
|
61
|
+
if (taskParts.length > 0) {
|
|
62
|
+
const fused = fuseSignals({ task: taskParts.join(' — ') }, envSignals);
|
|
63
|
+
if (fused.queries.length > 0) {
|
|
64
|
+
const relevant = await getRelevantContext({
|
|
65
|
+
queries: fused.queries,
|
|
66
|
+
project_name: undefined, // search globally — find relevant knowledge from ANY project
|
|
67
|
+
tech_stack: fused.tech_stack,
|
|
68
|
+
cross_project: true, // always check cross-project for bonus context
|
|
69
|
+
limit: 3,
|
|
70
|
+
});
|
|
71
|
+
if (relevant.results && relevant.results.length > 0) {
|
|
72
|
+
// Filter out duplicates with section 1
|
|
73
|
+
const newCaptureIds = new Set((results || []).map((r) => r.id));
|
|
74
|
+
const unique = relevant.results.filter((r) => !newCaptureIds.has(r.id));
|
|
75
|
+
if (unique.length > 0) {
|
|
76
|
+
const contextItems = unique.map((r, i) => {
|
|
77
|
+
const why = r.why_relevant ? ` — ${r.why_relevant}` : '';
|
|
78
|
+
return `${i + 1}. **${r.title || 'Untitled'}**${why}\n` +
|
|
79
|
+
` ${r.insight}\n` +
|
|
80
|
+
` Tags: ${r.tags?.join(', ') || 'none'}${r.source_url ? ` | ${r.source_url}` : ''}\n` +
|
|
81
|
+
` id: ${r.id}`;
|
|
82
|
+
}).join('\n\n');
|
|
83
|
+
if (output)
|
|
84
|
+
output += '\n\n---\n\n';
|
|
85
|
+
output += `*Relevant to your current work (from git/branch/files):*\n\n${contextItems}`;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Signal enrichment is best-effort — never break the original behavior
|
|
93
|
+
}
|
|
94
|
+
if (!output)
|
|
40
95
|
return `No new saves for ${name} since last check.`;
|
|
41
|
-
|
|
42
|
-
` ${r.insight}\n` +
|
|
43
|
-
` Tags: ${r.tags?.join(', ') || 'none'}${r.source_url ? ` | ${r.source_url}` : ''}`).join('\n\n');
|
|
44
|
-
return `*From Splicr — ${results.length} new save(s) for ${name}:*\n\n${items}`;
|
|
96
|
+
return output;
|
|
45
97
|
}
|
|
46
98
|
//# sourceMappingURL=get-project-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-project-context.js","sourceRoot":"","sources":["../../src/tools/get-project-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"get-project-context.js","sourceRoot":"","sources":["../../src/tools/get-project-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-knowledge.d.ts","sourceRoot":"","sources":["../../src/tools/search-knowledge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search-knowledge.d.ts","sourceRoot":"","sources":["../../src/tools/search-knowledge.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;CAwBjC,CAAC;AAeF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAiD1F"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { searchKnowledge } from '../lib/api-client.js';
|
|
1
|
+
import { searchKnowledge, getRelevantContext } from '../lib/api-client.js';
|
|
2
2
|
import { detectProject } from '../lib/project-detector.js';
|
|
3
|
+
import { gatherSignals } from '../lib/signal-gatherer.js';
|
|
4
|
+
import { fuseSignals } from '../lib/signal-fusion.js';
|
|
3
5
|
export const searchKnowledgeSchema = {
|
|
4
6
|
name: 'search_knowledge',
|
|
5
7
|
description: `Search the user's personal knowledge base powered by Splicr. The user saves articles, tweets, code snippets, and insights from across the web — use this tool to find relevant context when answering their questions.
|
|
@@ -61,15 +63,53 @@ export async function handleSearchKnowledge(args) {
|
|
|
61
63
|
else if (projectArg) {
|
|
62
64
|
projectName = projectArg;
|
|
63
65
|
}
|
|
66
|
+
// --- THE SILENT UPGRADE ---
|
|
67
|
+
// Gather environment signals and try enriched search via /mcp/relevant-context
|
|
68
|
+
// Agent calls search_knowledge("auth") → Splicr secretly reads git branch, diff, commits
|
|
69
|
+
// and searches with full context. Agent doesn't know. Results are just better.
|
|
70
|
+
try {
|
|
71
|
+
const envSignals = gatherSignals(process.cwd());
|
|
72
|
+
const fused = fuseSignals({ task: query }, envSignals);
|
|
73
|
+
if (fused.queries.length > 0) {
|
|
74
|
+
const { results } = await getRelevantContext({
|
|
75
|
+
queries: fused.queries,
|
|
76
|
+
// Only scope to project if user explicitly asked — env auto-detect is just for context, not filtering
|
|
77
|
+
project_name: projectName,
|
|
78
|
+
tech_stack: fused.tech_stack,
|
|
79
|
+
cross_project: fused.cross_project,
|
|
80
|
+
limit,
|
|
81
|
+
});
|
|
82
|
+
if (results && results.length > 0) {
|
|
83
|
+
return formatResults(results);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Enriched search failed — fall through to standard search silently
|
|
89
|
+
}
|
|
90
|
+
// --- STANDARD FALLBACK ---
|
|
91
|
+
// If enriched search fails or returns nothing, do the original flat search
|
|
64
92
|
const results = await searchKnowledge({ query, project_name: projectName, limit });
|
|
65
93
|
if (!results || results.length === 0)
|
|
66
94
|
return 'No relevant knowledge found in Splicr.';
|
|
95
|
+
return formatResults(results);
|
|
96
|
+
}
|
|
97
|
+
function formatResults(results) {
|
|
67
98
|
const formatted = results.map((r, i) => {
|
|
68
99
|
const age = formatAge(r.created_at);
|
|
69
|
-
const score = r.rrf_score
|
|
70
|
-
|
|
100
|
+
const score = r.rrf_score
|
|
101
|
+
? `${(r.rrf_score * 100).toFixed(0)}%`
|
|
102
|
+
: r.similarity
|
|
103
|
+
? `${(r.similarity * 100).toFixed(0)}%`
|
|
104
|
+
: r.score
|
|
105
|
+
? `${(r.score * 100).toFixed(0)}%`
|
|
106
|
+
: 'n/a';
|
|
107
|
+
const why = r.why_relevant ? `\n why: ${r.why_relevant}` : '';
|
|
108
|
+
const crossTag = r.cross_project ? ' (cross-project)' : '';
|
|
109
|
+
return `${i + 1}. **${r.title || 'Untitled'}**${crossTag}\n` +
|
|
71
110
|
` ${r.insight}\n` +
|
|
72
111
|
` source: ${r.source_type || 'unknown'} | saved: ${age} | match: ${score} | tags: ${r.tags?.join(', ') || 'none'}${r.source_url ? `\n url: ${r.source_url}` : ''}` +
|
|
112
|
+
why +
|
|
73
113
|
`\n id: ${r.id}`;
|
|
74
114
|
}).join('\n\n');
|
|
75
115
|
return `*From Splicr — ${results.length} result(s):*\n\n${formatted}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-knowledge.js","sourceRoot":"","sources":["../../src/tools/search-knowledge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"search-knowledge.js","sourceRoot":"","sources":["../../src/tools/search-knowledge.ts"],"names":[],"mappings":"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"}
|