@mesadev/agentblame 0.1.1 → 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/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
package/dist/capture.js
CHANGED
|
@@ -48,17 +48,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
48
48
|
};
|
|
49
49
|
})();
|
|
50
50
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
-
const fs = __importStar(require("node:fs"));
|
|
52
|
-
const path = __importStar(require("node:path"));
|
|
53
51
|
const crypto = __importStar(require("node:crypto"));
|
|
54
52
|
const diff_1 = require("diff");
|
|
53
|
+
const database_1 = require("./lib/database");
|
|
55
54
|
// =============================================================================
|
|
56
55
|
// Utilities
|
|
57
56
|
// =============================================================================
|
|
58
|
-
function getAgentBlameLogsDir() {
|
|
59
|
-
const home = process.env.HOME || process.env.USERPROFILE || "";
|
|
60
|
-
return path.join(home, ".agentblame", "logs");
|
|
61
|
-
}
|
|
62
57
|
function computeHash(content) {
|
|
63
58
|
return `sha256:${crypto.createHash("sha256").update(content).digest("hex")}`;
|
|
64
59
|
}
|
|
@@ -128,12 +123,22 @@ function parseArgs() {
|
|
|
128
123
|
}
|
|
129
124
|
return { provider, event };
|
|
130
125
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
126
|
+
/**
|
|
127
|
+
* Save an edit to the SQLite database
|
|
128
|
+
*/
|
|
129
|
+
function saveEdit(edit) {
|
|
130
|
+
(0, database_1.insertEdit)({
|
|
131
|
+
timestamp: edit.timestamp,
|
|
132
|
+
provider: edit.provider,
|
|
133
|
+
file_path: edit.file_path,
|
|
134
|
+
model: edit.model,
|
|
135
|
+
content: edit.content,
|
|
136
|
+
content_hash: edit.content_hash,
|
|
137
|
+
content_hash_normalized: edit.content_hash_normalized,
|
|
138
|
+
edit_type: edit.edit_type,
|
|
139
|
+
old_content: edit.old_content,
|
|
140
|
+
lines: edit.lines,
|
|
141
|
+
});
|
|
137
142
|
}
|
|
138
143
|
function processCursorPayload(payload, event) {
|
|
139
144
|
const edits = [];
|
|
@@ -262,15 +267,13 @@ async function main() {
|
|
|
262
267
|
if (provider === "cursor") {
|
|
263
268
|
const eventName = event || data.hook_event_name || "afterFileEdit";
|
|
264
269
|
edits = processCursorPayload(payload, eventName);
|
|
265
|
-
for (const edit of edits) {
|
|
266
|
-
appendToLog("cursor-generated.log", edit);
|
|
267
|
-
}
|
|
268
270
|
}
|
|
269
271
|
else if (provider === "claude") {
|
|
270
272
|
edits = processClaudePayload(payload);
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
273
|
+
}
|
|
274
|
+
// Save all edits to SQLite database
|
|
275
|
+
for (const edit of edits) {
|
|
276
|
+
saveEdit(edit);
|
|
274
277
|
}
|
|
275
278
|
process.exit(0);
|
|
276
279
|
}
|
package/dist/capture.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":";;AACA;;;;;;;;;;;;;GAaG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../src/capture.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
2
|
"use strict";
|
|
3
3
|
/**
|
|
4
4
|
* Agent Blame CLI
|
|
@@ -43,10 +43,23 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
43
43
|
})();
|
|
44
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
45
|
const path = __importStar(require("node:path"));
|
|
46
|
+
const node_child_process_1 = require("node:child_process");
|
|
46
47
|
const blame_1 = require("./blame");
|
|
47
48
|
const sync_1 = require("./sync");
|
|
48
49
|
const process_1 = require("./process");
|
|
49
50
|
const lib_1 = require("./lib");
|
|
51
|
+
/**
|
|
52
|
+
* Check if Bun is installed and available in PATH.
|
|
53
|
+
*/
|
|
54
|
+
function isBunInstalled() {
|
|
55
|
+
try {
|
|
56
|
+
(0, node_child_process_1.execSync)("bun --version", { stdio: "pipe" });
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
50
63
|
const args = process.argv.slice(2);
|
|
51
64
|
const command = args[0];
|
|
52
65
|
async function main() {
|
|
@@ -69,6 +82,9 @@ async function main() {
|
|
|
69
82
|
case "status":
|
|
70
83
|
await runStatus();
|
|
71
84
|
break;
|
|
85
|
+
case "cleanup":
|
|
86
|
+
await runCleanup();
|
|
87
|
+
break;
|
|
72
88
|
case "--help":
|
|
73
89
|
case "-h":
|
|
74
90
|
case undefined:
|
|
@@ -92,6 +108,8 @@ Usage:
|
|
|
92
108
|
agentblame blame <file> Show AI attribution for a file
|
|
93
109
|
agentblame blame --summary Show summary only
|
|
94
110
|
agentblame blame --json Output as JSON
|
|
111
|
+
agentblame status Show pending AI edits
|
|
112
|
+
agentblame cleanup Remove old entries from database
|
|
95
113
|
|
|
96
114
|
Examples:
|
|
97
115
|
agentblame install # Current repo only (recommended)
|
|
@@ -101,9 +119,40 @@ Examples:
|
|
|
101
119
|
}
|
|
102
120
|
async function runInstall(args) {
|
|
103
121
|
const isGlobal = args.includes("--global");
|
|
122
|
+
// Check if Bun is installed (required for hooks)
|
|
123
|
+
if (!isBunInstalled()) {
|
|
124
|
+
const installCmd = process.platform === "win32"
|
|
125
|
+
? "powershell -c \"irm bun.sh/install.ps1 | iex\""
|
|
126
|
+
: "curl -fsSL https://bun.sh/install | bash";
|
|
127
|
+
console.error("\n┌─────────────────────────────────────────────────────────────┐");
|
|
128
|
+
console.error("│ Error: Bun is required but not installed │");
|
|
129
|
+
console.error("├─────────────────────────────────────────────────────────────┤");
|
|
130
|
+
console.error("│ │");
|
|
131
|
+
console.error("│ Agent Blame uses Bun to run hooks for Cursor and Claude │");
|
|
132
|
+
console.error("│ Code. Please install Bun first: │");
|
|
133
|
+
console.error("│ │");
|
|
134
|
+
console.error(`│ ${installCmd.padEnd(55)}│`);
|
|
135
|
+
console.error("│ │");
|
|
136
|
+
console.error("│ Then restart your terminal and run this command again. │");
|
|
137
|
+
console.error("│ │");
|
|
138
|
+
console.error("│ Learn more: https://bun.sh │");
|
|
139
|
+
console.error("└─────────────────────────────────────────────────────────────┘\n");
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
104
142
|
console.log(`Agent Blame Setup${isGlobal ? " (Global)" : ""}\n`);
|
|
105
|
-
//
|
|
106
|
-
|
|
143
|
+
// Initialize SQLite database
|
|
144
|
+
try {
|
|
145
|
+
(0, lib_1.initDatabase)();
|
|
146
|
+
console.log(" Database: initialized");
|
|
147
|
+
}
|
|
148
|
+
catch (err) {
|
|
149
|
+
console.log(" Database: failed to initialize");
|
|
150
|
+
console.error(err);
|
|
151
|
+
process.exit(1);
|
|
152
|
+
}
|
|
153
|
+
// Find capture script in the dist/ directory (always run compiled .js)
|
|
154
|
+
const distDir = (0, lib_1.getDistDir)(__dirname);
|
|
155
|
+
const captureScript = path.resolve(distDir, "capture.js");
|
|
107
156
|
// Always install/reinstall editor hooks
|
|
108
157
|
const cursorSuccess = await (0, lib_1.installCursorHooks)(captureScript);
|
|
109
158
|
console.log(cursorSuccess ? " Cursor hooks: installed" : " Cursor hooks: failed");
|
|
@@ -217,22 +266,29 @@ async function runSync(args) {
|
|
|
217
266
|
}
|
|
218
267
|
async function runStatus() {
|
|
219
268
|
console.log("\nAgent Blame Status\n");
|
|
220
|
-
const
|
|
221
|
-
console.log(`Pending AI edits: ${
|
|
222
|
-
if (
|
|
269
|
+
const pendingCount = (0, lib_1.getPendingEditCount)();
|
|
270
|
+
console.log(`Pending AI edits: ${pendingCount}`);
|
|
271
|
+
if (pendingCount > 0) {
|
|
223
272
|
console.log("\nRecent pending edits:");
|
|
224
|
-
const recent =
|
|
273
|
+
const recent = (0, lib_1.getRecentPendingEdits)(5);
|
|
225
274
|
for (const edit of recent) {
|
|
226
275
|
const time = new Date(edit.timestamp).toLocaleTimeString();
|
|
227
276
|
const file = edit.file_path.split("/").pop();
|
|
228
277
|
console.log(` [${edit.provider}] ${file} at ${time}`);
|
|
229
278
|
}
|
|
230
|
-
if (
|
|
231
|
-
console.log(` ... and ${
|
|
279
|
+
if (pendingCount > 5) {
|
|
280
|
+
console.log(` ... and ${pendingCount - 5} more`);
|
|
232
281
|
}
|
|
233
282
|
}
|
|
234
283
|
console.log("");
|
|
235
284
|
}
|
|
285
|
+
async function runCleanup() {
|
|
286
|
+
console.log("\nAgent Blame Cleanup\n");
|
|
287
|
+
const result = (0, lib_1.cleanupOldEntries)();
|
|
288
|
+
console.log(` Removed: ${result.removed} old entries`);
|
|
289
|
+
console.log(` Kept: ${result.kept} entries`);
|
|
290
|
+
console.log("\nCleanup complete!");
|
|
291
|
+
}
|
|
236
292
|
main().catch((err) => {
|
|
237
293
|
console.error(err);
|
|
238
294
|
process.exit(1);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,gDAAkC;AAClC,mCAAgC;AAChC,iCAA8B;AAC9B,uCAAuC;AACvC,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Database Module
|
|
3
|
+
*
|
|
4
|
+
* Handles persistent storage of AI edits for attribution matching.
|
|
5
|
+
* Uses Bun's built-in SQLite for high-performance lookups.
|
|
6
|
+
*/
|
|
7
|
+
import { Database } from "bun:sqlite";
|
|
8
|
+
import type { AiProvider, MatchType, CapturedLine } from "./types";
|
|
9
|
+
export interface DbEdit {
|
|
10
|
+
id: number;
|
|
11
|
+
timestamp: string;
|
|
12
|
+
provider: AiProvider;
|
|
13
|
+
file_path: string;
|
|
14
|
+
model: string | null;
|
|
15
|
+
content: string;
|
|
16
|
+
content_hash: string;
|
|
17
|
+
content_hash_normalized: string;
|
|
18
|
+
edit_type: string;
|
|
19
|
+
old_content: string | null;
|
|
20
|
+
status: string;
|
|
21
|
+
matched_commit: string | null;
|
|
22
|
+
matched_at: string | null;
|
|
23
|
+
}
|
|
24
|
+
export interface DbLine {
|
|
25
|
+
id: number;
|
|
26
|
+
edit_id: number;
|
|
27
|
+
content: string;
|
|
28
|
+
hash: string;
|
|
29
|
+
hash_normalized: string;
|
|
30
|
+
}
|
|
31
|
+
export interface LineMatchResult {
|
|
32
|
+
edit: DbEdit;
|
|
33
|
+
line: DbLine;
|
|
34
|
+
matchType: MatchType;
|
|
35
|
+
confidence: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get the database file path
|
|
39
|
+
*/
|
|
40
|
+
export declare function getDbPath(): string;
|
|
41
|
+
/**
|
|
42
|
+
* Initialize and return the database connection
|
|
43
|
+
*/
|
|
44
|
+
export declare function getDatabase(): Database;
|
|
45
|
+
/**
|
|
46
|
+
* Close the database connection
|
|
47
|
+
*/
|
|
48
|
+
export declare function closeDatabase(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Initialize database (creates file and schema if needed)
|
|
51
|
+
* Call this during install to ensure DB is ready
|
|
52
|
+
*/
|
|
53
|
+
export declare function initDatabase(): void;
|
|
54
|
+
export interface InsertEditParams {
|
|
55
|
+
timestamp: string;
|
|
56
|
+
provider: AiProvider;
|
|
57
|
+
file_path: string;
|
|
58
|
+
model: string | null;
|
|
59
|
+
content: string;
|
|
60
|
+
content_hash: string;
|
|
61
|
+
content_hash_normalized: string;
|
|
62
|
+
edit_type: string;
|
|
63
|
+
old_content?: string;
|
|
64
|
+
lines: CapturedLine[];
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Insert a new AI edit into the database
|
|
68
|
+
*/
|
|
69
|
+
export declare function insertEdit(params: InsertEditParams): number;
|
|
70
|
+
/**
|
|
71
|
+
* Find a line match by exact hash
|
|
72
|
+
* Returns the edit and line if found, with same-file matches preferred
|
|
73
|
+
*/
|
|
74
|
+
export declare function findByExactHash(hash: string, filePath: string): LineMatchResult | null;
|
|
75
|
+
/**
|
|
76
|
+
* Find a line match by normalized hash
|
|
77
|
+
*/
|
|
78
|
+
export declare function findByNormalizedHash(hashNormalized: string, filePath: string): LineMatchResult | null;
|
|
79
|
+
/**
|
|
80
|
+
* Find edits for a specific file (used for substring matching fallback)
|
|
81
|
+
*/
|
|
82
|
+
export declare function findEditsByFile(filePath: string): DbEdit[];
|
|
83
|
+
/**
|
|
84
|
+
* Get lines for a specific edit
|
|
85
|
+
*/
|
|
86
|
+
export declare function getEditLines(editId: number): DbLine[];
|
|
87
|
+
/**
|
|
88
|
+
* Find match using substring containment (Strategy 3 & 4)
|
|
89
|
+
* Only called when hash matches fail
|
|
90
|
+
*/
|
|
91
|
+
export declare function findBySubstring(lineContent: string, filePath: string): LineMatchResult | null;
|
|
92
|
+
/**
|
|
93
|
+
* Find a line match using the priority strategy:
|
|
94
|
+
* 1. Exact hash match (1.0)
|
|
95
|
+
* 2. Normalized hash match (0.95)
|
|
96
|
+
* 3. Line contained in AI content (0.9)
|
|
97
|
+
* 4. AI content contained in line (0.85)
|
|
98
|
+
*/
|
|
99
|
+
export declare function findLineMatch(lineContent: string, lineHash: string, lineHashNormalized: string, filePath: string): LineMatchResult | null;
|
|
100
|
+
/**
|
|
101
|
+
* Mark an edit as matched to a commit
|
|
102
|
+
*/
|
|
103
|
+
export declare function markEditAsMatched(editId: number, commitSha: string): void;
|
|
104
|
+
/**
|
|
105
|
+
* Mark multiple edits as matched
|
|
106
|
+
*/
|
|
107
|
+
export declare function markEditsAsMatched(editIds: number[], commitSha: string): void;
|
|
108
|
+
/**
|
|
109
|
+
* Clean up old entries
|
|
110
|
+
* - Removes matched entries older than maxAgeDays
|
|
111
|
+
* - Removes unmatched entries older than expireDays
|
|
112
|
+
*/
|
|
113
|
+
export declare function cleanupOldEntries(maxAgeDays?: number, expireDays?: number): {
|
|
114
|
+
removed: number;
|
|
115
|
+
kept: number;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Get count of pending edits
|
|
119
|
+
*/
|
|
120
|
+
export declare function getPendingEditCount(): number;
|
|
121
|
+
/**
|
|
122
|
+
* Get recent pending edits for status display
|
|
123
|
+
*/
|
|
124
|
+
export declare function getRecentPendingEdits(limit?: number): DbEdit[];
|