@mneme-ai/core 0.10.0 → 0.11.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/insights/ghost.d.ts +80 -0
- package/dist/insights/ghost.d.ts.map +1 -0
- package/dist/insights/ghost.js +138 -0
- package/dist/insights/ghost.js.map +1 -0
- package/dist/insights/ghost.test.d.ts +2 -0
- package/dist/insights/ghost.test.d.ts.map +1 -0
- package/dist/insights/ghost.test.js +141 -0
- package/dist/insights/ghost.test.js.map +1 -0
- package/dist/insights/index.d.ts +3 -0
- package/dist/insights/index.d.ts.map +1 -1
- package/dist/insights/index.js +3 -0
- package/dist/insights/index.js.map +1 -1
- package/dist/insights/premortem.d.ts +73 -0
- package/dist/insights/premortem.d.ts.map +1 -0
- package/dist/insights/premortem.js +209 -0
- package/dist/insights/premortem.js.map +1 -0
- package/dist/insights/premortem.test.d.ts +2 -0
- package/dist/insights/premortem.test.d.ts.map +1 -0
- package/dist/insights/premortem.test.js +169 -0
- package/dist/insights/premortem.test.js.map +1 -0
- package/dist/insights/time-machine.d.ts +70 -0
- package/dist/insights/time-machine.d.ts.map +1 -0
- package/dist/insights/time-machine.js +177 -0
- package/dist/insights/time-machine.js.map +1 -0
- package/dist/insights/time-machine.test.d.ts +2 -0
- package/dist/insights/time-machine.test.d.ts.map +1 -0
- package/dist/insights/time-machine.test.js +141 -0
- package/dist/insights/time-machine.test.js.map +1 -0
- package/dist/util/index.d.ts +4 -0
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +26 -0
- package/dist/util/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-machine.js","sourceRoot":"","sources":["../../src/insights/time-machine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-machine.test.d.ts","sourceRoot":"","sources":["../../src/insights/time-machine.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { describe, it, expect } from "vitest";
|
|
2
|
+
import { buildTimeMachine } from "./time-machine.js";
|
|
3
|
+
function mkCommit(p) {
|
|
4
|
+
return {
|
|
5
|
+
shortHash: p.hash.slice(0, 7),
|
|
6
|
+
authorName: "Test",
|
|
7
|
+
authorEmail: "t@e.com",
|
|
8
|
+
committerDate: p.authorDate,
|
|
9
|
+
body: p.body ?? "",
|
|
10
|
+
files: ["src/x.ts"],
|
|
11
|
+
parents: p.parents ?? [],
|
|
12
|
+
...p,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function mkChange(commitHash, ins, del) {
|
|
16
|
+
return {
|
|
17
|
+
commitHash,
|
|
18
|
+
path: "src/x.ts",
|
|
19
|
+
changeKind: "M",
|
|
20
|
+
insertions: ins,
|
|
21
|
+
deletions: del,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function chmap(...changes) {
|
|
25
|
+
const m = new Map();
|
|
26
|
+
for (const c of changes)
|
|
27
|
+
m.set(c.commitHash, c);
|
|
28
|
+
return m;
|
|
29
|
+
}
|
|
30
|
+
describe("buildTimeMachine", () => {
|
|
31
|
+
it("returns empty result when there are no commits", () => {
|
|
32
|
+
const result = buildTimeMachine("src/x.ts", [], new Map());
|
|
33
|
+
expect(result.epochs).toHaveLength(0);
|
|
34
|
+
expect(result.totalCommits).toBe(0);
|
|
35
|
+
});
|
|
36
|
+
it("first commit is always a 'birth' epoch", () => {
|
|
37
|
+
const commits = [mkCommit({ hash: "a1", authorDate: "2024-01-01", subject: "initial" })];
|
|
38
|
+
const result = buildTimeMachine("src/x.ts", commits, chmap(mkChange("a1", 50, 0)));
|
|
39
|
+
expect(result.epochs).toHaveLength(1);
|
|
40
|
+
expect(result.epochs[0].kind).toBe("birth");
|
|
41
|
+
expect(result.epochs[0].label).toContain("born");
|
|
42
|
+
});
|
|
43
|
+
it("detects rewrite epoch from large churn", () => {
|
|
44
|
+
const commits = [
|
|
45
|
+
mkCommit({ hash: "a1", authorDate: "2024-01-01", subject: "initial" }),
|
|
46
|
+
mkCommit({ hash: "a2", authorDate: "2024-01-05", subject: "rewrite to use streams" }),
|
|
47
|
+
];
|
|
48
|
+
const changes = chmap(mkChange("a1", 50, 0), mkChange("a2", 200, 180));
|
|
49
|
+
const result = buildTimeMachine("src/x.ts", commits, changes);
|
|
50
|
+
const rewriteEpoch = result.epochs.find((e) => e.kind === "rewrite");
|
|
51
|
+
expect(rewriteEpoch).toBeDefined();
|
|
52
|
+
expect(rewriteEpoch.insertions + rewriteEpoch.deletions).toBeGreaterThan(100);
|
|
53
|
+
});
|
|
54
|
+
it("detects firefight epoch from fix/hotfix keywords", () => {
|
|
55
|
+
const commits = [
|
|
56
|
+
mkCommit({ hash: "a1", authorDate: "2024-01-01", subject: "initial" }),
|
|
57
|
+
mkCommit({ hash: "a2", authorDate: "2024-01-02", subject: "evolve feature" }),
|
|
58
|
+
mkCommit({ hash: "a3", authorDate: "2024-01-03", subject: "hotfix critical bug" }),
|
|
59
|
+
mkCommit({ hash: "a4", authorDate: "2024-01-04", subject: "fix regression" }),
|
|
60
|
+
];
|
|
61
|
+
const changes = chmap(mkChange("a1", 50, 0), mkChange("a2", 20, 10), mkChange("a3", 5, 2), mkChange("a4", 8, 4));
|
|
62
|
+
const result = buildTimeMachine("src/x.ts", commits, changes);
|
|
63
|
+
const firefight = result.epochs.find((e) => e.kind === "firefight");
|
|
64
|
+
expect(firefight).toBeDefined();
|
|
65
|
+
expect(firefight.commits.length).toBeGreaterThanOrEqual(2);
|
|
66
|
+
});
|
|
67
|
+
it("detects polish epoch from small surgical changes", () => {
|
|
68
|
+
const commits = [
|
|
69
|
+
mkCommit({ hash: "a1", authorDate: "2024-01-01", subject: "initial" }),
|
|
70
|
+
mkCommit({ hash: "a2", authorDate: "2024-01-02", subject: "fix typo" }),
|
|
71
|
+
mkCommit({ hash: "a3", authorDate: "2024-01-03", subject: "format with prettier" }),
|
|
72
|
+
];
|
|
73
|
+
const changes = chmap(mkChange("a1", 50, 0), mkChange("a2", 1, 1), mkChange("a3", 3, 3));
|
|
74
|
+
const result = buildTimeMachine("src/x.ts", commits, changes);
|
|
75
|
+
const polish = result.epochs.find((e) => e.kind === "polish");
|
|
76
|
+
expect(polish).toBeDefined();
|
|
77
|
+
});
|
|
78
|
+
it("inserts a plateau epoch when there is a long quiet gap", () => {
|
|
79
|
+
const commits = [
|
|
80
|
+
mkCommit({ hash: "a1", authorDate: "2024-01-01", subject: "initial" }),
|
|
81
|
+
mkCommit({ hash: "a2", authorDate: "2024-06-01", subject: "minor tweak" }),
|
|
82
|
+
];
|
|
83
|
+
const changes = chmap(mkChange("a1", 50, 0), mkChange("a2", 5, 2));
|
|
84
|
+
const result = buildTimeMachine("src/x.ts", commits, changes, { plateauDays: 30 });
|
|
85
|
+
const plateau = result.epochs.find((e) => e.kind === "plateau" || e.kind === "twilight");
|
|
86
|
+
expect(plateau).toBeDefined();
|
|
87
|
+
expect(plateau.spanDays).toBeGreaterThanOrEqual(30);
|
|
88
|
+
});
|
|
89
|
+
it("computes health ratios summing to ≤ 1", () => {
|
|
90
|
+
const commits = Array.from({ length: 6 }, (_, i) => mkCommit({
|
|
91
|
+
hash: `c${i}`,
|
|
92
|
+
authorDate: `2024-01-${(i + 1).toString().padStart(2, "0")}`,
|
|
93
|
+
subject: i === 0 ? "init" : i % 2 === 0 ? "fix bug" : "refactor module",
|
|
94
|
+
}));
|
|
95
|
+
const changes = chmap(...commits.map((c, i) => mkChange(c.hash, i % 2 === 1 ? 200 : 5, i % 2 === 1 ? 100 : 5)));
|
|
96
|
+
const result = buildTimeMachine("src/x.ts", commits, changes);
|
|
97
|
+
const sum = result.health.rewriteRatio + result.health.firefightRatio + result.health.polishRatio;
|
|
98
|
+
expect(sum).toBeGreaterThanOrEqual(0);
|
|
99
|
+
expect(sum).toBeLessThanOrEqual(1);
|
|
100
|
+
});
|
|
101
|
+
it("picks defining commit by descriptiveness within an epoch", () => {
|
|
102
|
+
const commits = [
|
|
103
|
+
mkCommit({ hash: "a1", authorDate: "2024-01-01", subject: "init" }),
|
|
104
|
+
mkCommit({ hash: "a2", authorDate: "2024-01-02", subject: "x" }),
|
|
105
|
+
mkCommit({
|
|
106
|
+
hash: "a3",
|
|
107
|
+
authorDate: "2024-01-03",
|
|
108
|
+
subject: "evolve handler with comprehensive validation logic",
|
|
109
|
+
}),
|
|
110
|
+
];
|
|
111
|
+
const changes = chmap(mkChange("a1", 30, 0), mkChange("a2", 5, 2), mkChange("a3", 20, 8));
|
|
112
|
+
const result = buildTimeMachine("src/x.ts", commits, changes);
|
|
113
|
+
// The evolution epoch should pick the longer subject
|
|
114
|
+
const evo = result.epochs.find((e) => e.kind === "evolution");
|
|
115
|
+
if (evo) {
|
|
116
|
+
expect(evo.defining.subject.length).toBeGreaterThanOrEqual(20);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
it("produces non-empty labels for every epoch", () => {
|
|
120
|
+
const commits = [
|
|
121
|
+
mkCommit({ hash: "a1", authorDate: "2024-01-01", subject: "first" }),
|
|
122
|
+
mkCommit({ hash: "a2", authorDate: "2024-01-10", subject: "rewrite the parsing pipeline entirely" }),
|
|
123
|
+
];
|
|
124
|
+
const result = buildTimeMachine("src/x.ts", commits, chmap(mkChange("a1", 50, 0), mkChange("a2", 300, 250)));
|
|
125
|
+
for (const e of result.epochs) {
|
|
126
|
+
expect(e.label.length).toBeGreaterThan(0);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
it("orders epochs chronologically by index", () => {
|
|
130
|
+
const commits = [
|
|
131
|
+
mkCommit({ hash: "a1", authorDate: "2024-01-01", subject: "init" }),
|
|
132
|
+
mkCommit({ hash: "a2", authorDate: "2024-01-02", subject: "fix bug" }),
|
|
133
|
+
mkCommit({ hash: "a3", authorDate: "2024-01-03", subject: "refactor heavily" }),
|
|
134
|
+
];
|
|
135
|
+
const result = buildTimeMachine("src/x.ts", commits, chmap(mkChange("a1", 30, 0), mkChange("a2", 5, 2), mkChange("a3", 200, 100)));
|
|
136
|
+
for (let i = 0; i < result.epochs.length; i++) {
|
|
137
|
+
expect(result.epochs[i].index).toBe(i + 1);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
//# sourceMappingURL=time-machine.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-machine.test.js","sourceRoot":"","sources":["../../src/insights/time-machine.test.ts"],"names":[],"mappings":"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"}
|
package/dist/util/index.d.ts
CHANGED
|
@@ -7,6 +7,10 @@ import type { MnemeStore } from "../store/sqlite.js";
|
|
|
7
7
|
export * from "./redact.js";
|
|
8
8
|
/** Load every commit from the store, oldest first, with its file list. */
|
|
9
9
|
export declare function loadAllCommits(s: MnemeStore): Commit[];
|
|
10
|
+
/** Load every file change in the repo (across all commits). */
|
|
11
|
+
export declare function loadAllFileChanges(s: MnemeStore): import("../types.js").FileChange[];
|
|
12
|
+
/** Load file changes for a specific path (across all commits). */
|
|
13
|
+
export declare function loadFileChangesForPath(s: MnemeStore, path: string): import("../types.js").FileChange[];
|
|
10
14
|
/** Load commits within a date range. */
|
|
11
15
|
export declare function loadCommitsBetween(s: MnemeStore, sinceIso?: string, untilIso?: string): Commit[];
|
|
12
16
|
export declare function rowToCommit(r: Record<string, unknown>, s: MnemeStore): Commit;
|
package/dist/util/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,cAAc,aAAa,CAAC;AAE5B,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAKtD;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,UAAU,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAcV;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,CAkB7E;AAED,uFAAuF;AACvF,wBAAsB,SAAS,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnE;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAclE"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,cAAc,aAAa,CAAC;AAE5B,0EAA0E;AAC1E,wBAAgB,cAAc,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,EAAE,CAKtD;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,aAAa,EAAE,UAAU,EAAE,CAapF;AAED,kEAAkE;AAClE,wBAAgB,sBAAsB,CACpC,CAAC,EAAE,UAAU,EACb,IAAI,EAAE,MAAM,GACX,OAAO,aAAa,EAAE,UAAU,EAAE,CAapC;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAChC,CAAC,EAAE,UAAU,EACb,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,EAAE,CAcV;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,UAAU,GAAG,MAAM,CAkB7E;AAED,uFAAuF;AACvF,wBAAsB,SAAS,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAGnE;AAED,2CAA2C;AAC3C,wBAAgB,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAclE"}
|
package/dist/util/index.js
CHANGED
|
@@ -6,6 +6,32 @@ export function loadAllCommits(s) {
|
|
|
6
6
|
.all();
|
|
7
7
|
return rows.map((r) => rowToCommit(r, s));
|
|
8
8
|
}
|
|
9
|
+
/** Load every file change in the repo (across all commits). */
|
|
10
|
+
export function loadAllFileChanges(s) {
|
|
11
|
+
const rows = s.db
|
|
12
|
+
.prepare("SELECT commit_hash, path, change_kind, insertions, deletions FROM file_changes")
|
|
13
|
+
.all();
|
|
14
|
+
return rows.map((r) => ({
|
|
15
|
+
commitHash: String(r.commit_hash),
|
|
16
|
+
path: String(r.path),
|
|
17
|
+
changeKind: String(r.change_kind),
|
|
18
|
+
insertions: Number(r.insertions ?? 0),
|
|
19
|
+
deletions: Number(r.deletions ?? 0),
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
/** Load file changes for a specific path (across all commits). */
|
|
23
|
+
export function loadFileChangesForPath(s, path) {
|
|
24
|
+
const rows = s.db
|
|
25
|
+
.prepare("SELECT commit_hash, path, change_kind, insertions, deletions FROM file_changes WHERE path = ?")
|
|
26
|
+
.all(path);
|
|
27
|
+
return rows.map((r) => ({
|
|
28
|
+
commitHash: String(r.commit_hash),
|
|
29
|
+
path: String(r.path),
|
|
30
|
+
changeKind: String(r.change_kind),
|
|
31
|
+
insertions: Number(r.insertions ?? 0),
|
|
32
|
+
deletions: Number(r.deletions ?? 0),
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
9
35
|
/** Load commits within a date range. */
|
|
10
36
|
export function loadCommitsBetween(s, sinceIso, untilIso) {
|
|
11
37
|
const where = [];
|
package/dist/util/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"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"}
|