git-impact 0.3.0 → 0.6.2

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.
Files changed (59) hide show
  1. package/README.md +124 -78
  2. package/dist/cli/index.js +32 -211
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/init/installer.d.ts +6 -0
  5. package/dist/init/installer.d.ts.map +1 -1
  6. package/dist/init/installer.js +58 -5
  7. package/dist/init/installer.js.map +1 -1
  8. package/dist/init/installer.test.d.ts +2 -0
  9. package/dist/init/installer.test.d.ts.map +1 -0
  10. package/dist/init/installer.test.js +127 -0
  11. package/dist/init/installer.test.js.map +1 -0
  12. package/dist/init/templates.d.ts +8 -7
  13. package/dist/init/templates.d.ts.map +1 -1
  14. package/dist/init/templates.js +73 -371
  15. package/dist/init/templates.js.map +1 -1
  16. package/dist/mcp/resources.js +0 -1
  17. package/dist/mcp/resources.js.map +1 -1
  18. package/dist/mcp/tools.d.ts.map +1 -1
  19. package/dist/mcp/tools.js +64 -12
  20. package/dist/mcp/tools.js.map +1 -1
  21. package/dist/readers/git.d.ts +2 -1
  22. package/dist/readers/git.d.ts.map +1 -1
  23. package/dist/readers/git.js +12 -6
  24. package/dist/readers/git.js.map +1 -1
  25. package/dist/readers/redact.d.ts +29 -0
  26. package/dist/readers/redact.d.ts.map +1 -0
  27. package/dist/readers/redact.js +82 -0
  28. package/dist/readers/redact.js.map +1 -0
  29. package/dist/readers/redact.test.d.ts +2 -0
  30. package/dist/readers/redact.test.d.ts.map +1 -0
  31. package/dist/readers/redact.test.js +72 -0
  32. package/dist/readers/redact.test.js.map +1 -0
  33. package/dist/report/html.d.ts +2 -0
  34. package/dist/report/html.d.ts.map +1 -1
  35. package/dist/report/html.js +35 -1
  36. package/dist/report/html.js.map +1 -1
  37. package/dist/report/render.d.ts.map +1 -1
  38. package/dist/report/render.js +2 -0
  39. package/dist/report/render.js.map +1 -1
  40. package/dist/storage/db.d.ts +23 -2
  41. package/dist/storage/db.d.ts.map +1 -1
  42. package/dist/storage/db.js +12 -0
  43. package/dist/storage/db.js.map +1 -1
  44. package/dist/storage/db.test.d.ts +2 -0
  45. package/dist/storage/db.test.d.ts.map +1 -0
  46. package/dist/storage/db.test.js +152 -0
  47. package/dist/storage/db.test.js.map +1 -0
  48. package/package.json +7 -6
  49. package/skill/SKILL.md +131 -206
  50. package/skill/references/html-template.md +131 -0
  51. package/skill/references/translation-rules.md +87 -0
  52. package/dist/translator/prompt.d.ts +0 -21
  53. package/dist/translator/prompt.d.ts.map +0 -1
  54. package/dist/translator/prompt.js +0 -117
  55. package/dist/translator/prompt.js.map +0 -1
  56. package/dist/translator/translate.d.ts +0 -36
  57. package/dist/translator/translate.d.ts.map +0 -1
  58. package/dist/translator/translate.js +0 -73
  59. package/dist/translator/translate.js.map +0 -1
@@ -3,13 +3,29 @@ export interface UserContext {
3
3
  managerPriorities: string;
4
4
  glossary: Record<string, string>;
5
5
  githubToken?: string;
6
- anthropicApiKey?: string;
6
+ /**
7
+ * Optional privacy filter config. Default: enabled. Filenames matching env /
8
+ * credentials patterns are redacted; obvious-looking secrets in commit
9
+ * bodies are too. Override via `{ "privacy": { "redact": false } }` to disable
10
+ * or `{ "privacy": { "filePatterns": [...], "valuePatterns": [...] } }` to extend.
11
+ */
12
+ privacy?: {
13
+ redact?: boolean;
14
+ filePatterns?: string[];
15
+ valuePatterns?: string[];
16
+ };
7
17
  }
18
+ export type ImpactStatus = "done" | "in_progress" | "blocked";
19
+ export type ImpactProvenance = "pr" | "commit_body" | "commit_message" | "ticket" | "inferred";
8
20
  export interface ImpactItem {
9
- status: "done" | "in_progress";
21
+ status: ImpactStatus;
10
22
  summary: string;
11
23
  impact: string;
12
24
  technical_note?: string;
25
+ /** Where the "why it matters" came from. "inferred" means the model guessed — surface this in UI. */
26
+ provenance?: ImpactProvenance;
27
+ /** Optional supporting refs (PR numbers, commit hashes, ticket IDs) for the bullet. */
28
+ refs?: string[];
13
29
  }
14
30
  export interface ImpactEntry {
15
31
  id?: number;
@@ -27,5 +43,10 @@ export declare function loadContext(repoRoot: string): UserContext | null;
27
43
  export declare function saveContext(ctx: UserContext, repoRoot: string): void;
28
44
  export declare function saveEntry(entry: ImpactEntry, repoRoot: string): number;
29
45
  export declare function getEntriesForRange(fromDate: string, toDate: string, repoRoot: string): ImpactEntry[];
46
+ /**
47
+ * Returns the most recent saved entry's date (YYYY-MM-DD), or null if none exists.
48
+ * Used to power "since last standup" — the default mode after Phase 1.
49
+ */
50
+ export declare function getLastEntryDate(repoRoot: string): string | null;
30
51
  export declare function getEntriesForDaysAgo(days: number, repoRoot: string): ImpactEntry[];
31
52
  //# sourceMappingURL=db.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAuCD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAQhE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CASpE;AAID,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmBtE;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,WAAW,EAAE,CAMf;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAMlF"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;AAC9D,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,aAAa,GAAG,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE/F,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qGAAqG;IACrG,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,uFAAuF;IACvF,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAuCD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAQhE;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CASpE;AAID,wBAAgB,SAAS,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmBtE;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,WAAW,EAAE,CAMf;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMhE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CAMlF"}
@@ -40,6 +40,7 @@ exports.loadContext = loadContext;
40
40
  exports.saveContext = saveContext;
41
41
  exports.saveEntry = saveEntry;
42
42
  exports.getEntriesForRange = getEntriesForRange;
43
+ exports.getLastEntryDate = getLastEntryDate;
43
44
  exports.getEntriesForDaysAgo = getEntriesForDaysAgo;
44
45
  const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
45
46
  const path = __importStar(require("path"));
@@ -131,6 +132,17 @@ function getEntriesForRange(fromDate, toDate, repoRoot) {
131
132
  .all(fromDate, toDate);
132
133
  return rows.map(rowToEntry);
133
134
  }
135
+ /**
136
+ * Returns the most recent saved entry's date (YYYY-MM-DD), or null if none exists.
137
+ * Used to power "since last standup" — the default mode after Phase 1.
138
+ */
139
+ function getLastEntryDate(repoRoot) {
140
+ const db = getDb(repoRoot);
141
+ const row = db
142
+ .prepare(`SELECT date FROM impact_entries ORDER BY date DESC, id DESC LIMIT 1`)
143
+ .get();
144
+ return row?.date ?? null;
145
+ }
134
146
  function getEntriesForDaysAgo(days, repoRoot) {
135
147
  const cutoff = new Date();
136
148
  cutoff.setDate(cutoff.getDate() - days);
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/storage/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=db.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.test.d.ts","sourceRoot":"","sources":["../../src/storage/db.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const vitest_1 = require("vitest");
37
+ const fs = __importStar(require("fs"));
38
+ const os = __importStar(require("os"));
39
+ const path = __importStar(require("path"));
40
+ const db_1 = require("./db");
41
+ let tmp;
42
+ (0, vitest_1.beforeEach)(() => {
43
+ tmp = fs.mkdtempSync(path.join(os.tmpdir(), "git-impact-test-"));
44
+ });
45
+ (0, vitest_1.afterEach)(() => {
46
+ fs.rmSync(tmp, { recursive: true, force: true });
47
+ });
48
+ (0, vitest_1.describe)("context.json round-trip", () => {
49
+ (0, vitest_1.it)("saves and loads context", () => {
50
+ (0, db_1.saveContext)({
51
+ companyDescription: "Test Co",
52
+ managerPriorities: "Ship fast",
53
+ glossary: { RLS: "data security" },
54
+ }, tmp);
55
+ const loaded = (0, db_1.loadContext)(tmp);
56
+ (0, vitest_1.expect)(loaded?.companyDescription).toBe("Test Co");
57
+ (0, vitest_1.expect)(loaded?.glossary.RLS).toBe("data security");
58
+ });
59
+ (0, vitest_1.it)("returns null when no context file exists", () => {
60
+ (0, vitest_1.expect)((0, db_1.loadContext)(tmp)).toBeNull();
61
+ });
62
+ (0, vitest_1.it)("preserves privacy config", () => {
63
+ (0, db_1.saveContext)({
64
+ companyDescription: "X",
65
+ managerPriorities: "Y",
66
+ glossary: {},
67
+ privacy: { redact: false, filePatterns: ["*.internal"] },
68
+ }, tmp);
69
+ const loaded = (0, db_1.loadContext)(tmp);
70
+ (0, vitest_1.expect)(loaded?.privacy?.redact).toBe(false);
71
+ (0, vitest_1.expect)(loaded?.privacy?.filePatterns).toEqual(["*.internal"]);
72
+ });
73
+ });
74
+ (0, vitest_1.describe)("impact entries", () => {
75
+ const item = (over = {}) => ({
76
+ status: "done",
77
+ summary: "Shipped X",
78
+ impact: "Unblocked Y",
79
+ provenance: "pr",
80
+ ...over,
81
+ });
82
+ (0, vitest_1.it)("getLastEntryDate returns null when empty", () => {
83
+ (0, vitest_1.expect)((0, db_1.getLastEntryDate)(tmp)).toBeNull();
84
+ });
85
+ (0, vitest_1.it)("saves an entry and getLastEntryDate finds it", () => {
86
+ (0, db_1.saveEntry)({
87
+ date: "2026-05-09",
88
+ repoPath: tmp,
89
+ repoName: "test",
90
+ totalCommits: 1,
91
+ totalFiles: 1,
92
+ filesSummary: "src",
93
+ items: [item()],
94
+ rawJson: "[]",
95
+ createdAt: new Date().toISOString(),
96
+ }, tmp);
97
+ (0, vitest_1.expect)((0, db_1.getLastEntryDate)(tmp)).toBe("2026-05-09");
98
+ });
99
+ (0, vitest_1.it)("getLastEntryDate returns the most recent across many entries", () => {
100
+ const dates = ["2026-05-01", "2026-05-09", "2026-05-05"];
101
+ for (const date of dates) {
102
+ (0, db_1.saveEntry)({
103
+ date,
104
+ repoPath: tmp,
105
+ repoName: "r",
106
+ totalCommits: 1,
107
+ totalFiles: 1,
108
+ filesSummary: "",
109
+ items: [item()],
110
+ rawJson: "[]",
111
+ createdAt: new Date().toISOString(),
112
+ }, tmp);
113
+ }
114
+ (0, vitest_1.expect)((0, db_1.getLastEntryDate)(tmp)).toBe("2026-05-09");
115
+ });
116
+ (0, vitest_1.it)("preserves provenance and refs through save → get", () => {
117
+ (0, db_1.saveEntry)({
118
+ date: "2026-05-09",
119
+ repoPath: tmp,
120
+ repoName: "r",
121
+ totalCommits: 1,
122
+ totalFiles: 1,
123
+ filesSummary: "",
124
+ items: [
125
+ item({ provenance: "inferred", refs: ["PR #42", "ENG-1234"] }),
126
+ ],
127
+ rawJson: "[]",
128
+ createdAt: new Date().toISOString(),
129
+ }, tmp);
130
+ const entries = (0, db_1.getEntriesForRange)("2026-05-09", "2026-05-09", tmp);
131
+ (0, vitest_1.expect)(entries[0].items[0].provenance).toBe("inferred");
132
+ (0, vitest_1.expect)(entries[0].items[0].refs).toEqual(["PR #42", "ENG-1234"]);
133
+ });
134
+ (0, vitest_1.it)("getEntriesForDaysAgo returns recent entries", () => {
135
+ const today = new Date().toISOString().slice(0, 10);
136
+ (0, db_1.saveEntry)({
137
+ date: today,
138
+ repoPath: tmp,
139
+ repoName: "r",
140
+ totalCommits: 1,
141
+ totalFiles: 1,
142
+ filesSummary: "",
143
+ items: [item()],
144
+ rawJson: "[]",
145
+ createdAt: new Date().toISOString(),
146
+ }, tmp);
147
+ const entries = (0, db_1.getEntriesForDaysAgo)(7, tmp);
148
+ (0, vitest_1.expect)(entries).toHaveLength(1);
149
+ (0, vitest_1.expect)(entries[0].date).toBe(today);
150
+ });
151
+ });
152
+ //# sourceMappingURL=db.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.test.js","sourceRoot":"","sources":["../../src/storage/db.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "git-impact",
3
- "version": "0.3.0",
4
- "description": "Translate your git commits into plain-English business impact",
3
+ "version": "0.6.2",
4
+ "description": "Translate your git commits into plain-English business impact — runs inside your AI editor, no API key.",
5
5
  "author": "Efraim Nafady",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -25,7 +25,9 @@
25
25
  "prepublishOnly": "npm run build",
26
26
  "dev": "ts-node src/cli/index.ts",
27
27
  "start": "node dist/cli/index.js",
28
- "mcp": "node dist/mcp/server.js"
28
+ "mcp": "node dist/mcp/server.js",
29
+ "test": "vitest run",
30
+ "test:watch": "vitest"
29
31
  },
30
32
  "keywords": [
31
33
  "git",
@@ -38,18 +40,17 @@
38
40
  ],
39
41
  "type": "commonjs",
40
42
  "dependencies": {
41
- "@anthropic-ai/sdk": "^0.95.0",
42
43
  "@modelcontextprotocol/sdk": "^1.29.0",
43
44
  "@octokit/rest": "^22.0.1",
44
45
  "better-sqlite3": "^12.9.0",
45
46
  "commander": "^14.0.3",
46
- "conf": "^15.1.0",
47
47
  "simple-git": "^3.36.0"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/better-sqlite3": "^7.6.13",
51
51
  "@types/node": "^25.6.0",
52
52
  "ts-node": "^10.9.2",
53
- "typescript": "^6.0.3"
53
+ "typescript": "^6.0.3",
54
+ "vitest": "^2.1.9"
54
55
  }
55
56
  }