@mneme-ai/core 2.14.1 → 2.15.1
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 +18 -1
- package/dist/agent_manifest.js.map +1 -1
- package/dist/arbitrage/arbitrage.test.d.ts +2 -0
- package/dist/arbitrage/arbitrage.test.d.ts.map +1 -0
- package/dist/arbitrage/arbitrage.test.js +131 -0
- package/dist/arbitrage/arbitrage.test.js.map +1 -0
- package/dist/arbitrage/index.d.ts +140 -0
- package/dist/arbitrage/index.d.ts.map +1 -0
- package/dist/arbitrage/index.js +242 -0
- package/dist/arbitrage/index.js.map +1 -0
- package/dist/bug_prophet/bug_prophet.test.d.ts +2 -0
- package/dist/bug_prophet/bug_prophet.test.d.ts.map +1 -0
- package/dist/bug_prophet/bug_prophet.test.js +110 -0
- package/dist/bug_prophet/bug_prophet.test.js.map +1 -0
- package/dist/bug_prophet/index.d.ts +85 -0
- package/dist/bug_prophet/index.d.ts.map +1 -0
- package/dist/bug_prophet/index.js +219 -0
- package/dist/bug_prophet/index.js.map +1 -0
- package/dist/cosmic/aurelian_bug_prophet.test.d.ts +5 -0
- package/dist/cosmic/aurelian_bug_prophet.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_bug_prophet.test.js +31 -0
- package/dist/cosmic/aurelian_bug_prophet.test.js.map +1 -0
- package/dist/cosmic/aurelian_v215.test.d.ts +9 -0
- package/dist/cosmic/aurelian_v215.test.d.ts.map +1 -0
- package/dist/cosmic/aurelian_v215.test.js +75 -0
- package/dist/cosmic/aurelian_v215.test.js.map +1 -0
- package/dist/genesis/genesis.test.d.ts +2 -0
- package/dist/genesis/genesis.test.d.ts.map +1 -0
- package/dist/genesis/genesis.test.js +159 -0
- package/dist/genesis/genesis.test.js.map +1 -0
- package/dist/genesis/index.d.ts +94 -0
- package/dist/genesis/index.d.ts.map +1 -0
- package/dist/genesis/index.js +452 -0
- package/dist/genesis/index.js.map +1 -0
- package/dist/hive/hive.test.d.ts +2 -0
- package/dist/hive/hive.test.d.ts.map +1 -0
- package/dist/hive/hive.test.js +162 -0
- package/dist/hive/hive.test.js.map +1 -0
- package/dist/hive/index.d.ts +151 -0
- package/dist/hive/index.d.ts.map +1 -0
- package/dist/hive/index.js +246 -0
- package/dist/hive/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/vibe/index.d.ts +89 -0
- package/dist/vibe/index.d.ts.map +1 -0
- package/dist/vibe/index.js +243 -0
- package/dist/vibe/index.js.map +1 -0
- package/dist/vibe/vibe.test.d.ts +2 -0
- package/dist/vibe/vibe.test.d.ts.map +1 -0
- package/dist/vibe/vibe.test.js +97 -0
- package/dist/vibe/vibe.test.js.map +1 -0
- package/dist/whats_new.d.ts.map +1 -1
- package/dist/whats_new.js +16 -0
- package/dist/whats_new.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { mkdtempSync, rmSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { hashPattern, recordObservation, verifyObservation, lookupLocal, lookupPublic, publishObservation, listLocal, formatHiveLine, } from "./index.js";
|
|
6
|
+
describe("v2.15 · MNEME HIVE — pattern-share marketplace", () => {
|
|
7
|
+
let dir;
|
|
8
|
+
beforeEach(() => { dir = mkdtempSync(join(tmpdir(), "hive-")); });
|
|
9
|
+
afterEach(() => { try {
|
|
10
|
+
rmSync(dir, { recursive: true, force: true });
|
|
11
|
+
}
|
|
12
|
+
catch { } });
|
|
13
|
+
describe("hashPattern", () => {
|
|
14
|
+
it("identical normalized inputs hash identically", () => {
|
|
15
|
+
const a = hashPattern({ problemText: "TypeError: foo is not a function", kind: "type_error" });
|
|
16
|
+
const b = hashPattern({ problemText: "TypeError: foo is not a function", kind: "type_error" });
|
|
17
|
+
expect(a.hash).toBe(b.hash);
|
|
18
|
+
});
|
|
19
|
+
it("different identifiers but same shape hash identically (privacy + clustering)", () => {
|
|
20
|
+
const a = hashPattern({ problemText: "TypeError: myFunc is not a function", kind: "type_error" });
|
|
21
|
+
const b = hashPattern({ problemText: "TypeError: yourFunc is not a function", kind: "type_error" });
|
|
22
|
+
expect(a.hash).toBe(b.hash);
|
|
23
|
+
});
|
|
24
|
+
it("string literals are masked (privacy)", () => {
|
|
25
|
+
const a = hashPattern({ problemText: 'failed to load "myproject.config"', kind: "build_failure" });
|
|
26
|
+
const b = hashPattern({ problemText: 'failed to load "yourproject.config"', kind: "build_failure" });
|
|
27
|
+
expect(a.hash).toBe(b.hash);
|
|
28
|
+
});
|
|
29
|
+
it("numbers are masked", () => {
|
|
30
|
+
const a = hashPattern({ problemText: "request took 4523ms", kind: "perf" });
|
|
31
|
+
const b = hashPattern({ problemText: "request took 9999ms", kind: "perf" });
|
|
32
|
+
expect(a.hash).toBe(b.hash);
|
|
33
|
+
});
|
|
34
|
+
it("different kinds produce different contextHash even if hash matches", () => {
|
|
35
|
+
const a = hashPattern({ problemText: "x", kind: "bug" });
|
|
36
|
+
const b = hashPattern({ problemText: "x", kind: "perf" });
|
|
37
|
+
expect(a.contextHash).not.toBe(b.contextHash);
|
|
38
|
+
});
|
|
39
|
+
it("hash is 64 hex chars", () => {
|
|
40
|
+
const a = hashPattern({ problemText: "x", kind: "bug" });
|
|
41
|
+
expect(a.hash).toMatch(/^[0-9a-f]{64}$/);
|
|
42
|
+
expect(a.contextHash).toMatch(/^[0-9a-f]{64}$/);
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
describe("recordObservation", () => {
|
|
46
|
+
it("appends an HMAC-signed observation", () => {
|
|
47
|
+
const h = hashPattern({ problemText: "x is null", kind: "bug" });
|
|
48
|
+
const obs = recordObservation({
|
|
49
|
+
hash: h,
|
|
50
|
+
solution: { kind: "edit", filesAffected: 1, linesChanged: 3, label: "added null check" },
|
|
51
|
+
outcome: "good",
|
|
52
|
+
repoDir: dir,
|
|
53
|
+
});
|
|
54
|
+
expect(obs.id).toMatch(/^h-/);
|
|
55
|
+
expect(obs.sig).toMatch(/^[0-9a-f]{64}$/);
|
|
56
|
+
});
|
|
57
|
+
it("verifyObservation true for clean entries", () => {
|
|
58
|
+
const h = hashPattern({ problemText: "x", kind: "bug" });
|
|
59
|
+
const o = recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1 }, outcome: "good", repoDir: dir });
|
|
60
|
+
expect(verifyObservation(o)).toBe(true);
|
|
61
|
+
});
|
|
62
|
+
it("verifyObservation false on tamper", () => {
|
|
63
|
+
const h = hashPattern({ problemText: "x", kind: "bug" });
|
|
64
|
+
const o = recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1 }, outcome: "good", repoDir: dir });
|
|
65
|
+
const tampered = { ...o, outcome: "bad" };
|
|
66
|
+
expect(verifyObservation(tampered)).toBe(false);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe("lookupLocal", () => {
|
|
70
|
+
it("returns zero for unseen pattern", () => {
|
|
71
|
+
const h = hashPattern({ problemText: "never seen", kind: "bug" });
|
|
72
|
+
const m = lookupLocal(h, { repoDir: dir });
|
|
73
|
+
expect(m.totalObservations).toBe(0);
|
|
74
|
+
expect(m.bestSolution).toBeNull();
|
|
75
|
+
});
|
|
76
|
+
it("aggregates outcomes across observations", () => {
|
|
77
|
+
const h = hashPattern({ problemText: "x", kind: "bug" });
|
|
78
|
+
for (let i = 0; i < 3; i++)
|
|
79
|
+
recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1, label: "approach A" }, outcome: "good", repoDir: dir });
|
|
80
|
+
recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 5, linesChanged: 50, label: "approach B" }, outcome: "bad", repoDir: dir });
|
|
81
|
+
const m = lookupLocal(h, { repoDir: dir });
|
|
82
|
+
expect(m.totalObservations).toBe(4);
|
|
83
|
+
expect(m.byOutcome.good).toBe(3);
|
|
84
|
+
expect(m.byOutcome.bad).toBe(1);
|
|
85
|
+
expect(m.bestSolution?.label).toBe("approach A");
|
|
86
|
+
expect(m.bestSolution?.confidence).toBe(1);
|
|
87
|
+
});
|
|
88
|
+
it("ranks by good_rate * sample_size (the established small-sample-tiebreaker)", () => {
|
|
89
|
+
const h = hashPattern({ problemText: "y", kind: "bug" });
|
|
90
|
+
// approach A: 2/2 good
|
|
91
|
+
recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1, label: "A" }, outcome: "good", repoDir: dir });
|
|
92
|
+
recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1, label: "A" }, outcome: "good", repoDir: dir });
|
|
93
|
+
// approach B: 5/5 good
|
|
94
|
+
for (let i = 0; i < 5; i++)
|
|
95
|
+
recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1, label: "B" }, outcome: "good", repoDir: dir });
|
|
96
|
+
const m = lookupLocal(h, { repoDir: dir });
|
|
97
|
+
// Both 100% confidence, but B has more samples → wins
|
|
98
|
+
expect(m.bestSolution?.label).toBe("B");
|
|
99
|
+
});
|
|
100
|
+
it("HMAC sig on the summary is deterministic and 64-hex", () => {
|
|
101
|
+
const h = hashPattern({ problemText: "z", kind: "bug" });
|
|
102
|
+
recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1 }, outcome: "good", repoDir: dir });
|
|
103
|
+
const m = lookupLocal(h, { repoDir: dir });
|
|
104
|
+
expect(m.sig).toMatch(/^[0-9a-f]{64}$/);
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe("public hive (network calls)", () => {
|
|
108
|
+
it("lookupPublic falls back to local when endpoint fails", async () => {
|
|
109
|
+
const failingFetch = async () => { throw new Error("ENOTFOUND"); };
|
|
110
|
+
const h = hashPattern({ problemText: "n", kind: "bug" });
|
|
111
|
+
recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1, label: "X" }, outcome: "good", repoDir: dir });
|
|
112
|
+
const m = await lookupPublic(h, { fetchOverride: failingFetch, repoDir: dir });
|
|
113
|
+
expect(m.totalObservations).toBe(1); // local fallback engaged
|
|
114
|
+
expect(m.bestSolution?.label).toBe("X");
|
|
115
|
+
});
|
|
116
|
+
it("lookupPublic uses public response when reachable", async () => {
|
|
117
|
+
const h = hashPattern({ problemText: "p", kind: "bug" });
|
|
118
|
+
const fakeFetch = (async () => new Response(JSON.stringify({
|
|
119
|
+
hash: h.hash,
|
|
120
|
+
totalObservations: 247,
|
|
121
|
+
byOutcome: { good: 200, bad: 30, regression: 17, unknown: 0 },
|
|
122
|
+
bySolutionKind: { edit: 247 },
|
|
123
|
+
bestSolution: { kind: "edit", label: "global best", confidence: 0.9, samplesGood: 200, samplesTotal: 247 },
|
|
124
|
+
signedAt: "2026-05-15T00:00:00Z",
|
|
125
|
+
sig: "0".repeat(64),
|
|
126
|
+
}), { status: 200 }));
|
|
127
|
+
const m = await lookupPublic(h, { fetchOverride: fakeFetch, repoDir: dir });
|
|
128
|
+
expect(m.totalObservations).toBe(247);
|
|
129
|
+
expect(m.bestSolution?.label).toBe("global best");
|
|
130
|
+
});
|
|
131
|
+
it("publishObservation handles network failure gracefully", async () => {
|
|
132
|
+
const failingFetch = async () => { throw new Error("ENOTFOUND"); };
|
|
133
|
+
const h = hashPattern({ problemText: "x", kind: "bug" });
|
|
134
|
+
const o = recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1 }, outcome: "good", repoDir: dir });
|
|
135
|
+
const r = await publishObservation(o, { fetchOverride: failingFetch });
|
|
136
|
+
expect(r.ok).toBe(false);
|
|
137
|
+
expect(r.error).toContain("ENOTFOUND");
|
|
138
|
+
});
|
|
139
|
+
it("publishObservation succeeds on 200", async () => {
|
|
140
|
+
const okFetch = (async () => new Response(JSON.stringify({ ok: true }), { status: 200 }));
|
|
141
|
+
const h = hashPattern({ problemText: "x", kind: "bug" });
|
|
142
|
+
const o = recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1 }, outcome: "good", repoDir: dir });
|
|
143
|
+
const r = await publishObservation(o, { fetchOverride: okFetch });
|
|
144
|
+
expect(r.ok).toBe(true);
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
it("listLocal returns all observations", () => {
|
|
148
|
+
const h = hashPattern({ problemText: "x", kind: "bug" });
|
|
149
|
+
for (let i = 0; i < 3; i++)
|
|
150
|
+
recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1 }, outcome: "good", repoDir: dir });
|
|
151
|
+
expect(listLocal({ repoDir: dir })).toHaveLength(3);
|
|
152
|
+
});
|
|
153
|
+
it("formatHiveLine summarises", () => {
|
|
154
|
+
const h = hashPattern({ problemText: "x", kind: "bug" });
|
|
155
|
+
recordObservation({ hash: h, solution: { kind: "edit", filesAffected: 1, linesChanged: 1 }, outcome: "good", repoDir: dir });
|
|
156
|
+
const line = formatHiveLine({ repoDir: dir });
|
|
157
|
+
expect(line).toContain("HIVE");
|
|
158
|
+
expect(line).toContain("1 observations");
|
|
159
|
+
expect(line).toContain("1 good");
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
//# sourceMappingURL=hive.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hive.test.js","sourceRoot":"","sources":["../../src/hive/hive.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.15.0 — MNEME HIVE
|
|
3
|
+
*
|
|
4
|
+
* "Pattern share without source share. Hash a problem, hash its
|
|
5
|
+
* solution, hash its outcome. Other Mneme users hash the same
|
|
6
|
+
* problem and look up the canonical fix. Your repo never leaves
|
|
7
|
+
* your machine; only one-way hashes do."
|
|
8
|
+
*
|
|
9
|
+
* The killer distribution wedge: every Mneme user benefits from every
|
|
10
|
+
* OTHER Mneme user's solved problems. Network effect from day 1.
|
|
11
|
+
*
|
|
12
|
+
* Privacy model:
|
|
13
|
+
* - Patterns are hashed (sha256 of canonicalized AST-ish shape).
|
|
14
|
+
* - Solutions are summarised (delta size, file paths anonymised, kind
|
|
15
|
+
* of change) — never the source code itself.
|
|
16
|
+
* - Outcomes are graded (good / bad / regression) by the user's own
|
|
17
|
+
* test suite + bounty receipts.
|
|
18
|
+
*
|
|
19
|
+
* Wire model:
|
|
20
|
+
* - Local hive (`packages/core/src/hive/local.ts`) stores per-machine
|
|
21
|
+
* pattern observations. Always works offline.
|
|
22
|
+
* - Public hive endpoint (`HIVE_DEFAULT_URL`) at cosmic.mneme-ai.space
|
|
23
|
+
* /hive — opt-in publish + pull. v2.15 ships the CLIENT primitive;
|
|
24
|
+
* the server endpoint is a Phase 2 stub (will be added when N>1
|
|
25
|
+
* users have opted in).
|
|
26
|
+
*
|
|
27
|
+
* Tamper-evidence: every hash + observation is HMAC-signed. Receivers
|
|
28
|
+
* verify before counting toward the leaderboard.
|
|
29
|
+
*/
|
|
30
|
+
declare const PROTOCOL_VERSION: 1;
|
|
31
|
+
export declare const HIVE_DEFAULT_URL = "https://cosmic.mneme-ai.space/hive";
|
|
32
|
+
export type ProblemKind = "bug" | "refactor" | "perf" | "security" | "test_failure" | "build_failure" | "dependency_update" | "type_error" | "lint_error" | "deploy_failure" | "other";
|
|
33
|
+
export type Outcome = "good" | "bad" | "regression" | "unknown";
|
|
34
|
+
export interface PatternHash {
|
|
35
|
+
v: typeof PROTOCOL_VERSION;
|
|
36
|
+
/** sha256 of canonical(problem). 64 hex chars. */
|
|
37
|
+
hash: string;
|
|
38
|
+
/** sha256 of canonical({stack, framework, kind}). 64 hex chars. Used
|
|
39
|
+
* to cluster similar patterns across stacks. */
|
|
40
|
+
contextHash: string;
|
|
41
|
+
/** Kind tag for indexing. */
|
|
42
|
+
kind: ProblemKind;
|
|
43
|
+
/** Stack tag (typescript / python / ...). Optional but improves
|
|
44
|
+
* matchmaking. */
|
|
45
|
+
stack?: string;
|
|
46
|
+
/** Framework tag. Optional. */
|
|
47
|
+
framework?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface PatternObservation {
|
|
50
|
+
v: typeof PROTOCOL_VERSION;
|
|
51
|
+
id: string;
|
|
52
|
+
ts: string;
|
|
53
|
+
hash: PatternHash;
|
|
54
|
+
/** Summary of the solution applied (kind + size, NOT source). */
|
|
55
|
+
solution: {
|
|
56
|
+
kind: "edit" | "delete" | "add" | "rename" | "config" | "rollback" | "other";
|
|
57
|
+
/** Number of files touched. */
|
|
58
|
+
filesAffected: number;
|
|
59
|
+
/** Lines changed (added + removed). */
|
|
60
|
+
linesChanged: number;
|
|
61
|
+
/** Optional 1-line plain-English label (e.g., "added missing await"). */
|
|
62
|
+
label?: string;
|
|
63
|
+
};
|
|
64
|
+
/** Outcome graded by tests / bounty / human. */
|
|
65
|
+
outcome: Outcome;
|
|
66
|
+
/** HMAC over the body — verifiable on remote ingest. */
|
|
67
|
+
sig: string;
|
|
68
|
+
}
|
|
69
|
+
export interface PatternMatchSummary {
|
|
70
|
+
hash: string;
|
|
71
|
+
totalObservations: number;
|
|
72
|
+
byOutcome: Record<Outcome, number>;
|
|
73
|
+
bySolutionKind: Record<string, number>;
|
|
74
|
+
/** Best-known solution: highest-rated by good-rate * sample-size. */
|
|
75
|
+
bestSolution: {
|
|
76
|
+
kind: string;
|
|
77
|
+
label?: string;
|
|
78
|
+
confidence: number;
|
|
79
|
+
samplesGood: number;
|
|
80
|
+
samplesTotal: number;
|
|
81
|
+
} | null;
|
|
82
|
+
signedAt: string;
|
|
83
|
+
sig: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Hash a problem into a stable fingerprint. Pure function over text;
|
|
87
|
+
* normalises whitespace + identifiers so semantically-equivalent
|
|
88
|
+
* problems hash to the same value across users.
|
|
89
|
+
*
|
|
90
|
+
* The hash is over a canonical AST-ish shape:
|
|
91
|
+
* - lowercase
|
|
92
|
+
* - identifiers replaced with $1, $2, ... in order of first occurrence
|
|
93
|
+
* - whitespace collapsed
|
|
94
|
+
* - numeric literals replaced with N
|
|
95
|
+
* - string literals replaced with S
|
|
96
|
+
*/
|
|
97
|
+
export declare function hashPattern(input: {
|
|
98
|
+
problemText: string;
|
|
99
|
+
kind: ProblemKind;
|
|
100
|
+
stack?: string;
|
|
101
|
+
framework?: string;
|
|
102
|
+
}): PatternHash;
|
|
103
|
+
export interface RecordObservationInput {
|
|
104
|
+
hash: PatternHash;
|
|
105
|
+
solution: PatternObservation["solution"];
|
|
106
|
+
outcome: Outcome;
|
|
107
|
+
repoDir?: string;
|
|
108
|
+
secret?: string;
|
|
109
|
+
}
|
|
110
|
+
export declare function recordObservation(input: RecordObservationInput): PatternObservation;
|
|
111
|
+
export declare function verifyObservation(o: PatternObservation, secret?: string): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Look up a pattern in the LOCAL hive. Returns the best-known solution
|
|
114
|
+
* if any observations match. Pure function over local storage.
|
|
115
|
+
*/
|
|
116
|
+
export declare function lookupLocal(hash: PatternHash, opts?: {
|
|
117
|
+
repoDir?: string;
|
|
118
|
+
secret?: string;
|
|
119
|
+
}): PatternMatchSummary;
|
|
120
|
+
/**
|
|
121
|
+
* Lookup against the public hive (cosmic.mneme-ai.space/hive). Stub for
|
|
122
|
+
* v2.15; falls back to local if endpoint unreachable. Same signature so
|
|
123
|
+
* upgrading later is transparent.
|
|
124
|
+
*/
|
|
125
|
+
export declare function lookupPublic(hash: PatternHash, opts?: {
|
|
126
|
+
url?: string;
|
|
127
|
+
fetchOverride?: typeof fetch;
|
|
128
|
+
repoDir?: string;
|
|
129
|
+
secret?: string;
|
|
130
|
+
}): Promise<PatternMatchSummary>;
|
|
131
|
+
/**
|
|
132
|
+
* Publish a local observation to the public hive. Best-effort; failure
|
|
133
|
+
* leaves the observation in local storage only. Opt-in: caller decides
|
|
134
|
+
* whether to share.
|
|
135
|
+
*/
|
|
136
|
+
export declare function publishObservation(o: PatternObservation, opts?: {
|
|
137
|
+
url?: string;
|
|
138
|
+
fetchOverride?: typeof fetch;
|
|
139
|
+
}): Promise<{
|
|
140
|
+
ok: boolean;
|
|
141
|
+
error?: string;
|
|
142
|
+
}>;
|
|
143
|
+
export declare function listLocal(opts?: {
|
|
144
|
+
repoDir?: string;
|
|
145
|
+
}): PatternObservation[];
|
|
146
|
+
/** One-line pulse summary. */
|
|
147
|
+
export declare function formatHiveLine(opts?: {
|
|
148
|
+
repoDir?: string;
|
|
149
|
+
}): string;
|
|
150
|
+
export {};
|
|
151
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hive/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v2.15.0 — MNEME HIVE
|
|
3
|
+
*
|
|
4
|
+
* "Pattern share without source share. Hash a problem, hash its
|
|
5
|
+
* solution, hash its outcome. Other Mneme users hash the same
|
|
6
|
+
* problem and look up the canonical fix. Your repo never leaves
|
|
7
|
+
* your machine; only one-way hashes do."
|
|
8
|
+
*
|
|
9
|
+
* The killer distribution wedge: every Mneme user benefits from every
|
|
10
|
+
* OTHER Mneme user's solved problems. Network effect from day 1.
|
|
11
|
+
*
|
|
12
|
+
* Privacy model:
|
|
13
|
+
* - Patterns are hashed (sha256 of canonicalized AST-ish shape).
|
|
14
|
+
* - Solutions are summarised (delta size, file paths anonymised, kind
|
|
15
|
+
* of change) — never the source code itself.
|
|
16
|
+
* - Outcomes are graded (good / bad / regression) by the user's own
|
|
17
|
+
* test suite + bounty receipts.
|
|
18
|
+
*
|
|
19
|
+
* Wire model:
|
|
20
|
+
* - Local hive (`packages/core/src/hive/local.ts`) stores per-machine
|
|
21
|
+
* pattern observations. Always works offline.
|
|
22
|
+
* - Public hive endpoint (`HIVE_DEFAULT_URL`) at cosmic.mneme-ai.space
|
|
23
|
+
* /hive — opt-in publish + pull. v2.15 ships the CLIENT primitive;
|
|
24
|
+
* the server endpoint is a Phase 2 stub (will be added when N>1
|
|
25
|
+
* users have opted in).
|
|
26
|
+
*
|
|
27
|
+
* Tamper-evidence: every hash + observation is HMAC-signed. Receivers
|
|
28
|
+
* verify before counting toward the leaderboard.
|
|
29
|
+
*/
|
|
30
|
+
import { createHmac, createHash, randomBytes } from "node:crypto";
|
|
31
|
+
import { readFileSync, existsSync, mkdirSync, appendFileSync } from "node:fs";
|
|
32
|
+
import { join, resolve, isAbsolute } from "node:path";
|
|
33
|
+
const PROTOCOL_VERSION = 1;
|
|
34
|
+
export const HIVE_DEFAULT_URL = "https://cosmic.mneme-ai.space/hive";
|
|
35
|
+
function canon(v) {
|
|
36
|
+
if (v === null || typeof v !== "object")
|
|
37
|
+
return JSON.stringify(v);
|
|
38
|
+
if (Array.isArray(v))
|
|
39
|
+
return "[" + v.map(canon).join(",") + "]";
|
|
40
|
+
const keys = Object.keys(v).sort();
|
|
41
|
+
return "{" + keys.map((k) => JSON.stringify(k) + ":" + canon(v[k])).join(",") + "}";
|
|
42
|
+
}
|
|
43
|
+
function defaultSecret() {
|
|
44
|
+
return process.env["MNEME_HIVE_SECRET"] || `mneme-hive-public-v${PROTOCOL_VERSION}`;
|
|
45
|
+
}
|
|
46
|
+
function hivePath(repoDir) {
|
|
47
|
+
const root = repoDir ? (isAbsolute(repoDir) ? repoDir : resolve(repoDir)) : process.cwd();
|
|
48
|
+
const dir = join(root, ".mneme", "hive");
|
|
49
|
+
if (!existsSync(dir))
|
|
50
|
+
mkdirSync(dir, { recursive: true });
|
|
51
|
+
return join(dir, "observations.jsonl");
|
|
52
|
+
}
|
|
53
|
+
function readAll(path) {
|
|
54
|
+
if (!existsSync(path))
|
|
55
|
+
return [];
|
|
56
|
+
const lines = readFileSync(path, "utf8").split(/\r?\n/).filter((l) => l.trim().length > 0);
|
|
57
|
+
const out = [];
|
|
58
|
+
for (const l of lines) {
|
|
59
|
+
try {
|
|
60
|
+
out.push(JSON.parse(l));
|
|
61
|
+
}
|
|
62
|
+
catch { }
|
|
63
|
+
}
|
|
64
|
+
return out;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Hash a problem into a stable fingerprint. Pure function over text;
|
|
68
|
+
* normalises whitespace + identifiers so semantically-equivalent
|
|
69
|
+
* problems hash to the same value across users.
|
|
70
|
+
*
|
|
71
|
+
* The hash is over a canonical AST-ish shape:
|
|
72
|
+
* - lowercase
|
|
73
|
+
* - identifiers replaced with $1, $2, ... in order of first occurrence
|
|
74
|
+
* - whitespace collapsed
|
|
75
|
+
* - numeric literals replaced with N
|
|
76
|
+
* - string literals replaced with S
|
|
77
|
+
*/
|
|
78
|
+
export function hashPattern(input) {
|
|
79
|
+
let normalised = input.problemText.toLowerCase();
|
|
80
|
+
// Replace string literals
|
|
81
|
+
normalised = normalised.replace(/"[^"]*"|'[^']*'/g, "S");
|
|
82
|
+
// Replace numbers — including digits glued to a unit suffix (4523ms,
|
|
83
|
+
// 200kb, 99.9%). Negative lookbehind avoids touching identifiers that
|
|
84
|
+
// start with a letter and contain digits (var123 stays intact).
|
|
85
|
+
normalised = normalised.replace(/(?<![a-zA-Z_])\d+(?:\.\d+)?/g, "N");
|
|
86
|
+
// Collapse identifiers — heuristic: any 2+ char alphanumeric token
|
|
87
|
+
// becomes $N where N is the position of first occurrence.
|
|
88
|
+
const idents = new Map();
|
|
89
|
+
let counter = 1;
|
|
90
|
+
normalised = normalised.replace(/\b[a-z_][a-z0-9_]+\b/gi, (token) => {
|
|
91
|
+
if (KEYWORDS.has(token))
|
|
92
|
+
return token;
|
|
93
|
+
let slot = idents.get(token);
|
|
94
|
+
if (!slot) {
|
|
95
|
+
slot = "$" + counter++;
|
|
96
|
+
idents.set(token, slot);
|
|
97
|
+
}
|
|
98
|
+
return slot;
|
|
99
|
+
});
|
|
100
|
+
// Collapse whitespace
|
|
101
|
+
normalised = normalised.replace(/\s+/g, " ").trim();
|
|
102
|
+
const hash = createHash("sha256").update(normalised).digest("hex");
|
|
103
|
+
const contextHash = createHash("sha256")
|
|
104
|
+
.update(canon({ stack: input.stack ?? "", framework: input.framework ?? "", kind: input.kind }))
|
|
105
|
+
.digest("hex");
|
|
106
|
+
return {
|
|
107
|
+
v: PROTOCOL_VERSION,
|
|
108
|
+
hash,
|
|
109
|
+
contextHash,
|
|
110
|
+
kind: input.kind,
|
|
111
|
+
...(input.stack ? { stack: input.stack } : {}),
|
|
112
|
+
...(input.framework ? { framework: input.framework } : {}),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
const KEYWORDS = new Set([
|
|
116
|
+
"true", "false", "null", "undefined", "void", "return", "if", "else",
|
|
117
|
+
"for", "while", "do", "break", "continue", "switch", "case", "default",
|
|
118
|
+
"try", "catch", "finally", "throw", "new", "this", "super", "class",
|
|
119
|
+
"function", "const", "let", "var", "async", "await", "yield",
|
|
120
|
+
"import", "export", "from", "as", "type", "interface", "enum",
|
|
121
|
+
"public", "private", "protected", "static", "abstract", "extends", "implements",
|
|
122
|
+
"def", "lambda", "pass", "raise", "with", "and", "or", "not", "in", "is",
|
|
123
|
+
"fn", "mut", "pub", "use", "mod", "impl", "trait", "where", "match",
|
|
124
|
+
"package", "func", "struct", "go", "select", "chan", "defer",
|
|
125
|
+
"begin", "end", "module", "require",
|
|
126
|
+
]);
|
|
127
|
+
export function recordObservation(input) {
|
|
128
|
+
const path = hivePath(input.repoDir);
|
|
129
|
+
const noSig = {
|
|
130
|
+
v: PROTOCOL_VERSION,
|
|
131
|
+
id: "h-" + randomBytes(6).toString("hex"),
|
|
132
|
+
ts: new Date().toISOString(),
|
|
133
|
+
hash: input.hash,
|
|
134
|
+
solution: input.solution,
|
|
135
|
+
outcome: input.outcome,
|
|
136
|
+
};
|
|
137
|
+
const sig = createHmac("sha256", input.secret ?? defaultSecret()).update(canon(noSig)).digest("hex");
|
|
138
|
+
const entry = { ...noSig, sig };
|
|
139
|
+
appendFileSync(path, JSON.stringify(entry) + "\n");
|
|
140
|
+
return entry;
|
|
141
|
+
}
|
|
142
|
+
export function verifyObservation(o, secret) {
|
|
143
|
+
const { sig: claimed, ...body } = o;
|
|
144
|
+
const expected = createHmac("sha256", secret ?? defaultSecret()).update(canon(body)).digest("hex");
|
|
145
|
+
return expected === claimed;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Look up a pattern in the LOCAL hive. Returns the best-known solution
|
|
149
|
+
* if any observations match. Pure function over local storage.
|
|
150
|
+
*/
|
|
151
|
+
export function lookupLocal(hash, opts = {}) {
|
|
152
|
+
const path = hivePath(opts.repoDir);
|
|
153
|
+
const all = readAll(path);
|
|
154
|
+
return summarise(hash.hash, all, opts.secret);
|
|
155
|
+
}
|
|
156
|
+
function summarise(hashHex, all, secret) {
|
|
157
|
+
const matching = all.filter((o) => o.hash.hash === hashHex);
|
|
158
|
+
const byOutcome = { good: 0, bad: 0, regression: 0, unknown: 0 };
|
|
159
|
+
const bySolutionKind = {};
|
|
160
|
+
for (const o of matching) {
|
|
161
|
+
byOutcome[o.outcome]++;
|
|
162
|
+
bySolutionKind[o.solution.kind] = (bySolutionKind[o.solution.kind] ?? 0) + 1;
|
|
163
|
+
}
|
|
164
|
+
const groups = new Map();
|
|
165
|
+
for (const o of matching) {
|
|
166
|
+
const key = o.solution.kind + "||" + (o.solution.label ?? "");
|
|
167
|
+
const g = groups.get(key) ?? { kind: o.solution.kind, ...(o.solution.label ? { label: o.solution.label } : {}), good: 0, total: 0 };
|
|
168
|
+
g.total++;
|
|
169
|
+
if (o.outcome === "good")
|
|
170
|
+
g.good++;
|
|
171
|
+
groups.set(key, g);
|
|
172
|
+
}
|
|
173
|
+
let best = null;
|
|
174
|
+
let bestScore = 0;
|
|
175
|
+
for (const g of groups.values()) {
|
|
176
|
+
if (g.total === 0)
|
|
177
|
+
continue;
|
|
178
|
+
const score = Math.pow(g.good, 1.2) / g.total;
|
|
179
|
+
if (score > bestScore) {
|
|
180
|
+
bestScore = score;
|
|
181
|
+
best = { kind: g.kind, ...(g.label ? { label: g.label } : {}), confidence: g.good / g.total, samplesGood: g.good, samplesTotal: g.total };
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
const signedAt = new Date().toISOString();
|
|
185
|
+
const body = { hash: hashHex, totalObservations: matching.length, byOutcome, bySolutionKind, bestSolution: best, signedAt };
|
|
186
|
+
const sig = createHmac("sha256", secret ?? defaultSecret()).update(canon(body)).digest("hex");
|
|
187
|
+
return { ...body, sig };
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Lookup against the public hive (cosmic.mneme-ai.space/hive). Stub for
|
|
191
|
+
* v2.15; falls back to local if endpoint unreachable. Same signature so
|
|
192
|
+
* upgrading later is transparent.
|
|
193
|
+
*/
|
|
194
|
+
export async function lookupPublic(hash, opts = {}) {
|
|
195
|
+
const url = (opts.url ?? HIVE_DEFAULT_URL).replace(/\/+$/, "") + "/lookup/" + encodeURIComponent(hash.hash);
|
|
196
|
+
const fetchFn = opts.fetchOverride ?? globalThis.fetch;
|
|
197
|
+
if (typeof fetchFn !== "function")
|
|
198
|
+
return lookupLocal(hash, opts);
|
|
199
|
+
try {
|
|
200
|
+
const r = await fetchFn(url);
|
|
201
|
+
if (!r.ok)
|
|
202
|
+
return lookupLocal(hash, opts);
|
|
203
|
+
const j = await r.json();
|
|
204
|
+
return j;
|
|
205
|
+
}
|
|
206
|
+
catch {
|
|
207
|
+
// Endpoint not yet live — fall back to local. Once cosmic adds the
|
|
208
|
+
// /hive route, this transparently picks it up.
|
|
209
|
+
return lookupLocal(hash, opts);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Publish a local observation to the public hive. Best-effort; failure
|
|
214
|
+
* leaves the observation in local storage only. Opt-in: caller decides
|
|
215
|
+
* whether to share.
|
|
216
|
+
*/
|
|
217
|
+
export async function publishObservation(o, opts = {}) {
|
|
218
|
+
const url = (opts.url ?? HIVE_DEFAULT_URL).replace(/\/+$/, "") + "/publish";
|
|
219
|
+
const fetchFn = opts.fetchOverride ?? globalThis.fetch;
|
|
220
|
+
if (typeof fetchFn !== "function")
|
|
221
|
+
return { ok: false, error: "no fetch" };
|
|
222
|
+
try {
|
|
223
|
+
const r = await fetchFn(url, {
|
|
224
|
+
method: "POST",
|
|
225
|
+
headers: { "content-type": "application/json" },
|
|
226
|
+
body: JSON.stringify(o),
|
|
227
|
+
});
|
|
228
|
+
if (!r.ok)
|
|
229
|
+
return { ok: false, error: `HTTP ${r.status}` };
|
|
230
|
+
return { ok: true };
|
|
231
|
+
}
|
|
232
|
+
catch (e) {
|
|
233
|
+
return { ok: false, error: e.message.slice(0, 200) };
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
export function listLocal(opts = {}) {
|
|
237
|
+
return readAll(hivePath(opts.repoDir));
|
|
238
|
+
}
|
|
239
|
+
/** One-line pulse summary. */
|
|
240
|
+
export function formatHiveLine(opts = {}) {
|
|
241
|
+
const all = readAll(hivePath(opts.repoDir));
|
|
242
|
+
const goods = all.filter((o) => o.outcome === "good").length;
|
|
243
|
+
const distinctHashes = new Set(all.map((o) => o.hash.hash)).size;
|
|
244
|
+
return `HIVE · ${all.length} observations · ${goods} good · ${distinctHashes} distinct patterns`;
|
|
245
|
+
}
|
|
246
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hive/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -212,4 +212,9 @@ export * as bounty from "./bounty/index.js";
|
|
|
212
212
|
export * as replica from "./replica/index.js";
|
|
213
213
|
export * as killSwitch from "./kill_switch/index.js";
|
|
214
214
|
export * as infraBrain from "./infra_brain/index.js";
|
|
215
|
+
export * as genesis from "./genesis/index.js";
|
|
216
|
+
export * as hive from "./hive/index.js";
|
|
217
|
+
export * as vibe from "./vibe/index.js";
|
|
218
|
+
export * as arbitrage from "./arbitrage/index.js";
|
|
219
|
+
export * as bugProphet from "./bug_prophet/index.js";
|
|
215
220
|
//# sourceMappingURL=index.d.ts.map
|