git-impact 0.3.0 → 0.6.3

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 (71) hide show
  1. package/README.md +125 -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/repo.d.ts +8 -3
  17. package/dist/mcp/repo.d.ts.map +1 -1
  18. package/dist/mcp/repo.js +27 -9
  19. package/dist/mcp/repo.js.map +1 -1
  20. package/dist/mcp/repo.test.d.ts +2 -0
  21. package/dist/mcp/repo.test.d.ts.map +1 -0
  22. package/dist/mcp/repo.test.js +133 -0
  23. package/dist/mcp/repo.test.js.map +1 -0
  24. package/dist/mcp/resources.js +0 -1
  25. package/dist/mcp/resources.js.map +1 -1
  26. package/dist/mcp/tools.d.ts.map +1 -1
  27. package/dist/mcp/tools.js +100 -12
  28. package/dist/mcp/tools.js.map +1 -1
  29. package/dist/mcp/tools.test.d.ts +2 -0
  30. package/dist/mcp/tools.test.d.ts.map +1 -0
  31. package/dist/mcp/tools.test.js +123 -0
  32. package/dist/mcp/tools.test.js.map +1 -0
  33. package/dist/readers/git.d.ts +2 -1
  34. package/dist/readers/git.d.ts.map +1 -1
  35. package/dist/readers/git.js +12 -6
  36. package/dist/readers/git.js.map +1 -1
  37. package/dist/readers/redact.d.ts +29 -0
  38. package/dist/readers/redact.d.ts.map +1 -0
  39. package/dist/readers/redact.js +82 -0
  40. package/dist/readers/redact.js.map +1 -0
  41. package/dist/readers/redact.test.d.ts +2 -0
  42. package/dist/readers/redact.test.d.ts.map +1 -0
  43. package/dist/readers/redact.test.js +72 -0
  44. package/dist/readers/redact.test.js.map +1 -0
  45. package/dist/report/html.d.ts +2 -0
  46. package/dist/report/html.d.ts.map +1 -1
  47. package/dist/report/html.js +35 -1
  48. package/dist/report/html.js.map +1 -1
  49. package/dist/report/render.d.ts.map +1 -1
  50. package/dist/report/render.js +2 -0
  51. package/dist/report/render.js.map +1 -1
  52. package/dist/storage/db.d.ts +23 -2
  53. package/dist/storage/db.d.ts.map +1 -1
  54. package/dist/storage/db.js +12 -0
  55. package/dist/storage/db.js.map +1 -1
  56. package/dist/storage/db.test.d.ts +2 -0
  57. package/dist/storage/db.test.d.ts.map +1 -0
  58. package/dist/storage/db.test.js +152 -0
  59. package/dist/storage/db.test.js.map +1 -0
  60. package/package.json +7 -6
  61. package/skill/SKILL.md +142 -205
  62. package/skill/references/html-template.md +131 -0
  63. package/skill/references/translation-rules.md +87 -0
  64. package/dist/translator/prompt.d.ts +0 -21
  65. package/dist/translator/prompt.d.ts.map +0 -1
  66. package/dist/translator/prompt.js +0 -117
  67. package/dist/translator/prompt.js.map +0 -1
  68. package/dist/translator/translate.d.ts +0 -36
  69. package/dist/translator/translate.d.ts.map +0 -1
  70. package/dist/translator/translate.js +0 -73
  71. package/dist/translator/translate.js.map +0 -1
package/dist/mcp/repo.js CHANGED
@@ -2,10 +2,13 @@
2
2
  /**
3
3
  * Repo path resolution — priority order:
4
4
  *
5
- * 1. Explicit arg passed by Claude (user said "~/code/my-app")
6
- * 2. Default repo saved in user context (set once, reused forever)
5
+ * 1. Explicit arg passed by the model ("~/code/my-app")
6
+ * 2. **Sticky cache** the path we resolved last time on this process.
7
+ * The skill calls 3-5 MCP tools per standup; resolving once and
8
+ * reusing avoids the bug where get_git_activity finds a repo via
9
+ * cwd but save_impact_entry — called moments later — gets a
10
+ * different cwd and fails.
7
11
  * 3. Walk up from process.cwd() until a .git folder is found
8
- * → works in Claude Code CLI where cwd = open project
9
12
  * 4. Fail with a clear message asking the user to set a default
10
13
  */
11
14
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
@@ -42,29 +45,44 @@ var __importStar = (this && this.__importStar) || (function () {
42
45
  };
43
46
  })();
44
47
  Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports._resetStickyRepoForTests = _resetStickyRepoForTests;
45
49
  exports.resolveRepoPath = resolveRepoPath;
46
50
  const path = __importStar(require("path"));
47
51
  const fs = __importStar(require("fs"));
48
52
  const process = __importStar(require("process"));
49
53
  const os = __importStar(require("os"));
54
+ let stickyRepo = null;
55
+ /** Reset the cached path. Used by tests; not part of the public API. */
56
+ function _resetStickyRepoForTests() {
57
+ stickyRepo = null;
58
+ }
50
59
  function resolveRepoPath(explicitPath) {
51
60
  // 1. Explicit arg — highest priority
52
61
  if (explicitPath) {
53
62
  const resolved = expandHome(explicitPath);
54
63
  assertIsGitRepo(resolved);
64
+ stickyRepo = resolved;
55
65
  return { path: resolved, source: "explicit" };
56
66
  }
57
- // 2. Walk up from cwd works when Claude Code Desktop opens a project folder
67
+ // 2. Sticky cachewithin a single MCP server process, reuse the path
68
+ // we successfully resolved earlier. Critical because cwd may shift
69
+ // between tool calls and we don't want save_impact_entry to fail just
70
+ // because get_git_activity already worked.
71
+ if (stickyRepo && isGitRepo(stickyRepo)) {
72
+ return { path: stickyRepo, source: "sticky" };
73
+ }
74
+ // 3. Walk up from cwd — works when Claude Code opens a project folder
58
75
  const fromCwd = findGitRoot(process.cwd());
59
76
  if (fromCwd) {
77
+ stickyRepo = fromCwd;
60
78
  return { path: fromCwd, source: "cwd" };
61
79
  }
62
- // 3. Nothing found
80
+ // 4. Nothing found
63
81
  throw new Error("No git repository found.\n\n" +
64
- "Set a default repo once with:\n" +
65
- ' "set my default repo to /Users/you/code/my-project"\n\n' +
66
- "Or tell me the path directly:\n" +
67
- ' "do my standup for ~/code/my-project"');
82
+ "The MCP server's cwd is not inside a git repo, and no path was given.\n" +
83
+ "Tell me the absolute path:\n" +
84
+ ' "do my standup for ~/code/my-project"\n\n' +
85
+ "Once resolved, the path is cached for the rest of this MCP session.");
68
86
  }
69
87
  /** Walk up directory tree until a .git folder is found, or return null */
70
88
  function findGitRoot(dir) {
@@ -1 +1 @@
1
- {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../src/mcp/repo.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOH,0CAsBC;AA3BD,2CAA6B;AAC7B,uCAAyB;AACzB,iDAAmC;AACnC,uCAAyB;AAEzB,SAAgB,eAAe,CAAC,YAAqB;IACnD,qCAAqC;IACrC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;QAC1C,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChD,CAAC;IAED,8EAA8E;IAC9E,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,mBAAmB;IACnB,MAAM,IAAI,KAAK,CACb,8BAA8B;QAC9B,iCAAiC;QACjC,2DAA2D;QAC3D,iCAAiC;QACjC,yCAAyC,CAC1C,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAEtC,OAAO,OAAO,KAAK,IAAI,EAAE,CAAC;QACxB,IAAI,SAAS,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,MAAM,CAAC,kBAAkB;QACjD,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;IACnC,OAAO,CAAC,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../src/mcp/repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=repo.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo.test.d.ts","sourceRoot":"","sources":["../../src/mcp/repo.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,133 @@
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 child_process_1 = require("child_process");
41
+ const repo_1 = require("./repo");
42
+ let tmpA;
43
+ let tmpB;
44
+ let originalCwd;
45
+ (0, vitest_1.beforeEach)(() => {
46
+ originalCwd = process.cwd();
47
+ tmpA = fs.mkdtempSync(path.join(os.tmpdir(), "repo-A-"));
48
+ tmpB = fs.mkdtempSync(path.join(os.tmpdir(), "repo-B-"));
49
+ // Real fs.realpathSync to handle macOS /var → /private/var symlink.
50
+ tmpA = fs.realpathSync(tmpA);
51
+ tmpB = fs.realpathSync(tmpB);
52
+ (0, child_process_1.execSync)(`git -C ${tmpA} init -q`);
53
+ (0, child_process_1.execSync)(`git -C ${tmpB} init -q`);
54
+ (0, repo_1._resetStickyRepoForTests)();
55
+ });
56
+ (0, vitest_1.afterEach)(() => {
57
+ process.chdir(originalCwd);
58
+ fs.rmSync(tmpA, { recursive: true, force: true });
59
+ fs.rmSync(tmpB, { recursive: true, force: true });
60
+ });
61
+ (0, vitest_1.describe)("resolveRepoPath", () => {
62
+ (0, vitest_1.it)("uses an explicit path when provided", () => {
63
+ const r = (0, repo_1.resolveRepoPath)(tmpA);
64
+ (0, vitest_1.expect)(r.path).toBe(tmpA);
65
+ (0, vitest_1.expect)(r.source).toBe("explicit");
66
+ });
67
+ (0, vitest_1.it)("walks up from cwd", () => {
68
+ process.chdir(tmpA);
69
+ const r = (0, repo_1.resolveRepoPath)();
70
+ (0, vitest_1.expect)(r.path).toBe(tmpA);
71
+ (0, vitest_1.expect)(r.source).toBe("cwd");
72
+ });
73
+ (0, vitest_1.it)("caches the resolved path across calls (sticky)", () => {
74
+ // First call — resolved via cwd.
75
+ process.chdir(tmpA);
76
+ const first = (0, repo_1.resolveRepoPath)();
77
+ (0, vitest_1.expect)(first.source).toBe("cwd");
78
+ // Move cwd OUT of any git repo. Without sticky, this would throw.
79
+ const nowhere = fs.mkdtempSync(path.join(os.tmpdir(), "nowhere-"));
80
+ try {
81
+ process.chdir(nowhere);
82
+ const second = (0, repo_1.resolveRepoPath)();
83
+ (0, vitest_1.expect)(second.path).toBe(tmpA);
84
+ (0, vitest_1.expect)(second.source).toBe("sticky");
85
+ }
86
+ finally {
87
+ fs.rmSync(nowhere, { recursive: true, force: true });
88
+ }
89
+ });
90
+ (0, vitest_1.it)("explicit path beats sticky cache", () => {
91
+ // Prime the cache with tmpA.
92
+ (0, repo_1.resolveRepoPath)(tmpA);
93
+ // Explicit override → should pick tmpB.
94
+ const r = (0, repo_1.resolveRepoPath)(tmpB);
95
+ (0, vitest_1.expect)(r.path).toBe(tmpB);
96
+ (0, vitest_1.expect)(r.source).toBe("explicit");
97
+ });
98
+ (0, vitest_1.it)("subsequent calls without args use sticky after explicit", () => {
99
+ // Set sticky via explicit.
100
+ (0, repo_1.resolveRepoPath)(tmpA);
101
+ // Move cwd somewhere with no git.
102
+ const nowhere = fs.mkdtempSync(path.join(os.tmpdir(), "nowhere-"));
103
+ try {
104
+ process.chdir(nowhere);
105
+ const r = (0, repo_1.resolveRepoPath)();
106
+ (0, vitest_1.expect)(r.path).toBe(tmpA);
107
+ (0, vitest_1.expect)(r.source).toBe("sticky");
108
+ }
109
+ finally {
110
+ fs.rmSync(nowhere, { recursive: true, force: true });
111
+ }
112
+ });
113
+ (0, vitest_1.it)("throws a helpful error when nothing resolves", () => {
114
+ const nowhere = fs.mkdtempSync(path.join(os.tmpdir(), "nowhere-"));
115
+ try {
116
+ process.chdir(nowhere);
117
+ (0, vitest_1.expect)(() => (0, repo_1.resolveRepoPath)()).toThrow(/No git repository found/);
118
+ }
119
+ finally {
120
+ fs.rmSync(nowhere, { recursive: true, force: true });
121
+ }
122
+ });
123
+ (0, vitest_1.it)("rejects an explicit path that isn't a git repo", () => {
124
+ const notARepo = fs.mkdtempSync(path.join(os.tmpdir(), "notrepo-"));
125
+ try {
126
+ (0, vitest_1.expect)(() => (0, repo_1.resolveRepoPath)(notARepo)).toThrow(/Not a git repository/);
127
+ }
128
+ finally {
129
+ fs.rmSync(notARepo, { recursive: true, force: true });
130
+ }
131
+ });
132
+ });
133
+ //# sourceMappingURL=repo.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo.test.js","sourceRoot":"","sources":["../../src/mcp/repo.test.ts"],"names":[],"mappings":"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"}
@@ -54,7 +54,6 @@ function readContextResource(repoRoot) {
54
54
  manager_priorities: ctx.managerPriorities,
55
55
  glossary: ctx.glossary,
56
56
  has_github_token: Boolean(ctx.githubToken),
57
- has_anthropic_key: Boolean(ctx.anthropicApiKey),
58
57
  }
59
58
  : {
60
59
  configured: false,
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/mcp/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/mcp/resources.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAgB1D,eAAO,MAAM,gBAAgB,EAAE,IAAI,EA+GlC,CAAC;AAIF,KAAK,UAAU,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAExF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,UAAU,CAAC,CASrB"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAkB1D,eAAO,MAAM,gBAAgB,EAAE,IAAI,EAgKlC,CAAC;AAIF,KAAK,UAAU,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAExF,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,UAAU,CAAC,CAWrB"}
package/dist/mcp/tools.js CHANGED
@@ -38,6 +38,7 @@ exports.handleTool = handleTool;
38
38
  const git_1 = require("../readers/git");
39
39
  const github_1 = require("../readers/github");
40
40
  const db_1 = require("../storage/db");
41
+ const render_1 = require("../report/render");
41
42
  const repo_1 = require("./repo");
42
43
  // ─── Tool definitions ────────────────────────────────────────────────────────
43
44
  exports.TOOL_DEFINITIONS = [
@@ -80,8 +81,11 @@ exports.TOOL_DEFINITIONS = [
80
81
  },
81
82
  {
82
83
  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.",
84
+ description: "Persist a completed impact translation to this repo's local history " +
85
+ "(.git-impact/history.db). Always call this after translating commits into " +
86
+ "business impact bullets — replaces any prior bash/sqlite3 invocations. " +
87
+ "Each item must include a `provenance` so the UI can mark inferred bullets " +
88
+ "differently from claims grounded in PRs or commit bodies.",
85
89
  inputSchema: {
86
90
  type: "object",
87
91
  required: ["date", "repo_name", "items"],
@@ -97,18 +101,48 @@ exports.TOOL_DEFINITIONS = [
97
101
  description: "The translated impact bullets.",
98
102
  items: {
99
103
  type: "object",
100
- required: ["status", "summary", "impact"],
104
+ required: ["status", "summary", "provenance"],
101
105
  properties: {
102
- status: { type: "string", enum: ["done", "in_progress"] },
103
- summary: { type: "string" },
104
- impact: { type: "string" },
105
- technical_note: { type: "string" },
106
+ status: {
107
+ type: "string",
108
+ enum: ["done", "in_progress", "blocked"],
109
+ description: "Outcome state of the work item.",
110
+ },
111
+ summary: { type: "string", description: "Plain-English what." },
112
+ impact: { type: "string", description: "Why it matters — who/what it unblocks." },
113
+ technical_note: { type: "string", description: "Small grey aside (file refs, PR #s)." },
114
+ provenance: {
115
+ type: "string",
116
+ enum: ["pr", "commit_body", "commit_message", "ticket", "inferred"],
117
+ description: "Where the impact claim came from. Use 'pr' if quoted from a PR description, " +
118
+ "'commit_body' if from a multi-line commit body, 'commit_message' if only the " +
119
+ "subject line supported it, 'ticket' if pulled from a linked Linear/Jira ticket, " +
120
+ "'inferred' if you guessed without explicit text. NEVER invent a non-inferred provenance.",
121
+ },
122
+ refs: {
123
+ type: "array",
124
+ items: { type: "string" },
125
+ description: "Supporting refs e.g. ['PR #142', 'a1b2c3d', 'ENG-1234'].",
126
+ },
106
127
  },
107
128
  },
108
129
  },
109
130
  },
110
131
  },
111
132
  },
133
+ {
134
+ name: "get_last_standup_date",
135
+ description: "Return the date (YYYY-MM-DD) of the most recently saved standup entry, or null " +
136
+ "if none exists yet. Call this at the start of every standup to default the " +
137
+ "lookback window to 'since last standup' — so days off, weekends, and holidays " +
138
+ "don't drop work on the floor.",
139
+ inputSchema: {
140
+ type: "object",
141
+ properties: {
142
+ repo_path: { type: "string", description: "Override the repo path." },
143
+ },
144
+ },
145
+ },
112
146
  {
113
147
  name: "get_history",
114
148
  description: "Retrieve saved impact entries from this repo's history. " +
@@ -123,6 +157,20 @@ exports.TOOL_DEFINITIONS = [
123
157
  },
124
158
  },
125
159
  },
160
+ {
161
+ name: "render_dashboard",
162
+ description: "Regenerate the rolling HTML dashboard at .git-impact/result.html from the " +
163
+ "saved history. Call this AFTER save_impact_entry so today's entry shows up. " +
164
+ "Returns the file:// URL — print it on the last line of your reply so the " +
165
+ "user can ⌘-click to open. Don't try to open the browser yourself.",
166
+ inputSchema: {
167
+ type: "object",
168
+ properties: {
169
+ repo_path: { type: "string", description: "Override the repo path." },
170
+ date: { type: "string", description: "Optional ?date=YYYY-MM-DD focus to add to the URL." },
171
+ },
172
+ },
173
+ },
126
174
  {
127
175
  name: "update_context",
128
176
  description: "Save personalization to this repo's .git-impact/context.json: " +
@@ -141,7 +189,6 @@ exports.TOOL_DEFINITIONS = [
141
189
  additionalProperties: { type: "string" },
142
190
  },
143
191
  github_token: { type: "string" },
144
- anthropic_api_key: { type: "string" },
145
192
  },
146
193
  },
147
194
  },
@@ -151,7 +198,9 @@ async function handleTool(name, args) {
151
198
  case "get_git_activity": return handleGetGitActivity(args);
152
199
  case "get_github_activity": return handleGetGitHubActivity(args);
153
200
  case "save_impact_entry": return handleSaveImpactEntry(args);
201
+ case "get_last_standup_date": return handleGetLastStandupDate(args);
154
202
  case "get_history": return handleGetHistory(args);
203
+ case "render_dashboard": return handleRenderDashboard(args);
155
204
  case "update_context": return handleUpdateContext(args);
156
205
  default: return error(`Unknown tool: ${name}`);
157
206
  }
@@ -163,9 +212,18 @@ async function handleGetGitActivity(args) {
163
212
  return error(repo.error);
164
213
  const since = args.since_iso ? new Date(args.since_iso) : (0, git_1.startOfDay)();
165
214
  const until = args.until_iso ? new Date(args.until_iso) : new Date();
215
+ // Pull privacy config from context.json so filenames like .env / .aws/credentials
216
+ // and obvious-looking secrets in commit bodies are redacted before they reach
217
+ // the translator. Default-on; users can opt out via { privacy: { redact: false } }.
218
+ const ctx = (0, db_1.loadContext)(repo.path);
219
+ const redactCfg = {
220
+ enabled: ctx?.privacy?.redact !== false,
221
+ filePatterns: ctx?.privacy?.filePatterns,
222
+ valuePatterns: ctx?.privacy?.valuePatterns,
223
+ };
166
224
  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));
225
+ const git = await (0, git_1.readGitActivity)(repo.path, since, until, redactCfg);
226
+ return ok(JSON.stringify({ ...git, _repo_root: repo.path, _redacted: redactCfg.enabled }, null, 2));
169
227
  }
170
228
  catch (err) {
171
229
  return error(`Could not read git history: ${err.message}`);
@@ -219,6 +277,18 @@ function handleSaveImpactEntry(args) {
219
277
  return error(`Failed to save entry: ${err.message}`);
220
278
  }
221
279
  }
280
+ function handleGetLastStandupDate(args) {
281
+ const repo = resolveRepo(args.repo_path);
282
+ if ("error" in repo)
283
+ return error(repo.error);
284
+ try {
285
+ const date = (0, db_1.getLastEntryDate)(repo.path);
286
+ return ok(JSON.stringify({ last_standup_date: date }));
287
+ }
288
+ catch (err) {
289
+ return error(`Failed to read last standup date: ${err.message}`);
290
+ }
291
+ }
222
292
  function handleGetHistory(args) {
223
293
  const repo = resolveRepo(args.repo_path);
224
294
  if ("error" in repo)
@@ -233,6 +303,26 @@ function handleGetHistory(args) {
233
303
  return error(`Failed to read history: ${err.message}`);
234
304
  }
235
305
  }
306
+ function handleRenderDashboard(args) {
307
+ const repo = resolveRepo(args.repo_path);
308
+ if ("error" in repo)
309
+ return error(repo.error);
310
+ try {
311
+ const result = (0, render_1.renderReport)({
312
+ repoRoot: repo.path,
313
+ open: false, // Never open the browser from inside MCP — just return the URL.
314
+ date: args.date,
315
+ });
316
+ return ok(JSON.stringify({
317
+ url: result.url,
318
+ html_path: result.htmlPath,
319
+ entry_count: result.entryCount,
320
+ }));
321
+ }
322
+ catch (err) {
323
+ return error(`Failed to render dashboard: ${err.message}`);
324
+ }
325
+ }
236
326
  function handleUpdateContext(args) {
237
327
  const repo = resolveRepo(args.repo_path);
238
328
  if ("error" in repo)
@@ -247,7 +337,6 @@ function handleUpdateContext(args) {
247
337
  managerPriorities: args.manager_priorities ?? existing.managerPriorities,
248
338
  glossary: args.glossary ?? existing.glossary,
249
339
  githubToken: args.github_token ?? existing.githubToken,
250
- anthropicApiKey: args.anthropic_api_key ?? existing.anthropicApiKey,
251
340
  };
252
341
  try {
253
342
  (0, db_1.saveContext)(updated, repo.path);
@@ -257,7 +346,6 @@ function handleUpdateContext(args) {
257
346
  context: {
258
347
  ...updated,
259
348
  githubToken: updated.githubToken ? "***" : undefined,
260
- anthropicApiKey: updated.anthropicApiKey ? "***" : undefined,
261
349
  },
262
350
  }, null, 2));
263
351
  }
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,123 @@
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 child_process_1 = require("child_process");
41
+ const tools_1 = require("./tools");
42
+ const repo_1 = require("./repo");
43
+ let tmp;
44
+ (0, vitest_1.beforeEach)(() => {
45
+ tmp = fs.realpathSync(fs.mkdtempSync(path.join(os.tmpdir(), "tools-")));
46
+ (0, child_process_1.execSync)(`git -C ${tmp} init -q`);
47
+ (0, child_process_1.execSync)(`git -C ${tmp} config user.email t@t`);
48
+ (0, child_process_1.execSync)(`git -C ${tmp} config user.name T`);
49
+ fs.writeFileSync(path.join(tmp, "README.md"), "x");
50
+ (0, child_process_1.execSync)(`git -C ${tmp} add . && git -C ${tmp} commit -q -m init`);
51
+ (0, repo_1._resetStickyRepoForTests)();
52
+ });
53
+ (0, vitest_1.afterEach)(() => {
54
+ fs.rmSync(tmp, { recursive: true, force: true });
55
+ });
56
+ (0, vitest_1.describe)("save → render_dashboard flow", () => {
57
+ (0, vitest_1.it)("save_impact_entry then render_dashboard produces a result.html", async () => {
58
+ // Save a row.
59
+ const save = await (0, tools_1.handleTool)("save_impact_entry", {
60
+ repo_path: tmp,
61
+ date: "2026-05-09",
62
+ repo_name: "test",
63
+ total_commits: 1,
64
+ total_files: 1,
65
+ items: [
66
+ {
67
+ status: "done",
68
+ summary: "Shipped X",
69
+ impact: "Unblocked Y",
70
+ provenance: "pr",
71
+ refs: ["PR #1"],
72
+ },
73
+ ],
74
+ });
75
+ (0, vitest_1.expect)(save.isError).toBeFalsy();
76
+ // Render the dashboard.
77
+ const render = await (0, tools_1.handleTool)("render_dashboard", { repo_path: tmp });
78
+ (0, vitest_1.expect)(render.isError).toBeFalsy();
79
+ const result = JSON.parse(render.content[0].text);
80
+ (0, vitest_1.expect)(result.entry_count).toBe(1);
81
+ (0, vitest_1.expect)(result.url.startsWith("file://")).toBe(true);
82
+ (0, vitest_1.expect)(fs.existsSync(result.html_path)).toBe(true);
83
+ // The HTML should embed the saved item.
84
+ const html = fs.readFileSync(result.html_path, "utf-8");
85
+ (0, vitest_1.expect)(html).toContain("Shipped X");
86
+ });
87
+ (0, vitest_1.it)("render_dashboard works on a repo with no history (empty file)", async () => {
88
+ const render = await (0, tools_1.handleTool)("render_dashboard", { repo_path: tmp });
89
+ (0, vitest_1.expect)(render.isError).toBeFalsy();
90
+ const result = JSON.parse(render.content[0].text);
91
+ (0, vitest_1.expect)(result.entry_count).toBe(0);
92
+ (0, vitest_1.expect)(fs.existsSync(result.html_path)).toBe(true);
93
+ });
94
+ });
95
+ (0, vitest_1.describe)("sticky repo: tools chain without re-passing repo_path", () => {
96
+ (0, vitest_1.it)("save_impact_entry succeeds even after cwd moved away from the repo", async () => {
97
+ // First call resolves the repo via explicit path (and primes sticky).
98
+ const get = await (0, tools_1.handleTool)("get_git_activity", { repo_path: tmp });
99
+ (0, vitest_1.expect)(get.isError).toBeFalsy();
100
+ // Move cwd somewhere with no git repo to simulate the original bug.
101
+ const originalCwd = process.cwd();
102
+ const nowhere = fs.mkdtempSync(path.join(os.tmpdir(), "nowhere-"));
103
+ try {
104
+ process.chdir(nowhere);
105
+ // Save WITHOUT repo_path — used to throw before the sticky cache.
106
+ const save = await (0, tools_1.handleTool)("save_impact_entry", {
107
+ date: "2026-05-09",
108
+ repo_name: "test",
109
+ total_commits: 1,
110
+ total_files: 1,
111
+ items: [
112
+ { status: "done", summary: "X", provenance: "inferred" },
113
+ ],
114
+ });
115
+ (0, vitest_1.expect)(save.isError).toBeFalsy();
116
+ }
117
+ finally {
118
+ process.chdir(originalCwd);
119
+ fs.rmSync(nowhere, { recursive: true, force: true });
120
+ }
121
+ });
122
+ });
123
+ //# sourceMappingURL=tools.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../src/mcp/tools.test.ts"],"names":[],"mappings":"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"}