@varveai/adit-hooks 0.2.1 → 0.3.1
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/adapters/claude-vscode.d.ts +16 -0
- package/dist/adapters/claude-vscode.d.ts.map +1 -0
- package/dist/adapters/claude-vscode.js +42 -0
- package/dist/adapters/claude-vscode.js.map +1 -0
- package/dist/adapters/codex.d.ts +16 -0
- package/dist/adapters/codex.d.ts.map +1 -0
- package/dist/adapters/codex.js +220 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/cursor.d.ts +19 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/cursor.js +330 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/gemini.d.ts +9 -0
- package/dist/adapters/gemini.d.ts.map +1 -0
- package/dist/adapters/gemini.js +216 -0
- package/dist/adapters/gemini.js.map +1 -0
- package/dist/adapters/index.d.ts +6 -2
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +6 -2
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/registry.d.ts +11 -0
- package/dist/adapters/registry.d.ts.map +1 -1
- package/dist/adapters/registry.js +104 -13
- package/dist/adapters/registry.js.map +1 -1
- package/dist/adapters/stub.d.ts +0 -4
- package/dist/adapters/stub.d.ts.map +1 -1
- package/dist/adapters/stub.js +0 -4
- package/dist/adapters/stub.js.map +1 -1
- package/dist/handlers/unified.d.ts.map +1 -1
- package/dist/handlers/unified.js +70 -1
- package/dist/handlers/unified.js.map +1 -1
- package/dist/index.js +42 -2
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor IDE platform adapter.
|
|
3
|
+
*
|
|
4
|
+
* Maps Cursor's hook events to ADIT's internal model.
|
|
5
|
+
* Handles installation into .cursor/hooks.json.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync, openSync, readSync, closeSync, statSync } from "node:fs";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
/**
|
|
10
|
+
* Read the tail of a file (last N bytes) and split into lines.
|
|
11
|
+
* Returns lines in original order (oldest first).
|
|
12
|
+
*/
|
|
13
|
+
function readTailLines(filePath, maxLines = 512) {
|
|
14
|
+
const CHUNK = 4096;
|
|
15
|
+
const stat = statSync(filePath);
|
|
16
|
+
const fileSize = stat.size;
|
|
17
|
+
if (fileSize === 0)
|
|
18
|
+
return [];
|
|
19
|
+
const fd = openSync(filePath, "r");
|
|
20
|
+
try {
|
|
21
|
+
const chunks = [];
|
|
22
|
+
let bytesRead = 0;
|
|
23
|
+
let lineCount = 0;
|
|
24
|
+
// Read backwards from end of file
|
|
25
|
+
let position = fileSize;
|
|
26
|
+
while (position > 0 && lineCount < maxLines) {
|
|
27
|
+
const readSize = Math.min(CHUNK, position);
|
|
28
|
+
position -= readSize;
|
|
29
|
+
const buf = Buffer.alloc(readSize);
|
|
30
|
+
readSync(fd, buf, 0, readSize, position);
|
|
31
|
+
chunks.unshift(buf);
|
|
32
|
+
bytesRead += readSize;
|
|
33
|
+
lineCount += buf.toString("utf8").split("\n").length - 1;
|
|
34
|
+
}
|
|
35
|
+
const content = Buffer.concat(chunks).toString("utf8");
|
|
36
|
+
const lines = content.split("\n").filter((l) => l.trim().length > 0);
|
|
37
|
+
// Keep only the last maxLines
|
|
38
|
+
return lines.slice(-maxLines);
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
closeSync(fd);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Extract the last assistant message text from a Cursor transcript JSONL file.
|
|
46
|
+
*
|
|
47
|
+
* Cursor's stop event does not include the assistant's response text — only
|
|
48
|
+
* `status` and `transcript_path`. The actual response is in the JSONL transcript.
|
|
49
|
+
*
|
|
50
|
+
* Reads the tail of the file for efficiency, then scans backwards for the
|
|
51
|
+
* last `role: "assistant"` entry with text content.
|
|
52
|
+
*/
|
|
53
|
+
export function extractLastAssistantMessage(transcriptPath) {
|
|
54
|
+
try {
|
|
55
|
+
if (!existsSync(transcriptPath))
|
|
56
|
+
return undefined;
|
|
57
|
+
const findAssistantText = (lines) => {
|
|
58
|
+
for (let i = lines.length - 1; i >= 0; i--) {
|
|
59
|
+
try {
|
|
60
|
+
const entry = JSON.parse(lines[i]);
|
|
61
|
+
if (entry.role !== "assistant")
|
|
62
|
+
continue;
|
|
63
|
+
const content = entry.message?.content;
|
|
64
|
+
if (!Array.isArray(content))
|
|
65
|
+
continue;
|
|
66
|
+
const texts = content
|
|
67
|
+
.filter((c) => c.type === "text" && typeof c.text === "string")
|
|
68
|
+
.map((c) => c.text)
|
|
69
|
+
.filter((t) => t.trim().length > 0);
|
|
70
|
+
if (texts.length > 0)
|
|
71
|
+
return texts.join("\n");
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// Skip malformed lines
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return undefined;
|
|
78
|
+
};
|
|
79
|
+
// Fast path: parse a large tail window first.
|
|
80
|
+
const tailLines = readTailLines(transcriptPath, 512);
|
|
81
|
+
const fromTail = findAssistantText(tailLines);
|
|
82
|
+
if (fromTail)
|
|
83
|
+
return fromTail;
|
|
84
|
+
// Fallback: if tail window misses due to very noisy tool events,
|
|
85
|
+
// scan the full transcript to guarantee best-effort extraction.
|
|
86
|
+
const fullContent = readFileSync(transcriptPath, "utf-8");
|
|
87
|
+
const fullLines = fullContent.split("\n").filter((l) => l.trim().length > 0);
|
|
88
|
+
return findAssistantText(fullLines);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const HOOK_MAPPINGS = [
|
|
95
|
+
{ platformEvent: "beforeSubmitPrompt", aditHandler: "prompt-submit" },
|
|
96
|
+
{ platformEvent: "stop", aditHandler: "stop" },
|
|
97
|
+
{ platformEvent: "sessionStart", aditHandler: "session-start" },
|
|
98
|
+
{ platformEvent: "sessionEnd", aditHandler: "session-end" },
|
|
99
|
+
{ platformEvent: "afterAgentResponse", aditHandler: "notification" },
|
|
100
|
+
];
|
|
101
|
+
/** Map Cursor platform events to ADIT hook types (derived from HOOK_MAPPINGS) */
|
|
102
|
+
const PLATFORM_TO_ADIT = Object.fromEntries(HOOK_MAPPINGS.map((m) => [m.platformEvent, m.aditHandler]));
|
|
103
|
+
/** Check if a command string is an ADIT hook */
|
|
104
|
+
function isAditHookCommand(command) {
|
|
105
|
+
return command.includes("adit-hook") || command.includes("hooks/dist/index.js");
|
|
106
|
+
}
|
|
107
|
+
export const cursorAdapter = {
|
|
108
|
+
platform: "cursor",
|
|
109
|
+
displayName: "Cursor",
|
|
110
|
+
hookMappings: HOOK_MAPPINGS,
|
|
111
|
+
parseInput(raw, hookType) {
|
|
112
|
+
const aditHookType = PLATFORM_TO_ADIT[hookType] ?? hookType;
|
|
113
|
+
// Cursor sends workspace_roots as array; fall back to CURSOR_PROJECT_DIR env
|
|
114
|
+
const workspaceRoots = raw.workspace_roots;
|
|
115
|
+
const cwd = workspaceRoots?.[0]
|
|
116
|
+
?? process.env.CURSOR_PROJECT_DIR
|
|
117
|
+
?? process.cwd();
|
|
118
|
+
// Cursor sends conversation_id for most events, session_id for session lifecycle
|
|
119
|
+
const platformSessionId = raw.conversation_id
|
|
120
|
+
?? raw.session_id
|
|
121
|
+
?? undefined;
|
|
122
|
+
// transcript_path or env var CURSOR_TRANSCRIPT_PATH
|
|
123
|
+
const transcriptPath = raw.transcript_path
|
|
124
|
+
?? process.env.CURSOR_TRANSCRIPT_PATH
|
|
125
|
+
?? undefined;
|
|
126
|
+
return {
|
|
127
|
+
cwd,
|
|
128
|
+
hookType: aditHookType,
|
|
129
|
+
platformCli: "cursor",
|
|
130
|
+
platformSessionId,
|
|
131
|
+
transcriptPath,
|
|
132
|
+
// Prompt (from beforeSubmitPrompt)
|
|
133
|
+
prompt: raw.prompt,
|
|
134
|
+
// Model (common field)
|
|
135
|
+
model: raw.model,
|
|
136
|
+
// Stop (from stop event — Cursor sends status, not stop_reason;
|
|
137
|
+
// assistant message must be read from transcript JSONL)
|
|
138
|
+
stopReason: raw.status,
|
|
139
|
+
lastAssistantMessage: aditHookType === "stop" && transcriptPath
|
|
140
|
+
? extractLastAssistantMessage(transcriptPath)
|
|
141
|
+
: undefined,
|
|
142
|
+
// Notification (from afterAgentResponse)
|
|
143
|
+
notificationMessage: raw.message,
|
|
144
|
+
notificationType: raw.notification_type,
|
|
145
|
+
// Session lifecycle
|
|
146
|
+
sessionSource: raw.composer_mode,
|
|
147
|
+
sessionEndReason: raw.reason,
|
|
148
|
+
rawPlatformData: raw,
|
|
149
|
+
};
|
|
150
|
+
},
|
|
151
|
+
generateHookConfig(aditBinaryPath) {
|
|
152
|
+
// Cursor uses flat format: { command, type, timeout }
|
|
153
|
+
// Timeout is in SECONDS (not milliseconds like Claude Code)
|
|
154
|
+
const makeHookEntry = (command) => [
|
|
155
|
+
{ command: `CURSOR=1 ${command}`, type: "command", timeout: 10 },
|
|
156
|
+
];
|
|
157
|
+
return {
|
|
158
|
+
configPath: ".cursor/hooks.json",
|
|
159
|
+
content: {
|
|
160
|
+
hooks: {
|
|
161
|
+
beforeSubmitPrompt: makeHookEntry(`${aditBinaryPath} prompt-submit`),
|
|
162
|
+
stop: makeHookEntry(`${aditBinaryPath} stop`),
|
|
163
|
+
sessionStart: makeHookEntry(`${aditBinaryPath} session-start`),
|
|
164
|
+
sessionEnd: makeHookEntry(`${aditBinaryPath} session-end`),
|
|
165
|
+
afterAgentResponse: makeHookEntry(`${aditBinaryPath} notification`),
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
},
|
|
170
|
+
async validateInstallation(projectRoot) {
|
|
171
|
+
const checks = [];
|
|
172
|
+
// Check .cursor directory exists
|
|
173
|
+
const cursorDir = join(projectRoot, ".cursor");
|
|
174
|
+
const cursorDirExists = existsSync(cursorDir);
|
|
175
|
+
checks.push({
|
|
176
|
+
name: ".cursor directory",
|
|
177
|
+
ok: cursorDirExists,
|
|
178
|
+
detail: cursorDirExists ? cursorDir : "Not found",
|
|
179
|
+
});
|
|
180
|
+
// Check hooks file for hook configuration
|
|
181
|
+
const hooksPath = join(projectRoot, ".cursor", "hooks.json");
|
|
182
|
+
let hooksFound = false;
|
|
183
|
+
let hooksDetail = "No hook configuration found";
|
|
184
|
+
const requiredHooks = HOOK_MAPPINGS.map((m) => m.platformEvent);
|
|
185
|
+
const missingHooks = [];
|
|
186
|
+
if (existsSync(hooksPath)) {
|
|
187
|
+
try {
|
|
188
|
+
const hooksConfig = JSON.parse(readFileSync(hooksPath, "utf-8"));
|
|
189
|
+
if (!hooksConfig.hooks) {
|
|
190
|
+
hooksDetail = "No hooks section found in hooks.json";
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
for (const hookName of requiredHooks) {
|
|
194
|
+
const entries = hooksConfig.hooks[hookName];
|
|
195
|
+
if (!Array.isArray(entries)) {
|
|
196
|
+
missingHooks.push(hookName);
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
const hasAdit = entries.some((entry) => {
|
|
200
|
+
if (typeof entry.command === "string" && isAditHookCommand(entry.command))
|
|
201
|
+
return true;
|
|
202
|
+
if (Array.isArray(entry.hooks)) {
|
|
203
|
+
return entry.hooks.some((h) => typeof h.command === "string" && isAditHookCommand(h.command));
|
|
204
|
+
}
|
|
205
|
+
return false;
|
|
206
|
+
});
|
|
207
|
+
if (!hasAdit)
|
|
208
|
+
missingHooks.push(hookName);
|
|
209
|
+
}
|
|
210
|
+
hooksFound = missingHooks.length === 0;
|
|
211
|
+
hooksDetail = hooksFound
|
|
212
|
+
? `All hooks registered in ${hooksPath}`
|
|
213
|
+
: `Missing hooks: ${missingHooks.join(", ")}`;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
hooksDetail = `Failed to parse ${hooksPath}`;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
checks.push({
|
|
221
|
+
name: "Hook configuration",
|
|
222
|
+
ok: hooksFound,
|
|
223
|
+
detail: hooksDetail,
|
|
224
|
+
});
|
|
225
|
+
return {
|
|
226
|
+
valid: checks.every((c) => c.ok),
|
|
227
|
+
checks,
|
|
228
|
+
};
|
|
229
|
+
},
|
|
230
|
+
async installHooks(projectRoot, aditBinaryPath) {
|
|
231
|
+
const cursorDir = join(projectRoot, ".cursor");
|
|
232
|
+
if (!existsSync(cursorDir)) {
|
|
233
|
+
mkdirSync(cursorDir, { recursive: true });
|
|
234
|
+
}
|
|
235
|
+
const hooksPath = join(cursorDir, "hooks.json");
|
|
236
|
+
let hooksConfig = {};
|
|
237
|
+
if (existsSync(hooksPath)) {
|
|
238
|
+
try {
|
|
239
|
+
hooksConfig = JSON.parse(readFileSync(hooksPath, "utf-8"));
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
// Start fresh if hooks are invalid
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
const hookConfig = this.generateHookConfig(aditBinaryPath);
|
|
246
|
+
const existingHooks = hooksConfig.hooks ?? {};
|
|
247
|
+
// Clean up legacy Claude Code format entries (from previous ADIT versions
|
|
248
|
+
// that used Claude Code event names: UserPromptSubmit, Stop, etc.)
|
|
249
|
+
const legacyEventKeys = ["UserPromptSubmit", "Stop", "SessionStart", "SessionEnd", "Notification"];
|
|
250
|
+
for (const legacyKey of legacyEventKeys) {
|
|
251
|
+
if (Array.isArray(existingHooks[legacyKey])) {
|
|
252
|
+
existingHooks[legacyKey] = existingHooks[legacyKey].filter((raw) => {
|
|
253
|
+
const entry = raw;
|
|
254
|
+
if (typeof entry.command === "string" && isAditHookCommand(entry.command))
|
|
255
|
+
return false;
|
|
256
|
+
if (Array.isArray(entry.hooks)) {
|
|
257
|
+
return !entry.hooks.some((h) => typeof h.command === "string" && isAditHookCommand(h.command));
|
|
258
|
+
}
|
|
259
|
+
return true;
|
|
260
|
+
});
|
|
261
|
+
if (existingHooks[legacyKey].length === 0) {
|
|
262
|
+
delete existingHooks[legacyKey];
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
const newHooks = hookConfig.content.hooks;
|
|
267
|
+
// Merge hook entries per event key: preserve other tools' hooks,
|
|
268
|
+
// remove stale ADIT entries, then append new ADIT entries.
|
|
269
|
+
const mergedHooks = { ...existingHooks };
|
|
270
|
+
for (const [eventKey, aditEntries] of Object.entries(newHooks)) {
|
|
271
|
+
const existing = Array.isArray(mergedHooks[eventKey]) ? mergedHooks[eventKey] : [];
|
|
272
|
+
// Remove stale ADIT entries (same logic as uninstallHooks)
|
|
273
|
+
const nonAditEntries = existing.filter((raw) => {
|
|
274
|
+
const entry = raw;
|
|
275
|
+
if (typeof entry.command === "string" && isAditHookCommand(entry.command))
|
|
276
|
+
return false;
|
|
277
|
+
if (Array.isArray(entry.hooks)) {
|
|
278
|
+
return !entry.hooks.some((h) => typeof h.command === "string" && isAditHookCommand(h.command));
|
|
279
|
+
}
|
|
280
|
+
return true;
|
|
281
|
+
});
|
|
282
|
+
// Append new ADIT entries after other tools' hooks
|
|
283
|
+
mergedHooks[eventKey] = [...nonAditEntries, ...aditEntries];
|
|
284
|
+
}
|
|
285
|
+
hooksConfig.hooks = mergedHooks;
|
|
286
|
+
writeFileSync(hooksPath, JSON.stringify(hooksConfig, null, 2) + "\n");
|
|
287
|
+
},
|
|
288
|
+
getResumeCommand(_projectRoot) {
|
|
289
|
+
return null;
|
|
290
|
+
},
|
|
291
|
+
async uninstallHooks(projectRoot) {
|
|
292
|
+
const hooksPath = join(projectRoot, ".cursor", "hooks.json");
|
|
293
|
+
if (!existsSync(hooksPath))
|
|
294
|
+
return;
|
|
295
|
+
try {
|
|
296
|
+
const hooksConfig = JSON.parse(readFileSync(hooksPath, "utf-8"));
|
|
297
|
+
if (!hooksConfig.hooks)
|
|
298
|
+
return;
|
|
299
|
+
// Also clean up legacy Claude Code format event keys
|
|
300
|
+
const allEventKeys = [...Object.keys(hooksConfig.hooks), "UserPromptSubmit", "Stop", "SessionStart", "SessionEnd", "Notification"];
|
|
301
|
+
// Remove ADIT hook entries
|
|
302
|
+
for (const hookName of allEventKeys) {
|
|
303
|
+
const entries = hooksConfig.hooks[hookName];
|
|
304
|
+
if (!Array.isArray(entries))
|
|
305
|
+
continue;
|
|
306
|
+
hooksConfig.hooks[hookName] = entries.filter((entry) => {
|
|
307
|
+
if (typeof entry.command === "string" && isAditHookCommand(entry.command))
|
|
308
|
+
return false;
|
|
309
|
+
if (Array.isArray(entry.hooks)) {
|
|
310
|
+
return !entry.hooks.some((h) => typeof h.command === "string" && isAditHookCommand(h.command));
|
|
311
|
+
}
|
|
312
|
+
return true;
|
|
313
|
+
});
|
|
314
|
+
// Clean up empty arrays
|
|
315
|
+
if (hooksConfig.hooks[hookName].length === 0) {
|
|
316
|
+
delete hooksConfig.hooks[hookName];
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// Clean up empty hooks object
|
|
320
|
+
if (Object.keys(hooksConfig.hooks).length === 0) {
|
|
321
|
+
delete hooksConfig.hooks;
|
|
322
|
+
}
|
|
323
|
+
writeFileSync(hooksPath, JSON.stringify(hooksConfig, null, 2) + "\n");
|
|
324
|
+
}
|
|
325
|
+
catch {
|
|
326
|
+
// Ignore parse errors
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
};
|
|
330
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Gemini CLI platform adapter.
|
|
3
|
+
*
|
|
4
|
+
* Maps Gemini CLI's hook events to ADIT's internal model.
|
|
5
|
+
* Handles installation into .gemini/settings.json.
|
|
6
|
+
*/
|
|
7
|
+
import type { PlatformAdapter } from "./types.js";
|
|
8
|
+
export declare const geminiAdapter: PlatformAdapter;
|
|
9
|
+
//# sourceMappingURL=gemini.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,eAAe,EAMhB,MAAM,YAAY,CAAC;AAqBpB,eAAO,MAAM,aAAa,EAAE,eAyN3B,CAAC"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Gemini CLI platform adapter.
|
|
3
|
+
*
|
|
4
|
+
* Maps Gemini CLI's hook events to ADIT's internal model.
|
|
5
|
+
* Handles installation into .gemini/settings.json.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
const HOOK_MAPPINGS = [
|
|
10
|
+
{ platformEvent: "SessionStart", aditHandler: "session-start" },
|
|
11
|
+
{ platformEvent: "BeforeAgent", aditHandler: "prompt-submit" },
|
|
12
|
+
{ platformEvent: "AfterAgent", aditHandler: "stop" },
|
|
13
|
+
{ platformEvent: "SessionEnd", aditHandler: "session-end" },
|
|
14
|
+
{ platformEvent: "AfterTool", aditHandler: "notification" },
|
|
15
|
+
{ platformEvent: "Notification", aditHandler: "notification" },
|
|
16
|
+
];
|
|
17
|
+
/** Map Gemini CLI platform events to ADIT hook types (derived from HOOK_MAPPINGS) */
|
|
18
|
+
const PLATFORM_TO_ADIT = Object.fromEntries(HOOK_MAPPINGS.map((m) => [m.platformEvent, m.aditHandler]));
|
|
19
|
+
/** Check if a command string is an ADIT hook (matches both npx and resolved-path formats) */
|
|
20
|
+
function isAditHookCommand(command) {
|
|
21
|
+
return command.includes("adit-hook") || command.includes("hooks/dist/index.js");
|
|
22
|
+
}
|
|
23
|
+
export const geminiAdapter = {
|
|
24
|
+
platform: "gemini",
|
|
25
|
+
displayName: "Gemini CLI",
|
|
26
|
+
hookMappings: HOOK_MAPPINGS,
|
|
27
|
+
parseInput(raw, hookType) {
|
|
28
|
+
const aditHookType = PLATFORM_TO_ADIT[hookType] ?? hookType;
|
|
29
|
+
const cwd = raw.cwd ?? process.cwd();
|
|
30
|
+
return {
|
|
31
|
+
cwd,
|
|
32
|
+
hookType: aditHookType,
|
|
33
|
+
platformCli: "gemini",
|
|
34
|
+
platformSessionId: raw.session_id,
|
|
35
|
+
transcriptPath: raw.transcript_path,
|
|
36
|
+
// Prompt
|
|
37
|
+
prompt: raw.prompt,
|
|
38
|
+
// Tool use
|
|
39
|
+
toolName: raw.tool_name,
|
|
40
|
+
toolInput: raw.tool_input,
|
|
41
|
+
toolOutput: raw.tool_response,
|
|
42
|
+
// Stop
|
|
43
|
+
stopReason: raw.stop_reason,
|
|
44
|
+
lastAssistantMessage: raw.prompt_response,
|
|
45
|
+
stopHookActive: raw.stop_hook_active,
|
|
46
|
+
// Notification
|
|
47
|
+
notificationMessage: raw.message,
|
|
48
|
+
notificationTitle: raw.title,
|
|
49
|
+
notificationType: raw.notification_type,
|
|
50
|
+
// Session lifecycle
|
|
51
|
+
sessionSource: raw.source,
|
|
52
|
+
sessionEndReason: raw.reason,
|
|
53
|
+
// Common metadata
|
|
54
|
+
permissionMode: raw.permission_mode,
|
|
55
|
+
model: raw.model,
|
|
56
|
+
rawPlatformData: raw,
|
|
57
|
+
};
|
|
58
|
+
},
|
|
59
|
+
generateHookConfig(aditBinaryPath) {
|
|
60
|
+
const makeHookEntry = (command) => [
|
|
61
|
+
{ hooks: [{ type: "command", command: `CLAUDE_CODE= GEMINI=1 ${command}`, timeout: 5000 }] },
|
|
62
|
+
];
|
|
63
|
+
return {
|
|
64
|
+
configPath: ".gemini/settings.json",
|
|
65
|
+
content: {
|
|
66
|
+
hooks: {
|
|
67
|
+
SessionStart: makeHookEntry(`${aditBinaryPath} session-start`),
|
|
68
|
+
BeforeAgent: makeHookEntry(`${aditBinaryPath} prompt-submit`),
|
|
69
|
+
AfterAgent: makeHookEntry(`${aditBinaryPath} stop`),
|
|
70
|
+
SessionEnd: makeHookEntry(`${aditBinaryPath} session-end`),
|
|
71
|
+
AfterTool: makeHookEntry(`${aditBinaryPath} notification`),
|
|
72
|
+
Notification: makeHookEntry(`${aditBinaryPath} notification`),
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
async validateInstallation(projectRoot) {
|
|
78
|
+
const checks = [];
|
|
79
|
+
// Check .gemini directory exists
|
|
80
|
+
const geminiDir = join(projectRoot, ".gemini");
|
|
81
|
+
const geminiDirExists = existsSync(geminiDir);
|
|
82
|
+
checks.push({
|
|
83
|
+
name: ".gemini directory",
|
|
84
|
+
ok: geminiDirExists,
|
|
85
|
+
detail: geminiDirExists ? geminiDir : "Not found",
|
|
86
|
+
});
|
|
87
|
+
// Check settings file for hook configuration
|
|
88
|
+
const settingsPath = join(projectRoot, ".gemini", "settings.json");
|
|
89
|
+
let hooksFound = false;
|
|
90
|
+
let hooksDetail = "No hook configuration found";
|
|
91
|
+
const requiredHooks = HOOK_MAPPINGS.map((m) => m.platformEvent);
|
|
92
|
+
const missingHooks = [];
|
|
93
|
+
if (existsSync(settingsPath)) {
|
|
94
|
+
try {
|
|
95
|
+
const settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
96
|
+
if (!settings.hooks) {
|
|
97
|
+
hooksDetail = "No hooks section in settings.json";
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
for (const hookName of requiredHooks) {
|
|
101
|
+
const entries = settings.hooks[hookName];
|
|
102
|
+
if (!Array.isArray(entries)) {
|
|
103
|
+
missingHooks.push(hookName);
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const hasAdit = entries.some((entry) => {
|
|
107
|
+
if (typeof entry.command === "string" && isAditHookCommand(entry.command))
|
|
108
|
+
return true;
|
|
109
|
+
if (Array.isArray(entry.hooks)) {
|
|
110
|
+
return entry.hooks.some((h) => typeof h.command === "string" && isAditHookCommand(h.command));
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
});
|
|
114
|
+
if (!hasAdit)
|
|
115
|
+
missingHooks.push(hookName);
|
|
116
|
+
}
|
|
117
|
+
hooksFound = missingHooks.length === 0;
|
|
118
|
+
hooksDetail = hooksFound
|
|
119
|
+
? `All hooks registered in ${settingsPath}`
|
|
120
|
+
: `Missing hooks: ${missingHooks.join(", ")}`;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
hooksDetail = `Failed to parse ${settingsPath}`;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
checks.push({
|
|
128
|
+
name: "Hook configuration",
|
|
129
|
+
ok: hooksFound,
|
|
130
|
+
detail: hooksDetail,
|
|
131
|
+
});
|
|
132
|
+
return {
|
|
133
|
+
valid: checks.every((c) => c.ok),
|
|
134
|
+
checks,
|
|
135
|
+
};
|
|
136
|
+
},
|
|
137
|
+
async installHooks(projectRoot, aditBinaryPath) {
|
|
138
|
+
const geminiDir = join(projectRoot, ".gemini");
|
|
139
|
+
if (!existsSync(geminiDir)) {
|
|
140
|
+
mkdirSync(geminiDir, { recursive: true });
|
|
141
|
+
}
|
|
142
|
+
const settingsPath = join(geminiDir, "settings.json");
|
|
143
|
+
let settings = {};
|
|
144
|
+
if (existsSync(settingsPath)) {
|
|
145
|
+
try {
|
|
146
|
+
settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
// Start fresh if settings are invalid
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const hookConfig = this.generateHookConfig(aditBinaryPath);
|
|
153
|
+
const existingHooks = settings.hooks ?? {};
|
|
154
|
+
const newHooks = hookConfig.content.hooks;
|
|
155
|
+
// Merge hook entries per event key: preserve other tools' hooks,
|
|
156
|
+
// remove stale ADIT entries, then append new ADIT entries.
|
|
157
|
+
const mergedHooks = { ...existingHooks };
|
|
158
|
+
for (const [eventKey, aditEntries] of Object.entries(newHooks)) {
|
|
159
|
+
const existing = Array.isArray(mergedHooks[eventKey]) ? mergedHooks[eventKey] : [];
|
|
160
|
+
// Remove stale ADIT entries (same logic as uninstallHooks)
|
|
161
|
+
const nonAditEntries = existing.filter((raw) => {
|
|
162
|
+
const entry = raw;
|
|
163
|
+
if (typeof entry.command === "string" && isAditHookCommand(entry.command))
|
|
164
|
+
return false;
|
|
165
|
+
if (Array.isArray(entry.hooks)) {
|
|
166
|
+
return !entry.hooks.some((h) => typeof h.command === "string" && isAditHookCommand(h.command));
|
|
167
|
+
}
|
|
168
|
+
return true;
|
|
169
|
+
});
|
|
170
|
+
// Append new ADIT entries after other tools' hooks
|
|
171
|
+
mergedHooks[eventKey] = [...nonAditEntries, ...aditEntries];
|
|
172
|
+
}
|
|
173
|
+
settings.hooks = mergedHooks;
|
|
174
|
+
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
|
|
175
|
+
},
|
|
176
|
+
getResumeCommand(_projectRoot) {
|
|
177
|
+
return "gemini";
|
|
178
|
+
},
|
|
179
|
+
async uninstallHooks(projectRoot) {
|
|
180
|
+
const settingsPath = join(projectRoot, ".gemini", "settings.json");
|
|
181
|
+
if (!existsSync(settingsPath))
|
|
182
|
+
return;
|
|
183
|
+
try {
|
|
184
|
+
const settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
185
|
+
if (!settings.hooks)
|
|
186
|
+
return;
|
|
187
|
+
// Remove ADIT hook entries
|
|
188
|
+
for (const hookName of Object.keys(settings.hooks)) {
|
|
189
|
+
const entries = settings.hooks[hookName];
|
|
190
|
+
if (!Array.isArray(entries))
|
|
191
|
+
continue;
|
|
192
|
+
settings.hooks[hookName] = entries.filter((entry) => {
|
|
193
|
+
if (typeof entry.command === "string" && isAditHookCommand(entry.command))
|
|
194
|
+
return false;
|
|
195
|
+
if (Array.isArray(entry.hooks)) {
|
|
196
|
+
return !entry.hooks.some((h) => typeof h.command === "string" && isAditHookCommand(h.command));
|
|
197
|
+
}
|
|
198
|
+
return true;
|
|
199
|
+
});
|
|
200
|
+
// Clean up empty arrays
|
|
201
|
+
if (settings.hooks[hookName].length === 0) {
|
|
202
|
+
delete settings.hooks[hookName];
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
// Clean up empty hooks object
|
|
206
|
+
if (Object.keys(settings.hooks).length === 0) {
|
|
207
|
+
delete settings.hooks;
|
|
208
|
+
}
|
|
209
|
+
writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n");
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
// Ignore parse errors
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/adapters/gemini.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
export type { PlatformAdapter, HookMapping, NormalizedHookInput, PlatformHookConfig, ValidationResult, ValidationCheck, AditHookType, } from "./types.js";
|
|
2
2
|
export { claudeCodeAdapter } from "./claude-code.js";
|
|
3
|
+
export { claudeVscodeAdapter } from "./claude-vscode.js";
|
|
3
4
|
export { opencodeAdapter } from "./opencode.js";
|
|
4
|
-
export { createStubAdapter,
|
|
5
|
-
export {
|
|
5
|
+
export { createStubAdapter, copilotAdapter, otherAdapter } from "./stub.js";
|
|
6
|
+
export { cursorAdapter } from "./cursor.js";
|
|
7
|
+
export { codexAdapter } from "./codex.js";
|
|
8
|
+
export { geminiAdapter } from "./gemini.js";
|
|
9
|
+
export { getAdapter, listAdapters, registerAdapter, detectPlatform, detectPlatformFromPayload, detectPlatforms } from "./registry.js";
|
|
6
10
|
/**
|
|
7
11
|
* Resolve the absolute path to the adit-hook binary for reliable invocation.
|
|
8
12
|
* Navigates from this module's location to the entry point (dist/index.js),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAIA,YAAY,EACV,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEtI;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAc9C"}
|
package/dist/adapters/index.js
CHANGED
|
@@ -2,9 +2,13 @@ import { fileURLToPath } from "node:url";
|
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import { existsSync } from "node:fs";
|
|
4
4
|
export { claudeCodeAdapter } from "./claude-code.js";
|
|
5
|
+
export { claudeVscodeAdapter } from "./claude-vscode.js";
|
|
5
6
|
export { opencodeAdapter } from "./opencode.js";
|
|
6
|
-
export { createStubAdapter,
|
|
7
|
-
export {
|
|
7
|
+
export { createStubAdapter, copilotAdapter, otherAdapter } from "./stub.js";
|
|
8
|
+
export { cursorAdapter } from "./cursor.js";
|
|
9
|
+
export { codexAdapter } from "./codex.js";
|
|
10
|
+
export { geminiAdapter } from "./gemini.js";
|
|
11
|
+
export { getAdapter, listAdapters, registerAdapter, detectPlatform, detectPlatformFromPayload, detectPlatforms } from "./registry.js";
|
|
8
12
|
/**
|
|
9
13
|
* Resolve the absolute path to the adit-hook binary for reliable invocation.
|
|
10
14
|
* Navigates from this module's location to the entry point (dist/index.js),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAYrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAYrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEtI;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,CAAC;QACH,sEAAsE;QACtE,qEAAqE;QACrE,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACnD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,UAAU,GAAG,CAAC;QAChC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,kEAAkE;IAClE,OAAO,WAAW,CAAC;AACrB,CAAC"}
|