@mneme-ai/core 2.19.84-lite → 2.19.85-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/aegis/index.d.ts +1 -0
- package/dist/aegis/index.d.ts.map +1 -1
- package/dist/aegis/index.js +4 -0
- package/dist/aegis/index.js.map +1 -1
- package/dist/aegis/polygraph.d.ts.map +1 -1
- package/dist/aegis/polygraph.js +7 -14
- package/dist/aegis/polygraph.js.map +1 -1
- package/dist/aegis/polygraph_agreement.d.ts +47 -0
- package/dist/aegis/polygraph_agreement.d.ts.map +1 -0
- package/dist/aegis/polygraph_agreement.js +166 -0
- package/dist/aegis/polygraph_agreement.js.map +1 -0
- package/dist/aegis/polygraph_agreement.test.d.ts +17 -0
- package/dist/aegis/polygraph_agreement.test.d.ts.map +1 -0
- package/dist/aegis/polygraph_agreement.test.js +97 -0
- package/dist/aegis/polygraph_agreement.test.js.map +1 -0
- package/dist/agent_manifest.d.ts.map +1 -1
- package/dist/agent_manifest.js +24 -0
- package/dist/agent_manifest.js.map +1 -1
- package/dist/agent_manifest.test.js +22 -0
- package/dist/agent_manifest.test.js.map +1 -1
- package/dist/diaspora/diaspora.test.js +29 -0
- package/dist/diaspora/diaspora.test.js.map +1 -1
- package/dist/diaspora/http_bridge.d.ts +20 -0
- package/dist/diaspora/http_bridge.d.ts.map +1 -1
- package/dist/diaspora/http_bridge.js +9 -0
- package/dist/diaspora/http_bridge.js.map +1 -1
- package/dist/permeate/userscript_generator.d.ts.map +1 -1
- package/dist/permeate/userscript_generator.js +97 -6
- package/dist/permeate/userscript_generator.js.map +1 -1
- package/package.json +1 -1
|
@@ -436,7 +436,10 @@ async function fetchSoulFromBridge() {
|
|
|
436
436
|
// Mark each text node's sentences with a leading dot. Use a dataset
|
|
437
437
|
// flag to avoid re-decorating the same node as the response streams.
|
|
438
438
|
const verdictTally = { confirmed: 0, refuted: 0, total: 0 };
|
|
439
|
-
function
|
|
439
|
+
// v2.19.85 — declared as \`let\` (not function decl) so the sandbag
|
|
440
|
+
// auto-capture patch can wrap it without violating strict-mode
|
|
441
|
+
// reassignment rules.
|
|
442
|
+
let decorateContainer = function decorateContainerImpl(node) {
|
|
440
443
|
if (!node || node.dataset && node.dataset.mnemePolygraphed) return;
|
|
441
444
|
// Find LEAF text-bearing elements (<p>, <li>, <pre>, headings).
|
|
442
445
|
const candidates = node.querySelectorAll ? node.querySelectorAll('p, li, h1, h2, h3, h4, blockquote') : [];
|
|
@@ -497,7 +500,7 @@ async function fetchSoulFromBridge() {
|
|
|
497
500
|
el.dataset.mnemePolygraphed = 'done';
|
|
498
501
|
});
|
|
499
502
|
});
|
|
500
|
-
}
|
|
503
|
+
};
|
|
501
504
|
|
|
502
505
|
function findResponseContainers() {
|
|
503
506
|
const out = [];
|
|
@@ -520,17 +523,105 @@ async function fetchSoulFromBridge() {
|
|
|
520
523
|
}, 350);
|
|
521
524
|
}
|
|
522
525
|
|
|
526
|
+
// ── v2.19.85 SANDBAG AUTO-CAPTURE (the wild bit) ──────────────────
|
|
527
|
+
// When the user re-asks a question with hedging phrases (are-you-sure,
|
|
528
|
+
// really, double-check, แน่ใจไหม, จริงเหรอ, ผิดแล้ว), the userscript
|
|
529
|
+
// reads the PREVIOUS AI response (PROD answer) and the NEXT AI
|
|
530
|
+
// response (TEST answer where the AI knows it is being challenged),
|
|
531
|
+
// packages both, and POSTs to /v1/polygraph/sandbag-capture. Bridge
|
|
532
|
+
// records both legs into the AEGIS A3 polygraph ledger. Drift surfaces
|
|
533
|
+
// automatically the next time mneme polygraph drift runs.
|
|
534
|
+
const HEDGE_TRIGGERS = [
|
|
535
|
+
'are you sure', 'really', 'double-check', 'double check', 'fact check',
|
|
536
|
+
'is that true', 'are you certain', 'is that right', "that's wrong",
|
|
537
|
+
'แน่ใจไหม', 'จริงเหรอ', 'จริงไหม', 'ผิดแล้ว', 'ไม่จริง',
|
|
538
|
+
];
|
|
539
|
+
let sandbagState = { lastUserQuestion: '', lastAiAnswer: '', awaitingTestAnswer: false, lastHedge: '' };
|
|
540
|
+
|
|
541
|
+
function attachUserInputWatcher() {
|
|
542
|
+
document.addEventListener('keydown', (ev) => {
|
|
543
|
+
if (ev.key !== 'Enter' || ev.shiftKey) return;
|
|
544
|
+
const target = ev.target;
|
|
545
|
+
if (!target || !(target.tagName === 'TEXTAREA' || target.tagName === 'INPUT' || target.isContentEditable)) return;
|
|
546
|
+
const txt = ((target.value || target.textContent || '') + '').toLowerCase();
|
|
547
|
+
if (!txt) return;
|
|
548
|
+
let hedge = '';
|
|
549
|
+
for (const trig of HEDGE_TRIGGERS) {
|
|
550
|
+
if (txt.includes(trig)) { hedge = trig; break; }
|
|
551
|
+
}
|
|
552
|
+
if (hedge && sandbagState.lastAiAnswer) {
|
|
553
|
+
sandbagState.awaitingTestAnswer = true;
|
|
554
|
+
sandbagState.lastUserQuestion = txt.slice(0, 240);
|
|
555
|
+
sandbagState.lastHedge = hedge;
|
|
556
|
+
} else if (!hedge) {
|
|
557
|
+
sandbagState.lastUserQuestion = txt.slice(0, 240);
|
|
558
|
+
}
|
|
559
|
+
}, true);
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
// Track AI responses so the most recent one is captured as the PROD
|
|
563
|
+
// leg of any future sandbag pair.
|
|
564
|
+
const originalDecorate = decorateContainer;
|
|
565
|
+
decorateContainer = function patchedDecorate(node) {
|
|
566
|
+
originalDecorate(node);
|
|
567
|
+
try {
|
|
568
|
+
const txt = ((node && node.textContent) || '').slice(0, 600);
|
|
569
|
+
if (!txt) return;
|
|
570
|
+
if (sandbagState.awaitingTestAnswer && sandbagState.lastAiAnswer && POLYGRAPH_BRIDGE) {
|
|
571
|
+
const body = {
|
|
572
|
+
vendor: SITE,
|
|
573
|
+
question: sandbagState.lastUserQuestion,
|
|
574
|
+
prodAnswer: sandbagState.lastAiAnswer,
|
|
575
|
+
testAnswer: txt,
|
|
576
|
+
hedge: sandbagState.lastHedge,
|
|
577
|
+
};
|
|
578
|
+
try {
|
|
579
|
+
GM_xmlhttpRequest({
|
|
580
|
+
method: 'POST',
|
|
581
|
+
url: POLYGRAPH_BRIDGE + '/v1/polygraph/sandbag-capture',
|
|
582
|
+
headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + POLYGRAPH_TOKEN },
|
|
583
|
+
data: JSON.stringify(body),
|
|
584
|
+
timeout: 4000,
|
|
585
|
+
onload: (r) => {
|
|
586
|
+
try {
|
|
587
|
+
const v = JSON.parse(r.responseText);
|
|
588
|
+
if (v && v.ok && typeof v.drift === 'number' && Math.abs(v.drift) >= 0.15) {
|
|
589
|
+
showSandbagBanner(SITE, v.drift, sandbagState.lastHedge);
|
|
590
|
+
}
|
|
591
|
+
} catch {}
|
|
592
|
+
},
|
|
593
|
+
onerror: () => {}, ontimeout: () => {},
|
|
594
|
+
});
|
|
595
|
+
} catch {}
|
|
596
|
+
sandbagState.awaitingTestAnswer = false;
|
|
597
|
+
sandbagState.lastHedge = '';
|
|
598
|
+
}
|
|
599
|
+
sandbagState.lastAiAnswer = txt;
|
|
600
|
+
} catch {}
|
|
601
|
+
};
|
|
602
|
+
|
|
603
|
+
function showSandbagBanner(vendor, drift, hedge) {
|
|
604
|
+
const existing = document.getElementById('mneme-sandbag-banner');
|
|
605
|
+
if (existing) existing.remove();
|
|
606
|
+
const banner = document.createElement('div');
|
|
607
|
+
banner.id = 'mneme-sandbag-banner';
|
|
608
|
+
banner.style.cssText = 'position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:99999;background:linear-gradient(135deg,#ff5b5b,#7c3aed);color:#fff;padding:10px 18px;border-radius:10px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:13px;font-weight:600;box-shadow:0 6px 20px rgba(0,0,0,0.4);cursor:pointer;max-width:560px;text-align:center;';
|
|
609
|
+
const pct = Math.round(Math.abs(drift) * 100);
|
|
610
|
+
banner.innerHTML = '⚠️ <strong>Mneme polygraph: SANDBAG signal</strong><br><span style="font-weight:400;font-size:12px;opacity:0.95">' + vendor + ' answered ' + pct + '% differently after you said "' + (hedge || 'hedge') + '". Click to dismiss.</span>';
|
|
611
|
+
banner.addEventListener('click', () => banner.remove());
|
|
612
|
+
document.body.appendChild(banner);
|
|
613
|
+
setTimeout(() => banner.remove(), 12000);
|
|
614
|
+
}
|
|
615
|
+
|
|
523
616
|
async function bootPolygraph() {
|
|
524
617
|
ekgInit();
|
|
525
|
-
// Resolve the bridge BEFORE the first MutationObserver fire so dots
|
|
526
|
-
// get real verdicts on the very first AI response instead of greys.
|
|
527
618
|
POLYGRAPH_BRIDGE = await resolveBridgeUrl();
|
|
619
|
+
attachUserInputWatcher();
|
|
528
620
|
const obs = new MutationObserver(onMutation);
|
|
529
621
|
obs.observe(document.body, { childList: true, subtree: true, characterData: true });
|
|
530
622
|
onMutation();
|
|
531
|
-
console.log('[Mneme] Polygraph armed
|
|
623
|
+
console.log('[Mneme] Polygraph armed | site=' + SITE + ' | bridge=' + (POLYGRAPH_BRIDGE || 'OFFLINE') + ' | sandbag auto-capture: ON');
|
|
532
624
|
}
|
|
533
|
-
// Defer to document-idle so the AI page's initial DOM is settled.
|
|
534
625
|
if (document.readyState === 'complete' || document.readyState === 'interactive') bootPolygraph();
|
|
535
626
|
else window.addEventListener('DOMContentLoaded', bootPolygraph);
|
|
536
627
|
})();
|
|
@@ -1 +1 @@
|
|
|
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;;;;;;;;;;;;;;mCAc6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;mCAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC
|
|
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;;;;;;;;;;;;;;mCAc6B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;mCAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAibxE;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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mneme-ai/core",
|
|
3
|
-
"version": "2.19.
|
|
3
|
+
"version": "2.19.85-lite",
|
|
4
4
|
"description": "Core indexing, retrieval, and graph engine for Mneme — LITE variant (no bundled WASM embedder, no native deps).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|