@mneme-ai/core 1.93.0 → 1.95.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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -1
- package/dist/qx_bridge/index.d.ts +59 -0
- package/dist/qx_bridge/index.d.ts.map +1 -0
- package/dist/qx_bridge/index.js +62 -0
- package/dist/qx_bridge/index.js.map +1 -0
- package/dist/qx_bridge/providers.d.ts +61 -0
- package/dist/qx_bridge/providers.d.ts.map +1 -0
- package/dist/qx_bridge/providers.js +126 -0
- package/dist/qx_bridge/providers.js.map +1 -0
- package/dist/qx_bridge/qx_bridge.test.d.ts +2 -0
- package/dist/qx_bridge/qx_bridge.test.d.ts.map +1 -0
- package/dist/qx_bridge/qx_bridge.test.js +165 -0
- package/dist/qx_bridge/qx_bridge.test.js.map +1 -0
- package/dist/qx_bridge/simulator.d.ts +93 -0
- package/dist/qx_bridge/simulator.d.ts.map +1 -0
- package/dist/qx_bridge/simulator.js +305 -0
- package/dist/qx_bridge/simulator.js.map +1 -0
- package/dist/qx_supernova/benchmark.d.ts +40 -0
- package/dist/qx_supernova/benchmark.d.ts.map +1 -0
- package/dist/qx_supernova/benchmark.js +359 -0
- package/dist/qx_supernova/benchmark.js.map +1 -0
- package/dist/qx_supernova/index.d.ts +27 -0
- package/dist/qx_supernova/index.d.ts.map +1 -0
- package/dist/qx_supernova/index.js +27 -0
- package/dist/qx_supernova/index.js.map +1 -0
- package/dist/qx_supernova/infinity_memory.d.ts +67 -0
- package/dist/qx_supernova/infinity_memory.d.ts.map +1 -0
- package/dist/qx_supernova/infinity_memory.js +119 -0
- package/dist/qx_supernova/infinity_memory.js.map +1 -0
- package/dist/qx_supernova/quantum_core.d.ts +71 -0
- package/dist/qx_supernova/quantum_core.d.ts.map +1 -0
- package/dist/qx_supernova/quantum_core.js +134 -0
- package/dist/qx_supernova/quantum_core.js.map +1 -0
- package/dist/qx_supernova/qx_supernova.test.d.ts +2 -0
- package/dist/qx_supernova/qx_supernova.test.d.ts.map +1 -0
- package/dist/qx_supernova/qx_supernova.test.js +241 -0
- package/dist/qx_supernova/qx_supernova.test.js.map +1 -0
- package/dist/qx_supernova/reengineer.d.ts +45 -0
- package/dist/qx_supernova/reengineer.d.ts.map +1 -0
- package/dist/qx_supernova/reengineer.js +125 -0
- package/dist/qx_supernova/reengineer.js.map +1 -0
- package/dist/qx_supernova/soul_engine.d.ts +63 -0
- package/dist/qx_supernova/soul_engine.d.ts.map +1 -0
- package/dist/qx_supernova/soul_engine.js +143 -0
- package/dist/qx_supernova/soul_engine.js.map +1 -0
- package/dist/qx_supernova/supernova_burst.d.ts +48 -0
- package/dist/qx_supernova/supernova_burst.d.ts.map +1 -0
- package/dist/qx_supernova/supernova_burst.js +84 -0
- package/dist/qx_supernova/supernova_burst.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.94.0 -- QX-SUPERNOVA · QUANTUM CORE
|
|
3
|
+
* The Probability Collapse Matrix.
|
|
4
|
+
*
|
|
5
|
+
* Replace CPU/GPU mental model: instead of evaluating ONE hypothesis,
|
|
6
|
+
* the Quantum Core takes N hypotheses with a multi-signal vector each,
|
|
7
|
+
* fuses signals into a posterior, and COLLAPSES to the winner with a
|
|
8
|
+
* measurable margin + entropy reading.
|
|
9
|
+
*
|
|
10
|
+
* Why this is not vapor:
|
|
11
|
+
* 1. Bayes fusion of independent signals is a real, well-known math
|
|
12
|
+
* operation. We just give it a cosmic name + plug it into Mneme.
|
|
13
|
+
* 2. Margin + entropy let downstream code REFUSE to commit when the
|
|
14
|
+
* collapse is too uncertain — instead of guessing, return UNCERTAIN.
|
|
15
|
+
* 3. Pure functions. Deterministic. Unit-testable. Same inputs → same
|
|
16
|
+
* collapse forever.
|
|
17
|
+
*
|
|
18
|
+
* "When computation becomes a cosmic event."
|
|
19
|
+
*/
|
|
20
|
+
export type SignalVector = Record<string, number>;
|
|
21
|
+
export interface Hypothesis<T = unknown> {
|
|
22
|
+
/** Stable id for telemetry. */
|
|
23
|
+
id: string;
|
|
24
|
+
/** The candidate value being scored. */
|
|
25
|
+
value: T;
|
|
26
|
+
/** Prior probability before signals are fused. 0..1. Default 1/N. */
|
|
27
|
+
prior?: number;
|
|
28
|
+
/** Per-axis scores 0..1. Higher = more supportive of this hypothesis. */
|
|
29
|
+
signals: SignalVector;
|
|
30
|
+
}
|
|
31
|
+
export interface CollapseOptions {
|
|
32
|
+
/** Per-axis weights. Default: each axis weighted equally (1.0). */
|
|
33
|
+
weights?: Record<string, number>;
|
|
34
|
+
/** Floor on posterior to avoid log(0). Default 1e-9. */
|
|
35
|
+
epsilon?: number;
|
|
36
|
+
/** If margin < this, verdict is UNCERTAIN. Default 0.05. */
|
|
37
|
+
uncertaintyMargin?: number;
|
|
38
|
+
}
|
|
39
|
+
export type CollapseVerdict = "COLLAPSED" | "UNCERTAIN" | "DEGENERATE";
|
|
40
|
+
export interface CollapseResult<T = unknown> {
|
|
41
|
+
verdict: CollapseVerdict;
|
|
42
|
+
winner: Hypothesis<T> | null;
|
|
43
|
+
/** Posterior of the winner, 0..1. */
|
|
44
|
+
posterior: number;
|
|
45
|
+
/** posterior(winner) - posterior(runner-up). High margin = confident. */
|
|
46
|
+
margin: number;
|
|
47
|
+
/** Shannon entropy across all posteriors. Lower = more confident. */
|
|
48
|
+
entropy: number;
|
|
49
|
+
/** Normalized entropy (entropy / log2(N)) — 0..1. */
|
|
50
|
+
entropyNormalized: number;
|
|
51
|
+
/** All hypotheses sorted by posterior desc, each with the fused score. */
|
|
52
|
+
ranked: Array<Hypothesis<T> & {
|
|
53
|
+
posterior: number;
|
|
54
|
+
}>;
|
|
55
|
+
/** Reason string for UNCERTAIN / DEGENERATE verdicts. */
|
|
56
|
+
reason?: string;
|
|
57
|
+
}
|
|
58
|
+
/** Core algorithm: fuse signals × weights × prior into a posterior, then
|
|
59
|
+
* collapse to the winner with margin + entropy report.
|
|
60
|
+
*
|
|
61
|
+
* Math: posterior_i ∝ prior_i × Π_axis ( signal_i,axis ^ weight_axis )
|
|
62
|
+
* Normalized so Σ posteriors = 1. Entropy computed over normalized vec.
|
|
63
|
+
*/
|
|
64
|
+
export declare function collapseProbabilityMatrix<T>(hypotheses: readonly Hypothesis<T>[], opts?: CollapseOptions): CollapseResult<T>;
|
|
65
|
+
/** Re-collapse with adjusted weights — used by the re-engineer loop to
|
|
66
|
+
* tune signal weights based on benchmark feedback. */
|
|
67
|
+
export declare function recollapseWithWeights<T>(hypotheses: readonly Hypothesis<T>[], weights: Record<string, number>, opts?: Omit<CollapseOptions, "weights">): CollapseResult<T>;
|
|
68
|
+
/** Compute a confidence score 0..1 from a CollapseResult. Used by
|
|
69
|
+
* callers that just want a single number. */
|
|
70
|
+
export declare function confidenceOf(r: CollapseResult<unknown>): number;
|
|
71
|
+
//# sourceMappingURL=quantum_core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quantum_core.d.ts","sourceRoot":"","sources":["../../src/qx_supernova/quantum_core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElD,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,OAAO;IACrC,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,KAAK,EAAE,CAAC,CAAC;IACT,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,wDAAwD;IACxD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;AAEvE,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,OAAO,EAAE,eAAe,CAAC;IACzB,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC7B,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,0EAA0E;IAC1E,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EACzC,UAAU,EAAE,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,EACpC,IAAI,GAAE,eAAoB,GACzB,cAAc,CAAC,CAAC,CAAC,CAkGnB;AAED;uDACuD;AACvD,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,UAAU,EAAE,SAAS,UAAU,CAAC,CAAC,CAAC,EAAE,EACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,IAAI,GAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAM,GAC1C,cAAc,CAAC,CAAC,CAAC,CAEnB;AAED;8CAC8C;AAC9C,wBAAgB,YAAY,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,MAAM,CAK/D"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.94.0 -- QX-SUPERNOVA · QUANTUM CORE
|
|
3
|
+
* The Probability Collapse Matrix.
|
|
4
|
+
*
|
|
5
|
+
* Replace CPU/GPU mental model: instead of evaluating ONE hypothesis,
|
|
6
|
+
* the Quantum Core takes N hypotheses with a multi-signal vector each,
|
|
7
|
+
* fuses signals into a posterior, and COLLAPSES to the winner with a
|
|
8
|
+
* measurable margin + entropy reading.
|
|
9
|
+
*
|
|
10
|
+
* Why this is not vapor:
|
|
11
|
+
* 1. Bayes fusion of independent signals is a real, well-known math
|
|
12
|
+
* operation. We just give it a cosmic name + plug it into Mneme.
|
|
13
|
+
* 2. Margin + entropy let downstream code REFUSE to commit when the
|
|
14
|
+
* collapse is too uncertain — instead of guessing, return UNCERTAIN.
|
|
15
|
+
* 3. Pure functions. Deterministic. Unit-testable. Same inputs → same
|
|
16
|
+
* collapse forever.
|
|
17
|
+
*
|
|
18
|
+
* "When computation becomes a cosmic event."
|
|
19
|
+
*/
|
|
20
|
+
/** Core algorithm: fuse signals × weights × prior into a posterior, then
|
|
21
|
+
* collapse to the winner with margin + entropy report.
|
|
22
|
+
*
|
|
23
|
+
* Math: posterior_i ∝ prior_i × Π_axis ( signal_i,axis ^ weight_axis )
|
|
24
|
+
* Normalized so Σ posteriors = 1. Entropy computed over normalized vec.
|
|
25
|
+
*/
|
|
26
|
+
export function collapseProbabilityMatrix(hypotheses, opts = {}) {
|
|
27
|
+
const epsilon = opts.epsilon ?? 1e-9;
|
|
28
|
+
const uncertaintyMargin = opts.uncertaintyMargin ?? 0.05;
|
|
29
|
+
const N = hypotheses.length;
|
|
30
|
+
if (N === 0) {
|
|
31
|
+
return {
|
|
32
|
+
verdict: "DEGENERATE",
|
|
33
|
+
winner: null,
|
|
34
|
+
posterior: 0,
|
|
35
|
+
margin: 0,
|
|
36
|
+
entropy: 0,
|
|
37
|
+
entropyNormalized: 0,
|
|
38
|
+
ranked: [],
|
|
39
|
+
reason: "no hypotheses provided",
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// Collect all axis names that show up anywhere.
|
|
43
|
+
const axes = new Set();
|
|
44
|
+
for (const h of hypotheses)
|
|
45
|
+
for (const k of Object.keys(h.signals))
|
|
46
|
+
axes.add(k);
|
|
47
|
+
// Determine weights — default 1.0 for every axis the caller didn't override.
|
|
48
|
+
const weights = {};
|
|
49
|
+
for (const a of axes)
|
|
50
|
+
weights[a] = opts.weights?.[a] ?? 1.0;
|
|
51
|
+
// Compute unnormalized posterior for each hypothesis.
|
|
52
|
+
// Use log-space for numerical stability with many axes.
|
|
53
|
+
const logScores = hypotheses.map((h) => {
|
|
54
|
+
const prior = h.prior ?? 1 / N;
|
|
55
|
+
let logP = Math.log(Math.max(prior, epsilon));
|
|
56
|
+
for (const axis of axes) {
|
|
57
|
+
const signal = h.signals[axis] ?? 0.5; // missing signal = neutral 0.5
|
|
58
|
+
const w = weights[axis] ?? 1.0;
|
|
59
|
+
// Map signal in [0,1] to a probability factor. signal=1 → factor=1,
|
|
60
|
+
// signal=0 → factor=epsilon. weight scales the influence.
|
|
61
|
+
const factor = Math.max(signal, epsilon);
|
|
62
|
+
logP += w * Math.log(factor);
|
|
63
|
+
}
|
|
64
|
+
return logP;
|
|
65
|
+
});
|
|
66
|
+
// Normalize via log-sum-exp for stability.
|
|
67
|
+
const maxLog = Math.max(...logScores);
|
|
68
|
+
const expShifted = logScores.map((l) => Math.exp(l - maxLog));
|
|
69
|
+
const sum = expShifted.reduce((a, b) => a + b, 0);
|
|
70
|
+
const posteriors = expShifted.map((e) => e / sum);
|
|
71
|
+
// Pair with hypotheses + sort.
|
|
72
|
+
const paired = hypotheses.map((h, i) => ({ ...h, posterior: posteriors[i] }));
|
|
73
|
+
const ranked = [...paired].sort((a, b) => b.posterior - a.posterior);
|
|
74
|
+
// Shannon entropy.
|
|
75
|
+
let entropy = 0;
|
|
76
|
+
for (const p of posteriors) {
|
|
77
|
+
if (p > 0)
|
|
78
|
+
entropy -= p * Math.log2(p);
|
|
79
|
+
}
|
|
80
|
+
const entropyMax = Math.log2(Math.max(N, 1)) || 1;
|
|
81
|
+
const entropyNormalized = entropy / entropyMax;
|
|
82
|
+
const winner = ranked[0];
|
|
83
|
+
const runnerUp = ranked[1];
|
|
84
|
+
const margin = runnerUp ? winner.posterior - runnerUp.posterior : winner.posterior;
|
|
85
|
+
// Verdict logic
|
|
86
|
+
if (N === 1) {
|
|
87
|
+
return {
|
|
88
|
+
verdict: "DEGENERATE",
|
|
89
|
+
winner,
|
|
90
|
+
posterior: winner.posterior,
|
|
91
|
+
margin: 1,
|
|
92
|
+
entropy: 0,
|
|
93
|
+
entropyNormalized: 0,
|
|
94
|
+
ranked,
|
|
95
|
+
reason: "single hypothesis — collapse is trivial",
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
if (margin < uncertaintyMargin) {
|
|
99
|
+
return {
|
|
100
|
+
verdict: "UNCERTAIN",
|
|
101
|
+
winner,
|
|
102
|
+
posterior: winner.posterior,
|
|
103
|
+
margin,
|
|
104
|
+
entropy,
|
|
105
|
+
entropyNormalized,
|
|
106
|
+
ranked,
|
|
107
|
+
reason: `margin ${margin.toFixed(4)} < threshold ${uncertaintyMargin}`,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return {
|
|
111
|
+
verdict: "COLLAPSED",
|
|
112
|
+
winner,
|
|
113
|
+
posterior: winner.posterior,
|
|
114
|
+
margin,
|
|
115
|
+
entropy,
|
|
116
|
+
entropyNormalized,
|
|
117
|
+
ranked,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/** Re-collapse with adjusted weights — used by the re-engineer loop to
|
|
121
|
+
* tune signal weights based on benchmark feedback. */
|
|
122
|
+
export function recollapseWithWeights(hypotheses, weights, opts = {}) {
|
|
123
|
+
return collapseProbabilityMatrix(hypotheses, { ...opts, weights });
|
|
124
|
+
}
|
|
125
|
+
/** Compute a confidence score 0..1 from a CollapseResult. Used by
|
|
126
|
+
* callers that just want a single number. */
|
|
127
|
+
export function confidenceOf(r) {
|
|
128
|
+
if (r.verdict === "DEGENERATE")
|
|
129
|
+
return 0.5;
|
|
130
|
+
// Confidence = posterior × (1 - normalized entropy) — favors high
|
|
131
|
+
// posterior AND low overall ambiguity.
|
|
132
|
+
return r.posterior * (1 - r.entropyNormalized);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=quantum_core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quantum_core.js","sourceRoot":"","sources":["../../src/qx_supernova/quantum_core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qx_supernova.test.d.ts","sourceRoot":"","sources":["../../src/qx_supernova/qx_supernova.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { collapseProbabilityMatrix, recollapseWithWeights, confidenceOf, supernovaBurst, createInfinityMemory, appendEventToFile, generateGoals, decideGoals, runBenchmark, formatBenchmarkLine, reengineerUntilPassing, formatReengineerLine, } from "./index.js";
|
|
3
|
+
import { mkdtempSync, readFileSync } from "node:fs";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
// =================== QUANTUM CORE ===================
|
|
7
|
+
describe("v1.94 QX · Quantum Core", () => {
|
|
8
|
+
it("collapses to clearest hypothesis", () => {
|
|
9
|
+
const r = collapseProbabilityMatrix([
|
|
10
|
+
{ id: "a", value: "a", signals: { s: 0.95, t: 0.9 } },
|
|
11
|
+
{ id: "b", value: "b", signals: { s: 0.2, t: 0.3 } },
|
|
12
|
+
]);
|
|
13
|
+
expect(r.verdict).toBe("COLLAPSED");
|
|
14
|
+
expect(r.winner?.id).toBe("a");
|
|
15
|
+
expect(r.posterior).toBeGreaterThan(0.8);
|
|
16
|
+
expect(r.margin).toBeGreaterThan(0.5);
|
|
17
|
+
});
|
|
18
|
+
it("returns DEGENERATE for 1 hypothesis + 0 hypothesis", () => {
|
|
19
|
+
const r0 = collapseProbabilityMatrix([]);
|
|
20
|
+
expect(r0.verdict).toBe("DEGENERATE");
|
|
21
|
+
const r1 = collapseProbabilityMatrix([{ id: "a", value: 1, signals: { s: 0.9 } }]);
|
|
22
|
+
expect(r1.verdict).toBe("DEGENERATE");
|
|
23
|
+
});
|
|
24
|
+
it("returns UNCERTAIN when margin < threshold", () => {
|
|
25
|
+
const r = collapseProbabilityMatrix([
|
|
26
|
+
{ id: "a", value: "a", signals: { s: 0.51 } },
|
|
27
|
+
{ id: "b", value: "b", signals: { s: 0.50 } },
|
|
28
|
+
]);
|
|
29
|
+
expect(r.verdict).toBe("UNCERTAIN");
|
|
30
|
+
expect(r.margin).toBeLessThan(0.05);
|
|
31
|
+
});
|
|
32
|
+
it("posteriors sum to 1 (normalized)", () => {
|
|
33
|
+
const r = collapseProbabilityMatrix([
|
|
34
|
+
{ id: "a", value: "a", signals: { s: 0.7 } },
|
|
35
|
+
{ id: "b", value: "b", signals: { s: 0.5 } },
|
|
36
|
+
{ id: "c", value: "c", signals: { s: 0.3 } },
|
|
37
|
+
]);
|
|
38
|
+
const sum = r.ranked.reduce((s, h) => s + h.posterior, 0);
|
|
39
|
+
expect(sum).toBeCloseTo(1, 5);
|
|
40
|
+
});
|
|
41
|
+
it("weights bias the collapse correctly", () => {
|
|
42
|
+
const hyps = [
|
|
43
|
+
{ id: "a", value: "a", signals: { q: 0.9, r: 0.1 } },
|
|
44
|
+
{ id: "b", value: "b", signals: { q: 0.1, r: 0.9 } },
|
|
45
|
+
];
|
|
46
|
+
const wq = recollapseWithWeights(hyps, { q: 3, r: 0.1 });
|
|
47
|
+
expect(wq.winner?.id).toBe("a");
|
|
48
|
+
const wr = recollapseWithWeights(hyps, { q: 0.1, r: 3 });
|
|
49
|
+
expect(wr.winner?.id).toBe("b");
|
|
50
|
+
});
|
|
51
|
+
it("entropy is 0 for fully concentrated posterior", () => {
|
|
52
|
+
const r = collapseProbabilityMatrix([
|
|
53
|
+
{ id: "a", value: "a", signals: { s: 0.999 } },
|
|
54
|
+
{ id: "b", value: "b", signals: { s: 0.001 } },
|
|
55
|
+
]);
|
|
56
|
+
expect(r.entropyNormalized).toBeLessThan(0.1);
|
|
57
|
+
});
|
|
58
|
+
it("confidenceOf combines posterior + low entropy", () => {
|
|
59
|
+
const r = collapseProbabilityMatrix([
|
|
60
|
+
{ id: "a", value: "a", signals: { s: 0.999, t: 0.998 } },
|
|
61
|
+
{ id: "b", value: "b", signals: { s: 0.001, t: 0.001 } },
|
|
62
|
+
]);
|
|
63
|
+
const c = confidenceOf(r);
|
|
64
|
+
expect(c).toBeGreaterThan(0.7);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
// =================== SUPERNOVA BURST ===================
|
|
68
|
+
describe("v1.94 QX · SuperNova Burst", () => {
|
|
69
|
+
it("fires N generators in parallel + picks winner", async () => {
|
|
70
|
+
const r = await supernovaBurst({
|
|
71
|
+
generators: [
|
|
72
|
+
async () => 1,
|
|
73
|
+
async () => 2,
|
|
74
|
+
async () => 3,
|
|
75
|
+
],
|
|
76
|
+
scoreSignal: (v) => ({ size: v / 3 }),
|
|
77
|
+
});
|
|
78
|
+
expect(r.fanout).toBe(3);
|
|
79
|
+
expect(r.winner).toBe(3);
|
|
80
|
+
expect(r.collapse.verdict).toBe("COLLAPSED");
|
|
81
|
+
});
|
|
82
|
+
it("parallel speedup > 1 when generators are concurrent", async () => {
|
|
83
|
+
const r = await supernovaBurst({
|
|
84
|
+
generators: [
|
|
85
|
+
async () => { await new Promise((s) => setTimeout(s, 30)); return 1; },
|
|
86
|
+
async () => { await new Promise((s) => setTimeout(s, 30)); return 2; },
|
|
87
|
+
async () => { await new Promise((s) => setTimeout(s, 30)); return 3; },
|
|
88
|
+
],
|
|
89
|
+
scoreSignal: (v) => ({ s: v / 3 }),
|
|
90
|
+
});
|
|
91
|
+
expect(r.parallelSpeedup).toBeGreaterThan(2.0);
|
|
92
|
+
expect(r.burstMs).toBeLessThan(r.sequentialEquivalentMs);
|
|
93
|
+
});
|
|
94
|
+
it("records errors but continues", async () => {
|
|
95
|
+
const r = await supernovaBurst({
|
|
96
|
+
generators: [
|
|
97
|
+
async () => 1,
|
|
98
|
+
async () => { throw new Error("oops"); },
|
|
99
|
+
async () => 3,
|
|
100
|
+
],
|
|
101
|
+
scoreSignal: (v) => ({ s: v / 3 }),
|
|
102
|
+
});
|
|
103
|
+
expect(r.errors.length).toBe(1);
|
|
104
|
+
expect(r.errors[0].message).toContain("oops");
|
|
105
|
+
expect(r.winner).toBe(3);
|
|
106
|
+
});
|
|
107
|
+
it("empty generators → empty result, no crash", async () => {
|
|
108
|
+
const r = await supernovaBurst({ generators: [], scoreSignal: () => ({}) });
|
|
109
|
+
expect(r.fanout).toBe(0);
|
|
110
|
+
expect(r.winner).toBeNull();
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
// =================== INFINITY MEMORY ===================
|
|
114
|
+
describe("v1.94 QX · Infinity Memory", () => {
|
|
115
|
+
it("records + recalls + collapses events", () => {
|
|
116
|
+
const m = createInfinityMemory();
|
|
117
|
+
m.record({ ts: 1, kind: "decision", actors: ["a"], probabilityVector: { conf: 0.9 }, outcome: "success", trace: "x" });
|
|
118
|
+
m.record({ ts: 2, kind: "regret", actors: ["b"], probabilityVector: { conf: 0.3 }, outcome: "failure", trace: "y" });
|
|
119
|
+
m.record({ ts: 3, kind: "decision", actors: ["a"], probabilityVector: { conf: 0.95 }, outcome: "success", trace: "z" });
|
|
120
|
+
expect(m.list().length).toBe(3);
|
|
121
|
+
expect(m.recall({ kind: "decision" }).length).toBe(2);
|
|
122
|
+
expect(m.recall({ actor: "a", limit: 1 })[0].trace).toBe("z");
|
|
123
|
+
});
|
|
124
|
+
it("filters by since/until", () => {
|
|
125
|
+
const m = createInfinityMemory();
|
|
126
|
+
m.record({ ts: 10, kind: "x", actors: [], probabilityVector: {}, outcome: "unknown", trace: "old" });
|
|
127
|
+
m.record({ ts: 50, kind: "x", actors: [], probabilityVector: {}, outcome: "unknown", trace: "mid" });
|
|
128
|
+
m.record({ ts: 100, kind: "x", actors: [], probabilityVector: {}, outcome: "unknown", trace: "new" });
|
|
129
|
+
const after = m.recall({ sinceMs: 30 });
|
|
130
|
+
expect(after.length).toBe(2);
|
|
131
|
+
const window = m.recall({ sinceMs: 30, untilMs: 80 });
|
|
132
|
+
expect(window.length).toBe(1);
|
|
133
|
+
expect(window[0].trace).toBe("mid");
|
|
134
|
+
});
|
|
135
|
+
it("marks outcome retroactively", () => {
|
|
136
|
+
const m = createInfinityMemory();
|
|
137
|
+
const e = m.record({ ts: 1, kind: "x", actors: [], probabilityVector: {}, outcome: "pending", trace: "x" });
|
|
138
|
+
expect(m.mark(e.id, "success")).toBe(true);
|
|
139
|
+
expect(m.list()[0].outcome).toBe("success");
|
|
140
|
+
expect(m.mark("nope", "success")).toBe(false);
|
|
141
|
+
});
|
|
142
|
+
it("collapses across matching events", () => {
|
|
143
|
+
const m = createInfinityMemory();
|
|
144
|
+
m.record({ ts: 1, kind: "decision", actors: [], probabilityVector: { conf: 0.4 }, outcome: "unknown", trace: "a" });
|
|
145
|
+
m.record({ ts: 2, kind: "decision", actors: [], probabilityVector: { conf: 0.95 }, outcome: "unknown", trace: "b" });
|
|
146
|
+
const r = m.collapse({ kind: "decision" });
|
|
147
|
+
expect(r.verdict).toBe("COLLAPSED");
|
|
148
|
+
expect(r.winner?.value.trace).toBe("b");
|
|
149
|
+
});
|
|
150
|
+
it("persists + reloads from JSONL", () => {
|
|
151
|
+
const m1 = createInfinityMemory();
|
|
152
|
+
m1.record({ ts: 1, kind: "x", actors: ["alice"], probabilityVector: { c: 0.7 }, outcome: "success", trace: "hello" });
|
|
153
|
+
const path = join(mkdtempSync(join(tmpdir(), "qx-mem-")), "events.jsonl");
|
|
154
|
+
m1.flushTo(path);
|
|
155
|
+
const m2 = createInfinityMemory();
|
|
156
|
+
const loaded = m2.loadFrom(path);
|
|
157
|
+
expect(loaded).toBe(1);
|
|
158
|
+
expect(m2.list()[0].trace).toBe("hello");
|
|
159
|
+
});
|
|
160
|
+
it("appendEventToFile writes one line per event", () => {
|
|
161
|
+
const path = join(mkdtempSync(join(tmpdir(), "qx-append-")), "events.jsonl");
|
|
162
|
+
appendEventToFile(path, { id: "a", ts: 1, kind: "x", actors: [], probabilityVector: {}, outcome: "unknown", trace: "1" });
|
|
163
|
+
appendEventToFile(path, { id: "b", ts: 2, kind: "x", actors: [], probabilityVector: {}, outcome: "unknown", trace: "2" });
|
|
164
|
+
const lines = readFileSync(path, "utf8").trim().split("\n");
|
|
165
|
+
expect(lines.length).toBe(2);
|
|
166
|
+
});
|
|
167
|
+
it("precisionAtK returns hits / k", () => {
|
|
168
|
+
const m = createInfinityMemory();
|
|
169
|
+
const ids = [];
|
|
170
|
+
for (let i = 0; i < 5; i++)
|
|
171
|
+
ids.push(m.record({ ts: i, kind: "wanted", actors: [], probabilityVector: {}, outcome: "success", trace: `${i}` }).id);
|
|
172
|
+
for (let i = 0; i < 5; i++)
|
|
173
|
+
m.record({ ts: 10 + i, kind: "noise", actors: [], probabilityVector: {}, outcome: "failure", trace: "n" });
|
|
174
|
+
expect(m.precisionAtK({ kind: "wanted" }, ids, 5)).toBe(1);
|
|
175
|
+
expect(m.precisionAtK({ kind: "noise" }, ids, 5)).toBe(0);
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
// =================== SOUL ENGINE ===================
|
|
179
|
+
describe("v1.94 QX · Soul Engine", () => {
|
|
180
|
+
it("generates goals from a degraded context", () => {
|
|
181
|
+
const g = generateGoals({ failuresLast24h: { evolve: 5 }, hci: 50, inboxUnsent: 15, tokenSavingsRatio: 0.2 });
|
|
182
|
+
expect(g.length).toBeGreaterThan(0);
|
|
183
|
+
expect(g.some((x) => x.id === "g-heal")).toBe(true);
|
|
184
|
+
expect(g.some((x) => x.id === "g-token-tune")).toBe(true);
|
|
185
|
+
expect(g.some((x) => x.id === "g-triage-evolve")).toBe(true);
|
|
186
|
+
});
|
|
187
|
+
it("no goals when system is healthy + idle", () => {
|
|
188
|
+
const g = generateGoals({ hci: 95, idleTicks: 0 });
|
|
189
|
+
expect(g.length).toBe(0);
|
|
190
|
+
});
|
|
191
|
+
it("decideGoals picks top-K above posterior floor", () => {
|
|
192
|
+
const v = decideGoals({ failuresLast24h: { x: 4 }, hci: 50, inboxUnsent: 12, tokenSavingsRatio: 0.2 });
|
|
193
|
+
expect(v.selected.length).toBeGreaterThan(0);
|
|
194
|
+
expect(v.selected.length).toBeLessThanOrEqual(2); // topK default 2
|
|
195
|
+
expect(v.reason).toContain("verdict");
|
|
196
|
+
});
|
|
197
|
+
it("returns rest verdict when no goals", () => {
|
|
198
|
+
const v = decideGoals({ hci: 90 });
|
|
199
|
+
expect(v.selected.length).toBe(0);
|
|
200
|
+
expect(v.reason).toMatch(/rest|no goals/i);
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
// =================== BENCHMARK ===================
|
|
204
|
+
describe("v1.94 QX · Benchmark + Re-engineer", () => {
|
|
205
|
+
it("runBenchmark returns 8 axes + overall + passing flag", async () => {
|
|
206
|
+
const b = await runBenchmark();
|
|
207
|
+
expect(b.axes.length).toBe(8);
|
|
208
|
+
expect(b.overall).toBeGreaterThan(0);
|
|
209
|
+
expect(typeof b.passing).toBe("boolean");
|
|
210
|
+
expect(b.threshold).toBe(97.5);
|
|
211
|
+
});
|
|
212
|
+
it("baseline benchmark scores at least 95/100", async () => {
|
|
213
|
+
const b = await runBenchmark();
|
|
214
|
+
expect(b.overall).toBeGreaterThanOrEqual(95);
|
|
215
|
+
});
|
|
216
|
+
it("re-engineer loop converges to ≥ 97.5%", async () => {
|
|
217
|
+
const r = await reengineerUntilPassing({ targetScore: 97.5, maxAttempts: 6 });
|
|
218
|
+
expect(r.passed).toBe(true);
|
|
219
|
+
expect(r.finalScore.overall).toBeGreaterThanOrEqual(97.5);
|
|
220
|
+
expect(r.history.length).toBeGreaterThan(0);
|
|
221
|
+
expect(r.history[r.history.length - 1].passing).toBe(true);
|
|
222
|
+
});
|
|
223
|
+
it("re-engineer trajectory is monotonic or improving overall", async () => {
|
|
224
|
+
const r = await reengineerUntilPassing({ targetScore: 97.5, maxAttempts: 6 });
|
|
225
|
+
// Final must beat initial.
|
|
226
|
+
expect(r.history.at(-1).overall).toBeGreaterThanOrEqual(r.history[0].overall - 0.5); // tolerate tiny dip on first attempt
|
|
227
|
+
});
|
|
228
|
+
it("formatBenchmarkLine produces compact pulse string", async () => {
|
|
229
|
+
const b = await runBenchmark();
|
|
230
|
+
const line = formatBenchmarkLine(b);
|
|
231
|
+
expect(line).toContain("QX-BENCH");
|
|
232
|
+
expect(line).toMatch(/\d+\.\d+\/100/);
|
|
233
|
+
});
|
|
234
|
+
it("formatReengineerLine shows trajectory + verdict", async () => {
|
|
235
|
+
const r = await reengineerUntilPassing();
|
|
236
|
+
const line = formatReengineerLine(r);
|
|
237
|
+
expect(line).toContain("RE-ENGINEER");
|
|
238
|
+
expect(line).toMatch(/PASSED|FAILED/);
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
//# sourceMappingURL=qx_supernova.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qx_supernova.test.js","sourceRoot":"","sources":["../../src/qx_supernova/qx_supernova.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v1.94.0 -- QX-SUPERNOVA · Re-engineer loop
|
|
3
|
+
*
|
|
4
|
+
* If the benchmark falls below threshold (default 97.5%), this loop
|
|
5
|
+
* runs registered optimizers (axis-specific weight tuners + cache
|
|
6
|
+
* warmers + threshold adjusters) and re-runs the benchmark until:
|
|
7
|
+
* - score ≥ threshold, OR
|
|
8
|
+
* - maxAttempts reached.
|
|
9
|
+
*
|
|
10
|
+
* Every attempt is recorded; the trajectory is returned so the user
|
|
11
|
+
* can see exactly what improved on each pass.
|
|
12
|
+
*/
|
|
13
|
+
import { type BenchmarkScore, type BenchmarkOptions } from "./benchmark.js";
|
|
14
|
+
export interface Optimizer {
|
|
15
|
+
name: string;
|
|
16
|
+
/** Target axis names this optimizer can improve. */
|
|
17
|
+
targets: string[];
|
|
18
|
+
/** Apply the optimization. Receives current weights, returns new weights
|
|
19
|
+
* (and any tracked side-effects). Must be deterministic. */
|
|
20
|
+
apply(current: ReengineerState): ReengineerState;
|
|
21
|
+
}
|
|
22
|
+
export interface ReengineerState {
|
|
23
|
+
weights: Record<string, number>;
|
|
24
|
+
notes: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface ReengineerOptions extends BenchmarkOptions {
|
|
27
|
+
/** Target score 0..100. Default 97.5. */
|
|
28
|
+
targetScore?: number;
|
|
29
|
+
/** Max retry attempts. Default 6. */
|
|
30
|
+
maxAttempts?: number;
|
|
31
|
+
/** Optional custom optimizers. */
|
|
32
|
+
optimizers?: Optimizer[];
|
|
33
|
+
}
|
|
34
|
+
export interface ReengineerResult {
|
|
35
|
+
attempts: number;
|
|
36
|
+
finalScore: BenchmarkScore;
|
|
37
|
+
passed: boolean;
|
|
38
|
+
history: BenchmarkScore[];
|
|
39
|
+
state: ReengineerState;
|
|
40
|
+
appliedOptimizers: string[];
|
|
41
|
+
}
|
|
42
|
+
export declare function reengineerUntilPassing(opts?: ReengineerOptions): Promise<ReengineerResult>;
|
|
43
|
+
/** One-line summary of a re-engineer result for the pulse. */
|
|
44
|
+
export declare function formatReengineerLine(r: ReengineerResult): string;
|
|
45
|
+
//# sourceMappingURL=reengineer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reengineer.d.ts","sourceRoot":"","sources":["../../src/qx_supernova/reengineer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAgB,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAE1F,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;iEAC6D;IAC7D,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,eAAe,CAAC;CAClD;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAwED,wBAAsB,sBAAsB,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoCpG;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAIhE"}
|