git-impact 0.2.2 → 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 -252
  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 +18 -8
  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 +132 -160
  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
package/dist/mcp/tools.js CHANGED
@@ -80,8 +80,11 @@ exports.TOOL_DEFINITIONS = [
80
80
  },
81
81
  {
82
82
  name: "save_impact_entry",
83
- description: "Persist a completed impact translation to this repo's local history (.git-impact/history.db). " +
84
- "Call after translating commits into business impact bullets.",
83
+ description: "Persist a completed impact translation to this repo's local history " +
84
+ "(.git-impact/history.db). Always call this after translating commits into " +
85
+ "business impact bullets — replaces any prior bash/sqlite3 invocations. " +
86
+ "Each item must include a `provenance` so the UI can mark inferred bullets " +
87
+ "differently from claims grounded in PRs or commit bodies.",
85
88
  inputSchema: {
86
89
  type: "object",
87
90
  required: ["date", "repo_name", "items"],
@@ -97,18 +100,48 @@ exports.TOOL_DEFINITIONS = [
97
100
  description: "The translated impact bullets.",
98
101
  items: {
99
102
  type: "object",
100
- required: ["status", "summary", "impact"],
103
+ required: ["status", "summary", "provenance"],
101
104
  properties: {
102
- status: { type: "string", enum: ["done", "in_progress"] },
103
- summary: { type: "string" },
104
- impact: { type: "string" },
105
- technical_note: { type: "string" },
105
+ status: {
106
+ type: "string",
107
+ enum: ["done", "in_progress", "blocked"],
108
+ description: "Outcome state of the work item.",
109
+ },
110
+ summary: { type: "string", description: "Plain-English what." },
111
+ impact: { type: "string", description: "Why it matters — who/what it unblocks." },
112
+ technical_note: { type: "string", description: "Small grey aside (file refs, PR #s)." },
113
+ provenance: {
114
+ type: "string",
115
+ enum: ["pr", "commit_body", "commit_message", "ticket", "inferred"],
116
+ description: "Where the impact claim came from. Use 'pr' if quoted from a PR description, " +
117
+ "'commit_body' if from a multi-line commit body, 'commit_message' if only the " +
118
+ "subject line supported it, 'ticket' if pulled from a linked Linear/Jira ticket, " +
119
+ "'inferred' if you guessed without explicit text. NEVER invent a non-inferred provenance.",
120
+ },
121
+ refs: {
122
+ type: "array",
123
+ items: { type: "string" },
124
+ description: "Supporting refs e.g. ['PR #142', 'a1b2c3d', 'ENG-1234'].",
125
+ },
106
126
  },
107
127
  },
108
128
  },
109
129
  },
110
130
  },
111
131
  },
132
+ {
133
+ name: "get_last_standup_date",
134
+ description: "Return the date (YYYY-MM-DD) of the most recently saved standup entry, or null " +
135
+ "if none exists yet. Call this at the start of every standup to default the " +
136
+ "lookback window to 'since last standup' — so days off, weekends, and holidays " +
137
+ "don't drop work on the floor.",
138
+ inputSchema: {
139
+ type: "object",
140
+ properties: {
141
+ repo_path: { type: "string", description: "Override the repo path." },
142
+ },
143
+ },
144
+ },
112
145
  {
113
146
  name: "get_history",
114
147
  description: "Retrieve saved impact entries from this repo's history. " +
@@ -141,7 +174,6 @@ exports.TOOL_DEFINITIONS = [
141
174
  additionalProperties: { type: "string" },
142
175
  },
143
176
  github_token: { type: "string" },
144
- anthropic_api_key: { type: "string" },
145
177
  },
146
178
  },
147
179
  },
@@ -151,6 +183,7 @@ async function handleTool(name, args) {
151
183
  case "get_git_activity": return handleGetGitActivity(args);
152
184
  case "get_github_activity": return handleGetGitHubActivity(args);
153
185
  case "save_impact_entry": return handleSaveImpactEntry(args);
186
+ case "get_last_standup_date": return handleGetLastStandupDate(args);
154
187
  case "get_history": return handleGetHistory(args);
155
188
  case "update_context": return handleUpdateContext(args);
156
189
  default: return error(`Unknown tool: ${name}`);
@@ -163,9 +196,18 @@ async function handleGetGitActivity(args) {
163
196
  return error(repo.error);
164
197
  const since = args.since_iso ? new Date(args.since_iso) : (0, git_1.startOfDay)();
165
198
  const until = args.until_iso ? new Date(args.until_iso) : new Date();
199
+ // Pull privacy config from context.json so filenames like .env / .aws/credentials
200
+ // and obvious-looking secrets in commit bodies are redacted before they reach
201
+ // the translator. Default-on; users can opt out via { privacy: { redact: false } }.
202
+ const ctx = (0, db_1.loadContext)(repo.path);
203
+ const redactCfg = {
204
+ enabled: ctx?.privacy?.redact !== false,
205
+ filePatterns: ctx?.privacy?.filePatterns,
206
+ valuePatterns: ctx?.privacy?.valuePatterns,
207
+ };
166
208
  try {
167
- const git = await (0, git_1.readGitActivity)(repo.path, since, until);
168
- return ok(JSON.stringify({ ...git, _repo_root: repo.path }, null, 2));
209
+ const git = await (0, git_1.readGitActivity)(repo.path, since, until, redactCfg);
210
+ return ok(JSON.stringify({ ...git, _repo_root: repo.path, _redacted: redactCfg.enabled }, null, 2));
169
211
  }
170
212
  catch (err) {
171
213
  return error(`Could not read git history: ${err.message}`);
@@ -219,6 +261,18 @@ function handleSaveImpactEntry(args) {
219
261
  return error(`Failed to save entry: ${err.message}`);
220
262
  }
221
263
  }
264
+ function handleGetLastStandupDate(args) {
265
+ const repo = resolveRepo(args.repo_path);
266
+ if ("error" in repo)
267
+ return error(repo.error);
268
+ try {
269
+ const date = (0, db_1.getLastEntryDate)(repo.path);
270
+ return ok(JSON.stringify({ last_standup_date: date }));
271
+ }
272
+ catch (err) {
273
+ return error(`Failed to read last standup date: ${err.message}`);
274
+ }
275
+ }
222
276
  function handleGetHistory(args) {
223
277
  const repo = resolveRepo(args.repo_path);
224
278
  if ("error" in repo)
@@ -247,7 +301,6 @@ function handleUpdateContext(args) {
247
301
  managerPriorities: args.manager_priorities ?? existing.managerPriorities,
248
302
  glossary: args.glossary ?? existing.glossary,
249
303
  githubToken: args.github_token ?? existing.githubToken,
250
- anthropicApiKey: args.anthropic_api_key ?? existing.anthropicApiKey,
251
304
  };
252
305
  try {
253
306
  (0, db_1.saveContext)(updated, repo.path);
@@ -257,7 +310,6 @@ function handleUpdateContext(args) {
257
310
  context: {
258
311
  ...updated,
259
312
  githubToken: updated.githubToken ? "***" : undefined,
260
- anthropicApiKey: updated.anthropicApiKey ? "***" : undefined,
261
313
  },
262
314
  }, null, 2));
263
315
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { RedactConfig } from "./redact";
1
2
  export interface CommitInfo {
2
3
  hash: string;
3
4
  date: string;
@@ -17,7 +18,7 @@ export interface GitSummary {
17
18
  to: string;
18
19
  };
19
20
  }
20
- export declare function readGitActivity(repoPath: string, since: Date, until?: Date): Promise<GitSummary>;
21
+ export declare function readGitActivity(repoPath: string, since: Date, until?: Date, redactCfg?: RedactConfig): Promise<GitSummary>;
21
22
  export declare function startOfDay(date?: Date): Date;
22
23
  export declare function startOfDaysAgo(days: number): Date;
23
24
  //# sourceMappingURL=git.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/readers/git.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAaD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,IAAI,EACX,KAAK,GAAE,IAAiB,GACvB,OAAO,CAAC,UAAU,CAAC,CAgErB;AAED,wBAAgB,UAAU,CAAC,IAAI,GAAE,IAAiB,GAAG,IAAI,CAIxD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKjD"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/readers/git.ts"],"names":[],"mappings":"AAEA,OAAO,EAA8B,YAAY,EAAE,MAAM,UAAU,CAAC;AAEpE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAaD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,IAAI,EACX,KAAK,GAAE,IAAiB,EACxB,SAAS,GAAE,YAAgC,GAC1C,OAAO,CAAC,UAAU,CAAC,CAqErB;AAED,wBAAgB,UAAU,CAAC,IAAI,GAAE,IAAiB,GAAG,IAAI,CAIxD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKjD"}
@@ -41,6 +41,7 @@ exports.startOfDay = startOfDay;
41
41
  exports.startOfDaysAgo = startOfDaysAgo;
42
42
  const simple_git_1 = __importDefault(require("simple-git"));
43
43
  const path = __importStar(require("path"));
44
+ const redact_1 = require("./redact");
44
45
  function stripCredentials(url) {
45
46
  try {
46
47
  const parsed = new URL(url);
@@ -52,7 +53,7 @@ function stripCredentials(url) {
52
53
  return url.replace(/\/\/[^@]+@/, "//");
53
54
  }
54
55
  }
55
- async function readGitActivity(repoPath, since, until = new Date()) {
56
+ async function readGitActivity(repoPath, since, until = new Date(), redactCfg = { enabled: true }) {
56
57
  const git = (0, simple_git_1.default)(repoPath);
57
58
  const sinceStr = since.toISOString();
58
59
  const untilStr = until.toISOString();
@@ -73,7 +74,11 @@ async function readGitActivity(repoPath, since, until = new Date()) {
73
74
  .join("/") || path.basename(repoPath);
74
75
  const branch = await git.revparse(["--abbrev-ref", "HEAD"]);
75
76
  const commits = await Promise.all(log.all.map(async (entry) => {
76
- const diff = await git.diff([`${entry.hash}^`, entry.hash, "--stat"]);
77
+ // Root commits don't have a parent; `<hash>^` blows up. Fall back to
78
+ // `git show --stat` which works for both root and non-root commits.
79
+ const diff = await git
80
+ .diff([`${entry.hash}^`, entry.hash, "--stat"])
81
+ .catch(() => git.show(["--stat", "--format=", entry.hash]));
77
82
  const showOutput = await git.show([
78
83
  "--stat",
79
84
  "--name-only",
@@ -83,14 +88,15 @@ async function readGitActivity(repoPath, since, until = new Date()) {
83
88
  const filesChanged = showOutput
84
89
  .split("\n")
85
90
  .map((l) => l.trim())
86
- .filter((l) => l && !l.includes("|") && !l.startsWith("=>") && !l.match(/^\d+ file/));
91
+ .filter((l) => l && !l.includes("|") && !l.startsWith("=>") && !l.match(/^\d+ file/))
92
+ .map((f) => (0, redact_1.redactFilename)(f, redactCfg));
87
93
  return {
88
94
  hash: entry.hash.slice(0, 8),
89
95
  date: entry.date,
90
- message: entry.message,
96
+ message: (0, redact_1.redactText)(entry.message, redactCfg),
91
97
  author: entry.author_name,
92
- body: entry.body || "",
93
- diff,
98
+ body: (0, redact_1.redactText)(entry.body || "", redactCfg),
99
+ diff: (0, redact_1.redactText)(diff, redactCfg),
94
100
  filesChanged,
95
101
  };
96
102
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/readers/git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/readers/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Privacy filter: scrubs sensitive paths and obvious secret-looking values
3
+ * from git activity before it reaches the translator.
4
+ *
5
+ * Default-on. Users can disable via `context.json` { "privacy": { "redact": false } }
6
+ * or extend the file/value patterns there.
7
+ *
8
+ * Why this exists: a manager update that leaks an API key, a customer name,
9
+ * or an internal-only filename is a real career incident. The defaults here
10
+ * are conservative — better to redact a benign filename than to leak.
11
+ */
12
+ export interface RedactConfig {
13
+ enabled: boolean;
14
+ /** Extra file glob-ish patterns the user wants redacted. */
15
+ filePatterns?: string[];
16
+ /** Extra string patterns to redact from commit bodies. */
17
+ valuePatterns?: string[];
18
+ }
19
+ /**
20
+ * Replace a filename with `[redacted-secret-file]` if it matches any sensitive
21
+ * pattern. Otherwise return as-is. Pure function — safe to map over arrays.
22
+ */
23
+ export declare function redactFilename(file: string, cfg?: RedactConfig): string;
24
+ /**
25
+ * Scrub obvious-looking secrets from a free-text string (commit body, PR text).
26
+ * Filenames are not redacted here — use `redactFilename` for those.
27
+ */
28
+ export declare function redactText(text: string, cfg?: RedactConfig): string;
29
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/readers/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA2BH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,YAA6B,GAAG,MAAM,CAOvF;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,YAA6B,GAAG,MAAM,CAWnF"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ /**
3
+ * Privacy filter: scrubs sensitive paths and obvious secret-looking values
4
+ * from git activity before it reaches the translator.
5
+ *
6
+ * Default-on. Users can disable via `context.json` { "privacy": { "redact": false } }
7
+ * or extend the file/value patterns there.
8
+ *
9
+ * Why this exists: a manager update that leaks an API key, a customer name,
10
+ * or an internal-only filename is a real career incident. The defaults here
11
+ * are conservative — better to redact a benign filename than to leak.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.redactFilename = redactFilename;
15
+ exports.redactText = redactText;
16
+ const DEFAULT_FILE_PATTERNS = [
17
+ /(^|\/)\.env(\..+)?$/i, // .env, .env.local, .env.production
18
+ /(^|\/)\.npmrc$/i, // npm auth token file
19
+ /(^|\/)\.pypirc$/i, // PyPI auth
20
+ /(^|\/)\.netrc$/i, // generic auth tokens
21
+ /(^|\/)\.aws\//i, // .aws/credentials etc.
22
+ /(^|\/)\.ssh\//i, // private keys, known_hosts
23
+ /(^|\/).*credentials.*$/i, // anything literally named credentials
24
+ /(^|\/).*secret.*$/i, // anything with "secret" in the name
25
+ /(^|\/).*\.pem$/i, // PEM private keys
26
+ /(^|\/).*\.p12$/i, // PKCS12 keys
27
+ /(^|\/).*\.key$/i, // generic .key files
28
+ ];
29
+ // Things that look like leaked secrets in a commit message body or PR text.
30
+ // Conservative — we'd rather redact legit text than leak a token.
31
+ const DEFAULT_VALUE_PATTERNS = [
32
+ /\b(?:sk|pk)_(?:live|test)_[A-Za-z0-9]{16,}\b/g, // Stripe keys
33
+ /\bAKIA[0-9A-Z]{16}\b/g, // AWS access key id
34
+ /\bghp_[A-Za-z0-9]{36}\b/g, // GitHub personal access token
35
+ /\bgithub_pat_[A-Za-z0-9_]{40,}\b/g, // GitHub fine-grained PAT
36
+ /\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g, // Slack tokens
37
+ /\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g, // JWT-shaped strings
38
+ ];
39
+ const DEFAULT_CONFIG = { enabled: true };
40
+ /**
41
+ * Replace a filename with `[redacted-secret-file]` if it matches any sensitive
42
+ * pattern. Otherwise return as-is. Pure function — safe to map over arrays.
43
+ */
44
+ function redactFilename(file, cfg = DEFAULT_CONFIG) {
45
+ if (!cfg.enabled)
46
+ return file;
47
+ const patterns = [
48
+ ...DEFAULT_FILE_PATTERNS,
49
+ ...(cfg.filePatterns ?? []).map(globishToRegex),
50
+ ];
51
+ return patterns.some((p) => p.test(file)) ? "[redacted-secret-file]" : file;
52
+ }
53
+ /**
54
+ * Scrub obvious-looking secrets from a free-text string (commit body, PR text).
55
+ * Filenames are not redacted here — use `redactFilename` for those.
56
+ */
57
+ function redactText(text, cfg = DEFAULT_CONFIG) {
58
+ if (!cfg.enabled || !text)
59
+ return text;
60
+ const patterns = [
61
+ ...DEFAULT_VALUE_PATTERNS,
62
+ ...(cfg.valuePatterns ?? []).map((s) => new RegExp(s, "g")),
63
+ ];
64
+ let out = text;
65
+ for (const p of patterns) {
66
+ out = out.replace(p, "[redacted-secret]");
67
+ }
68
+ return out;
69
+ }
70
+ /**
71
+ * Convert a simple glob (*.env, foo/**, secret-*) into a RegExp. Not full glob —
72
+ * just `*` (any chars except slash) and `**` (any chars). Anchored to full path.
73
+ */
74
+ function globishToRegex(glob) {
75
+ const escaped = glob
76
+ .replace(/[.+^${}()|[\]\\]/g, "\\$&")
77
+ .replace(/\*\*/g, "::DOUBLESTAR::")
78
+ .replace(/\*/g, "[^/]*")
79
+ .replace(/::DOUBLESTAR::/g, ".*");
80
+ return new RegExp(`(^|/)${escaped}$`, "i");
81
+ }
82
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/readers/redact.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAyCH,wCAOC;AAMD,gCAWC;AA/DD,MAAM,qBAAqB,GAAa;IACtC,sBAAsB,EAAwB,oCAAoC;IAClF,iBAAiB,EAA6B,sBAAsB;IACpE,kBAAkB,EAA4B,YAAY;IAC1D,iBAAiB,EAA6B,sBAAsB;IACpE,gBAAgB,EAA8B,wBAAwB;IACtE,gBAAgB,EAA8B,4BAA4B;IAC1E,yBAAyB,EAAqB,uCAAuC;IACrF,oBAAoB,EAA0B,qCAAqC;IACnF,iBAAiB,EAA6B,mBAAmB;IACjE,iBAAiB,EAA6B,cAAc;IAC5D,iBAAiB,EAA6B,qBAAqB;CACpE,CAAC;AAEF,4EAA4E;AAC5E,kEAAkE;AAClE,MAAM,sBAAsB,GAAa;IACvC,+CAA+C,EAAc,cAAc;IAC3E,uBAAuB,EAAsC,oBAAoB;IACjF,0BAA0B,EAAmC,+BAA+B;IAC5F,mCAAmC,EAA0B,0BAA0B;IACvF,mCAAmC,EAA0B,eAAe;IAC5E,wDAAwD,EAAK,qBAAqB;CACnF,CAAC;AAUF,MAAM,cAAc,GAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAEvD;;;GAGG;AACH,SAAgB,cAAc,CAAC,IAAY,EAAE,MAAoB,cAAc;IAC7E,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,QAAQ,GAAG;QACf,GAAG,qBAAqB;QACxB,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC;KAChD,CAAC;IACF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,IAAY,EAAE,MAAoB,cAAc;IACzE,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,QAAQ,GAAG;QACf,GAAG,sBAAsB;QACzB,GAAG,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KAC5D,CAAC;IACF,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CAAC,IAAY;IAClC,MAAM,OAAO,GAAG,IAAI;SACjB,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACpC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC;SAClC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;SACvB,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IACpC,OAAO,IAAI,MAAM,CAAC,QAAQ,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=redact.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.test.d.ts","sourceRoot":"","sources":["../../src/readers/redact.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const redact_1 = require("./redact");
5
+ (0, vitest_1.describe)("redactFilename — defaults", () => {
6
+ const cases = [
7
+ [".env", "redacted"],
8
+ [".env.local", "redacted"],
9
+ [".env.production", "redacted"],
10
+ ["src/.env.staging", "redacted"],
11
+ [".npmrc", "redacted"],
12
+ [".aws/credentials", "redacted"],
13
+ [".ssh/id_rsa", "redacted"],
14
+ ["config/credentials.yml", "redacted"],
15
+ ["lib/secret-helper.ts", "redacted"],
16
+ ["certs/tls.pem", "redacted"],
17
+ ["keys/server.key", "redacted"],
18
+ // benign — should pass through
19
+ ["src/index.ts", "kept"],
20
+ ["README.md", "kept"],
21
+ ["package.json", "kept"],
22
+ ["src/utils/helpers.ts", "kept"],
23
+ ["docs/architecture.md", "kept"],
24
+ ];
25
+ for (const [file, expected] of cases) {
26
+ (0, vitest_1.it)(`${expected === "redacted" ? "redacts" : "keeps"} ${file}`, () => {
27
+ const out = (0, redact_1.redactFilename)(file);
28
+ if (expected === "redacted") {
29
+ (0, vitest_1.expect)(out).toBe("[redacted-secret-file]");
30
+ }
31
+ else {
32
+ (0, vitest_1.expect)(out).toBe(file);
33
+ }
34
+ });
35
+ }
36
+ (0, vitest_1.it)("respects enabled: false", () => {
37
+ (0, vitest_1.expect)((0, redact_1.redactFilename)(".env", { enabled: false })).toBe(".env");
38
+ });
39
+ (0, vitest_1.it)("supports user-supplied glob patterns", () => {
40
+ (0, vitest_1.expect)((0, redact_1.redactFilename)("config/internal-only.yml", {
41
+ enabled: true,
42
+ filePatterns: ["*internal*"],
43
+ })).toBe("[redacted-secret-file]");
44
+ });
45
+ });
46
+ (0, vitest_1.describe)("redactText — defaults", () => {
47
+ (0, vitest_1.it)("redacts Stripe live keys", () => {
48
+ const out = (0, redact_1.redactText)("token sk_live_abcdef0123456789xyz123 was leaked");
49
+ (0, vitest_1.expect)(out).toContain("[redacted-secret]");
50
+ (0, vitest_1.expect)(out).not.toContain("sk_live_");
51
+ });
52
+ (0, vitest_1.it)("redacts AWS access key ids", () => {
53
+ (0, vitest_1.expect)((0, redact_1.redactText)("AKIAIOSFODNN7EXAMPLE used")).toBe("[redacted-secret] used");
54
+ });
55
+ (0, vitest_1.it)("redacts GitHub PATs", () => {
56
+ const out = (0, redact_1.redactText)("ghp_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa pushed");
57
+ (0, vitest_1.expect)(out).toContain("[redacted-secret]");
58
+ });
59
+ (0, vitest_1.it)("redacts JWT-shaped strings", () => {
60
+ const out = (0, redact_1.redactText)("header eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.abcDEF received");
61
+ (0, vitest_1.expect)(out).toContain("[redacted-secret]");
62
+ });
63
+ (0, vitest_1.it)("respects enabled: false", () => {
64
+ (0, vitest_1.expect)((0, redact_1.redactText)("ghp_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", { enabled: false }))
65
+ .toBe("ghp_aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
66
+ });
67
+ (0, vitest_1.it)("preserves benign text", () => {
68
+ const benign = "Refactored auth middleware to support multi-tenant queries.";
69
+ (0, vitest_1.expect)((0, redact_1.redactText)(benign)).toBe(benign);
70
+ });
71
+ });
72
+ //# sourceMappingURL=redact.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.test.js","sourceRoot":"","sources":["../../src/readers/redact.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAC9C,qCAAsD;AAEtD,IAAA,iBAAQ,EAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,MAAM,KAAK,GAAyC;QAClD,CAAC,MAAM,EAAE,UAAU,CAAC;QACpB,CAAC,YAAY,EAAE,UAAU,CAAC;QAC1B,CAAC,iBAAiB,EAAE,UAAU,CAAC;QAC/B,CAAC,kBAAkB,EAAE,UAAU,CAAC;QAChC,CAAC,QAAQ,EAAE,UAAU,CAAC;QACtB,CAAC,kBAAkB,EAAE,UAAU,CAAC;QAChC,CAAC,aAAa,EAAE,UAAU,CAAC;QAC3B,CAAC,wBAAwB,EAAE,UAAU,CAAC;QACtC,CAAC,sBAAsB,EAAE,UAAU,CAAC;QACpC,CAAC,eAAe,EAAE,UAAU,CAAC;QAC7B,CAAC,iBAAiB,EAAE,UAAU,CAAC;QAC/B,+BAA+B;QAC/B,CAAC,cAAc,EAAE,MAAM,CAAC;QACxB,CAAC,WAAW,EAAE,MAAM,CAAC;QACrB,CAAC,cAAc,EAAE,MAAM,CAAC;QACxB,CAAC,sBAAsB,EAAE,MAAM,CAAC;QAChC,CAAC,sBAAsB,EAAE,MAAM,CAAC;KACjC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC;QACrC,IAAA,WAAE,EAAC,GAAG,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE,EAAE,GAAG,EAAE;YAClE,MAAM,GAAG,GAAG,IAAA,uBAAc,EAAC,IAAI,CAAC,CAAC;YACjC,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC5B,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,IAAA,eAAM,EAAC,IAAA,uBAAc,EAAC,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,IAAA,eAAM,EACJ,IAAA,uBAAc,EAAC,0BAA0B,EAAE;YACzC,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,CAAC,YAAY,CAAC;SAC7B,CAAC,CACH,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAA,WAAE,EAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,iDAAiD,CAAC,CAAC;QAC1E,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC3C,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,qBAAqB,EAAE,GAAG,EAAE;QAC7B,MAAM,GAAG,GAAG,IAAA,mBAAU,EAAC,iDAAiD,CAAC,CAAC;QAC1E,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,GAAG,GAAG,IAAA,mBAAU,EACpB,gEAAgE,CACjE,CAAC;QACF,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,0CAA0C,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;aAC/E,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,IAAA,WAAE,EAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,MAAM,GAAG,6DAA6D,CAAC;QAC7E,IAAA,eAAM,EAAC,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -8,6 +8,8 @@ export interface ReportItem {
8
8
  summary: string;
9
9
  impact?: string;
10
10
  technical_note?: string;
11
+ provenance?: "pr" | "commit_body" | "commit_message" | "ticket" | "inferred";
12
+ refs?: string[];
11
13
  }
12
14
  export interface ReportEntry {
13
15
  date: string;
@@ -1 +1 @@
1
- {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmOjF"}
1
+ {"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,IAAI,GAAG,aAAa,GAAG,gBAAgB,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC7E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqQjF"}
@@ -127,6 +127,29 @@ function renderReportHtml(entries, repoName) {
127
127
  margin-top: 4px;
128
128
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
129
129
  }
130
+ .item .meta {
131
+ margin-top: 8px;
132
+ display: flex;
133
+ flex-wrap: wrap;
134
+ gap: 6px;
135
+ align-items: center;
136
+ }
137
+ .chip {
138
+ display: inline-block;
139
+ padding: 2px 8px;
140
+ border-radius: 999px;
141
+ font-size: 11px;
142
+ border: 1px solid var(--border);
143
+ color: var(--muted);
144
+ background: transparent;
145
+ }
146
+ .chip.inferred {
147
+ border-color: var(--amber);
148
+ color: var(--amber);
149
+ }
150
+ .chip.ref {
151
+ font-family: ui-monospace, "SF Mono", Menlo, monospace;
152
+ }
130
153
  footer {
131
154
  color: var(--muted);
132
155
  font-size: 12px;
@@ -182,9 +205,20 @@ function renderReportHtml(entries, repoName) {
182
205
  ? '<div class="note">' + escape(item.technical_note) + '</div>' : '';
183
206
  const impact = item.impact
184
207
  ? '<div class="impact">' + escape(item.impact) + '</div>' : '';
208
+ const chips = [];
209
+ if (item.provenance === "inferred") {
210
+ chips.push('<span class="chip inferred" title="Impact inferred — not stated explicitly in PR or commit body">inferred</span>');
211
+ }
212
+ if (Array.isArray(item.refs)) {
213
+ for (const ref of item.refs) {
214
+ chips.push('<span class="chip ref">' + escape(ref) + '</span>');
215
+ }
216
+ }
217
+ const meta = chips.length
218
+ ? '<div class="meta">' + chips.join("") + '</div>' : '';
185
219
  return '<div class="item ' + cls + '">' +
186
220
  '<div class="summary">' + escape(item.summary) + '</div>' +
187
- impact + note +
221
+ impact + note + meta +
188
222
  '</div>';
189
223
  }).join("");
190
224
 
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAkBH,4CAmOC;AAnOD,SAAgB,gBAAgB,CAAC,OAAsB,EAAE,QAAgB;IACvE,8BAA8B;IAC9B,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAEjE,OAAO;;;;;sBAKa,UAAU,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAqInB,UAAU,CAAC,QAAQ,CAAC;;;;;;oBAMvB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6EpB,CAAC;AACT,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,OAAO;KACb,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;AACV,CAAC"}
1
+ {"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAoBH,4CAqQC;AArQD,SAAgB,gBAAgB,CAAC,OAAsB,EAAE,QAAgB;IACvE,8BAA8B;IAC9B,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAEjE,OAAO;;;;;sBAKa,UAAU,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA4JnB,UAAU,CAAC,QAAQ,CAAC;;;;;;oBAMvB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAwFpB,CAAC;AACT,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,OAAO;KACb,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;AACV,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,CAuC9D"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,CAiD9D"}
@@ -50,20 +50,30 @@ function renderReport(opts) {
50
50
  const entries = (0, db_1.getEntriesForRange)("0000-01-01", "9999-12-31", repoRoot);
51
51
  const repoName = entries[0]?.repoName ?? path.basename(repoRoot);
52
52
  // Be tolerant of historical shapes — earlier skill versions saved items as
53
- // {title, impact} or {text, impact} instead of the canonical {summary, status}.
54
- // Coerce whatever the row contains into ReportItem so the report still renders.
53
+ // raw strings, {title, impact}, or {text, impact} instead of the canonical
54
+ // {summary, status, impact}. Coerce whatever's there into ReportItem so the
55
+ // report still renders.
55
56
  const reportEntries = entries.map((e) => ({
56
57
  date: e.date,
57
58
  repoName: e.repoName,
58
59
  totalCommits: e.totalCommits,
59
60
  totalFiles: e.totalFiles,
60
61
  filesSummary: e.filesSummary,
61
- items: e.items.map((it) => ({
62
- status: it.status ?? "done",
63
- summary: (it.summary ?? it.title ?? it.text ?? it.headline ?? ""),
64
- impact: it.impact,
65
- technical_note: (it.technical_note ?? it.note),
66
- })),
62
+ items: e.items.map((raw) => {
63
+ // Plain string item — older skill runs saved arrays of strings.
64
+ if (typeof raw === "string") {
65
+ return { status: "done", summary: raw };
66
+ }
67
+ const it = (raw ?? {});
68
+ return {
69
+ status: it.status ?? "done",
70
+ summary: (it.summary ?? it.title ?? it.text ?? it.headline ?? "—"),
71
+ impact: it.impact,
72
+ technical_note: (it.technical_note ?? it.note),
73
+ provenance: it.provenance,
74
+ refs: Array.isArray(it.refs) ? it.refs : undefined,
75
+ };
76
+ }),
67
77
  }));
68
78
  const html = (0, html_1.renderReportHtml)(reportEntries, repoName);
69
79
  const outDir = path.join(repoRoot, ".git-impact");
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBH,oCAiDC;AAnED,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAsC;AACtC,sCAAmD;AACnD,iCAAmE;AAcnE,SAAgB,YAAY,CAAC,IAAmB;IAC9C,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAE9C,4EAA4E;IAC5E,6DAA6D;IAC7D,MAAM,OAAO,GAAG,IAAA,uBAAkB,EAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEjE,2EAA2E;IAC3E,2EAA2E;IAC3E,4EAA4E;IAC5E,wBAAwB;IACxB,MAAM,aAAa,GAAkB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,KAAK,EAAG,CAAC,CAAC,KAA8B,CAAC,GAAG,CAAC,CAAC,GAAG,EAAc,EAAE;YAC/D,gEAAgE;YAChE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;YAC1C,CAAC;YACD,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAA4B,CAAC;YAClD,OAAO;gBACL,MAAM,EAAG,EAAE,CAAC,MAA+B,IAAI,MAAM;gBACrD,OAAO,EAAE,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,IAAI,GAAG,CAAW;gBAC5E,MAAM,EAAE,EAAE,CAAC,MAA4B;gBACvC,cAAc,EAAE,CAAC,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,IAAI,CAAuB;gBACpE,UAAU,EAAE,EAAE,CAAC,UAAkD;gBACjE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,EAAE,CAAC,IAAiB,CAAC,CAAC,CAAC,SAAS;aACjE,CAAC;QACJ,CAAC,CAAC;KACH,CAAC,CAAC,CAAC;IAEJ,MAAM,IAAI,GAAG,IAAA,uBAAgB,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAClD,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAClD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE1C,MAAM,GAAG,GAAG,UAAU,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAE/D,IAAI,IAAI,EAAE,CAAC;QACT,aAAa,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,GAAG,GACP,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,QAAQ,KAAK,OAAO,CAAE,CAAC,CAAC,KAAK,CAAE,CAAC;YAChC,UAAU,CAAC;IACb,MAAM,IAAI,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAErE,0EAA0E;IAC1E,iDAAiD;IACjD,IAAI,CAAC;QACH,IAAA,qBAAK,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;AACH,CAAC"}