couchloop-eq-mcp 1.3.3 → 1.4.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/clients/shrinkChatClient.d.ts +10 -10
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +6 -3
- package/dist/db/client.js.map +1 -1
- package/dist/index.js +5 -85
- package/dist/index.js.map +1 -1
- package/dist/server/sse.d.ts.map +1 -1
- package/dist/server/sse.js +4 -2
- package/dist/server/sse.js.map +1 -1
- package/dist/tools/Hallucinated Packages Corpus from Claude.d.ts +72 -0
- package/dist/tools/Hallucinated Packages Corpus from Claude.d.ts.map +1 -0
- package/dist/tools/Hallucinated Packages Corpus from Claude.js +447 -0
- package/dist/tools/Hallucinated Packages Corpus from Claude.js.map +1 -0
- package/dist/tools/MCP Usage Takeaways.guard.d.ts +4 -0
- package/dist/tools/MCP Usage Takeaways.guard.d.ts.map +1 -0
- package/dist/tools/MCP Usage Takeaways.guard.js +343 -0
- package/dist/tools/MCP Usage Takeaways.guard.js.map +1 -0
- package/dist/tools/checkpoint.d.ts.map +1 -1
- package/dist/tools/checkpoint.js +4 -20
- package/dist/tools/checkpoint.js.map +1 -1
- package/dist/tools/detect-build-context.d.ts +1 -1
- package/dist/tools/generate-upgrade-report.d.ts +2 -2
- package/dist/tools/guard.d.ts +120 -0
- package/dist/tools/guard.d.ts.map +1 -0
- package/dist/tools/guard.js +345 -0
- package/dist/tools/guard.js.map +1 -0
- package/dist/tools/hallucinated-packages-corpus.d.ts +7 -0
- package/dist/tools/hallucinated-packages-corpus.d.ts.map +1 -0
- package/dist/tools/hallucinated-packages-corpus.js +7 -0
- package/dist/tools/hallucinated-packages-corpus.js.map +1 -0
- package/dist/tools/intent-router.d.ts +20 -24
- package/dist/tools/intent-router.d.ts.map +1 -1
- package/dist/tools/intent-router.js +39 -7
- package/dist/tools/intent-router.js.map +1 -1
- package/dist/tools/pre-review-code.d.ts +2 -2
- package/dist/tools/prevent-ai-errors.d.ts +3 -3
- package/dist/tools/primary-tools.d.ts +84 -275
- package/dist/tools/primary-tools.d.ts.map +1 -1
- package/dist/tools/primary-tools.js +52 -9
- package/dist/tools/primary-tools.js.map +1 -1
- package/dist/tools/protect-files.d.ts +1 -1
- package/dist/tools/sendMessage.d.ts.map +1 -1
- package/dist/tools/sendMessage.js +17 -34
- package/dist/tools/sendMessage.js.map +1 -1
- package/dist/tools/session-manager.d.ts +5 -1
- package/dist/tools/session-manager.d.ts.map +1 -1
- package/dist/tools/session-manager.js +23 -19
- package/dist/tools/session-manager.js.map +1 -1
- package/dist/tools/smart-context.d.ts +1 -1
- package/dist/tools/verify.d.ts +5 -5
- package/dist/types/session.d.ts +2 -2
- package/package.json +1 -1
- package/assets/screenshots/checkpoint_session.png +0 -0
- package/assets/screenshots/code_review_workflow.png +0 -0
- package/assets/screenshots/insight_retrieve.png +0 -0
- package/assets/screenshots/insight_save.png +0 -0
- package/assets/screenshots/save_insights.png +0 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { GovernancePipeline, } from "../governance/evaluationEngine.js";
|
|
3
|
+
import { InterventionEngine } from "../governance/intervention.js";
|
|
4
|
+
import { loadConfig } from "../governance/config.js";
|
|
5
|
+
import { scanPackageList, CORPUS_STATS, } from "./hallucinated-packages-corpus.js";
|
|
6
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
7
|
+
// Domain detection signals
|
|
8
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
9
|
+
const DEV_SIGNALS = [
|
|
10
|
+
/\b(npm|yarn|pnpm|pip|cargo|gem)\s+install\b/i,
|
|
11
|
+
/\b(import|require|from)\s+['"][^'"]+['"]/i,
|
|
12
|
+
/\b(function|class|const|let|var|async|await|interface|type)\b/,
|
|
13
|
+
/\b(error|exception|stack\s*trace|undefined|null|NaN)\b/i,
|
|
14
|
+
/\b(git|commit|branch|merge|pull\s*request|PR)\b/i,
|
|
15
|
+
/\b(API|endpoint|REST|GraphQL|webhook|SDK)\b/i,
|
|
16
|
+
/\b(docker|kubernetes|CI\/CD|pipeline|deploy)\b/i,
|
|
17
|
+
/\b(typescript|javascript|python|rust|golang|node\.?js)\b/i,
|
|
18
|
+
];
|
|
19
|
+
const CLINICAL_SIGNALS = [
|
|
20
|
+
/\b(suicid|self.harm|self.injur|overdose|end\s+my\s+life|want\s+to\s+die)\b/i,
|
|
21
|
+
/\b(depressed|depression|anxiety|anxious|panic|dissociat)\b/i,
|
|
22
|
+
/\b(therapist|psychiatrist|medication|diagnosis|disorder|mental\s+health)\b/i,
|
|
23
|
+
/\b(trauma|PTSD|abuse|grief|loss|overwhelmed|hopeless)\b/i,
|
|
24
|
+
/\b(cutting|burning|starving|purging|binge)\b/i,
|
|
25
|
+
/\b(crisis|hotline|emergency|911|hospital)\b/i,
|
|
26
|
+
];
|
|
27
|
+
function detectDomain(conversation, responseDraft) {
|
|
28
|
+
const fullText = [
|
|
29
|
+
...conversation.map((t) => t.content),
|
|
30
|
+
responseDraft,
|
|
31
|
+
].join(" ");
|
|
32
|
+
// Clinical takes priority — safety first
|
|
33
|
+
const clinicalScore = CLINICAL_SIGNALS.filter((s) => s.test(fullText)).length;
|
|
34
|
+
if (clinicalScore >= 1)
|
|
35
|
+
return "clinical";
|
|
36
|
+
const devScore = DEV_SIGNALS.filter((s) => s.test(fullText)).length;
|
|
37
|
+
if (devScore >= 2)
|
|
38
|
+
return "dev";
|
|
39
|
+
return "unknown";
|
|
40
|
+
}
|
|
41
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
42
|
+
// Package extraction helpers
|
|
43
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
44
|
+
function extractPackageNames(text) {
|
|
45
|
+
const names = [];
|
|
46
|
+
// npm/yarn/pnpm install commands
|
|
47
|
+
const installPattern = /(?:npm|yarn|pnpm)\s+(?:install|add|i)\s+((?:@?[\w][\w.-]*\/[\w.-]+|[\w][\w.-]*)(?:\s+(?:@?[\w][\w.-]*\/[\w.-]+|[\w][\w.-]*))*)/g;
|
|
48
|
+
let match;
|
|
49
|
+
while ((match = installPattern.exec(text)) !== null) {
|
|
50
|
+
const pkgs = match[1]
|
|
51
|
+
.split(/\s+/)
|
|
52
|
+
.map((p) => p.replace(/^-+.*$/, "").trim()) // drop flags
|
|
53
|
+
.filter((p) => p && !p.startsWith("-") && !p.startsWith("@") || p.startsWith("@"));
|
|
54
|
+
names.push(...pkgs.filter(Boolean));
|
|
55
|
+
}
|
|
56
|
+
// import/require statements
|
|
57
|
+
const importPattern = /(?:import\s+(?:.*?\s+from\s+)?|require\s*\(\s*)['"](@?[\w][\w.-]*(?:\/[\w.-]+)?)['"]/g;
|
|
58
|
+
while ((match = importPattern.exec(text)) !== null) {
|
|
59
|
+
// Only flag third-party (not relative paths)
|
|
60
|
+
if (!match[1].startsWith(".") && !match[1].startsWith("/")) {
|
|
61
|
+
names.push(match[1]);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return [...new Set(names)];
|
|
65
|
+
}
|
|
66
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
67
|
+
// Crisis signal detection (fast pre-check before full pipeline)
|
|
68
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
69
|
+
function hasCrisisSignals(turns) {
|
|
70
|
+
const recentUserTurns = turns
|
|
71
|
+
.filter((t) => t.role === "user")
|
|
72
|
+
.slice(-5)
|
|
73
|
+
.map((t) => t.content)
|
|
74
|
+
.join(" ");
|
|
75
|
+
return CLINICAL_SIGNALS.some((s) => s.test(recentUserTurns));
|
|
76
|
+
}
|
|
77
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
78
|
+
// ID generation
|
|
79
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
80
|
+
function generateEvaluationId() {
|
|
81
|
+
return `eval_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
|
|
82
|
+
}
|
|
83
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
84
|
+
// Tool registration
|
|
85
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
86
|
+
export function registerGuardTool(server) {
|
|
87
|
+
server.tool("guard", [
|
|
88
|
+
"Silent conversation governance layer. Call this on every response before delivering it to the user.",
|
|
89
|
+
"",
|
|
90
|
+
"Evaluates the draft response against hallucination, inconsistency, tone drift,",
|
|
91
|
+
"and unsafe reasoning detectors. Intervenes silently when thresholds are crossed.",
|
|
92
|
+
"",
|
|
93
|
+
"Actions:",
|
|
94
|
+
" pass — response is clean, deliver as-is",
|
|
95
|
+
" modified — response was corrected, deliver the returned response instead",
|
|
96
|
+
" blocked — response was unsafe, deliver the returned safe fallback",
|
|
97
|
+
"",
|
|
98
|
+
"Modes:",
|
|
99
|
+
" enforce (default) — evaluate and apply interventions",
|
|
100
|
+
" shadow — evaluate and log only, always pass original through",
|
|
101
|
+
" bypass — skip evaluation entirely",
|
|
102
|
+
"",
|
|
103
|
+
`Corpus: ${CORPUS_STATS.confirmedMalicious} confirmed malicious, ${CORPUS_STATS.documentedHallucinations} documented hallucinations, ${CORPUS_STATS.incompleteNameMappings} name mappings, ${CORPUS_STATS.suspiciousPatterns} pattern rules. Last updated ${CORPUS_STATS.lastUpdated}.`,
|
|
104
|
+
].join("\n"), {
|
|
105
|
+
response: z
|
|
106
|
+
.string()
|
|
107
|
+
.describe("The draft response about to be delivered to the user"),
|
|
108
|
+
conversation: z
|
|
109
|
+
.array(z.object({
|
|
110
|
+
role: z.enum(["user", "assistant"]),
|
|
111
|
+
content: z.string(),
|
|
112
|
+
}))
|
|
113
|
+
.optional()
|
|
114
|
+
.default([])
|
|
115
|
+
.describe("Recent conversation history (last 5-10 turns recommended)"),
|
|
116
|
+
domain: z
|
|
117
|
+
.enum(["dev", "clinical", "auto"])
|
|
118
|
+
.optional()
|
|
119
|
+
.default("auto")
|
|
120
|
+
.describe("Governance domain. 'auto' detects from conversation context. Clinical always takes priority."),
|
|
121
|
+
session_id: z
|
|
122
|
+
.string()
|
|
123
|
+
.optional()
|
|
124
|
+
.describe("Session identifier for audit trail continuity"),
|
|
125
|
+
mode: z
|
|
126
|
+
.enum(["enforce", "shadow", "bypass"])
|
|
127
|
+
.optional()
|
|
128
|
+
.default("enforce")
|
|
129
|
+
.describe("enforce=apply interventions, shadow=log-only, bypass=skip evaluation"),
|
|
130
|
+
}, async ({ response, conversation = [], domain = "auto", session_id, mode = "enforce", }) => {
|
|
131
|
+
const startTime = Date.now();
|
|
132
|
+
const evaluationId = generateEvaluationId();
|
|
133
|
+
// ── bypass mode ──────────────────────────────────────────────────────
|
|
134
|
+
if (mode === "bypass") {
|
|
135
|
+
const result = {
|
|
136
|
+
action: "pass",
|
|
137
|
+
response,
|
|
138
|
+
domain_detected: "unknown",
|
|
139
|
+
evaluation_id: evaluationId,
|
|
140
|
+
elapsed_ms: Date.now() - startTime,
|
|
141
|
+
mode: "bypass",
|
|
142
|
+
corpus_version: CORPUS_STATS.lastUpdated,
|
|
143
|
+
};
|
|
144
|
+
return { content: [{ type: "text", text: JSON.stringify(result) }] };
|
|
145
|
+
}
|
|
146
|
+
try {
|
|
147
|
+
// ── domain detection ─────────────────────────────────────────────
|
|
148
|
+
const domainDetected = domain === "auto"
|
|
149
|
+
? detectDomain(conversation, response)
|
|
150
|
+
: domain;
|
|
151
|
+
const config = await loadConfig();
|
|
152
|
+
let action = "pass";
|
|
153
|
+
let finalResponse = response;
|
|
154
|
+
let intervention;
|
|
155
|
+
let detectorResults = {};
|
|
156
|
+
// ── dev path ─────────────────────────────────────────────────────
|
|
157
|
+
if (domainDetected === "dev" || domainDetected === "unknown") {
|
|
158
|
+
// Fast corpus check first — no API call needed
|
|
159
|
+
const packageNamesInResponse = extractPackageNames(response);
|
|
160
|
+
const flaggedPackages = scanPackageList(packageNamesInResponse);
|
|
161
|
+
if (flaggedPackages.length > 0) {
|
|
162
|
+
const topFlag = flaggedPackages[0];
|
|
163
|
+
const alternatives = flaggedPackages
|
|
164
|
+
.filter((f) => f.suggestedAlternative)
|
|
165
|
+
.map((f) => `${f.name} → ${f.suggestedAlternative}`)
|
|
166
|
+
.join(", ");
|
|
167
|
+
detectorResults.hallucination = {
|
|
168
|
+
flagged: true,
|
|
169
|
+
alternatives_summary: alternatives || null,
|
|
170
|
+
packages: flaggedPackages.map((f) => ({
|
|
171
|
+
name: f.name,
|
|
172
|
+
confidence: f.confidence,
|
|
173
|
+
reason: f.reason,
|
|
174
|
+
source: f.source,
|
|
175
|
+
alternative: f.suggestedAlternative,
|
|
176
|
+
})),
|
|
177
|
+
};
|
|
178
|
+
if (mode === "enforce") {
|
|
179
|
+
// Build corrected response
|
|
180
|
+
let correctedResponse = response;
|
|
181
|
+
for (const flag of flaggedPackages) {
|
|
182
|
+
if (flag.suggestedAlternative) {
|
|
183
|
+
// Replace the package name in install commands and imports
|
|
184
|
+
const installRegex = new RegExp(`((?:npm|yarn|pnpm)\\s+(?:install|add|i)\\s+[^\\n]*?)\\b${escapeRegex(flag.name)}\\b`, "gi");
|
|
185
|
+
correctedResponse = correctedResponse.replace(installRegex, (m, prefix) => `${prefix}${flag.suggestedAlternative} /* ⚠ was: ${flag.name} */`);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
const wasModified = correctedResponse !== response;
|
|
189
|
+
action = topFlag.source === "confirmed_malicious" ? "blocked" : wasModified ? "modified" : "pass";
|
|
190
|
+
if (action !== "pass") {
|
|
191
|
+
finalResponse =
|
|
192
|
+
action === "blocked"
|
|
193
|
+
? buildBlockedFallback(topFlag.reason, topFlag.suggestedAlternative)
|
|
194
|
+
: correctedResponse;
|
|
195
|
+
intervention = {
|
|
196
|
+
type: action === "blocked"
|
|
197
|
+
? "package_hallucination_blocked"
|
|
198
|
+
: "package_hallucination_corrected",
|
|
199
|
+
reason: topFlag.reason,
|
|
200
|
+
confidence: topFlag.confidence === "high" ? 0.95 : topFlag.confidence === "medium" ? 0.7 : 0.45,
|
|
201
|
+
original_response: response,
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// Full pipeline for dev (hallucination + inconsistency only — tone/unsafe disabled for dev)
|
|
207
|
+
if (action === "pass" && domainDetected === "dev") {
|
|
208
|
+
try {
|
|
209
|
+
const sessionCtx = {
|
|
210
|
+
sessionId: session_id ?? evaluationId,
|
|
211
|
+
domain: "dev",
|
|
212
|
+
conversationHistory: conversation,
|
|
213
|
+
};
|
|
214
|
+
const pipelineResult = await GovernancePipeline.evaluate(response, sessionCtx, {
|
|
215
|
+
enabledDetectors: ["hallucination", "inconsistency"],
|
|
216
|
+
});
|
|
217
|
+
detectorResults = {
|
|
218
|
+
...detectorResults,
|
|
219
|
+
pipeline: pipelineResult.detectorResults,
|
|
220
|
+
};
|
|
221
|
+
if (pipelineResult.requiresIntervention && mode === "enforce") {
|
|
222
|
+
const interventionResult = await InterventionEngine.intervene(response, pipelineResult, sessionCtx);
|
|
223
|
+
if (interventionResult.action !== "approve") {
|
|
224
|
+
action =
|
|
225
|
+
interventionResult.action === "block" ? "blocked" : "modified";
|
|
226
|
+
finalResponse = interventionResult.modifiedResponse ?? response;
|
|
227
|
+
intervention = {
|
|
228
|
+
type: `pipeline_${interventionResult.action}`,
|
|
229
|
+
reason: interventionResult.reason ?? "Governance pipeline intervention",
|
|
230
|
+
confidence: interventionResult.confidence ?? 0.8,
|
|
231
|
+
original_response: response,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
catch {
|
|
237
|
+
// Pipeline failure — fail open, don't block user
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// ── clinical path ────────────────────────────────────────────────
|
|
242
|
+
if (domainDetected === "clinical") {
|
|
243
|
+
const crisisDetected = hasCrisisSignals(conversation);
|
|
244
|
+
detectorResults.crisis_pre_check = {
|
|
245
|
+
flagged: crisisDetected,
|
|
246
|
+
turns_analyzed: Math.min(conversation.filter((t) => t.role === "user").length, 5),
|
|
247
|
+
};
|
|
248
|
+
try {
|
|
249
|
+
const sessionCtx = {
|
|
250
|
+
sessionId: session_id ?? evaluationId,
|
|
251
|
+
domain: "clinical",
|
|
252
|
+
conversationHistory: conversation,
|
|
253
|
+
crisisSignalsDetected: crisisDetected,
|
|
254
|
+
};
|
|
255
|
+
const pipelineResult = await GovernancePipeline.evaluate(response, sessionCtx, {
|
|
256
|
+
enabledDetectors: [
|
|
257
|
+
"hallucination",
|
|
258
|
+
"inconsistency",
|
|
259
|
+
"toneDrift",
|
|
260
|
+
"unsafeReasoning",
|
|
261
|
+
],
|
|
262
|
+
});
|
|
263
|
+
detectorResults = {
|
|
264
|
+
...detectorResults,
|
|
265
|
+
pipeline: pipelineResult.detectorResults,
|
|
266
|
+
};
|
|
267
|
+
if (pipelineResult.requiresIntervention && mode === "enforce") {
|
|
268
|
+
const interventionResult = await InterventionEngine.intervene(response, pipelineResult, sessionCtx);
|
|
269
|
+
if (interventionResult.action !== "approve") {
|
|
270
|
+
action =
|
|
271
|
+
interventionResult.action === "block" ? "blocked" : "modified";
|
|
272
|
+
finalResponse = interventionResult.modifiedResponse ?? response;
|
|
273
|
+
intervention = {
|
|
274
|
+
type: `clinical_${interventionResult.action}`,
|
|
275
|
+
reason: interventionResult.reason ?? "Clinical governance intervention",
|
|
276
|
+
confidence: interventionResult.confidence ?? 0.85,
|
|
277
|
+
original_response: response,
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
// Pipeline failure — fail open
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// ── shadow mode override ─────────────────────────────────────────
|
|
287
|
+
// Evaluated, logged, but always passes original through
|
|
288
|
+
if (mode === "shadow") {
|
|
289
|
+
action = "pass";
|
|
290
|
+
finalResponse = response;
|
|
291
|
+
}
|
|
292
|
+
const result = {
|
|
293
|
+
action,
|
|
294
|
+
response: finalResponse,
|
|
295
|
+
...(intervention ? { intervention } : {}),
|
|
296
|
+
domain_detected: domainDetected,
|
|
297
|
+
evaluation_id: evaluationId,
|
|
298
|
+
elapsed_ms: Date.now() - startTime,
|
|
299
|
+
mode,
|
|
300
|
+
corpus_version: CORPUS_STATS.lastUpdated,
|
|
301
|
+
detector_results: detectorResults,
|
|
302
|
+
};
|
|
303
|
+
return { content: [{ type: "text", text: JSON.stringify(result) }] };
|
|
304
|
+
}
|
|
305
|
+
catch (err) {
|
|
306
|
+
// Top-level failure — always fail open
|
|
307
|
+
const result = {
|
|
308
|
+
action: "pass",
|
|
309
|
+
response,
|
|
310
|
+
domain_detected: "unknown",
|
|
311
|
+
evaluation_id: evaluationId,
|
|
312
|
+
elapsed_ms: Date.now() - startTime,
|
|
313
|
+
mode,
|
|
314
|
+
corpus_version: CORPUS_STATS.lastUpdated,
|
|
315
|
+
detector_results: {
|
|
316
|
+
error: err instanceof Error ? err.message : "Unknown governance error",
|
|
317
|
+
fail_open: true,
|
|
318
|
+
},
|
|
319
|
+
};
|
|
320
|
+
return { content: [{ type: "text", text: JSON.stringify(result) }] };
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
325
|
+
// Helpers
|
|
326
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
327
|
+
function escapeRegex(s) {
|
|
328
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
329
|
+
}
|
|
330
|
+
function buildBlockedFallback(reason, alternative) {
|
|
331
|
+
const parts = [
|
|
332
|
+
"⚠️ I can't recommend that package — it has been flagged as a confirmed malicious or hallucinated package name.",
|
|
333
|
+
reason,
|
|
334
|
+
];
|
|
335
|
+
if (alternative) {
|
|
336
|
+
parts.push(`The package you may be looking for is: **${alternative}**`);
|
|
337
|
+
}
|
|
338
|
+
parts.push("Please verify any package name before installing.");
|
|
339
|
+
return parts.join("\n\n");
|
|
340
|
+
}
|
|
341
|
+
// Named export for primary-tools.ts registration
|
|
342
|
+
export const guardTool = registerGuardTool;
|
|
343
|
+
//# sourceMappingURL=MCP%20Usage%20Takeaways.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MCP Usage Takeaways.guard.js","sourceRoot":"","sources":["../../src/tools/MCP Usage Takeaways.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAOlF,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAOlF,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkKnG;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;;;;;;;;;;;;;;;GA0BlI"}
|
package/dist/tools/checkpoint.js
CHANGED
|
@@ -2,7 +2,7 @@ import { getDb } from '../db/client.js';
|
|
|
2
2
|
import { sessions, journeys, checkpoints, insights, governanceAuditLog } from '../db/schema.js';
|
|
3
3
|
import { eq } from 'drizzle-orm';
|
|
4
4
|
import { SaveCheckpointSchema } from '../types/checkpoint.js';
|
|
5
|
-
import { handleError
|
|
5
|
+
import { handleError } from '../utils/errors.js';
|
|
6
6
|
import { logger } from '../utils/logger.js';
|
|
7
7
|
import { getOrCreateSession } from './session-manager.js';
|
|
8
8
|
import { storeContext } from './preserve-context.js';
|
|
@@ -12,16 +12,8 @@ export async function saveCheckpoint(args) {
|
|
|
12
12
|
const input = SaveCheckpointSchema.parse(args);
|
|
13
13
|
const db = getDb();
|
|
14
14
|
// Get or create session implicitly if not provided
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const [session] = await db
|
|
18
|
-
.select()
|
|
19
|
-
.from(sessions)
|
|
20
|
-
.where(eq(sessions.id, sessionId))
|
|
21
|
-
.limit(1);
|
|
22
|
-
if (!session) {
|
|
23
|
-
throw new NotFoundError('Session', sessionId);
|
|
24
|
-
}
|
|
15
|
+
// FIX 1: Session object returned directly — no redundant re-fetch
|
|
16
|
+
const { sessionId, session, isNew } = await getOrCreateSession(input.session_id, input.auth, 'Checkpoint session');
|
|
25
17
|
if (session.status !== 'active') {
|
|
26
18
|
throw new Error(`Session is ${session.status}, not active`);
|
|
27
19
|
}
|
|
@@ -168,16 +160,8 @@ export async function getCheckpoints(args) {
|
|
|
168
160
|
const { session_id, auth } = args;
|
|
169
161
|
const db = getDb();
|
|
170
162
|
// Get or create session implicitly if not provided
|
|
163
|
+
// FIX 1: Session object returned directly — no redundant re-fetch
|
|
171
164
|
const { sessionId, isNew } = await getOrCreateSession(session_id, auth);
|
|
172
|
-
// Verify session exists
|
|
173
|
-
const [session] = await db
|
|
174
|
-
.select()
|
|
175
|
-
.from(sessions)
|
|
176
|
-
.where(eq(sessions.id, sessionId))
|
|
177
|
-
.limit(1);
|
|
178
|
-
if (!session) {
|
|
179
|
-
throw new NotFoundError('Session', sessionId);
|
|
180
|
-
}
|
|
181
165
|
// Get all checkpoints
|
|
182
166
|
const sessionCheckpoints = await db
|
|
183
167
|
.select()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAsB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ export declare const detectBuildContextTool: {
|
|
|
26
26
|
export declare function handleDetectBuildContext(args: unknown): Promise<{
|
|
27
27
|
success: boolean;
|
|
28
28
|
context: {
|
|
29
|
-
language: "
|
|
29
|
+
language: "javascript" | "typescript" | "python" | "java" | "unknown";
|
|
30
30
|
module_system: "commonjs" | "esm" | "umd" | "amd" | undefined;
|
|
31
31
|
package_manager: "npm" | "yarn" | "pnpm" | "pip" | "maven" | "gradle" | undefined;
|
|
32
32
|
build_tool: string | undefined;
|
|
@@ -58,7 +58,7 @@ export declare function handleGenerateUpgradeReport(args: unknown): Promise<{
|
|
|
58
58
|
package: string;
|
|
59
59
|
from_version: string | undefined;
|
|
60
60
|
to_version: string;
|
|
61
|
-
complexity: "medium" | "
|
|
61
|
+
complexity: "medium" | "high" | "low";
|
|
62
62
|
estimated_time: string;
|
|
63
63
|
upgrade_command: string;
|
|
64
64
|
install_command: string;
|
|
@@ -75,7 +75,7 @@ export declare function handleGenerateUpgradeReport(args: unknown): Promise<{
|
|
|
75
75
|
testing_strategy: string[];
|
|
76
76
|
rollback_strategy: string;
|
|
77
77
|
risks: {
|
|
78
|
-
level: "medium" | "
|
|
78
|
+
level: "medium" | "critical" | "high" | "low";
|
|
79
79
|
factors: string[];
|
|
80
80
|
mitigations: string[];
|
|
81
81
|
};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guard Tool Adapter
|
|
3
|
+
*
|
|
4
|
+
* Provides a { definition, handler } shape compatible with the primary-tools
|
|
5
|
+
* registration model. Returns a plain GuardResult object rather than the
|
|
6
|
+
* McpServer-native { content: [{ type:'text', text }] } envelope.
|
|
7
|
+
*
|
|
8
|
+
* Uses the actual GovernancePipeline / InterventionEngine instance APIs.
|
|
9
|
+
* The hallucinated-packages corpus is imported via the real filename.
|
|
10
|
+
*/
|
|
11
|
+
import { z } from 'zod';
|
|
12
|
+
export type GuardActionType = 'pass' | 'modified' | 'blocked';
|
|
13
|
+
export interface GuardResult {
|
|
14
|
+
action: GuardActionType;
|
|
15
|
+
response: string;
|
|
16
|
+
intervention?: {
|
|
17
|
+
type: string;
|
|
18
|
+
reason: string;
|
|
19
|
+
confidence: number;
|
|
20
|
+
original_response?: string;
|
|
21
|
+
};
|
|
22
|
+
domain_detected: 'dev' | 'clinical' | 'unknown';
|
|
23
|
+
evaluation_id: string;
|
|
24
|
+
elapsed_ms: number;
|
|
25
|
+
mode: 'enforce' | 'shadow' | 'bypass';
|
|
26
|
+
corpus_version: string;
|
|
27
|
+
detector_results?: Record<string, unknown>;
|
|
28
|
+
}
|
|
29
|
+
declare const GuardInputSchema: z.ZodObject<{
|
|
30
|
+
response: z.ZodString;
|
|
31
|
+
conversation: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
32
|
+
role: z.ZodEnum<["user", "assistant"]>;
|
|
33
|
+
content: z.ZodString;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
content: string;
|
|
36
|
+
role: "user" | "assistant";
|
|
37
|
+
}, {
|
|
38
|
+
content: string;
|
|
39
|
+
role: "user" | "assistant";
|
|
40
|
+
}>, "many">>>;
|
|
41
|
+
domain: z.ZodDefault<z.ZodOptional<z.ZodEnum<["dev", "clinical", "auto"]>>>;
|
|
42
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
43
|
+
mode: z.ZodDefault<z.ZodOptional<z.ZodEnum<["enforce", "shadow", "bypass"]>>>;
|
|
44
|
+
}, "strip", z.ZodTypeAny, {
|
|
45
|
+
mode: "enforce" | "shadow" | "bypass";
|
|
46
|
+
response: string;
|
|
47
|
+
conversation: {
|
|
48
|
+
content: string;
|
|
49
|
+
role: "user" | "assistant";
|
|
50
|
+
}[];
|
|
51
|
+
domain: "clinical" | "auto" | "dev";
|
|
52
|
+
session_id?: string | undefined;
|
|
53
|
+
}, {
|
|
54
|
+
response: string;
|
|
55
|
+
mode?: "enforce" | "shadow" | "bypass" | undefined;
|
|
56
|
+
session_id?: string | undefined;
|
|
57
|
+
conversation?: {
|
|
58
|
+
content: string;
|
|
59
|
+
role: "user" | "assistant";
|
|
60
|
+
}[] | undefined;
|
|
61
|
+
domain?: "clinical" | "auto" | "dev" | undefined;
|
|
62
|
+
}>;
|
|
63
|
+
export type GuardInput = z.infer<typeof GuardInputSchema>;
|
|
64
|
+
export declare function handleGuard(args: unknown): Promise<GuardResult>;
|
|
65
|
+
export declare const guardTool: {
|
|
66
|
+
readonly definition: {
|
|
67
|
+
readonly name: "guard";
|
|
68
|
+
readonly description: string;
|
|
69
|
+
readonly annotations: {
|
|
70
|
+
readonly readOnlyHint: true;
|
|
71
|
+
readonly destructiveHint: false;
|
|
72
|
+
readonly idempotentHint: true;
|
|
73
|
+
readonly openWorldHint: false;
|
|
74
|
+
};
|
|
75
|
+
readonly inputSchema: {
|
|
76
|
+
readonly type: "object";
|
|
77
|
+
readonly properties: {
|
|
78
|
+
readonly response: {
|
|
79
|
+
readonly type: "string";
|
|
80
|
+
readonly description: "Draft response to evaluate";
|
|
81
|
+
};
|
|
82
|
+
readonly conversation: {
|
|
83
|
+
readonly type: "array";
|
|
84
|
+
readonly items: {
|
|
85
|
+
readonly type: "object";
|
|
86
|
+
readonly properties: {
|
|
87
|
+
readonly role: {
|
|
88
|
+
readonly type: "string";
|
|
89
|
+
readonly enum: readonly ["user", "assistant"];
|
|
90
|
+
};
|
|
91
|
+
readonly content: {
|
|
92
|
+
readonly type: "string";
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
readonly required: readonly ["role", "content"];
|
|
96
|
+
};
|
|
97
|
+
readonly description: "Recent conversation history";
|
|
98
|
+
};
|
|
99
|
+
readonly domain: {
|
|
100
|
+
readonly type: "string";
|
|
101
|
+
readonly enum: readonly ["dev", "clinical", "auto"];
|
|
102
|
+
readonly description: "Governance domain. 'auto' detects from context.";
|
|
103
|
+
};
|
|
104
|
+
readonly session_id: {
|
|
105
|
+
readonly type: "string";
|
|
106
|
+
readonly description: "Session ID for audit trail";
|
|
107
|
+
};
|
|
108
|
+
readonly mode: {
|
|
109
|
+
readonly type: "string";
|
|
110
|
+
readonly enum: readonly ["enforce", "shadow", "bypass"];
|
|
111
|
+
readonly description: "Governance mode";
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
readonly required: readonly ["response"];
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
readonly handler: typeof handleGuard;
|
|
118
|
+
};
|
|
119
|
+
export {};
|
|
120
|
+
//# sourceMappingURL=guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/tools/guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,eAAe,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,eAAe,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAMD,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASpB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAqH1D,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CA8MrE;AAQD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDZ,CAAC"}
|