@mneme-ai/core 2.19.79-lite → 2.19.80-lite
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/diaspora/diaspora.test.js +58 -0
- package/dist/diaspora/diaspora.test.js.map +1 -1
- package/dist/diaspora/http_bridge.d.ts +29 -0
- package/dist/diaspora/http_bridge.d.ts.map +1 -1
- package/dist/diaspora/http_bridge.js +56 -2
- package/dist/diaspora/http_bridge.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/permeate/permeate.test.js +71 -0
- package/dist/permeate/permeate.test.js.map +1 -1
- package/dist/permeate/userscript_generator.d.ts +6 -0
- package/dist/permeate/userscript_generator.d.ts.map +1 -1
- package/dist/permeate/userscript_generator.js +290 -3
- package/dist/permeate/userscript_generator.js.map +1 -1
- package/dist/polygraph/index.d.ts +64 -0
- package/dist/polygraph/index.d.ts.map +1 -0
- package/dist/polygraph/index.js +159 -0
- package/dist/polygraph/index.js.map +1 -0
- package/dist/polygraph/polygraph.test.d.ts +12 -0
- package/dist/polygraph/polygraph.test.d.ts.map +1 -0
- package/dist/polygraph/polygraph.test.js +156 -0
- package/dist/polygraph/polygraph.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permeate.test.js","sourceRoot":"","sources":["../../src/permeate/permeate.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"permeate.test.js","sourceRoot":"","sources":["../../src/permeate/permeate.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,12 @@ export interface UserscriptOptions {
|
|
|
28
28
|
bridgeUrl?: string;
|
|
29
29
|
/** Bearer token for the bridge (only used when bridgeUrl is set). */
|
|
30
30
|
bridgeToken?: string;
|
|
31
|
+
/** v2.19.80 — Browser Polygraph mode. When true, the userscript ALSO
|
|
32
|
+
* hooks the AI response container (claude.ai / chatgpt / gemini /
|
|
33
|
+
* copilot / deepseek / qwen), splits new sentences as they stream in,
|
|
34
|
+
* POSTs each to the bridge's `/v1/polygraph/verify`, and renders a
|
|
35
|
+
* green/yellow/red dot inline. Requires `bridgeUrl` + `bridgeToken`. */
|
|
36
|
+
polygraph?: boolean;
|
|
31
37
|
}
|
|
32
38
|
export interface UserscriptArtifact {
|
|
33
39
|
/** Full .user.js file content. User saves this and Tampermonkey
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userscript_generator.d.ts","sourceRoot":"","sources":["../../src/permeate/userscript_generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB;;qEAEiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"userscript_generator.d.ts","sourceRoot":"","sources":["../../src/permeate/userscript_generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,MAAM,WAAW,iBAAiB;IAChC,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB;;qEAEiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;6EAIyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC;2BACuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,kBAAkB,CAub9E"}
|
|
@@ -161,11 +161,298 @@ async function fetchSoulFromBridge() {
|
|
|
161
161
|
console.log('[Mneme] Soul injector ready -- site=' + SITE);
|
|
162
162
|
})();
|
|
163
163
|
`.trim();
|
|
164
|
-
|
|
164
|
+
// v2.19.80 — BROWSER POLYGRAPH block. Black-sheep design:
|
|
165
|
+
// 1. SENSOR — MutationObserver on the AI's response container per
|
|
166
|
+
// vendor. As text streams in, we extract candidate sentences and
|
|
167
|
+
// POST each to the bridge.
|
|
168
|
+
// 2. NERVOUS TRUNK — uses GM_xmlhttpRequest so cross-origin /
|
|
169
|
+
// mixed-content / localhost requests work on every site without
|
|
170
|
+
// CORS gymnastics. Token embedded once at generation time.
|
|
171
|
+
// 3. SKIN — green/yellow/red `●` injected before each sentence with a
|
|
172
|
+
// hover-tooltip carrying the evidence one-liner.
|
|
173
|
+
// 4. EKG — a small floating vital-signs SVG in the bottom-right.
|
|
174
|
+
// Real-time waveform pulses with the polygraph; spikes red on a
|
|
175
|
+
// refuted dot, green on a confirmed dot. Looks like a heart monitor.
|
|
176
|
+
// Click to expand into a session readout panel.
|
|
177
|
+
// 5. RESILIENCE — if the bridge is unreachable, every dot stays grey;
|
|
178
|
+
// the EKG corner shows a "● bridge sleeping" hint. Never throws.
|
|
179
|
+
const polygraphBlock = opts.polygraph && opts.bridgeUrl
|
|
180
|
+
? `
|
|
181
|
+
// ── BROWSER POLYGRAPH (v2.19.80) ───────────────────────────────────
|
|
182
|
+
// Verifies each sentence of every AI response in real time via the local
|
|
183
|
+
// Mneme HTTP bridge. Renders green/yellow/red dots inline + a floating
|
|
184
|
+
// EKG vital-signs indicator. Never throws — bridge offline = grey dots.
|
|
185
|
+
(function polygraph() {
|
|
186
|
+
'use strict';
|
|
187
|
+
const POLYGRAPH_BRIDGE = ${JSON.stringify(opts.bridgeUrl)};
|
|
188
|
+
const POLYGRAPH_TOKEN = ${JSON.stringify(opts.bridgeToken ?? "")};
|
|
189
|
+
|
|
190
|
+
// Per-vendor response container selectors. Try each — first match wins.
|
|
191
|
+
// Fallbacks are intentionally loose so a vendor UI shuffle doesn't
|
|
192
|
+
// silently disable the polygraph.
|
|
193
|
+
const RESPONSE_SELECTORS = {
|
|
194
|
+
'chatgpt': ['[data-message-author-role="assistant"] .markdown', '[data-message-author-role="assistant"]', '.markdown.prose'],
|
|
195
|
+
'gemini': ['message-content', '.model-response-text', '.markdown.markdown-main-panel'],
|
|
196
|
+
'claude-ai': ['[data-testid*="message"]:not([data-testid*="user"])', '.font-claude-message', '[class*="ProseMirror"]:not([contenteditable="true"])'],
|
|
197
|
+
'copilot': ['[data-content="ai-message-text"]', '.ai-message-text'],
|
|
198
|
+
'deepseek': ['.ds-markdown', '[class*="message-content"]:not([class*="user"])'],
|
|
199
|
+
'qwen': ['.message-content[role="assistant"]', '.ai-message'],
|
|
200
|
+
'unknown': ['.markdown', 'main article', 'main'],
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
function vendorSite() {
|
|
204
|
+
const h = location.hostname;
|
|
205
|
+
if (h.includes('chatgpt.com') || h.includes('openai.com')) return 'chatgpt';
|
|
206
|
+
if (h.includes('gemini.google.com') || h.includes('aistudio.google.com')) return 'gemini';
|
|
207
|
+
if (h.includes('claude.ai')) return 'claude-ai';
|
|
208
|
+
if (h.includes('copilot.microsoft.com')) return 'copilot';
|
|
209
|
+
if (h.includes('deepseek.com')) return 'deepseek';
|
|
210
|
+
if (h.includes('qwenlm.ai')) return 'qwen';
|
|
211
|
+
return 'unknown';
|
|
212
|
+
}
|
|
213
|
+
const SITE = vendorSite();
|
|
214
|
+
const SELECTORS = RESPONSE_SELECTORS[SITE] || RESPONSE_SELECTORS.unknown;
|
|
215
|
+
|
|
216
|
+
// ── Sentence extraction (matches packages/core/src/polygraph/index.ts) ──
|
|
217
|
+
function splitSentences(text) {
|
|
218
|
+
if (!text) return [];
|
|
219
|
+
// Strip code blocks — we don't polygraph code (yet).
|
|
220
|
+
const noCode = text.replace(/\\\`\\\`\\\`[\\s\\S]*?\\\`\\\`\\\`/g, ' ');
|
|
221
|
+
// Force newline after CJK / Thai terminators so they split without
|
|
222
|
+
// needing trailing whitespace (matches core/polygraph/index.ts).
|
|
223
|
+
const normalised = noCode.replace(/([。ฯ])/g, '$1\\n');
|
|
224
|
+
return normalised
|
|
225
|
+
.split(/(?<=[.!?])\\s+|\\n+/m)
|
|
226
|
+
.map(s => s.trim())
|
|
227
|
+
.filter(s => s.length > 0);
|
|
228
|
+
}
|
|
229
|
+
function worthVerifying(s) {
|
|
230
|
+
if (s.length < 12) return false;
|
|
231
|
+
if (/^(let me|i think|i believe|in my opinion|maybe|perhaps|i'm not sure|actually,|so,)/i.test(s)) return false;
|
|
232
|
+
const tail = s.split(/\\s+/).slice(1).join(' ');
|
|
233
|
+
// Leading-only boundary for digit regex — \\b fails between digit + letter
|
|
234
|
+
// (e.g. "250ms"); keep the leading boundary, drop the trailing one.
|
|
235
|
+
return /\\b\\d+/.test(s)
|
|
236
|
+
|| /\\bv?\\d+\\.\\d+/.test(s)
|
|
237
|
+
|| /\\b[a-zA-Z_][\\w]*\\.[a-zA-Z_][\\w]*/.test(s)
|
|
238
|
+
|| /\\b[a-z]+[A-Z][\\w]*/.test(s)
|
|
239
|
+
|| /\\b[A-Z][a-z]{2,}/.test(tail)
|
|
240
|
+
|| /\\\`[^\\\`]{2,}\\\`|\\"[^\\"]{3,}\\"/.test(s);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// ── Bridge call (privileged GM fetch — no CORS gymnastics) ──
|
|
244
|
+
const verifyCache = new Map(); // sentence → verdict (in-session memo)
|
|
245
|
+
function verifyOne(sentence) {
|
|
246
|
+
if (verifyCache.has(sentence)) return Promise.resolve(verifyCache.get(sentence));
|
|
247
|
+
return new Promise((resolve) => {
|
|
248
|
+
try {
|
|
249
|
+
GM_xmlhttpRequest({
|
|
250
|
+
method: 'POST',
|
|
251
|
+
url: POLYGRAPH_BRIDGE + '/v1/polygraph/verify',
|
|
252
|
+
headers: {
|
|
253
|
+
'Content-Type': 'application/json',
|
|
254
|
+
'Authorization': 'Bearer ' + POLYGRAPH_TOKEN,
|
|
255
|
+
},
|
|
256
|
+
data: JSON.stringify({ sentence, vendor: SITE }),
|
|
257
|
+
timeout: 4000,
|
|
258
|
+
onload: (r) => {
|
|
259
|
+
try {
|
|
260
|
+
const v = JSON.parse(r.responseText);
|
|
261
|
+
verifyCache.set(sentence, v);
|
|
262
|
+
resolve(v);
|
|
263
|
+
} catch { resolve({ verdict: 'unknown', color: 'grey', confidence: 0, oneLine: 'parse-error' }); }
|
|
264
|
+
},
|
|
265
|
+
onerror: () => resolve({ verdict: 'unknown', color: 'grey', confidence: 0, oneLine: 'bridge offline' }),
|
|
266
|
+
ontimeout: () => resolve({ verdict: 'unknown', color: 'grey', confidence: 0, oneLine: 'bridge timeout' }),
|
|
267
|
+
});
|
|
268
|
+
} catch { resolve({ verdict: 'unknown', color: 'grey', confidence: 0, oneLine: 'GM_xhr unavailable' }); }
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// ── EKG: vital-signs indicator (black-sheep flagship) ──
|
|
273
|
+
// SVG canvas in bottom-right. Renders a polygraph-style waveform that
|
|
274
|
+
// pulses with each verdict — green spike for confirmed, red for refuted.
|
|
275
|
+
let ekgEl = null, ekgPath = null, ekgPoints = [], ekgVerdicts = [];
|
|
276
|
+
function ekgInit() {
|
|
277
|
+
if (document.getElementById('mneme-polygraph-ekg')) return;
|
|
278
|
+
const root = document.createElement('div');
|
|
279
|
+
root.id = 'mneme-polygraph-ekg';
|
|
280
|
+
root.style.cssText = 'position:fixed;bottom:14px;right:14px;z-index:99998;width:200px;height:56px;background:rgba(10,10,14,0.92);border:1px solid #f38020;border-radius:10px;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#9ba1a6;font-size:10px;line-height:1.2;box-shadow:0 6px 20px rgba(0,0,0,0.4);cursor:pointer;user-select:none;';
|
|
281
|
+
root.title = 'Mneme Polygraph — live truth-check on AI response. Click to expand.';
|
|
282
|
+
const label = document.createElement('div');
|
|
283
|
+
label.id = 'mneme-polygraph-ekg-label';
|
|
284
|
+
label.style.cssText = 'display:flex;justify-content:space-between;align-items:center;color:#f7d34c;font-weight:600;letter-spacing:0.04em;';
|
|
285
|
+
label.innerHTML = '<span>● MNEME POLYGRAPH</span><span id="mneme-polygraph-tally" style="color:#9ba1a6;font-weight:400">0/0</span>';
|
|
286
|
+
const svgNS = 'http://www.w3.org/2000/svg';
|
|
287
|
+
const svg = document.createElementNS(svgNS, 'svg');
|
|
288
|
+
svg.setAttribute('viewBox', '0 0 200 30');
|
|
289
|
+
svg.setAttribute('width', '184');
|
|
290
|
+
svg.setAttribute('height', '30');
|
|
291
|
+
svg.style.cssText = 'display:block;margin-top:2px;';
|
|
292
|
+
const path = document.createElementNS(svgNS, 'path');
|
|
293
|
+
path.setAttribute('fill', 'none');
|
|
294
|
+
path.setAttribute('stroke', '#f38020');
|
|
295
|
+
path.setAttribute('stroke-width', '1.2');
|
|
296
|
+
path.setAttribute('stroke-linejoin', 'round');
|
|
297
|
+
svg.appendChild(path);
|
|
298
|
+
root.appendChild(label);
|
|
299
|
+
root.appendChild(svg);
|
|
300
|
+
document.body.appendChild(root);
|
|
301
|
+
ekgEl = root; ekgPath = path;
|
|
302
|
+
// Seed flatline so the SVG isn't empty.
|
|
303
|
+
for (let x = 0; x < 200; x += 4) ekgPoints.push({ x, y: 15 });
|
|
304
|
+
ekgRedraw();
|
|
305
|
+
// Background tick — drift the line left so the polygraph FEELS alive
|
|
306
|
+
// even when no new verdicts arrive.
|
|
307
|
+
setInterval(() => {
|
|
308
|
+
ekgPoints = ekgPoints.map(p => ({ x: p.x - 1, y: p.y })).filter(p => p.x >= 0);
|
|
309
|
+
if (ekgPoints.length === 0 || ekgPoints[ekgPoints.length - 1].x < 196) {
|
|
310
|
+
ekgPoints.push({ x: 200, y: 15 });
|
|
311
|
+
}
|
|
312
|
+
ekgRedraw();
|
|
313
|
+
}, 250);
|
|
314
|
+
// Expand to receipt panel on click.
|
|
315
|
+
root.addEventListener('click', ekgExpand);
|
|
316
|
+
}
|
|
317
|
+
function ekgRedraw() {
|
|
318
|
+
if (!ekgPath || ekgPoints.length === 0) return;
|
|
319
|
+
const d = ekgPoints.map((p, i) => (i === 0 ? 'M' : 'L') + p.x.toFixed(1) + ',' + p.y.toFixed(1)).join(' ');
|
|
320
|
+
ekgPath.setAttribute('d', d);
|
|
321
|
+
}
|
|
322
|
+
function ekgPulse(color) {
|
|
323
|
+
if (!ekgPath) return;
|
|
324
|
+
// A polygraph spike: down-up-down across 3 fresh points.
|
|
325
|
+
const baseX = ekgPoints.length > 0 ? ekgPoints[ekgPoints.length - 1].x + 2 : 200;
|
|
326
|
+
const spike = color === 'red' ? -10 : color === 'green' ? 10 : color === 'yellow' ? 4 : 0;
|
|
327
|
+
ekgPoints.push({ x: baseX, y: 15 });
|
|
328
|
+
ekgPoints.push({ x: baseX + 2, y: 15 - spike });
|
|
329
|
+
ekgPoints.push({ x: baseX + 4, y: 15 + spike / 2 });
|
|
330
|
+
ekgPoints.push({ x: baseX + 6, y: 15 });
|
|
331
|
+
// Flash stroke colour briefly.
|
|
332
|
+
const flash = color === 'red' ? '#ff5b5b' : color === 'green' ? '#3fb950' : color === 'yellow' ? '#f7d34c' : '#6e7681';
|
|
333
|
+
ekgPath.setAttribute('stroke', flash);
|
|
334
|
+
setTimeout(() => { if (ekgPath) ekgPath.setAttribute('stroke', '#f38020'); }, 600);
|
|
335
|
+
ekgRedraw();
|
|
336
|
+
}
|
|
337
|
+
function ekgTally(confirmed, refuted, total) {
|
|
338
|
+
const el = document.getElementById('mneme-polygraph-tally');
|
|
339
|
+
if (el) el.textContent = confirmed + '✓ ' + refuted + '✗ / ' + total;
|
|
340
|
+
}
|
|
341
|
+
function ekgExpand() {
|
|
342
|
+
const existing = document.getElementById('mneme-polygraph-panel');
|
|
343
|
+
if (existing) { existing.remove(); return; }
|
|
344
|
+
const panel = document.createElement('div');
|
|
345
|
+
panel.id = 'mneme-polygraph-panel';
|
|
346
|
+
panel.style.cssText = 'position:fixed;bottom:80px;right:14px;z-index:99999;width:380px;max-height:60vh;overflow:auto;background:#0a0a0e;border:1px solid #f38020;border-radius:10px;padding:14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:#e6e6e6;font-size:11px;line-height:1.5;box-shadow:0 10px 40px rgba(0,0,0,0.6);';
|
|
347
|
+
let html = '<div style="display:flex;justify-content:space-between;margin-bottom:10px"><strong style="color:#f7d34c">🔴 MNEME POLYGRAPH — session readout</strong><span style="cursor:pointer;color:#9ba1a6" id="mneme-polygraph-close">✕</span></div>';
|
|
348
|
+
if (ekgVerdicts.length === 0) {
|
|
349
|
+
html += '<div style="color:#9ba1a6">No sentences scored yet. Ask the AI a factual question — polygraph dots will appear inline.</div>';
|
|
350
|
+
} else {
|
|
351
|
+
for (const v of ekgVerdicts.slice(-50).reverse()) {
|
|
352
|
+
const dotColor = v.color === 'green' ? '#3fb950' : v.color === 'red' ? '#ff5b5b' : v.color === 'yellow' ? '#f7d34c' : '#6e7681';
|
|
353
|
+
html += '<div style="padding:6px 0;border-bottom:1px solid #1a1a22"><span style="color:' + dotColor + ';font-size:14px">●</span> <span style="color:#9ba1a6">' + (v.color || 'grey').toUpperCase() + '</span> · ' + (v.oneLine || '') + '<br><span style="color:#666;font-size:10px">' + (v.sentence || '').slice(0, 140) + '</span></div>';
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
panel.innerHTML = html;
|
|
357
|
+
document.body.appendChild(panel);
|
|
358
|
+
const closeBtn = document.getElementById('mneme-polygraph-close');
|
|
359
|
+
if (closeBtn) closeBtn.onclick = (e) => { e.stopPropagation(); panel.remove(); };
|
|
360
|
+
panel.addEventListener('click', (e) => e.stopPropagation());
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// ── DOT injection ──
|
|
364
|
+
function dotEl(verdict) {
|
|
365
|
+
const dot = document.createElement('span');
|
|
366
|
+
dot.className = 'mneme-polygraph-dot';
|
|
367
|
+
const color = verdict.color === 'green' ? '#3fb950' : verdict.color === 'red' ? '#ff5b5b' : verdict.color === 'yellow' ? '#f7d34c' : '#6e7681';
|
|
368
|
+
dot.style.cssText = 'display:inline-block;width:8px;height:8px;border-radius:50%;background:' + color + ';margin-right:6px;vertical-align:middle;box-shadow:0 0 6px ' + color + ';';
|
|
369
|
+
dot.title = '[Mneme] ' + (verdict.oneLine || verdict.verdict || 'unknown');
|
|
370
|
+
return dot;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
// Mark each text node's sentences with a leading dot. Use a dataset
|
|
374
|
+
// flag to avoid re-decorating the same node as the response streams.
|
|
375
|
+
const verdictTally = { confirmed: 0, refuted: 0, total: 0 };
|
|
376
|
+
function decorateContainer(node) {
|
|
377
|
+
if (!node || node.dataset && node.dataset.mnemePolygraphed) return;
|
|
378
|
+
// Find LEAF text-bearing elements (<p>, <li>, <pre>, headings).
|
|
379
|
+
const candidates = node.querySelectorAll ? node.querySelectorAll('p, li, h1, h2, h3, h4, blockquote') : [];
|
|
380
|
+
candidates.forEach((el) => {
|
|
381
|
+
if (el.dataset.mnemePolygraphed === 'done') return;
|
|
382
|
+
const text = el.textContent || '';
|
|
383
|
+
const sentences = splitSentences(text);
|
|
384
|
+
if (sentences.length === 0) return;
|
|
385
|
+
// Mark in-progress so a concurrent observer tick doesn't re-enter.
|
|
386
|
+
el.dataset.mnemePolygraphed = 'pending';
|
|
387
|
+
// For now we only verify the FIRST sentence of each <p> block —
|
|
388
|
+
// sentence-level highlighting inside a <p> requires text-node walk
|
|
389
|
+
// which can fight with the vendor's streaming render. First-sentence
|
|
390
|
+
// verification + receipt panel for the rest is a reasonable v1.
|
|
391
|
+
const first = sentences.find(worthVerifying);
|
|
392
|
+
if (!first) { el.dataset.mnemePolygraphed = 'skip'; return; }
|
|
393
|
+
verifyOne(first).then((verdict) => {
|
|
394
|
+
if (!verdict) return;
|
|
395
|
+
verdictTally.total++;
|
|
396
|
+
if (verdict.color === 'green') verdictTally.confirmed++;
|
|
397
|
+
if (verdict.color === 'red') verdictTally.refuted++;
|
|
398
|
+
ekgVerdicts.push({ ...verdict, sentence: first });
|
|
399
|
+
ekgPulse(verdict.color);
|
|
400
|
+
ekgTally(verdictTally.confirmed, verdictTally.refuted, verdictTally.total);
|
|
401
|
+
try {
|
|
402
|
+
// Insert dot before the first text node (safer than prepending
|
|
403
|
+
// HTML which would mangle React refs).
|
|
404
|
+
if (!el.querySelector('.mneme-polygraph-dot')) {
|
|
405
|
+
el.insertBefore(dotEl(verdict), el.firstChild);
|
|
406
|
+
}
|
|
407
|
+
} catch {}
|
|
408
|
+
el.dataset.mnemePolygraphed = 'done';
|
|
409
|
+
});
|
|
410
|
+
});
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
function findResponseContainers() {
|
|
414
|
+
const out = [];
|
|
415
|
+
for (const sel of SELECTORS) {
|
|
416
|
+
try {
|
|
417
|
+
const found = document.querySelectorAll(sel);
|
|
418
|
+
found.forEach((n) => out.push(n));
|
|
419
|
+
if (found.length > 0) break;
|
|
420
|
+
} catch {}
|
|
421
|
+
}
|
|
422
|
+
return out;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
let debounceTimer = null;
|
|
426
|
+
function onMutation() {
|
|
427
|
+
if (debounceTimer) clearTimeout(debounceTimer);
|
|
428
|
+
debounceTimer = setTimeout(() => {
|
|
429
|
+
const containers = findResponseContainers();
|
|
430
|
+
containers.forEach(decorateContainer);
|
|
431
|
+
}, 350);
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
function bootPolygraph() {
|
|
435
|
+
ekgInit();
|
|
436
|
+
const obs = new MutationObserver(onMutation);
|
|
437
|
+
obs.observe(document.body, { childList: true, subtree: true, characterData: true });
|
|
438
|
+
onMutation();
|
|
439
|
+
console.log('[Mneme] Polygraph armed — site=' + SITE + ' · bridge=' + POLYGRAPH_BRIDGE);
|
|
440
|
+
}
|
|
441
|
+
// Defer to document-idle so the AI page's initial DOM is settled.
|
|
442
|
+
if (document.readyState === 'complete' || document.readyState === 'interactive') bootPolygraph();
|
|
443
|
+
else window.addEventListener('DOMContentLoaded', bootPolygraph);
|
|
444
|
+
})();
|
|
445
|
+
`
|
|
446
|
+
: "";
|
|
447
|
+
const content = `${header}\n\n${bridgeBlock}${body}\n${polygraphBlock}`;
|
|
165
448
|
return {
|
|
166
449
|
content,
|
|
167
|
-
filename:
|
|
168
|
-
|
|
450
|
+
filename: opts.polygraph
|
|
451
|
+
? `mneme-polygraph-${opts.mnemeVersion}.user.js`
|
|
452
|
+
: `mneme-soul-injector-${opts.mnemeVersion}.user.js`,
|
|
453
|
+
installNote: opts.polygraph
|
|
454
|
+
? `Install: (1) Add the Tampermonkey/Violentmonkey extension to your browser. (2) Run \`mneme polygraph install\` to start the bridge + emit this userscript. (3) Click the .user.js file — Tampermonkey will prompt to install. (4) Open ChatGPT / Claude.ai / Gemini / Copilot / DeepSeek / Qwen — green/yellow/red dots appear next to every AI sentence and the EKG indicator pulses bottom-right.`
|
|
455
|
+
: `Install: (1) Add the Tampermonkey/Violentmonkey extension to your browser. (2) Click the .user.js file -- Tampermonkey will prompt to install. (3) Open ChatGPT/Gemini/Claude.ai -- the 💉 button appears top-right. (4) Copy a Mneme soul prompt, click the button, soul is injected into the chat.`,
|
|
169
456
|
};
|
|
170
457
|
}
|
|
171
458
|
//# sourceMappingURL=userscript_generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userscript_generator.js","sourceRoot":"","sources":["../../src/permeate/userscript_generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"userscript_generator.js","sourceRoot":"","sources":["../../src/permeate/userscript_generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA6BH,MAAM,UAAU,kBAAkB,CAAC,IAAuB;IACxD,MAAM,MAAM,GAAG;QACb,mBAAmB;QACnB,sCAAsC;QACtC,4DAA4D;QAC5D,oBAAoB,IAAI,CAAC,YAAY,EAAE;QACvC,8IAA8I;QAC9I,wBAAwB;QACxB,wCAAwC;QACxC,2GAA2G;QAC3G,4CAA4C;QAC5C,8CAA8C;QAC9C,gDAAgD;QAChD,sCAAsC;QACtC,kDAAkD;QAClD,8CAA8C;QAC9C,2CAA2C;QAC3C,kCAAkC;QAClC,oCAAoC;QACpC,gCAAgC;QAChC,oBAAoB;KACrB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS;QAChC,CAAC,CAAC;;qBAEe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;uBAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;;;;;;;;;;;;CAY5D;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGd,CAAC,IAAI,EAAE,CAAC;IAEP,0DAA0D;IAC1D,oEAAoE;IACpE,sEAAsE;IACtE,gCAAgC;IAChC,gEAAgE;IAChE,qEAAqE;IACrE,gEAAgE;IAChE,wEAAwE;IACxE,sDAAsD;IACtD,mEAAmE;IACnE,qEAAqE;IACrE,0EAA0E;IAC1E,qDAAqD;IACrD,wEAAwE;IACxE,sEAAsE;IACtE,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;QACrD,CAAC,CAAC;;;;;;;6BAOuB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;6BAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiQlE;QACG,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,OAAO,GAAG,GAAG,MAAM,OAAO,WAAW,GAAG,IAAI,KAAK,cAAc,EAAE,CAAC;IACxE,OAAO;QACL,OAAO;QACP,QAAQ,EAAE,IAAI,CAAC,SAAS;YACtB,CAAC,CAAC,mBAAmB,IAAI,CAAC,YAAY,UAAU;YAChD,CAAC,CAAC,uBAAuB,IAAI,CAAC,YAAY,UAAU;QACtD,WAAW,EAAE,IAAI,CAAC,SAAS;YACzB,CAAC,CAAC,qYAAqY;YACvY,CAAC,CAAC,sSAAsS;KAC3S,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.19.80 — BROWSER POLYGRAPH ENGINE.
|
|
3
|
+
*
|
|
4
|
+
* Closes the gap from IDEA #1 (AI POLYGRAPH): the web demo at #polygraph
|
|
5
|
+
* is interactive but until now Mneme had no way to verify a sentence
|
|
6
|
+
* streaming out of claude.ai / chatgpt.com / gemini.google.com /
|
|
7
|
+
* copilot.microsoft.com in real time.
|
|
8
|
+
*
|
|
9
|
+
* Two halves:
|
|
10
|
+
* 1. `verifyBrowserSentence()` — server-side: takes a single AI-uttered
|
|
11
|
+
* sentence, decides whether it has enough "specific-entity" signal
|
|
12
|
+
* to be worth running through ACGV, then runs it and normalises
|
|
13
|
+
* the verdict into a wire-shape the browser can render as a dot.
|
|
14
|
+
* 2. `extractVerifiableSentences()` — sentence chunker the userscript
|
|
15
|
+
* uses on the streaming response. Filters fillers / short / opinion
|
|
16
|
+
* strings so the bridge isn't pinged on every "Let me think...".
|
|
17
|
+
*
|
|
18
|
+
* Composes with: SQUADRON ACGV (truth check engine), HTTP BRIDGE
|
|
19
|
+
* (transport), PERMEATE USERSCRIPT (renderer), AI POLYGRAPH dashboard
|
|
20
|
+
* view (canonical demo).
|
|
21
|
+
*
|
|
22
|
+
* Design rules (LOAD-BEARING — do not erode):
|
|
23
|
+
* - NEVER throw. The polygraph runs in the user's eye-line; a 500 surfaces
|
|
24
|
+
* as a broken dot in their AI chat. On any error → `unknown / grey`.
|
|
25
|
+
* - Default to YELLOW for anything ambiguous. RED only when ACGV gives
|
|
26
|
+
* an actual refutation. The polygraph errs toward "I don't know" rather
|
|
27
|
+
* than crying wolf — false-positive REDs would teach the user to
|
|
28
|
+
* distrust the polygraph itself.
|
|
29
|
+
* - Server-side latency budget: <300ms per sentence (fast path uses
|
|
30
|
+
* propositional ACGV, never z3, to stay snappy under streaming load).
|
|
31
|
+
*/
|
|
32
|
+
/** Wire-format verdict returned to the browser userscript. Kept tiny on
|
|
33
|
+
* purpose — the userscript renders this next to a single sentence and
|
|
34
|
+
* cannot afford deep nesting. */
|
|
35
|
+
export interface BrowserPolygraphVerdict {
|
|
36
|
+
verdict: "trustworthy" | "mixed" | "refuted" | "impossible" | "unknown";
|
|
37
|
+
color: "green" | "yellow" | "red" | "grey";
|
|
38
|
+
confidence: number;
|
|
39
|
+
oneLine: string;
|
|
40
|
+
nextAction?: string;
|
|
41
|
+
latencyMs: number;
|
|
42
|
+
engine: string;
|
|
43
|
+
}
|
|
44
|
+
/** Quick heuristic: does the sentence carry "specific entities" worth
|
|
45
|
+
* running through ACGV? If not, we save a round-trip and return grey.
|
|
46
|
+
*
|
|
47
|
+
* WHY: a polite filler like "Let me think about that" has no extractable
|
|
48
|
+
* facts. ACGV would correctly mark it MIXED and waste ~30ms. We pre-filter
|
|
49
|
+
* to keep streaming render-rate snappy. */
|
|
50
|
+
export declare function looksWorthVerifying(sentence: string): boolean;
|
|
51
|
+
/** Split an AI response into candidate sentences. Handles English `.!?`,
|
|
52
|
+
* Japanese/Chinese `。`, Thai `ฯ` end-mark, and Markdown bullets / line
|
|
53
|
+
* breaks. Returns ALL sentences (filter happens in `looksWorthVerifying`). */
|
|
54
|
+
export declare function extractVerifiableSentences(responseText: string): string[];
|
|
55
|
+
/** The core server-side verifier. Composed of: looksWorthVerifying →
|
|
56
|
+
* runACGV → friendlify → colorize. Wrapped in try/catch so a single
|
|
57
|
+
* failure can't crash the bridge. */
|
|
58
|
+
export declare function verifyBrowserSentence(input: {
|
|
59
|
+
sentence: string;
|
|
60
|
+
context?: string;
|
|
61
|
+
vendor?: string;
|
|
62
|
+
repoRoot: string;
|
|
63
|
+
}): Promise<BrowserPolygraphVerdict>;
|
|
64
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/polygraph/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH;;kCAEkC;AAClC,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;IACxE,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAuBD;;;;;4CAK4C;AAC5C,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAmB7D;AAED;;+EAE+E;AAC/E,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBzE;AAED;;sCAEsC;AACtC,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAkDnC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.19.80 — BROWSER POLYGRAPH ENGINE.
|
|
3
|
+
*
|
|
4
|
+
* Closes the gap from IDEA #1 (AI POLYGRAPH): the web demo at #polygraph
|
|
5
|
+
* is interactive but until now Mneme had no way to verify a sentence
|
|
6
|
+
* streaming out of claude.ai / chatgpt.com / gemini.google.com /
|
|
7
|
+
* copilot.microsoft.com in real time.
|
|
8
|
+
*
|
|
9
|
+
* Two halves:
|
|
10
|
+
* 1. `verifyBrowserSentence()` — server-side: takes a single AI-uttered
|
|
11
|
+
* sentence, decides whether it has enough "specific-entity" signal
|
|
12
|
+
* to be worth running through ACGV, then runs it and normalises
|
|
13
|
+
* the verdict into a wire-shape the browser can render as a dot.
|
|
14
|
+
* 2. `extractVerifiableSentences()` — sentence chunker the userscript
|
|
15
|
+
* uses on the streaming response. Filters fillers / short / opinion
|
|
16
|
+
* strings so the bridge isn't pinged on every "Let me think...".
|
|
17
|
+
*
|
|
18
|
+
* Composes with: SQUADRON ACGV (truth check engine), HTTP BRIDGE
|
|
19
|
+
* (transport), PERMEATE USERSCRIPT (renderer), AI POLYGRAPH dashboard
|
|
20
|
+
* view (canonical demo).
|
|
21
|
+
*
|
|
22
|
+
* Design rules (LOAD-BEARING — do not erode):
|
|
23
|
+
* - NEVER throw. The polygraph runs in the user's eye-line; a 500 surfaces
|
|
24
|
+
* as a broken dot in their AI chat. On any error → `unknown / grey`.
|
|
25
|
+
* - Default to YELLOW for anything ambiguous. RED only when ACGV gives
|
|
26
|
+
* an actual refutation. The polygraph errs toward "I don't know" rather
|
|
27
|
+
* than crying wolf — false-positive REDs would teach the user to
|
|
28
|
+
* distrust the polygraph itself.
|
|
29
|
+
* - Server-side latency budget: <300ms per sentence (fast path uses
|
|
30
|
+
* propositional ACGV, never z3, to stay snappy under streaming load).
|
|
31
|
+
*/
|
|
32
|
+
import { runACGV } from "../squadron/acgv.js";
|
|
33
|
+
/** Map ACGV's internal verdict family to the friendlier 5-state used by
|
|
34
|
+
* the browser. Mirrors the mapping in `mneme.truth.check` MCP tool. */
|
|
35
|
+
function toFriendlyVerdict(acgv) {
|
|
36
|
+
switch (acgv) {
|
|
37
|
+
case "FUSION": return "trustworthy";
|
|
38
|
+
case "LIMBO": return "mixed";
|
|
39
|
+
case "PASSTHROUGH": return "mixed";
|
|
40
|
+
case "BLACK_HOLE": return "refuted";
|
|
41
|
+
case "IMPOSSIBLE_REFUTE": return "impossible";
|
|
42
|
+
case "AUTO_REFUTE": return "impossible";
|
|
43
|
+
default: return "mixed";
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function toColor(v) {
|
|
47
|
+
if (v === "trustworthy")
|
|
48
|
+
return "green";
|
|
49
|
+
if (v === "refuted" || v === "impossible")
|
|
50
|
+
return "red";
|
|
51
|
+
if (v === "unknown")
|
|
52
|
+
return "grey";
|
|
53
|
+
return "yellow"; // mixed → caution
|
|
54
|
+
}
|
|
55
|
+
/** Quick heuristic: does the sentence carry "specific entities" worth
|
|
56
|
+
* running through ACGV? If not, we save a round-trip and return grey.
|
|
57
|
+
*
|
|
58
|
+
* WHY: a polite filler like "Let me think about that" has no extractable
|
|
59
|
+
* facts. ACGV would correctly mark it MIXED and waste ~30ms. We pre-filter
|
|
60
|
+
* to keep streaming render-rate snappy. */
|
|
61
|
+
export function looksWorthVerifying(sentence) {
|
|
62
|
+
const s = sentence.trim();
|
|
63
|
+
if (s.length < 12)
|
|
64
|
+
return false; // too short to carry a claim
|
|
65
|
+
if (/^(let me|i think|i believe|in my opinion|maybe|perhaps|i'm not sure|actually,|so,)/i.test(s))
|
|
66
|
+
return false;
|
|
67
|
+
// At least ONE of: a digit, a version-like token, a file/symbol with dots,
|
|
68
|
+
// a proper-noun (capitalised word that isn't sentence-initial), a CamelCase
|
|
69
|
+
// identifier, a percentage, or a quoted code/value.
|
|
70
|
+
// NOTE: do NOT close `\b\d+...` with a trailing `\b` — `\b` does not exist
|
|
71
|
+
// between `\d` and `\w` (e.g. `250ms`), so the boundary check breaks valid
|
|
72
|
+
// numeric-claim sentences. Leading boundary is enough.
|
|
73
|
+
const digitOrPct = /\b\d+(\.\d+)?/.test(s);
|
|
74
|
+
const versionish = /\bv?\d+\.\d+(\.\d+)?/.test(s);
|
|
75
|
+
const dottedSymbol = /\b[a-zA-Z_][\w]*\.[a-zA-Z_][\w]*/.test(s);
|
|
76
|
+
const camelCase = /\b[a-z]+[A-Z][\w]*/.test(s);
|
|
77
|
+
// Strip the very first word before checking proper nouns (avoid sentence-initial caps).
|
|
78
|
+
const tail = s.split(/\s+/).slice(1).join(" ");
|
|
79
|
+
const properNoun = /\b[A-Z][a-z]{2,}/.test(tail);
|
|
80
|
+
const codeQuote = /`[^`]{2,}`|"[^"]{3,}"/.test(s);
|
|
81
|
+
return digitOrPct || versionish || dottedSymbol || camelCase || properNoun || codeQuote;
|
|
82
|
+
}
|
|
83
|
+
/** Split an AI response into candidate sentences. Handles English `.!?`,
|
|
84
|
+
* Japanese/Chinese `。`, Thai `ฯ` end-mark, and Markdown bullets / line
|
|
85
|
+
* breaks. Returns ALL sentences (filter happens in `looksWorthVerifying`). */
|
|
86
|
+
export function extractVerifiableSentences(responseText) {
|
|
87
|
+
if (!responseText)
|
|
88
|
+
return [];
|
|
89
|
+
// Strip code blocks — we don't polygraph code (yet). Replace with placeholder
|
|
90
|
+
// so adjacent sentences aren't accidentally merged.
|
|
91
|
+
const noCode = responseText.replace(/```[\s\S]*?```/g, " ¶CODE¶ ");
|
|
92
|
+
// CJK + Thai terminators don't always carry trailing whitespace
|
|
93
|
+
// (`これはテストです。次の文。` is two sentences with no space). Force a
|
|
94
|
+
// newline after every CJK/Thai end-mark so the split regex below can
|
|
95
|
+
// rely on whitespace.
|
|
96
|
+
const normalised = noCode.replace(/([。ฯ])/g, "$1\n");
|
|
97
|
+
// Split on common sentence terminators (English + normalised CJK/Thai).
|
|
98
|
+
const raw = normalised
|
|
99
|
+
.split(/(?<=[.!?])\s+|\n+|^\s*[-*]\s+/m)
|
|
100
|
+
.map((s) => s.trim())
|
|
101
|
+
.filter((s) => s.length > 0 && s !== "¶CODE¶");
|
|
102
|
+
return raw;
|
|
103
|
+
}
|
|
104
|
+
/** The core server-side verifier. Composed of: looksWorthVerifying →
|
|
105
|
+
* runACGV → friendlify → colorize. Wrapped in try/catch so a single
|
|
106
|
+
* failure can't crash the bridge. */
|
|
107
|
+
export async function verifyBrowserSentence(input) {
|
|
108
|
+
const t0 = Date.now();
|
|
109
|
+
const sentence = input.sentence.trim();
|
|
110
|
+
if (!sentence) {
|
|
111
|
+
return { verdict: "unknown", color: "grey", confidence: 0, oneLine: "empty sentence", latencyMs: 0, engine: "noop" };
|
|
112
|
+
}
|
|
113
|
+
if (!looksWorthVerifying(sentence)) {
|
|
114
|
+
return {
|
|
115
|
+
verdict: "unknown", color: "grey", confidence: 0,
|
|
116
|
+
oneLine: "no specific entities to verify",
|
|
117
|
+
latencyMs: Date.now() - t0, engine: "prefilter",
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
// Always use propositional engine in the browser path: z3 spawns a
|
|
122
|
+
// worker + can take 1-3s. The browser polygraph is per-sentence on a
|
|
123
|
+
// streaming response; we MUST stay under ~300ms.
|
|
124
|
+
const result = runACGV({ claim: sentence, repoRoot: input.repoRoot });
|
|
125
|
+
const friendly = toFriendlyVerdict(result.verdict);
|
|
126
|
+
const color = toColor(friendly);
|
|
127
|
+
// One-line summary that's safe to show in a tooltip. ACGV's `nextAction`
|
|
128
|
+
// can be terse; surface the verdict name + confidence so the user can
|
|
129
|
+
// see WHY at a glance.
|
|
130
|
+
const oneLine = friendly === "trustworthy"
|
|
131
|
+
? `verified · ${result.verdict.toLowerCase()} (${Math.round(result.confidence * 100)}%)`
|
|
132
|
+
: friendly === "refuted" || friendly === "impossible"
|
|
133
|
+
? `refuted · ${result.verdict.toLowerCase()} (${Math.round(result.confidence * 100)}%)`
|
|
134
|
+
: `mixed evidence · need a more specific entity`;
|
|
135
|
+
return {
|
|
136
|
+
verdict: friendly,
|
|
137
|
+
color,
|
|
138
|
+
confidence: result.confidence,
|
|
139
|
+
oneLine,
|
|
140
|
+
nextAction: friendly === "refuted" || friendly === "impossible"
|
|
141
|
+
? "Do not rely on this sentence — re-prompt for a specific source."
|
|
142
|
+
: friendly === "trustworthy"
|
|
143
|
+
? "Safe to rely on."
|
|
144
|
+
: "Ask the AI to cite a specific file / function / version.",
|
|
145
|
+
latencyMs: Date.now() - t0,
|
|
146
|
+
engine: "propositional",
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
catch (e) {
|
|
150
|
+
// Defensive: ACGV throwing is unexpected but we MUST not bubble the
|
|
151
|
+
// error to the browser. Surface a grey dot.
|
|
152
|
+
return {
|
|
153
|
+
verdict: "unknown", color: "grey", confidence: 0,
|
|
154
|
+
oneLine: `polygraph error · ${e.message || "unknown"}`,
|
|
155
|
+
latencyMs: Date.now() - t0, engine: "error",
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/polygraph/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.19.80 — Browser Polygraph deep tests.
|
|
3
|
+
*
|
|
4
|
+
* Pins the load-bearing invariants of the per-sentence polygraph engine:
|
|
5
|
+
* - never throws (NEVER 500 a sentence — the user sees the dot)
|
|
6
|
+
* - prefilter discards fillers / short / no-entity sentences as `unknown/grey`
|
|
7
|
+
* - real claims with specific entities produce a verdict in <300ms
|
|
8
|
+
* - empty input → grey unknown
|
|
9
|
+
* - sentence extractor correctly splits English / Thai / CJK terminators
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=polygraph.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polygraph.test.d.ts","sourceRoot":"","sources":["../../src/polygraph/polygraph.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|