@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.
- package/README.md +84 -0
- package/dist/capture.js +21 -18
- package/dist/capture.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +65 -9
- package/dist/index.js.map +1 -1
- package/dist/lib/database.d.ts +124 -0
- package/dist/lib/database.js +490 -0
- package/dist/lib/database.js.map +1 -0
- package/dist/lib/db.d.ts +2 -1
- package/dist/lib/db.js +4 -3
- package/dist/lib/db.js.map +1 -1
- package/dist/lib/git/gitConfig.d.ts +10 -9
- package/dist/lib/git/gitConfig.js +17 -51
- package/dist/lib/git/gitConfig.js.map +1 -1
- package/dist/lib/hooks.d.ts +0 -8
- package/dist/lib/hooks.js +28 -52
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js +2 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/types.d.ts +0 -64
- package/dist/lib/util.d.ts +6 -12
- package/dist/lib/util.js +18 -22
- package/dist/lib/util.js.map +1 -1
- package/dist/process.js +35 -32
- package/dist/process.js.map +1 -1
- package/package.json +5 -3
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Git configuration for Agent Blame notes
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
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
|
|
16
|
-
*
|
|
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(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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(
|
|
57
|
-
|
|
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
|
|
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
|
|
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"}
|
package/dist/lib/hooks.d.ts
CHANGED
|
@@ -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.
|
|
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
|
|
65
|
+
* Looks in common locations for the compiled capture.js script.
|
|
90
66
|
*/
|
|
91
67
|
function findCaptureScript() {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
|
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
|
|
261
|
-
|
|
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
|
-
#
|
|
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
|
|
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 });
|
package/dist/lib/hooks.js.map
CHANGED
|
@@ -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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"}
|
package/dist/lib/index.d.ts
CHANGED
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
|
|
22
|
-
__exportStar(require("./
|
|
21
|
+
// Database
|
|
22
|
+
__exportStar(require("./database"), exports);
|
|
23
23
|
// Diff utilities
|
|
24
24
|
__exportStar(require("./diff"), exports);
|
|
25
25
|
// Hook installation
|
package/dist/lib/index.js.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -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
|
*/
|
package/dist/lib/util.d.ts
CHANGED
|
@@ -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
|
package/dist/lib/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/lib/util.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
38
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
106
|
+
const originalMatch = findMatchForOriginalLocation(moveInfo.fromPath);
|
|
112
107
|
if (originalMatch) {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
line:
|
|
116
|
-
|
|
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
|
-
|
|
133
|
-
if (
|
|
134
|
-
|
|
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
|
-
|
|
144
|
-
|
|
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 {
|