@mesadev/agentblame 0.1.0 → 0.1.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.
@@ -2,9 +2,8 @@
2
2
  /**
3
3
  * Git configuration for Agent Blame notes
4
4
  *
5
- * Configures auto-push of refs/notes/agentblame.
6
- * Note: We don't auto-fetch because it fails if notes don't exist on remote.
7
- * Use fetchNotes() to manually fetch when needed.
5
+ * Notes are pushed explicitly by the post-commit hook after processing,
6
+ * rather than via push refspec (which fails if notes don't exist).
8
7
  */
9
8
  Object.defineProperty(exports, "__esModule", { value: true });
10
9
  exports.configureNotesSync = configureNotesSync;
@@ -12,69 +11,36 @@ exports.isNotesSyncConfigured = isNotesSyncConfigured;
12
11
  exports.removeNotesSync = removeNotesSync;
13
12
  const gitCli_1 = require("./gitCli");
14
13
  /**
15
- * Configure a repository to automatically push agentblame notes.
16
- * Only configures push (not fetch) to avoid errors when notes don't exist on remote.
14
+ * Configure notes sync for a repository.
15
+ * This is now a no-op - notes are pushed by the post-commit hook instead.
16
+ * Keeping the function for API compatibility.
17
17
  */
18
- async function configureNotesSync(repoRoot) {
19
- try {
20
- // Check if any push refspec already exists
21
- const existingPush = await (0, gitCli_1.runGit)(repoRoot, [
22
- "config",
23
- "--get-all",
24
- "remote.origin.push",
25
- ]).catch(() => ({ stdout: "", exitCode: 1 }));
26
- // If no push refspec exists, add the default branch push first
27
- // Otherwise git push would ONLY push notes
28
- if (!existingPush.stdout.trim()) {
29
- await (0, gitCli_1.runGit)(repoRoot, [
30
- "config",
31
- "--local",
32
- "--add",
33
- "remote.origin.push",
34
- "refs/heads/*",
35
- ]);
36
- }
37
- // Add push refspec for notes (if not already present)
38
- if (!existingPush.stdout.includes("refs/notes/agentblame")) {
39
- await (0, gitCli_1.runGit)(repoRoot, [
40
- "config",
41
- "--local",
42
- "--add",
43
- "remote.origin.push",
44
- "refs/notes/agentblame",
45
- ]);
46
- }
47
- return true;
48
- }
49
- catch {
50
- return false;
51
- }
18
+ async function configureNotesSync(_repoRoot) {
19
+ // Notes are pushed explicitly by the post-commit hook after processing.
20
+ // We don't configure push refspec because it fails if notes don't exist yet.
21
+ return true;
52
22
  }
53
23
  /**
54
- * Check if notes sync is already configured
24
+ * Check if notes sync is already configured (legacy - always returns false)
55
25
  */
56
- async function isNotesSyncConfigured(repoRoot) {
57
- const pushResult = await (0, gitCli_1.runGit)(repoRoot, [
58
- "config",
59
- "--get-all",
60
- "remote.origin.push",
61
- ]);
62
- return pushResult.stdout.includes("refs/notes/agentblame");
26
+ async function isNotesSyncConfigured(_repoRoot) {
27
+ return false;
63
28
  }
64
29
  /**
65
- * Remove notes sync configuration
30
+ * Remove notes sync configuration.
31
+ * Cleans up any push/fetch refspecs from older versions.
66
32
  */
67
33
  async function removeNotesSync(repoRoot) {
68
34
  try {
69
- // Remove push refspec
35
+ // Remove push refspec if it exists (from older versions)
70
36
  await (0, gitCli_1.runGit)(repoRoot, [
71
37
  "config",
72
38
  "--local",
73
39
  "--unset-all",
74
40
  "remote.origin.push",
75
41
  "refs/notes/agentblame",
76
- ]);
77
- // Also remove fetch refspec if it exists (from older versions)
42
+ ]).catch(() => { }); // Ignore if not present
43
+ // Also remove fetch refspec if it exists
78
44
  await (0, gitCli_1.runGit)(repoRoot, [
79
45
  "config",
80
46
  "--local",
@@ -1 +1 @@
1
- {"version":3,"file":"gitConfig.js","sourceRoot":"","sources":["../../../src/lib/git/gitConfig.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAQH,gDAoCC;AAKD,sDAUC;AAKD,0CAwBC;AAtFD,qCAAkC;AAElC;;;GAGG;AACI,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,YAAY,GAAG,MAAM,IAAA,eAAM,EAAC,QAAQ,EAAE;YAC1C,QAAQ;YACR,WAAW;YACX,oBAAoB;SACrB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9C,+DAA+D;QAC/D,2CAA2C;QAC3C,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAChC,MAAM,IAAA,eAAM,EAAC,QAAQ,EAAE;gBACrB,QAAQ;gBACR,SAAS;gBACT,OAAO;gBACP,oBAAoB;gBACpB,cAAc;aACf,CAAC,CAAC;QACL,CAAC;QAED,sDAAsD;QACtD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAA,eAAM,EAAC,QAAQ,EAAE;gBACrB,QAAQ;gBACR,SAAS;gBACT,OAAO;gBACP,oBAAoB;gBACpB,uBAAuB;aACxB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,qBAAqB,CACzC,QAAgB;IAEhB,MAAM,UAAU,GAAG,MAAM,IAAA,eAAM,EAAC,QAAQ,EAAE;QACxC,QAAQ;QACR,WAAW;QACX,oBAAoB;KACrB,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,IAAI,CAAC;QACH,sBAAsB;QACtB,MAAM,IAAA,eAAM,EAAC,QAAQ,EAAE;YACrB,QAAQ;YACR,SAAS;YACT,aAAa;YACb,oBAAoB;YACpB,uBAAuB;SACxB,CAAC,CAAC;QAEH,+DAA+D;QAC/D,MAAM,IAAA,eAAM,EAAC,QAAQ,EAAE;YACrB,QAAQ;YACR,SAAS;YACT,aAAa;YACb,qBAAqB;YACrB,uBAAuB;SACxB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,wBAAwB;QAE5C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"gitConfig.js","sourceRoot":"","sources":["../../../src/lib/git/gitConfig.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AASH,gDAIC;AAKD,sDAIC;AAMD,0CAwBC;AAlDD,qCAAkC;AAElC;;;;GAIG;AACI,KAAK,UAAU,kBAAkB,CAAC,SAAiB;IACxD,wEAAwE;IACxE,6EAA6E;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,qBAAqB,CACzC,SAAiB;IAEjB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,IAAI,CAAC;QACH,yDAAyD;QACzD,MAAM,IAAA,eAAM,EAAC,QAAQ,EAAE;YACrB,QAAQ;YACR,SAAS;YACT,aAAa;YACb,oBAAoB;YACpB,uBAAuB;SACxB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,wBAAwB;QAE5C,yCAAyC;QACzC,MAAM,IAAA,eAAM,EAAC,QAAQ,EAAE;YACrB,QAAQ;YACR,SAAS;YACT,aAAa;YACb,qBAAqB;YACrB,uBAAuB;SACxB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,wBAAwB;QAE5C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -4,17 +4,9 @@
4
4
  * Install and manage hooks for Cursor and Claude Code.
5
5
  */
6
6
  export declare const AGENTBLAME_ROOT: string;
7
- export declare const AGENTBLAME_HOOKS_DIR: string;
8
- export declare const AGENTBLAME_LOGS_DIR: string;
9
- export declare const CURSOR_GENERATED_LOG: string;
10
- export declare const CLAUDE_GENERATED_LOG: string;
11
7
  export declare const CURSOR_HOOKS_CONFIG: string;
12
8
  export declare const CLAUDE_SETTINGS_DIR: string;
13
9
  export declare const CLAUDE_SETTINGS_FILE: string;
14
- /**
15
- * Ensure the ~/.agentblame/ directory structure exists.
16
- */
17
- export declare function ensureAgentBlameDirectories(): Promise<void>;
18
10
  /**
19
11
  * Install the Cursor hooks and configure ~/.cursor/hooks.json
20
12
  */
package/dist/lib/hooks.js CHANGED
@@ -38,8 +38,7 @@ var __importStar = (this && this.__importStar) || (function () {
38
38
  };
39
39
  })();
40
40
  Object.defineProperty(exports, "__esModule", { value: true });
41
- exports.CLAUDE_SETTINGS_FILE = exports.CLAUDE_SETTINGS_DIR = exports.CURSOR_HOOKS_CONFIG = exports.CLAUDE_GENERATED_LOG = exports.CURSOR_GENERATED_LOG = exports.AGENTBLAME_LOGS_DIR = exports.AGENTBLAME_HOOKS_DIR = exports.AGENTBLAME_ROOT = void 0;
42
- exports.ensureAgentBlameDirectories = ensureAgentBlameDirectories;
41
+ exports.CLAUDE_SETTINGS_FILE = exports.CLAUDE_SETTINGS_DIR = exports.CURSOR_HOOKS_CONFIG = exports.AGENTBLAME_ROOT = void 0;
43
42
  exports.installCursorHooks = installCursorHooks;
44
43
  exports.installClaudeHooks = installClaudeHooks;
45
44
  exports.areCursorHooksInstalled = areCursorHooksInstalled;
@@ -54,50 +53,30 @@ exports.uninstallClaudeHooks = uninstallClaudeHooks;
54
53
  const fs = __importStar(require("node:fs"));
55
54
  const path = __importStar(require("node:path"));
56
55
  const os = __importStar(require("node:os"));
56
+ const util_1 = require("./util");
57
57
  exports.AGENTBLAME_ROOT = path.join(os.homedir(), ".agentblame");
58
- exports.AGENTBLAME_HOOKS_DIR = path.join(exports.AGENTBLAME_ROOT, "hooks");
59
- exports.AGENTBLAME_LOGS_DIR = path.join(exports.AGENTBLAME_ROOT, "logs");
60
- // Log files
61
- exports.CURSOR_GENERATED_LOG = path.join(exports.AGENTBLAME_LOGS_DIR, "cursor-generated.log");
62
- exports.CLAUDE_GENERATED_LOG = path.join(exports.AGENTBLAME_LOGS_DIR, "claude-generated.log");
63
58
  // Cursor hooks.json location
64
59
  exports.CURSOR_HOOKS_CONFIG = path.join(os.homedir(), ".cursor", "hooks.json");
65
60
  // Claude Code settings.json location
66
61
  exports.CLAUDE_SETTINGS_DIR = path.join(os.homedir(), ".claude");
67
62
  exports.CLAUDE_SETTINGS_FILE = path.join(exports.CLAUDE_SETTINGS_DIR, "settings.json");
68
- /**
69
- * Ensure the ~/.agentblame/ directory structure exists.
70
- */
71
- async function ensureAgentBlameDirectories() {
72
- await fs.promises.mkdir(exports.AGENTBLAME_HOOKS_DIR, { recursive: true });
73
- await fs.promises.mkdir(exports.AGENTBLAME_LOGS_DIR, { recursive: true });
74
- }
75
- /**
76
- * Create an empty file if it doesn't exist.
77
- */
78
- async function touchFile(filePath) {
79
- try {
80
- const handle = await fs.promises.open(filePath, "a");
81
- await handle.close();
82
- }
83
- catch {
84
- // Ignore errors
85
- }
86
- }
87
63
  /**
88
64
  * Find the capture script path.
89
- * Looks in common locations for the agentblame hooks package.
65
+ * Looks in common locations for the compiled capture.js script.
90
66
  */
91
67
  function findCaptureScript() {
92
- const possiblePaths = [
93
- // npm global install
94
- path.join(os.homedir(), ".npm-global", "lib", "node_modules", "agentblame", "packages", "hooks", "src", "capture.ts"),
95
- // Local development (monorepo)
96
- path.join(__dirname, "..", "..", "hooks", "src", "capture.ts"),
97
- // Installed as dependency
98
- path.join(__dirname, "..", "node_modules", "@mesadev", "agentblame-hooks", "src", "capture.ts"),
68
+ // Use getDistDir to find the dist/ directory, then look for capture.js
69
+ const distDir = (0, util_1.getDistDir)(__dirname);
70
+ const captureJs = path.join(distDir, "capture.js");
71
+ if (fs.existsSync(captureJs)) {
72
+ return captureJs;
73
+ }
74
+ // Fallback: check npm global install locations
75
+ const globalPaths = [
76
+ path.join(os.homedir(), ".npm-global", "lib", "node_modules", "@mesadev", "agentblame", "dist", "capture.js"),
77
+ path.join("/usr", "local", "lib", "node_modules", "@mesadev", "agentblame", "dist", "capture.js"),
99
78
  ];
100
- for (const p of possiblePaths) {
79
+ for (const p of globalPaths) {
101
80
  if (fs.existsSync(p)) {
102
81
  return p;
103
82
  }
@@ -125,8 +104,6 @@ async function installCursorHooks(captureScript) {
125
104
  return false;
126
105
  }
127
106
  try {
128
- await ensureAgentBlameDirectories();
129
- await touchFile(exports.CURSOR_GENERATED_LOG);
130
107
  // Update ~/.cursor/hooks.json
131
108
  await fs.promises.mkdir(path.dirname(exports.CURSOR_HOOKS_CONFIG), {
132
109
  recursive: true,
@@ -179,8 +156,6 @@ async function installClaudeHooks(captureScript) {
179
156
  return false;
180
157
  }
181
158
  try {
182
- await ensureAgentBlameDirectories();
183
- await touchFile(exports.CLAUDE_GENERATED_LOG);
184
159
  // Update ~/.claude/settings.json
185
160
  await fs.promises.mkdir(exports.CLAUDE_SETTINGS_DIR, { recursive: true });
186
161
  let config = {};
@@ -256,20 +231,16 @@ async function installAllHooks(captureScript) {
256
231
  async function installGlobalGitHook() {
257
232
  const globalHooksDir = path.join(exports.AGENTBLAME_ROOT, "git-hooks");
258
233
  const hookPath = path.join(globalHooksDir, "post-commit");
259
- // Find the CLI script
260
- const cliScript = path.resolve(__dirname, "..", "..", "cli", "src", "index.ts");
261
- // The hook auto-configures push refspec on first run in each repo
234
+ // Find the CLI script in the dist/ directory (always run compiled .js)
235
+ const distDir = (0, util_1.getDistDir)(__dirname);
236
+ const cliScript = path.resolve(distDir, "index.js");
262
237
  const hookContent = `#!/bin/sh
263
238
  # Agent Blame - Auto-process commits for AI attribution
264
- # Auto-configure notes push if not already set up
265
- if ! git config --get-all remote.origin.push 2>/dev/null | grep -q "refs/notes/agentblame"; then
266
- # Add default branch push first if no push refspec exists
267
- if [ -z "$(git config --get-all remote.origin.push 2>/dev/null)" ]; then
268
- git config --local --add remote.origin.push "refs/heads/*" 2>/dev/null || true
269
- fi
270
- git config --local --add remote.origin.push "refs/notes/agentblame" 2>/dev/null || true
271
- fi
239
+ # Process the commit and attach attribution notes
272
240
  bun run "${cliScript}" process HEAD 2>/dev/null || true
241
+
242
+ # Push notes to remote (silently fails if no notes or no remote)
243
+ git push origin refs/notes/agentblame:refs/notes/agentblame 2>/dev/null || true
273
244
  `;
274
245
  try {
275
246
  await fs.promises.mkdir(globalHooksDir, { recursive: true });
@@ -313,11 +284,16 @@ async function uninstallGlobalGitHook() {
313
284
  async function installGitHook(repoRoot) {
314
285
  const hooksDir = path.join(repoRoot, ".git", "hooks");
315
286
  const hookPath = path.join(hooksDir, "post-commit");
316
- // Find the CLI script
317
- const cliScript = path.resolve(__dirname, "..", "..", "cli", "src", "index.ts");
287
+ // Find the CLI script in the dist/ directory (always run compiled .js)
288
+ const distDir = (0, util_1.getDistDir)(__dirname);
289
+ const cliScript = path.resolve(distDir, "index.js");
318
290
  const hookContent = `#!/bin/sh
319
291
  # Agent Blame - Auto-process commits for AI attribution
292
+ # Process the commit and attach attribution notes
320
293
  bun run "${cliScript}" process HEAD 2>/dev/null || true
294
+
295
+ # Push notes to remote (silently fails if no notes or no remote)
296
+ git push origin refs/notes/agentblame:refs/notes/agentblame 2>/dev/null || true
321
297
  `;
322
298
  try {
323
299
  await fs.promises.mkdir(hooksDir, { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/lib/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/lib/hooks.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export * from "./types";
2
2
  export * from "./util";
3
- export * from "./db";
3
+ export * from "./database";
4
4
  export * from "./diff";
5
5
  export * from "./hooks";
6
6
  export * from "./git/gitCli";
package/dist/lib/index.js CHANGED
@@ -18,8 +18,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  __exportStar(require("./types"), exports);
19
19
  // Utilities
20
20
  __exportStar(require("./util"), exports);
21
- // Database/logs
22
- __exportStar(require("./db"), exports);
21
+ // Database
22
+ __exportStar(require("./database"), exports);
23
23
  // Diff utilities
24
24
  __exportStar(require("./diff"), exports);
25
25
  // Hook installation
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,0CAAwB;AAExB,YAAY;AACZ,yCAAuB;AAEvB,gBAAgB;AAChB,uCAAqB;AAErB,iBAAiB;AACjB,yCAAuB;AAEvB,oBAAoB;AACpB,0CAAwB;AAExB,iBAAiB;AACjB,+CAA6B;AAC7B,gDAA8B;AAC9B,iDAA+B;AAC/B,iDAA+B;AAC/B,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,QAAQ;AACR,0CAAwB;AAExB,YAAY;AACZ,yCAAuB;AAEvB,WAAW;AACX,6CAA2B;AAE3B,iBAAiB;AACjB,yCAAuB;AAEvB,oBAAoB;AACpB,0CAAwB;AAExB,iBAAiB;AACjB,+CAA6B;AAC7B,gDAA8B;AAC9B,iDAA+B;AAC/B,iDAA+B;AAC/B,kDAAgC"}
@@ -7,10 +7,6 @@
7
7
  * AI provider that generated the code
8
8
  */
9
9
  export type AiProvider = "cursor" | "claude_code";
10
- /**
11
- * Source of the AI edit (how it was triggered)
12
- */
13
- export type AiSource = "composer" | "agent" | "inline" | "unknown";
14
10
  /**
15
11
  * Attribution category - we only track AI-generated code
16
12
  * Human is the default for unattributed code
@@ -20,41 +16,6 @@ export type AttributionCategory = "ai_generated";
20
16
  * How the match was determined
21
17
  */
22
18
  export type MatchType = "exact_hash" | "normalized_hash" | "line_in_ai_content" | "ai_content_in_line" | "move_detected";
23
- /**
24
- * A single edit from Cursor
25
- */
26
- export interface CursorEdit {
27
- old_string: string;
28
- new_string: string;
29
- }
30
- /**
31
- * Raw payload from Cursor hooks (afterFileEdit)
32
- */
33
- export interface CursorHookPayload {
34
- file_path: string;
35
- edits: CursorEdit[];
36
- model?: string;
37
- conversation_id?: string;
38
- generation_id?: string;
39
- cursor_version?: string;
40
- workspace_roots?: string[];
41
- }
42
- /**
43
- * Raw payload from Claude Code hooks (PostToolUse)
44
- */
45
- export interface ClaudeHookPayload {
46
- tool_name?: string;
47
- tool_input?: {
48
- file_path?: string;
49
- old_string?: string;
50
- new_string?: string;
51
- content?: string;
52
- };
53
- file_path?: string;
54
- old_string?: string;
55
- new_string?: string;
56
- content?: string;
57
- }
58
19
  /**
59
20
  * A single line captured from an AI edit
60
21
  */
@@ -63,31 +24,6 @@ export interface CapturedLine {
63
24
  hash: string;
64
25
  hash_normalized: string;
65
26
  }
66
- /**
67
- * A captured AI edit entry - stored in log files
68
- */
69
- export interface CapturedEdit {
70
- timestamp: string;
71
- provider: AiProvider;
72
- file_path: string;
73
- model: string | null;
74
- lines: CapturedLine[];
75
- content: string;
76
- content_hash: string;
77
- content_hash_normalized: string;
78
- edit_type: "addition" | "modification" | "replacement";
79
- old_content?: string;
80
- status?: "pending" | "matched";
81
- matched_commit?: string;
82
- matched_at?: string;
83
- }
84
- /**
85
- * Pending edit with source tracking for marking as matched
86
- */
87
- export interface PendingEdit extends CapturedEdit {
88
- source_log: string;
89
- line_number: number;
90
- }
91
27
  /**
92
28
  * A hunk of code from a git diff
93
29
  */
@@ -1,3 +1,9 @@
1
+ /**
2
+ * Get the dist directory (where compiled .js files are)
3
+ * Always resolves to the dist/ directory relative to the current file.
4
+ * @param dirname - Pass __dirname from the calling module
5
+ */
6
+ export declare function getDistDir(dirname: string): string;
1
7
  /**
2
8
  * Compute SHA256 hash of content
3
9
  */
@@ -10,15 +16,3 @@ export declare function computeNormalizedHash(content: string): string;
10
16
  * Get the agentblame directory path (~/.agentblame)
11
17
  */
12
18
  export declare function getAgentBlameDir(): string;
13
- /**
14
- * Get the default database path
15
- */
16
- export declare function getDefaultDbPath(): string;
17
- /**
18
- * Get the logs directory path
19
- */
20
- export declare function getLogsDir(): string;
21
- /**
22
- * Get the hooks directory path
23
- */
24
- export declare function getHooksDir(): string;
package/dist/lib/util.js CHANGED
@@ -33,13 +33,28 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.getDistDir = getDistDir;
36
37
  exports.computeContentHash = computeContentHash;
37
38
  exports.computeNormalizedHash = computeNormalizedHash;
38
39
  exports.getAgentBlameDir = getAgentBlameDir;
39
- exports.getDefaultDbPath = getDefaultDbPath;
40
- exports.getLogsDir = getLogsDir;
41
- exports.getHooksDir = getHooksDir;
42
40
  const crypto = __importStar(require("node:crypto"));
41
+ const path = __importStar(require("node:path"));
42
+ /**
43
+ * Get the dist directory (where compiled .js files are)
44
+ * Always resolves to the dist/ directory relative to the current file.
45
+ * @param dirname - Pass __dirname from the calling module
46
+ */
47
+ function getDistDir(dirname) {
48
+ // Find the dist/ directory in the path
49
+ const parts = dirname.split(path.sep);
50
+ const distIndex = parts.lastIndexOf("dist");
51
+ if (distIndex !== -1) {
52
+ // Already in dist/, return the dist root
53
+ return parts.slice(0, distIndex + 1).join(path.sep);
54
+ }
55
+ // Fallback: assume we're in src/ during development, point to sibling dist/
56
+ return path.resolve(dirname, "..", "dist");
57
+ }
43
58
  /**
44
59
  * Compute SHA256 hash of content
45
60
  */
@@ -50,7 +65,6 @@ function computeContentHash(content) {
50
65
  * Compute normalized hash (whitespace-stripped) for formatter tolerance
51
66
  */
52
67
  function computeNormalizedHash(content) {
53
- // Remove all whitespace for normalized comparison
54
68
  const normalized = content.replace(/\s+/g, "");
55
69
  return `sha256:${crypto.createHash("sha256").update(normalized).digest("hex")}`;
56
70
  }
@@ -61,22 +75,4 @@ function getAgentBlameDir() {
61
75
  const home = process.env.HOME || process.env.USERPROFILE || "";
62
76
  return `${home}/.agentblame`;
63
77
  }
64
- /**
65
- * Get the default database path
66
- */
67
- function getDefaultDbPath() {
68
- return `${getAgentBlameDir()}/attribution.db`;
69
- }
70
- /**
71
- * Get the logs directory path
72
- */
73
- function getLogsDir() {
74
- return `${getAgentBlameDir()}/logs`;
75
- }
76
- /**
77
- * Get the hooks directory path
78
- */
79
- function getHooksDir() {
80
- return `${getAgentBlameDir()}/hooks`;
81
- }
82
78
  //# sourceMappingURL=util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/lib/util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,gDAEC;AAKD,sDAIC;AAKD,4CAGC;AAKD,4CAEC;AAKD,gCAEC;AAKD,kCAEC;AA7CD,oDAAsC;AAEtC;;GAEG;AACH,SAAgB,kBAAkB,CAAC,OAAe;IAChD,OAAO,UAAU,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAe;IACnD,kDAAkD;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,UAAU,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAC/D,OAAO,GAAG,IAAI,cAAc,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,OAAO,GAAG,gBAAgB,EAAE,iBAAiB,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU;IACxB,OAAO,GAAG,gBAAgB,EAAE,OAAO,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IACzB,OAAO,GAAG,gBAAgB,EAAE,QAAQ,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/lib/util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,gCAUC;AAKD,gDAEC;AAKD,sDAGC;AAKD,4CAGC;AAzCD,oDAAsC;AACtC,gDAAkC;AAElC;;;;GAIG;AACH,SAAgB,UAAU,CAAC,OAAe;IACxC,uCAAuC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,yCAAyC;QACzC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IACD,4EAA4E;IAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,SAAgB,kBAAkB,CAAC,OAAe;IAChD,OAAO,UAAU,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC/E,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAe;IACnD,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,UAAU,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAClF,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;IAC/D,OAAO,GAAG,IAAI,cAAc,CAAC;AAC/B,CAAC"}
package/dist/process.js CHANGED
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.processCommit = processCommit;
9
9
  exports.runProcess = runProcess;
10
10
  const lib_1 = require("./lib");
11
+ const database_1 = require("./lib/database");
11
12
  // Terminal colors
12
13
  const c = {
13
14
  reset: "\x1b[0m",
@@ -21,24 +22,18 @@ const c = {
21
22
  };
22
23
  /**
23
24
  * Find a match for an original location (before move)
25
+ * Used for move detection - checks if the original location had AI-attributed code
24
26
  */
25
- function findMatchForOriginalLocation(originalPath, originalLine, pendingEdits, hashIndex) {
26
- for (const edit of pendingEdits) {
27
- const editFileName = edit.file_path.split("/").pop();
28
- const originalFileName = originalPath.split("/").pop();
29
- if (editFileName !== originalFileName &&
30
- !edit.file_path.endsWith(originalPath) &&
31
- !originalPath.endsWith(editFileName || "")) {
32
- continue;
33
- }
34
- for (const line of edit.lines || []) {
27
+ function findMatchForOriginalLocation(originalPath) {
28
+ // Find edits that match the original file
29
+ const edits = (0, database_1.findEditsByFile)(originalPath);
30
+ for (const edit of edits) {
31
+ const lines = (0, database_1.getEditLines)(edit.id);
32
+ if (lines.length > 0) {
35
33
  return {
36
- edit,
37
- line: {
38
- content: line.content,
39
- hash: line.hash,
40
- hash_normalized: line.hash_normalized,
41
- },
34
+ editId: edit.id,
35
+ provider: edit.provider,
36
+ model: edit.model,
42
37
  };
43
38
  }
44
39
  }
@@ -92,30 +87,38 @@ function mergeConsecutiveLines(lines) {
92
87
  */
93
88
  async function matchCommit(repoRoot, sha) {
94
89
  const hunks = await (0, lib_1.getCommitHunks)(repoRoot, sha);
95
- const pendingEdits = (0, lib_1.readPendingEdits)();
96
- const hashIndex = (0, lib_1.buildLineHashIndex)(pendingEdits);
97
90
  const moves = await (0, lib_1.getCommitMoves)(repoRoot, sha);
98
91
  const moveIndex = (0, lib_1.buildMoveIndex)(moves);
99
92
  const lineAttributions = [];
100
- const matchedEditKeys = new Map();
93
+ const matchedEditIds = new Set();
101
94
  let totalLines = 0;
102
95
  let unmatchedLines = 0;
103
96
  for (const hunk of hunks) {
104
97
  for (const line of hunk.lines) {
105
98
  totalLines++;
106
- let match = (0, lib_1.findLineMatch)(line.content, line.hash, line.hash_normalized, hunk.path, hashIndex, pendingEdits);
99
+ // Use SQLite-based matching (O(log n) per lookup via index)
100
+ let match = (0, database_1.findLineMatch)(line.content, line.hash, line.hash_normalized, hunk.path);
101
+ // If no direct match, check for moved code
107
102
  if (!match) {
108
103
  const moveKey = `${hunk.path}:${line.line_number}`;
109
104
  const moveInfo = moveIndex.get(moveKey);
110
105
  if (moveInfo) {
111
- const originalMatch = findMatchForOriginalLocation(moveInfo.fromPath, moveInfo.fromLine, pendingEdits, hashIndex);
106
+ const originalMatch = findMatchForOriginalLocation(moveInfo.fromPath);
112
107
  if (originalMatch) {
113
- match = {
114
- edit: originalMatch.edit,
115
- line: originalMatch.line,
116
- matchType: "move_detected",
108
+ lineAttributions.push({
109
+ path: hunk.path,
110
+ line: line.line_number,
111
+ provider: originalMatch.provider,
112
+ model: originalMatch.model,
117
113
  confidence: 0.85,
118
- };
114
+ match_type: "move_detected",
115
+ content_hash: line.hash,
116
+ });
117
+ // Track for marking as matched
118
+ if (originalMatch.editId) {
119
+ matchedEditIds.add(originalMatch.editId);
120
+ }
121
+ continue;
119
122
  }
120
123
  }
121
124
  }
@@ -129,19 +132,19 @@ async function matchCommit(repoRoot, sha) {
129
132
  match_type: match.matchType,
130
133
  content_hash: line.hash,
131
134
  });
132
- const key = match.edit.source_log;
133
- if (!matchedEditKeys.has(key)) {
134
- matchedEditKeys.set(key, []);
135
+ // Track edit ID for marking as matched
136
+ if (match.edit.status !== "matched") {
137
+ matchedEditIds.add(match.edit.id);
135
138
  }
136
- matchedEditKeys.get(key).push(match.edit.line_number);
137
139
  }
138
140
  else {
139
141
  unmatchedLines++;
140
142
  }
141
143
  }
142
144
  }
143
- for (const [sourceLog, lineNumbers] of matchedEditKeys) {
144
- (0, lib_1.markEditsAsMatched)(sourceLog, lineNumbers, sha);
145
+ // Mark all matched edits in a single transaction
146
+ if (matchedEditIds.size > 0) {
147
+ (0, database_1.markEditsAsMatched)(Array.from(matchedEditIds), sha);
145
148
  }
146
149
  const rangeAttributions = mergeConsecutiveLines(lineAttributions);
147
150
  return {