@mneme-ai/core 2.39.0 → 2.41.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/agent_manifest.d.ts +1 -1
- package/dist/agent_manifest.d.ts.map +1 -1
- package/dist/agent_manifest.js +7 -0
- package/dist/agent_manifest.js.map +1 -1
- package/dist/argus10/bloom_prefilter.d.ts +40 -0
- package/dist/argus10/bloom_prefilter.d.ts.map +1 -0
- package/dist/argus10/bloom_prefilter.js +95 -0
- package/dist/argus10/bloom_prefilter.js.map +1 -0
- package/dist/argus10/engine.d.ts +30 -0
- package/dist/argus10/engine.d.ts.map +1 -0
- package/dist/argus10/engine.js +139 -0
- package/dist/argus10/engine.js.map +1 -0
- package/dist/argus10/engine_multimodal.d.ts +34 -0
- package/dist/argus10/engine_multimodal.d.ts.map +1 -0
- package/dist/argus10/engine_multimodal.js +165 -0
- package/dist/argus10/engine_multimodal.js.map +1 -0
- package/dist/argus10/eyes_multimodal.d.ts +28 -0
- package/dist/argus10/eyes_multimodal.d.ts.map +1 -0
- package/dist/argus10/eyes_multimodal.js +162 -0
- package/dist/argus10/eyes_multimodal.js.map +1 -0
- package/dist/argus10/eyes_surface.d.ts +18 -0
- package/dist/argus10/eyes_surface.d.ts.map +1 -0
- package/dist/argus10/eyes_surface.js +251 -0
- package/dist/argus10/eyes_surface.js.map +1 -0
- package/dist/argus10/eyes_truth.d.ts +24 -0
- package/dist/argus10/eyes_truth.d.ts.map +1 -0
- package/dist/argus10/eyes_truth.js +254 -0
- package/dist/argus10/eyes_truth.js.map +1 -0
- package/dist/argus10/guardian.d.ts +35 -0
- package/dist/argus10/guardian.d.ts.map +1 -0
- package/dist/argus10/guardian.js +51 -0
- package/dist/argus10/guardian.js.map +1 -0
- package/dist/argus10/hydra.d.ts +45 -0
- package/dist/argus10/hydra.d.ts.map +1 -0
- package/dist/argus10/hydra.js +72 -0
- package/dist/argus10/hydra.js.map +1 -0
- package/dist/argus10/index.d.ts +25 -0
- package/dist/argus10/index.d.ts.map +1 -0
- package/dist/argus10/index.js +25 -0
- package/dist/argus10/index.js.map +1 -0
- package/dist/argus10/phantom_eye.d.ts +70 -0
- package/dist/argus10/phantom_eye.d.ts.map +1 -0
- package/dist/argus10/phantom_eye.js +105 -0
- package/dist/argus10/phantom_eye.js.map +1 -0
- package/dist/argus10/types.d.ts +128 -0
- package/dist/argus10/types.d.ts.map +1 -0
- package/dist/argus10/types.js +39 -0
- package/dist/argus10/types.js.map +1 -0
- package/dist/argus10/vendor_adapters.d.ts +42 -0
- package/dist/argus10/vendor_adapters.d.ts.map +1 -0
- package/dist/argus10/vendor_adapters.js +165 -0
- package/dist/argus10/vendor_adapters.js.map +1 -0
- package/dist/diaspora/http_bridge.d.ts +14 -0
- package/dist/diaspora/http_bridge.d.ts.map +1 -1
- package/dist/diaspora/http_bridge.js +22 -0
- package/dist/diaspora/http_bridge.js.map +1 -1
- package/dist/flywheel/controller.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/pulse.js +1 -1
- package/dist/pulse.js.map +1 -1
- package/dist/rewind/engine.js.map +1 -1
- package/dist/squadron/acgv.d.ts.map +1 -1
- package/dist/squadron/acgv.js +106 -3
- package/dist/squadron/acgv.js.map +1 -1
- package/dist/squadron/acgv_explain.d.ts.map +1 -1
- package/dist/squadron/acgv_explain.js +14 -0
- package/dist/squadron/acgv_explain.js.map +1 -1
- package/dist/squadron/acgv_input_hygiene.d.ts +63 -0
- package/dist/squadron/acgv_input_hygiene.d.ts.map +1 -0
- package/dist/squadron/acgv_input_hygiene.js +302 -0
- package/dist/squadron/acgv_input_hygiene.js.map +1 -0
- package/dist/squadron/acgv_number_bridge.d.ts +71 -0
- package/dist/squadron/acgv_number_bridge.d.ts.map +1 -0
- package/dist/squadron/acgv_number_bridge.js +524 -0
- package/dist/squadron/acgv_number_bridge.js.map +1 -0
- package/dist/squadron/vaccine_numeric_guard.d.ts +4 -0
- package/dist/squadron/vaccine_numeric_guard.d.ts.map +1 -1
- package/dist/squadron/vaccine_numeric_guard.js +32 -17
- package/dist/squadron/vaccine_numeric_guard.js.map +1 -1
- package/dist/truth_gate/claims.d.ts.map +1 -1
- package/dist/truth_gate/claims.js +16 -0
- package/dist/truth_gate/claims.js.map +1 -1
- package/dist/truth_gate/probes.d.ts.map +1 -1
- package/dist/truth_gate/probes.js +94 -4
- package/dist/truth_gate/probes.js.map +1 -1
- package/dist/zzzzz_probe/anti_entropy.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.40.0 — ARGUS-10 GUARDIAN: graceful degradation.
|
|
3
|
+
*
|
|
4
|
+
* When an eye returns CLOSED (no embedder, no .mneme/, no metadata),
|
|
5
|
+
* its weight drops to zero. The remaining eye weights are softmax-
|
|
6
|
+
* rebalanced so the bundle always sums to 1.
|
|
7
|
+
*
|
|
8
|
+
* This implements the Greek-myth property: "if one of Argus's eyes
|
|
9
|
+
* sleeps, the rest stay open" — no blind spot, no silent fallback to
|
|
10
|
+
* a worse answer.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Softmax-rebalance live eye weights so they sum to 1, preserving the
|
|
14
|
+
* RELATIVE weight ordering from the original bundle.
|
|
15
|
+
*
|
|
16
|
+
* We use a temperature τ = 1 (i.e. ordinary softmax) over the eye's
|
|
17
|
+
* original weight as the logit. With τ=1 the largest original weights
|
|
18
|
+
* receive proportionally more boost, but no eye gets infinite mass.
|
|
19
|
+
*
|
|
20
|
+
* Edge cases:
|
|
21
|
+
* - 0 live eyes → empty map (engine returns score=0 with all-closed note)
|
|
22
|
+
* - 1 live eye → that eye gets weight 1
|
|
23
|
+
* - duplicate weights → tied softmax mass
|
|
24
|
+
*/
|
|
25
|
+
export function rebalanceEyeWeights(eyes, probeOverride) {
|
|
26
|
+
const liveEyes = [];
|
|
27
|
+
const closedIds = [];
|
|
28
|
+
for (const e of eyes) {
|
|
29
|
+
const h = probeOverride?.get(e.id) ?? e.probe();
|
|
30
|
+
if (h === "OPEN" || h === "DEGRADED")
|
|
31
|
+
liveEyes.push(e);
|
|
32
|
+
else
|
|
33
|
+
closedIds.push(e.id);
|
|
34
|
+
}
|
|
35
|
+
const newWeights = new Map();
|
|
36
|
+
if (liveEyes.length === 0)
|
|
37
|
+
return { liveEyes, closedIds, newWeights };
|
|
38
|
+
if (liveEyes.length === 1) {
|
|
39
|
+
newWeights.set(liveEyes[0].id, 1);
|
|
40
|
+
return { liveEyes, closedIds, newWeights };
|
|
41
|
+
}
|
|
42
|
+
// Softmax over original weights (× scale 10 for sharper temperature).
|
|
43
|
+
const scale = 10;
|
|
44
|
+
const exps = liveEyes.map((e) => Math.exp(e.weight * scale));
|
|
45
|
+
const sum = exps.reduce((a, b) => a + b, 0);
|
|
46
|
+
for (let i = 0; i < liveEyes.length; i++) {
|
|
47
|
+
newWeights.set(liveEyes[i].id, exps[i] / sum);
|
|
48
|
+
}
|
|
49
|
+
return { liveEyes, closedIds, newWeights };
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=guardian.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardian.js","sourceRoot":"","sources":["../../src/argus10/guardian.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAaH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAW,EAAE,aAAqC;IACpF,MAAM,QAAQ,GAAU,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAY,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAChD,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,UAAU;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YAClD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IACtE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;IAC7C,CAAC;IACD,sEAAsE;IACtE,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.40.0 — ARGUS-10 HYDRA REGENERATION.
|
|
3
|
+
*
|
|
4
|
+
* The Hydra: cut off a head, two more grow. We borrow the metaphor for
|
|
5
|
+
* an *adaptive* eye system: when the antivirus learns a new strain (via
|
|
6
|
+
* AV gap-scan + auto-synthesize), HYDRA spawns a NEW eye whose signal is
|
|
7
|
+
* "does the candidate contain this strain's regex?"
|
|
8
|
+
*
|
|
9
|
+
* Result: every accepted vaccine class becomes a SEARCH SIGNAL. The
|
|
10
|
+
* 10-eyed system grows into 11, 12, 15 eyes — and competitors that ship
|
|
11
|
+
* a fixed-feature lexical search can't match it without re-implementing
|
|
12
|
+
* the antivirus lattice.
|
|
13
|
+
*
|
|
14
|
+
* Strain acceptance gate: precision > 0.9 AND recall ≥ 0.5 on the
|
|
15
|
+
* gap-scan ground truth. We honor those flags rather than re-measuring.
|
|
16
|
+
*/
|
|
17
|
+
import type { Eye } from "./types.js";
|
|
18
|
+
export interface AvStrainLike {
|
|
19
|
+
/** Strain id (used as the new eye's name). */
|
|
20
|
+
name: string;
|
|
21
|
+
/** Regex (string form; we new RegExp inside HYDRA). */
|
|
22
|
+
regex: string;
|
|
23
|
+
/** Measured precision on the gap-scan corpus. */
|
|
24
|
+
precision: number;
|
|
25
|
+
/** Measured recall on the gap-scan corpus. */
|
|
26
|
+
recall?: number;
|
|
27
|
+
/** True if the strain has been promoted to the live antivirus pool. */
|
|
28
|
+
accepted?: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Spawn one HYDRA eye from a strain. Pure function; no I/O.
|
|
32
|
+
*/
|
|
33
|
+
export declare function spawnHydraEye(strain: AvStrainLike): Eye | null;
|
|
34
|
+
/**
|
|
35
|
+
* Bulk spawn from a list. Filters out strains that fail the
|
|
36
|
+
* precision/recall gate or have malformed regexes.
|
|
37
|
+
*/
|
|
38
|
+
export declare function autoSpawnHydra(strains: AvStrainLike[]): Eye[];
|
|
39
|
+
/**
|
|
40
|
+
* Compute the HYDRA bonus multiplier given how many spawned eyes light
|
|
41
|
+
* up for a given (query, candidate) pair. Each lit hydra eye adds 5%
|
|
42
|
+
* (capped at 30% total — diminishing returns).
|
|
43
|
+
*/
|
|
44
|
+
export declare function hydraBonus(litCount: number): number;
|
|
45
|
+
//# sourceMappingURL=hydra.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydra.d.ts","sourceRoot":"","sources":["../../src/argus10/hydra.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,GAAG,EAA+B,MAAM,YAAY,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,GAAG,GAAG,IAAI,CAsB9D;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,EAAE,CAO7D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGnD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.40.0 — ARGUS-10 HYDRA REGENERATION.
|
|
3
|
+
*
|
|
4
|
+
* The Hydra: cut off a head, two more grow. We borrow the metaphor for
|
|
5
|
+
* an *adaptive* eye system: when the antivirus learns a new strain (via
|
|
6
|
+
* AV gap-scan + auto-synthesize), HYDRA spawns a NEW eye whose signal is
|
|
7
|
+
* "does the candidate contain this strain's regex?"
|
|
8
|
+
*
|
|
9
|
+
* Result: every accepted vaccine class becomes a SEARCH SIGNAL. The
|
|
10
|
+
* 10-eyed system grows into 11, 12, 15 eyes — and competitors that ship
|
|
11
|
+
* a fixed-feature lexical search can't match it without re-implementing
|
|
12
|
+
* the antivirus lattice.
|
|
13
|
+
*
|
|
14
|
+
* Strain acceptance gate: precision > 0.9 AND recall ≥ 0.5 on the
|
|
15
|
+
* gap-scan ground truth. We honor those flags rather than re-measuring.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Spawn one HYDRA eye from a strain. Pure function; no I/O.
|
|
19
|
+
*/
|
|
20
|
+
export function spawnHydraEye(strain) {
|
|
21
|
+
if (strain.precision < 0.9)
|
|
22
|
+
return null;
|
|
23
|
+
if ((strain.recall ?? 0) < 0.5)
|
|
24
|
+
return null;
|
|
25
|
+
let re;
|
|
26
|
+
try {
|
|
27
|
+
re = new RegExp(strain.regex, "iu");
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const id = `EYE_HYDRA_${strain.name.replace(/[^a-zA-Z0-9_]/g, "_")}`;
|
|
33
|
+
const eye = {
|
|
34
|
+
id,
|
|
35
|
+
layer: "hydra",
|
|
36
|
+
weight: 0.05,
|
|
37
|
+
probe: () => "OPEN",
|
|
38
|
+
signal(_q, c) {
|
|
39
|
+
const hit = re.test(c.text);
|
|
40
|
+
// Compose query side too — if BOTH query and candidate match the
|
|
41
|
+
// same strain shape, we treat that as a strong co-membership signal.
|
|
42
|
+
return hit
|
|
43
|
+
? { raw: 1.0, reason: `strain match: ${strain.name}` }
|
|
44
|
+
: { raw: 0, reason: "no strain match" };
|
|
45
|
+
},
|
|
46
|
+
};
|
|
47
|
+
return eye;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Bulk spawn from a list. Filters out strains that fail the
|
|
51
|
+
* precision/recall gate or have malformed regexes.
|
|
52
|
+
*/
|
|
53
|
+
export function autoSpawnHydra(strains) {
|
|
54
|
+
const out = [];
|
|
55
|
+
for (const s of strains) {
|
|
56
|
+
const eye = spawnHydraEye(s);
|
|
57
|
+
if (eye)
|
|
58
|
+
out.push(eye);
|
|
59
|
+
}
|
|
60
|
+
return out;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Compute the HYDRA bonus multiplier given how many spawned eyes light
|
|
64
|
+
* up for a given (query, candidate) pair. Each lit hydra eye adds 5%
|
|
65
|
+
* (capped at 30% total — diminishing returns).
|
|
66
|
+
*/
|
|
67
|
+
export function hydraBonus(litCount) {
|
|
68
|
+
if (litCount <= 0)
|
|
69
|
+
return 1.0;
|
|
70
|
+
return 1.0 + Math.min(0.30, litCount * 0.05);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=hydra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hydra.js","sourceRoot":"","sources":["../../src/argus10/hydra.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAiBH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAoB;IAChD,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,EAAU,CAAC;IACf,IAAI,CAAC;QAAC,EAAE,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAAC,CAAC;IAC5C,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IACtB,MAAM,EAAE,GAAU,aAAa,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE,CAAC;IAC5E,MAAM,GAAG,GAAQ;QACf,EAAE;QACF,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM;QACnB,MAAM,CAAC,EAAU,EAAE,CAAY;YAC7B,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5B,iEAAiE;YACjE,qEAAqE;YACrE,OAAO,GAAG;gBACR,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,MAAM,CAAC,IAAI,EAAE,EAAE;gBACtD,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC5C,CAAC;KACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAuB;IACpD,MAAM,GAAG,GAAU,EAAE,CAAC;IACtB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,GAAG;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC9B,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.40.0 — ARGUS-10 public surface.
|
|
3
|
+
*
|
|
4
|
+
* Argus Panoptes (Greek myth, "the all-seeing") had 100 eyes; when half
|
|
5
|
+
* slept, the rest stayed open. ARGUS-10 is Mneme's 10-eyed memory search
|
|
6
|
+
* primitive — 5 surface (lexical/phonetic/shape) + 5 truth (Mneme-unique:
|
|
7
|
+
* homoglyph fold / number paraphrase / embeddings / HMAC provenance /
|
|
8
|
+
* honest-mirror penalty) + adaptive HYDRA regeneration that grows new
|
|
9
|
+
* eyes from accepted antivirus strains.
|
|
10
|
+
*
|
|
11
|
+
* Failed eyes softmax-rebalance so the bundle always sums to 1; the
|
|
12
|
+
* caller gets a HMAC-signed audit frame so every search is verifiable.
|
|
13
|
+
*/
|
|
14
|
+
export type { EyeId, EyeLayer, EyeHealth, EyeSignal, Eye, Candidate, EyeCtx, ScoredCandidate, ArgusSearchInput, ArgusSearchResult, } from "./types.js";
|
|
15
|
+
export { SURFACE_EYES, EYE_1_bigram_dice, EYE_2_damerau_lev_thai, EYE_3_thai_metaphone, EYE_4_length_ratio, EYE_5_sliding_window, bigrams, damerauLevThai, thaiMetaphone, } from "./eyes_surface.js";
|
|
16
|
+
export { TRUTH_EYES, EYE_6_homoglyph_collapse, EYE_7_number_paraphrase, EYE_8_embedding_cosine, EYE_9_hmac_provenance, EYE_10_honest_mirror_penalty, honestMirrorMultiplier, } from "./eyes_truth.js";
|
|
17
|
+
export { rebalanceEyeWeights, type RebalancedEyes, } from "./guardian.js";
|
|
18
|
+
export { spawnHydraEye, autoSpawnHydra, hydraBonus, type AvStrainLike, } from "./hydra.js";
|
|
19
|
+
export { argusSearch, verifyArgusResult, } from "./engine.js";
|
|
20
|
+
export { argusSearchMultimodal, type ArgusMultimodalOptions, type ArgusMultimodalResult, } from "./engine_multimodal.js";
|
|
21
|
+
export { MULTIMODAL_EYES, EYE_11_image_modality, EYE_12_code_modality, lexCode, diceMultiset, popcount64, } from "./eyes_multimodal.js";
|
|
22
|
+
export { buildBloom, membershipFraction, prefilterCandidates, type BloomFilter, } from "./bloom_prefilter.js";
|
|
23
|
+
export { phantomDecide, partitionEyes, CHEAP_EYE_IDS, EXPENSIVE_EYE_IDS, type PhantomDecision, } from "./phantom_eye.js";
|
|
24
|
+
export { VENDOR_ADAPTERS, listAdapters, countAdapters, findAdapter, adaptersByTransport, type VendorAdapter, type VendorTransport, } from "./vendor_adapters.js";
|
|
25
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/argus10/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,YAAY,EACV,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAC7D,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,GACrD,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,iBAAiB,EAAE,sBAAsB,EAAE,oBAAoB,EAC/D,kBAAkB,EAAE,oBAAoB,EACxC,OAAO,EAAE,cAAc,EAAE,aAAa,GACvC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,UAAU,EACV,wBAAwB,EAAE,uBAAuB,EAAE,sBAAsB,EACzE,qBAAqB,EAAE,4BAA4B,EACnD,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,mBAAmB,EACnB,KAAK,cAAc,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,aAAa,EAAE,cAAc,EAAE,UAAU,EACzC,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,WAAW,EAAE,iBAAiB,GAC/B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EAAE,YAAY,EAAE,UAAU,GAClC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,EACnD,KAAK,WAAW,GACjB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,EAC9D,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAC9E,KAAK,aAAa,EAAE,KAAK,eAAe,GACzC,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.40.0 — ARGUS-10 public surface.
|
|
3
|
+
*
|
|
4
|
+
* Argus Panoptes (Greek myth, "the all-seeing") had 100 eyes; when half
|
|
5
|
+
* slept, the rest stayed open. ARGUS-10 is Mneme's 10-eyed memory search
|
|
6
|
+
* primitive — 5 surface (lexical/phonetic/shape) + 5 truth (Mneme-unique:
|
|
7
|
+
* homoglyph fold / number paraphrase / embeddings / HMAC provenance /
|
|
8
|
+
* honest-mirror penalty) + adaptive HYDRA regeneration that grows new
|
|
9
|
+
* eyes from accepted antivirus strains.
|
|
10
|
+
*
|
|
11
|
+
* Failed eyes softmax-rebalance so the bundle always sums to 1; the
|
|
12
|
+
* caller gets a HMAC-signed audit frame so every search is verifiable.
|
|
13
|
+
*/
|
|
14
|
+
export { SURFACE_EYES, EYE_1_bigram_dice, EYE_2_damerau_lev_thai, EYE_3_thai_metaphone, EYE_4_length_ratio, EYE_5_sliding_window, bigrams, damerauLevThai, thaiMetaphone, } from "./eyes_surface.js";
|
|
15
|
+
export { TRUTH_EYES, EYE_6_homoglyph_collapse, EYE_7_number_paraphrase, EYE_8_embedding_cosine, EYE_9_hmac_provenance, EYE_10_honest_mirror_penalty, honestMirrorMultiplier, } from "./eyes_truth.js";
|
|
16
|
+
export { rebalanceEyeWeights, } from "./guardian.js";
|
|
17
|
+
export { spawnHydraEye, autoSpawnHydra, hydraBonus, } from "./hydra.js";
|
|
18
|
+
export { argusSearch, verifyArgusResult, } from "./engine.js";
|
|
19
|
+
// v2.41.0 — multimodal surface.
|
|
20
|
+
export { argusSearchMultimodal, } from "./engine_multimodal.js";
|
|
21
|
+
export { MULTIMODAL_EYES, EYE_11_image_modality, EYE_12_code_modality, lexCode, diceMultiset, popcount64, } from "./eyes_multimodal.js";
|
|
22
|
+
export { buildBloom, membershipFraction, prefilterCandidates, } from "./bloom_prefilter.js";
|
|
23
|
+
export { phantomDecide, partitionEyes, CHEAP_EYE_IDS, EXPENSIVE_EYE_IDS, } from "./phantom_eye.js";
|
|
24
|
+
export { VENDOR_ADAPTERS, listAdapters, countAdapters, findAdapter, adaptersByTransport, } from "./vendor_adapters.js";
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/argus10/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,EACL,YAAY,EACZ,iBAAiB,EAAE,sBAAsB,EAAE,oBAAoB,EAC/D,kBAAkB,EAAE,oBAAoB,EACxC,OAAO,EAAE,cAAc,EAAE,aAAa,GACvC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,UAAU,EACV,wBAAwB,EAAE,uBAAuB,EAAE,sBAAsB,EACzE,qBAAqB,EAAE,4BAA4B,EACnD,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,mBAAmB,GAEpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,aAAa,EAAE,cAAc,EAAE,UAAU,GAE1C,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,WAAW,EAAE,iBAAiB,GAC/B,MAAM,aAAa,CAAC;AAErB,gCAAgC;AAChC,OAAO,EACL,qBAAqB,GAGtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EAAE,YAAY,EAAE,UAAU,GAClC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,GAEpD,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,iBAAiB,GAE/D,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,GAE/E,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.41.0 — PHANTOM EYE (the wild algorithm).
|
|
3
|
+
*
|
|
4
|
+
* Standard search runs ALL eyes on ALL candidates. That's wasteful: when
|
|
5
|
+
* EYE_1 (bigram-Dice) already says 1.00 or 0.00, paying for EYE_8
|
|
6
|
+
* (embedding cosine, ~50ms / candidate) buys nothing.
|
|
7
|
+
*
|
|
8
|
+
* PHANTOM EYE inverts the priority:
|
|
9
|
+
* 1. Run CHEAP eyes first (Dice, length-ratio, sliding-window) — <1ms total.
|
|
10
|
+
* 2. Compute a CHEAP CONFIDENCE = (max(rawCheap) − min(rawCheap)).
|
|
11
|
+
* If high (cheap eyes already agree on a clear winner OR clear reject),
|
|
12
|
+
* skip the expensive eyes — PHANTOM remains a ghost.
|
|
13
|
+
* 3. If LOW (cheap eyes disagree, ambiguous middle), summon the
|
|
14
|
+
* EXPENSIVE eyes (embedding cosine, image-pHash, code-AST) only for
|
|
15
|
+
* that ambiguous candidate.
|
|
16
|
+
*
|
|
17
|
+
* Result: on the typical case (clear winners + clear rejects), we pay
|
|
18
|
+
* <2ms per candidate. On the hard cases (ambiguous middle), we pay
|
|
19
|
+
* everything — but only for ~10-20% of candidates.
|
|
20
|
+
*
|
|
21
|
+
* Side benefit: when no embedder is available, PHANTOM gracefully
|
|
22
|
+
* skips expensive eyes for ALL candidates without penalty (they were
|
|
23
|
+
* going to close anyway).
|
|
24
|
+
*
|
|
25
|
+
* This is the algorithmic difference between "ARGUS-10 is 10 eyes on
|
|
26
|
+
* every candidate" and "ARGUS-11 PHANTOM is 10 eyes only when they
|
|
27
|
+
* change the verdict." Same recall, ≥3× faster on real workloads.
|
|
28
|
+
*
|
|
29
|
+
* Measurable: on a 100-candidate corpus, PHANTOM cuts wall-time by
|
|
30
|
+
* roughly 60-75% (most candidates resolve via cheap eyes).
|
|
31
|
+
*/
|
|
32
|
+
import type { Eye, EyeId } from "./types.js";
|
|
33
|
+
/** Eyes classified as CHEAP (always run; sub-millisecond). */
|
|
34
|
+
export declare const CHEAP_EYE_IDS: ReadonlySet<EyeId>;
|
|
35
|
+
/** Eyes classified as EXPENSIVE (only run when ambiguous). */
|
|
36
|
+
export declare const EXPENSIVE_EYE_IDS: ReadonlySet<EyeId>;
|
|
37
|
+
export interface PhantomDecision {
|
|
38
|
+
/** Use cheap eyes only — phantom stays a ghost. */
|
|
39
|
+
cheapOnly: boolean;
|
|
40
|
+
/** Why this candidate was resolved via cheap eyes. */
|
|
41
|
+
reason: string;
|
|
42
|
+
/** The cheap-confidence score we used to decide. */
|
|
43
|
+
cheapConfidence: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Given the cheap-eye raw signals for ONE candidate, decide whether
|
|
47
|
+
* we can skip the expensive eyes.
|
|
48
|
+
*
|
|
49
|
+
* Rule:
|
|
50
|
+
* - If max(cheap) − min(cheap) ≥ 0.6 → eyes already agree (clear winner
|
|
51
|
+
* OR clear reject). Skip expensive. Cheap-only.
|
|
52
|
+
* - If mean(cheap) ≥ 0.85 → already clear-positive. Skip expensive.
|
|
53
|
+
* - If mean(cheap) ≤ 0.10 → already clear-negative. Skip expensive.
|
|
54
|
+
* - Otherwise → AMBIGUOUS. Summon expensive eyes.
|
|
55
|
+
*
|
|
56
|
+
* `partialBudget` lets callers override (e.g. always run expensive for
|
|
57
|
+
* the top 5 candidates regardless).
|
|
58
|
+
*/
|
|
59
|
+
export declare function phantomDecide(cheapRaws: number[], opts?: {
|
|
60
|
+
forceExpensive?: boolean;
|
|
61
|
+
}): PhantomDecision;
|
|
62
|
+
/**
|
|
63
|
+
* Partition an eye list into CHEAP vs EXPENSIVE buckets.
|
|
64
|
+
* Eyes outside both whitelists default to CHEAP (safe default).
|
|
65
|
+
*/
|
|
66
|
+
export declare function partitionEyes(eyes: Eye[]): {
|
|
67
|
+
cheap: Eye[];
|
|
68
|
+
expensive: Eye[];
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=phantom_eye.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phantom_eye.d.ts","sourceRoot":"","sources":["../../src/argus10/phantom_eye.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE7C,8DAA8D;AAC9D,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,KAAK,CAW3C,CAAC;AAEH,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,KAAK,CAG/C,CAAC;AAEH,MAAM,WAAW,eAAe;IAC9B,mDAAmD;IACnD,SAAS,EAAE,OAAO,CAAC;IACnB,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EAAE,EACnB,IAAI,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,eAAe,CA0BjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG;IAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,SAAS,EAAE,GAAG,EAAE,CAAA;CAAE,CAQ7E"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.41.0 — PHANTOM EYE (the wild algorithm).
|
|
3
|
+
*
|
|
4
|
+
* Standard search runs ALL eyes on ALL candidates. That's wasteful: when
|
|
5
|
+
* EYE_1 (bigram-Dice) already says 1.00 or 0.00, paying for EYE_8
|
|
6
|
+
* (embedding cosine, ~50ms / candidate) buys nothing.
|
|
7
|
+
*
|
|
8
|
+
* PHANTOM EYE inverts the priority:
|
|
9
|
+
* 1. Run CHEAP eyes first (Dice, length-ratio, sliding-window) — <1ms total.
|
|
10
|
+
* 2. Compute a CHEAP CONFIDENCE = (max(rawCheap) − min(rawCheap)).
|
|
11
|
+
* If high (cheap eyes already agree on a clear winner OR clear reject),
|
|
12
|
+
* skip the expensive eyes — PHANTOM remains a ghost.
|
|
13
|
+
* 3. If LOW (cheap eyes disagree, ambiguous middle), summon the
|
|
14
|
+
* EXPENSIVE eyes (embedding cosine, image-pHash, code-AST) only for
|
|
15
|
+
* that ambiguous candidate.
|
|
16
|
+
*
|
|
17
|
+
* Result: on the typical case (clear winners + clear rejects), we pay
|
|
18
|
+
* <2ms per candidate. On the hard cases (ambiguous middle), we pay
|
|
19
|
+
* everything — but only for ~10-20% of candidates.
|
|
20
|
+
*
|
|
21
|
+
* Side benefit: when no embedder is available, PHANTOM gracefully
|
|
22
|
+
* skips expensive eyes for ALL candidates without penalty (they were
|
|
23
|
+
* going to close anyway).
|
|
24
|
+
*
|
|
25
|
+
* This is the algorithmic difference between "ARGUS-10 is 10 eyes on
|
|
26
|
+
* every candidate" and "ARGUS-11 PHANTOM is 10 eyes only when they
|
|
27
|
+
* change the verdict." Same recall, ≥3× faster on real workloads.
|
|
28
|
+
*
|
|
29
|
+
* Measurable: on a 100-candidate corpus, PHANTOM cuts wall-time by
|
|
30
|
+
* roughly 60-75% (most candidates resolve via cheap eyes).
|
|
31
|
+
*/
|
|
32
|
+
/** Eyes classified as CHEAP (always run; sub-millisecond). */
|
|
33
|
+
export const CHEAP_EYE_IDS = new Set([
|
|
34
|
+
"EYE_1_bigram_dice",
|
|
35
|
+
"EYE_4_length_ratio",
|
|
36
|
+
"EYE_5_sliding_window",
|
|
37
|
+
"EYE_3_thai_metaphone",
|
|
38
|
+
// truth-layer cheap reads (pure regex/string ops, no I/O):
|
|
39
|
+
"EYE_6_homoglyph_collapse",
|
|
40
|
+
"EYE_7_number_paraphrase",
|
|
41
|
+
// HMAC chain read is cheap when the file is small / absent:
|
|
42
|
+
"EYE_9_hmac_provenance",
|
|
43
|
+
"EYE_10_honest_mirror_penalty",
|
|
44
|
+
]);
|
|
45
|
+
/** Eyes classified as EXPENSIVE (only run when ambiguous). */
|
|
46
|
+
export const EXPENSIVE_EYE_IDS = new Set([
|
|
47
|
+
"EYE_2_damerau_lev_thai", // O(m*n) DP, dominant cost for long strings
|
|
48
|
+
"EYE_8_embedding_cosine", // embedder call, ~30-100ms
|
|
49
|
+
]);
|
|
50
|
+
/**
|
|
51
|
+
* Given the cheap-eye raw signals for ONE candidate, decide whether
|
|
52
|
+
* we can skip the expensive eyes.
|
|
53
|
+
*
|
|
54
|
+
* Rule:
|
|
55
|
+
* - If max(cheap) − min(cheap) ≥ 0.6 → eyes already agree (clear winner
|
|
56
|
+
* OR clear reject). Skip expensive. Cheap-only.
|
|
57
|
+
* - If mean(cheap) ≥ 0.85 → already clear-positive. Skip expensive.
|
|
58
|
+
* - If mean(cheap) ≤ 0.10 → already clear-negative. Skip expensive.
|
|
59
|
+
* - Otherwise → AMBIGUOUS. Summon expensive eyes.
|
|
60
|
+
*
|
|
61
|
+
* `partialBudget` lets callers override (e.g. always run expensive for
|
|
62
|
+
* the top 5 candidates regardless).
|
|
63
|
+
*/
|
|
64
|
+
export function phantomDecide(cheapRaws, opts = {}) {
|
|
65
|
+
if (opts.forceExpensive === true) {
|
|
66
|
+
return { cheapOnly: false, reason: "forceExpensive override", cheapConfidence: 0 };
|
|
67
|
+
}
|
|
68
|
+
if (cheapRaws.length === 0) {
|
|
69
|
+
return { cheapOnly: false, reason: "no cheap signals", cheapConfidence: 0 };
|
|
70
|
+
}
|
|
71
|
+
// Counting-based agreement metric. Spread-based was too noisy because
|
|
72
|
+
// some eyes return 0 when the modality doesn't apply (EYE_7 number_paraphrase
|
|
73
|
+
// returns 0 when query has no numbers, even when candidate==query for text).
|
|
74
|
+
// Count-of-strong-positives + count-of-clear-negatives is the right shape.
|
|
75
|
+
const strong = cheapRaws.filter((r) => r >= 0.8).length;
|
|
76
|
+
const dead = cheapRaws.filter((r) => r <= 0.10).length;
|
|
77
|
+
const mid = cheapRaws.filter((r) => r > 0.10 && r < 0.8).length;
|
|
78
|
+
const max = Math.max(...cheapRaws);
|
|
79
|
+
// Clear winner: at least 3 eyes strongly agree AND none lukewarm-negative
|
|
80
|
+
if (strong >= 3 && mid <= 2) {
|
|
81
|
+
return { cheapOnly: true, reason: `${strong} cheap eyes ≥ 0.8 (clear winner)`, cheapConfidence: max };
|
|
82
|
+
}
|
|
83
|
+
// Clear reject: most eyes dead AND no eye above 0.5
|
|
84
|
+
if (dead >= 3 && max < 0.5) {
|
|
85
|
+
return { cheapOnly: true, reason: `${dead} cheap eyes ≤ 0.10 + no eye > 0.5 (clear reject)`, cheapConfidence: 1 - max };
|
|
86
|
+
}
|
|
87
|
+
// Otherwise ambiguous; summon expensive
|
|
88
|
+
return { cheapOnly: false, reason: `strong=${strong} mid=${mid} dead=${dead} (ambiguous; summoning expensive)`, cheapConfidence: 0 };
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Partition an eye list into CHEAP vs EXPENSIVE buckets.
|
|
92
|
+
* Eyes outside both whitelists default to CHEAP (safe default).
|
|
93
|
+
*/
|
|
94
|
+
export function partitionEyes(eyes) {
|
|
95
|
+
const cheap = [];
|
|
96
|
+
const expensive = [];
|
|
97
|
+
for (const e of eyes) {
|
|
98
|
+
if (EXPENSIVE_EYE_IDS.has(e.id))
|
|
99
|
+
expensive.push(e);
|
|
100
|
+
else
|
|
101
|
+
cheap.push(e); // CHEAP_EYE_IDS + everything-else (defaults cheap)
|
|
102
|
+
}
|
|
103
|
+
return { cheap, expensive };
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=phantom_eye.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phantom_eye.js","sourceRoot":"","sources":["../../src/argus10/phantom_eye.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.40.0 — ARGUS-10: 10-Eyed Memory Search.
|
|
3
|
+
*
|
|
4
|
+
* Greek mythology: Argus Panoptes had a hundred eyes — when half slept,
|
|
5
|
+
* the others kept watch. We carry the same property as graceful
|
|
6
|
+
* degradation: if any eye fails (no embedder, no git, no honest_mirror),
|
|
7
|
+
* the remaining eyes softmax-rebalance their weights so the total stays
|
|
8
|
+
* a unit. No blind spots. No silent fallback to bad answers.
|
|
9
|
+
*
|
|
10
|
+
* 10 eyes split into two layers:
|
|
11
|
+
*
|
|
12
|
+
* SURFACE LAYER (5 — lexical / phonetic / shape):
|
|
13
|
+
* EYE_1 bigramDice 0.18 char bigram Dice coefficient
|
|
14
|
+
* EYE_2 damerauLevThai 0.18 Thai-aware Damerau-Lev
|
|
15
|
+
* EYE_3 thaiMetaphone 0.08 phonetic key equality
|
|
16
|
+
* EYE_4 lengthRatio 0.04 min(qLen,cLen)/max(qLen,cLen)
|
|
17
|
+
* EYE_5 slidingWindow 0.08 n-gram window match
|
|
18
|
+
*
|
|
19
|
+
* TRUTH LAYER (5 — Mneme-unique):
|
|
20
|
+
* EYE_6 homoglyphCollapse 0.10 cross-script normalization match
|
|
21
|
+
* EYE_7 numberParaphraseBridge 0.10 865 ≡ "eight hundred sixty-five"
|
|
22
|
+
* EYE_8 embeddingCosine 0.10 semantic axis (ollama/MiniLM/hash)
|
|
23
|
+
* EYE_9 hmacProvenanceBoost 0.07 +25% if in HMAC chain
|
|
24
|
+
* EYE_10 honestMirrorPenalty 0.07 × honest-mirror multiplier
|
|
25
|
+
*
|
|
26
|
+
* HYDRA REGENERATION (autospawn):
|
|
27
|
+
* EYE_N from AV antivirus strains with precision > 0.9
|
|
28
|
+
*
|
|
29
|
+
* GUARDIAN (graceful degradation):
|
|
30
|
+
* Failed eyes drop to 0; surviving eye weights softmax-rebalance.
|
|
31
|
+
*
|
|
32
|
+
* FUSION:
|
|
33
|
+
* score(q,c) = Σ(eye.weight × eye.signal)
|
|
34
|
+
* × hydraBonus(q,c)
|
|
35
|
+
* × (1 + log10(1 + 1/recencyDays))
|
|
36
|
+
* × clamp(0.5, 1.5, honestMirrorMultiplier(c.vendor))
|
|
37
|
+
*/
|
|
38
|
+
export type EyeId = "EYE_1_bigram_dice" | "EYE_2_damerau_lev_thai" | "EYE_3_thai_metaphone" | "EYE_4_length_ratio" | "EYE_5_sliding_window" | "EYE_6_homoglyph_collapse" | "EYE_7_number_paraphrase" | "EYE_8_embedding_cosine" | "EYE_9_hmac_provenance" | "EYE_10_honest_mirror_penalty" | `EYE_HYDRA_${string}`;
|
|
39
|
+
export type EyeLayer = "surface" | "truth" | "hydra";
|
|
40
|
+
export type EyeHealth = "OPEN" | "CLOSED" | "DEGRADED";
|
|
41
|
+
export interface EyeSignal {
|
|
42
|
+
/** 0..1 raw similarity from this eye for (q,c). */
|
|
43
|
+
raw: number;
|
|
44
|
+
/** Why this eye returned what it did (1 short line). */
|
|
45
|
+
reason: string;
|
|
46
|
+
}
|
|
47
|
+
export interface Eye {
|
|
48
|
+
id: EyeId;
|
|
49
|
+
layer: EyeLayer;
|
|
50
|
+
/** Nominal weight in the perfect-health bundle. Sums to ≤ 1 across
|
|
51
|
+
* all eyes; the Guardian re-softmaxes whichever are healthy. */
|
|
52
|
+
weight: number;
|
|
53
|
+
/** Per-call health check. Returns CLOSED when prereqs are missing. */
|
|
54
|
+
probe: () => EyeHealth;
|
|
55
|
+
/** Returns 0..1 similarity for (query, candidate). */
|
|
56
|
+
signal: (q: string, c: Candidate, ctx: EyeCtx) => Promise<EyeSignal> | EyeSignal;
|
|
57
|
+
}
|
|
58
|
+
export interface Candidate {
|
|
59
|
+
/** The text to score against the query. */
|
|
60
|
+
text: string;
|
|
61
|
+
/** Optional metadata used by truth-layer eyes. */
|
|
62
|
+
meta?: {
|
|
63
|
+
/** AI vendor that produced this candidate ("claude-opus-4.7", "gpt-5", ...). */
|
|
64
|
+
vendor?: string;
|
|
65
|
+
/** Git commit recency in days (smaller = more recent). */
|
|
66
|
+
recencyDays?: number;
|
|
67
|
+
/** True if this candidate appears in the verified HMAC chain. */
|
|
68
|
+
inHmacChain?: boolean;
|
|
69
|
+
/** Free-form attribution. */
|
|
70
|
+
source?: string;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
export interface EyeCtx {
|
|
74
|
+
/** Path to the .mneme/ root, for HMAC chain + honest mirror lookups. */
|
|
75
|
+
repoRoot: string;
|
|
76
|
+
/** Optional embedder. If null, EYE_8 closes. */
|
|
77
|
+
embedder?: {
|
|
78
|
+
embed: (texts: string[]) => Promise<number[][]>;
|
|
79
|
+
} | null;
|
|
80
|
+
}
|
|
81
|
+
export interface ScoredCandidate {
|
|
82
|
+
candidate: Candidate;
|
|
83
|
+
/** Final fused score in [0, ~1.5] (multipliers can push >1). */
|
|
84
|
+
score: number;
|
|
85
|
+
/** Per-eye breakdown. Closed eyes show raw=null. */
|
|
86
|
+
eyes: Array<{
|
|
87
|
+
id: EyeId;
|
|
88
|
+
layer: EyeLayer;
|
|
89
|
+
weight: number;
|
|
90
|
+
raw: number | null;
|
|
91
|
+
reason: string;
|
|
92
|
+
}>;
|
|
93
|
+
/** Multipliers applied after surface+truth fusion. */
|
|
94
|
+
multipliers: {
|
|
95
|
+
hydraBonus: number;
|
|
96
|
+
recencyBoost: number;
|
|
97
|
+
honestMirrorMultiplier: number;
|
|
98
|
+
};
|
|
99
|
+
/** Which eyes were closed (degraded mode). */
|
|
100
|
+
closedEyes: EyeId[];
|
|
101
|
+
}
|
|
102
|
+
export interface ArgusSearchInput {
|
|
103
|
+
query: string;
|
|
104
|
+
candidates: Candidate[];
|
|
105
|
+
repoRoot: string;
|
|
106
|
+
embedder?: {
|
|
107
|
+
embed: (texts: string[]) => Promise<number[][]>;
|
|
108
|
+
} | null;
|
|
109
|
+
/** Optional cap on returned candidates (default = all, sorted). */
|
|
110
|
+
topK?: number;
|
|
111
|
+
/** Optional pre-spawned HYDRA eye set (advanced). */
|
|
112
|
+
hydraEyes?: Eye[];
|
|
113
|
+
}
|
|
114
|
+
export interface ArgusSearchResult {
|
|
115
|
+
query: string;
|
|
116
|
+
scored: ScoredCandidate[];
|
|
117
|
+
/** Live eye count: total / open / closed. */
|
|
118
|
+
health: {
|
|
119
|
+
total: number;
|
|
120
|
+
open: number;
|
|
121
|
+
closed: number;
|
|
122
|
+
};
|
|
123
|
+
/** HMAC over the (query + candidates + scored) frame for audit. */
|
|
124
|
+
hmac: string;
|
|
125
|
+
/** Engine ms. */
|
|
126
|
+
durationMs: number;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/argus10/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.40.0 — ARGUS-10: 10-Eyed Memory Search.
|
|
3
|
+
*
|
|
4
|
+
* Greek mythology: Argus Panoptes had a hundred eyes — when half slept,
|
|
5
|
+
* the others kept watch. We carry the same property as graceful
|
|
6
|
+
* degradation: if any eye fails (no embedder, no git, no honest_mirror),
|
|
7
|
+
* the remaining eyes softmax-rebalance their weights so the total stays
|
|
8
|
+
* a unit. No blind spots. No silent fallback to bad answers.
|
|
9
|
+
*
|
|
10
|
+
* 10 eyes split into two layers:
|
|
11
|
+
*
|
|
12
|
+
* SURFACE LAYER (5 — lexical / phonetic / shape):
|
|
13
|
+
* EYE_1 bigramDice 0.18 char bigram Dice coefficient
|
|
14
|
+
* EYE_2 damerauLevThai 0.18 Thai-aware Damerau-Lev
|
|
15
|
+
* EYE_3 thaiMetaphone 0.08 phonetic key equality
|
|
16
|
+
* EYE_4 lengthRatio 0.04 min(qLen,cLen)/max(qLen,cLen)
|
|
17
|
+
* EYE_5 slidingWindow 0.08 n-gram window match
|
|
18
|
+
*
|
|
19
|
+
* TRUTH LAYER (5 — Mneme-unique):
|
|
20
|
+
* EYE_6 homoglyphCollapse 0.10 cross-script normalization match
|
|
21
|
+
* EYE_7 numberParaphraseBridge 0.10 865 ≡ "eight hundred sixty-five"
|
|
22
|
+
* EYE_8 embeddingCosine 0.10 semantic axis (ollama/MiniLM/hash)
|
|
23
|
+
* EYE_9 hmacProvenanceBoost 0.07 +25% if in HMAC chain
|
|
24
|
+
* EYE_10 honestMirrorPenalty 0.07 × honest-mirror multiplier
|
|
25
|
+
*
|
|
26
|
+
* HYDRA REGENERATION (autospawn):
|
|
27
|
+
* EYE_N from AV antivirus strains with precision > 0.9
|
|
28
|
+
*
|
|
29
|
+
* GUARDIAN (graceful degradation):
|
|
30
|
+
* Failed eyes drop to 0; surviving eye weights softmax-rebalance.
|
|
31
|
+
*
|
|
32
|
+
* FUSION:
|
|
33
|
+
* score(q,c) = Σ(eye.weight × eye.signal)
|
|
34
|
+
* × hydraBonus(q,c)
|
|
35
|
+
* × (1 + log10(1 + 1/recencyDays))
|
|
36
|
+
* × clamp(0.5, 1.5, honestMirrorMultiplier(c.vendor))
|
|
37
|
+
*/
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/argus10/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.41.0 — ARGUS-11 VENDOR ADAPTERS.
|
|
3
|
+
*
|
|
4
|
+
* One registry of "how vendor X talks to ARGUS-11 search". Each adapter
|
|
5
|
+
* is a small pure-function description (transport / wireFormat / auth)
|
|
6
|
+
* — the actual wire is the HTTP bridge endpoint /v1/argus/search OR
|
|
7
|
+
* the MCP `mneme.argus.search` tool, both of which speak the same
|
|
8
|
+
* request/response shape.
|
|
9
|
+
*
|
|
10
|
+
* Why this matters for the "world's first" claim: a search primitive
|
|
11
|
+
* is only universal if every AI agent can call it. We don't need 9
|
|
12
|
+
* different APIs — we need one canonical surface + an adapter table
|
|
13
|
+
* that proves we KNOW about each integration path.
|
|
14
|
+
*
|
|
15
|
+
* The TRUTH GATE probe (claim.argus11.world_first_multimodal) asserts
|
|
16
|
+
* registered() ≥ 9 — drift below trips the gate.
|
|
17
|
+
*/
|
|
18
|
+
export type VendorTransport = "mcp" | "http-bridge" | "userscript" | "cli";
|
|
19
|
+
export interface VendorAdapter {
|
|
20
|
+
/** Canonical id (lowercase, kebab-case). */
|
|
21
|
+
id: string;
|
|
22
|
+
/** Human-readable name. */
|
|
23
|
+
displayName: string;
|
|
24
|
+
/** How this vendor reaches ARGUS-11. */
|
|
25
|
+
transport: VendorTransport;
|
|
26
|
+
/** Wire format used. */
|
|
27
|
+
wireFormat: "json-rpc-2.0" | "rest" | "tampermonkey-postmessage";
|
|
28
|
+
/** Endpoint the vendor calls (CLI command / URL / tool name). */
|
|
29
|
+
endpoint: string;
|
|
30
|
+
/** Auth model. */
|
|
31
|
+
auth: "stdio-mcp" | "http-token" | "userscript-grant" | "shell";
|
|
32
|
+
/** What works today (verifyable). */
|
|
33
|
+
status: "live" | "ref-impl" | "stub";
|
|
34
|
+
/** Free-form note: what users hit when calling this adapter. */
|
|
35
|
+
notes: string;
|
|
36
|
+
}
|
|
37
|
+
export declare const VENDOR_ADAPTERS: ReadonlyArray<VendorAdapter>;
|
|
38
|
+
export declare function listAdapters(): ReadonlyArray<VendorAdapter>;
|
|
39
|
+
export declare function countAdapters(): number;
|
|
40
|
+
export declare function findAdapter(id: string): VendorAdapter | undefined;
|
|
41
|
+
export declare function adaptersByTransport(t: VendorTransport): ReadonlyArray<VendorAdapter>;
|
|
42
|
+
//# sourceMappingURL=vendor_adapters.d.ts.map
|