a24z 1.0.5 → 1.0.7
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/index.js +285 -97
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
- package/templates/universal-collector.sh +35 -0
- package/templates/post-hook.sh +0 -104
- package/templates/pre-hook.sh +0 -111
package/dist/index.js
CHANGED
|
@@ -9,9 +9,11 @@ import os from 'os';
|
|
|
9
9
|
import { fileURLToPath } from 'url';
|
|
10
10
|
import axios from 'axios';
|
|
11
11
|
import open from 'open';
|
|
12
|
-
import
|
|
13
|
-
import dotenv from 'dotenv';
|
|
12
|
+
import dotenv from "dotenv";
|
|
14
13
|
dotenv.config();
|
|
14
|
+
// Single source of truth for WorkOS client ID.
|
|
15
|
+
// If you change the client, update this constant and publish.
|
|
16
|
+
const WORKOS_CLIENT_ID = "client_01K4ZPKST26YPKMQBGQW7HZ4SB";
|
|
15
17
|
const __filename = fileURLToPath(import.meta.url);
|
|
16
18
|
const __dirname = path.dirname(__filename);
|
|
17
19
|
// Configuration constants
|
|
@@ -23,16 +25,6 @@ class A24zCLI {
|
|
|
23
25
|
constructor() {
|
|
24
26
|
this.config = this.loadConfig();
|
|
25
27
|
}
|
|
26
|
-
async startCallbackServer() {
|
|
27
|
-
return new Promise((resolve, reject) => {
|
|
28
|
-
const server = createServer();
|
|
29
|
-
server.listen(0, 'localhost', () => {
|
|
30
|
-
const port = server.address()?.port;
|
|
31
|
-
resolve({ server, port });
|
|
32
|
-
});
|
|
33
|
-
server.on('error', reject);
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
28
|
loadConfig() {
|
|
37
29
|
try {
|
|
38
30
|
if (fs.existsSync(CONFIG_FILE)) {
|
|
@@ -43,18 +35,11 @@ class A24zCLI {
|
|
|
43
35
|
console.error(chalk.red('Error loading configuration:'), error);
|
|
44
36
|
}
|
|
45
37
|
const defaultConfig = {
|
|
46
|
-
apiUrl: 'https://app.a24z.ai',
|
|
47
|
-
|
|
48
|
-
clientId: process.env.WORKOS_CLIENT_ID || '', // Use the client ID from your .env
|
|
49
|
-
organizationId: null,
|
|
50
|
-
userId: null,
|
|
38
|
+
apiUrl: 'https://app.a24z.ai',
|
|
39
|
+
clientId: WORKOS_CLIENT_ID,
|
|
51
40
|
accessToken: null,
|
|
52
41
|
installedAt: null
|
|
53
42
|
};
|
|
54
|
-
// If no client ID from env or config file, try to get from env again (in case dotenv loaded late)
|
|
55
|
-
if (!defaultConfig.clientId || defaultConfig.clientId === 'client_01K4ZPKST26YPKMQBGQW7HZ4SB') {
|
|
56
|
-
defaultConfig.clientId = process.env.WORKOS_CLIENT_ID || defaultConfig.clientId;
|
|
57
|
-
}
|
|
58
43
|
return defaultConfig;
|
|
59
44
|
}
|
|
60
45
|
saveConfig() {
|
|
@@ -67,6 +52,7 @@ class A24zCLI {
|
|
|
67
52
|
}
|
|
68
53
|
}
|
|
69
54
|
async install(options = {}) {
|
|
55
|
+
console.log('api url', options.apiUrl);
|
|
70
56
|
const spinner = ora('Installing A24Z Claude Code hooks...').start();
|
|
71
57
|
try {
|
|
72
58
|
// Update configuration if provided
|
|
@@ -105,24 +91,45 @@ class A24zCLI {
|
|
|
105
91
|
}
|
|
106
92
|
async copyHookScripts() {
|
|
107
93
|
const templatesDir = path.join(__dirname, '..', 'templates');
|
|
108
|
-
//
|
|
109
|
-
const
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
.
|
|
114
|
-
.
|
|
115
|
-
|
|
116
|
-
.
|
|
117
|
-
.
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
94
|
+
// Use single universal collector for all hook types - much more maintainable!
|
|
95
|
+
const universalTemplate = 'universal-collector.sh';
|
|
96
|
+
const hookDestinations = [
|
|
97
|
+
'a24z-pre-hook.sh',
|
|
98
|
+
'a24z-post-hook.sh',
|
|
99
|
+
'a24z-user-prompt-submit-hook.sh',
|
|
100
|
+
'a24z-session-start-hook.sh',
|
|
101
|
+
'a24z-session-end-hook.sh',
|
|
102
|
+
'a24z-subagent-stop-hook.sh',
|
|
103
|
+
'a24z-notification-hook.sh',
|
|
104
|
+
'a24z-stop-hook.sh',
|
|
105
|
+
'a24z-precompact-hook.sh'
|
|
106
|
+
];
|
|
107
|
+
try {
|
|
108
|
+
// Read the universal template once
|
|
109
|
+
const templatePath = path.join(templatesDir, universalTemplate);
|
|
110
|
+
const templateContent = fs.readFileSync(templatePath, 'utf8');
|
|
111
|
+
// Replace placeholders with actual values
|
|
112
|
+
const hookContent = templateContent
|
|
113
|
+
.replace(/\{\{API_URL\}\}/g, this.config.apiUrl)
|
|
114
|
+
.replace(/\{\{ACCESS_TOKEN\}\}/g, this.config.accessToken || '');
|
|
115
|
+
// Copy the same universal script to all hook locations
|
|
116
|
+
// The script auto-detects its hook type at runtime
|
|
117
|
+
for (const destination of hookDestinations) {
|
|
118
|
+
try {
|
|
119
|
+
const hookPath = path.join(HOOKS_DIR, destination);
|
|
120
|
+
fs.writeFileSync(hookPath, hookContent);
|
|
121
|
+
fs.chmodSync(hookPath, '755');
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
console.error(chalk.yellow(`Warning: Could not create ${destination}:`, error));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
console.log(chalk.green(`✅ Universal collector deployed to ${hookDestinations.length} hook locations`));
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
console.error(chalk.red(`❌ Failed to read universal template ${universalTemplate}:`, error));
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
126
133
|
}
|
|
127
134
|
updateClaudeSettings() {
|
|
128
135
|
let settings = {};
|
|
@@ -136,28 +143,62 @@ class A24zCLI {
|
|
|
136
143
|
}
|
|
137
144
|
}
|
|
138
145
|
// Ensure hooks object exists
|
|
139
|
-
if (
|
|
146
|
+
if (typeof settings.hooks !== 'object' || settings.hooks === null) {
|
|
140
147
|
settings.hooks = {};
|
|
141
148
|
}
|
|
142
|
-
// Configure hooks
|
|
143
|
-
settings
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
settings.
|
|
151
|
-
|
|
152
|
-
hooks: [{
|
|
153
|
-
type: "command",
|
|
154
|
-
command: path.join(HOOKS_DIR, 'a24z-post-hook.sh')
|
|
155
|
-
}]
|
|
156
|
-
}];
|
|
149
|
+
// Configure all A24Z hooks for comprehensive observability using "dumb" collectors
|
|
150
|
+
this.addOrUpdateHook(settings, 'PreToolUse', path.join(HOOKS_DIR, 'a24z-pre-hook.sh'));
|
|
151
|
+
this.addOrUpdateHook(settings, 'PostToolUse', path.join(HOOKS_DIR, 'a24z-post-hook.sh'));
|
|
152
|
+
this.addOrUpdateHook(settings, 'UserPromptSubmit', path.join(HOOKS_DIR, 'a24z-user-prompt-submit-hook.sh'));
|
|
153
|
+
this.addOrUpdateHook(settings, 'SessionStart', path.join(HOOKS_DIR, 'a24z-session-start-hook.sh'));
|
|
154
|
+
this.addOrUpdateHook(settings, 'SessionEnd', path.join(HOOKS_DIR, 'a24z-session-end-hook.sh'));
|
|
155
|
+
this.addOrUpdateHook(settings, 'SubagentStop', path.join(HOOKS_DIR, 'a24z-subagent-stop-hook.sh'));
|
|
156
|
+
this.addOrUpdateHook(settings, 'Notification', path.join(HOOKS_DIR, 'a24z-notification-hook.sh'));
|
|
157
|
+
this.addOrUpdateHook(settings, 'Stop', path.join(HOOKS_DIR, 'a24z-stop-hook.sh'));
|
|
158
|
+
this.addOrUpdateHook(settings, 'PreCompact', path.join(HOOKS_DIR, 'a24z-precompact-hook.sh'));
|
|
157
159
|
// Create directory and write settings
|
|
158
160
|
fs.mkdirSync(path.dirname(CLAUDE_SETTINGS_FILE), { recursive: true });
|
|
159
161
|
fs.writeFileSync(CLAUDE_SETTINGS_FILE, JSON.stringify(settings, null, 2));
|
|
160
162
|
}
|
|
163
|
+
// No binary helper shim; hooks will call `a24z hook` directly for transparency.
|
|
164
|
+
/**
|
|
165
|
+
* Merge-safe helper: adds our command without duplicating or overwriting others.
|
|
166
|
+
* - Creates the hook type array if missing
|
|
167
|
+
* - Adds a new entry with matcher "*" if our command is not present
|
|
168
|
+
* - De-duplicates exact command path if somehow repeated
|
|
169
|
+
*/
|
|
170
|
+
addOrUpdateHook(settings, hookType, commandPath) {
|
|
171
|
+
if (!settings.hooks)
|
|
172
|
+
settings.hooks = {};
|
|
173
|
+
const existing = settings.hooks[hookType];
|
|
174
|
+
const newEntry = {
|
|
175
|
+
matcher: "*",
|
|
176
|
+
hooks: [{ type: "command", command: commandPath }]
|
|
177
|
+
};
|
|
178
|
+
if (!Array.isArray(existing)) {
|
|
179
|
+
settings.hooks[hookType] = [newEntry];
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
const hasOurCommand = existing.some(e => e.hooks.some(h => typeof h.command === 'string' && h.command.includes('a24z-')));
|
|
183
|
+
if (!hasOurCommand) {
|
|
184
|
+
existing.push(newEntry);
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
// Ensure no duplicates of exact command path
|
|
188
|
+
for (const entry of existing) {
|
|
189
|
+
const seen = new Set();
|
|
190
|
+
entry.hooks = entry.hooks.filter(h => {
|
|
191
|
+
if (typeof h.command !== 'string')
|
|
192
|
+
return true;
|
|
193
|
+
if (h.command !== commandPath)
|
|
194
|
+
return true;
|
|
195
|
+
if (seen.has(h.command))
|
|
196
|
+
return false;
|
|
197
|
+
seen.add(h.command);
|
|
198
|
+
return true;
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
161
202
|
async login() {
|
|
162
203
|
console.log(chalk.blue('🔐 Logging in to A24Z Observability...'));
|
|
163
204
|
try {
|
|
@@ -198,8 +239,6 @@ class A24zCLI {
|
|
|
198
239
|
spinner.succeed('Authentication successful!');
|
|
199
240
|
// Step 4: Store tokens
|
|
200
241
|
this.config.accessToken = tokens.access_token;
|
|
201
|
-
this.config.userId = tokens.user?.id || null;
|
|
202
|
-
this.config.organizationId = tokens.organization_id || null;
|
|
203
242
|
this.saveConfig();
|
|
204
243
|
// Reinstall hooks with updated auth
|
|
205
244
|
await this.install();
|
|
@@ -207,9 +246,6 @@ class A24zCLI {
|
|
|
207
246
|
if (tokens.user?.email) {
|
|
208
247
|
console.log(chalk.white('👤 User:'), chalk.cyan(tokens.user.email));
|
|
209
248
|
}
|
|
210
|
-
if (this.config.organizationId) {
|
|
211
|
-
console.log(chalk.white('🏢 Organization:'), chalk.cyan(this.config.organizationId));
|
|
212
|
-
}
|
|
213
249
|
console.log(chalk.green('\\nYour tool calls will now be associated with your organization.'));
|
|
214
250
|
}
|
|
215
251
|
catch (error) {
|
|
@@ -266,34 +302,63 @@ class A24zCLI {
|
|
|
266
302
|
async uninstall() {
|
|
267
303
|
const spinner = ora('Uninstalling A24Z hooks...').start();
|
|
268
304
|
try {
|
|
269
|
-
// Remove hook scripts
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
305
|
+
// Remove all A24Z hook scripts
|
|
306
|
+
const hookFiles = [
|
|
307
|
+
'a24z-pre-hook.sh',
|
|
308
|
+
'a24z-post-hook.sh',
|
|
309
|
+
'a24z-user-prompt-submit-hook.sh',
|
|
310
|
+
'a24z-session-start-hook.sh',
|
|
311
|
+
'a24z-session-end-hook.sh',
|
|
312
|
+
'a24z-subagent-stop-hook.sh',
|
|
313
|
+
'a24z-notification-hook.sh',
|
|
314
|
+
'a24z-stop-hook.sh',
|
|
315
|
+
'a24z-precompact-hook.sh'
|
|
316
|
+
];
|
|
317
|
+
for (const hookFile of hookFiles) {
|
|
318
|
+
const hookPath = path.join(HOOKS_DIR, hookFile);
|
|
319
|
+
if (fs.existsSync(hookPath)) {
|
|
320
|
+
try {
|
|
321
|
+
fs.unlinkSync(hookPath);
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
console.warn(chalk.yellow(`Warning: Could not remove ${hookFile}`));
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
// Update Claude settings: remove only our hooks, preserve all other user hooks/settings
|
|
277
329
|
if (fs.existsSync(CLAUDE_SETTINGS_FILE)) {
|
|
278
330
|
try {
|
|
279
|
-
const
|
|
280
|
-
if (
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
331
|
+
const parsed = JSON.parse(fs.readFileSync(CLAUDE_SETTINGS_FILE, 'utf8'));
|
|
332
|
+
if (parsed && typeof parsed === 'object') {
|
|
333
|
+
if (typeof parsed.hooks === 'object' && parsed.hooks !== null) {
|
|
334
|
+
const hookTypes = ['PreToolUse', 'PostToolUse', 'UserPromptSubmit', 'SessionStart', 'SessionEnd', 'SubagentStop', 'Notification', 'Stop', 'PreCompact'];
|
|
335
|
+
for (const hookType of hookTypes) {
|
|
336
|
+
const entries = parsed.hooks[hookType];
|
|
337
|
+
if (Array.isArray(entries)) {
|
|
338
|
+
// Remove our commands from each entry's hooks list
|
|
339
|
+
for (const entry of entries) {
|
|
340
|
+
if (Array.isArray(entry.hooks)) {
|
|
341
|
+
entry.hooks = entry.hooks.filter(h => {
|
|
342
|
+
if (typeof h.command !== 'string')
|
|
343
|
+
return true;
|
|
344
|
+
return !h.command.includes('a24z-');
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
// Remove entries that no longer have any hooks
|
|
349
|
+
const remaining = entries.filter(e => Array.isArray(e.hooks) && e.hooks.length > 0);
|
|
350
|
+
if (remaining.length > 0) {
|
|
351
|
+
parsed.hooks[hookType] = remaining;
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
delete parsed.hooks[hookType];
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
// Keep hooks object even if empty to avoid surprising deletions
|
|
284
359
|
}
|
|
285
|
-
if (settings.hooks.PostToolUse) {
|
|
286
|
-
settings.hooks.PostToolUse = settings.hooks.PostToolUse.filter((hook) => !hook.hooks?.[0]?.command?.includes('a24z-post-hook.sh'));
|
|
287
|
-
}
|
|
288
|
-
// Clean up empty arrays
|
|
289
|
-
if (settings.hooks.PreToolUse?.length === 0)
|
|
290
|
-
delete settings.hooks.PreToolUse;
|
|
291
|
-
if (settings.hooks.PostToolUse?.length === 0)
|
|
292
|
-
delete settings.hooks.PostToolUse;
|
|
293
|
-
if (Object.keys(settings.hooks).length === 0)
|
|
294
|
-
delete settings.hooks;
|
|
295
360
|
}
|
|
296
|
-
fs.writeFileSync(CLAUDE_SETTINGS_FILE, JSON.stringify(
|
|
361
|
+
fs.writeFileSync(CLAUDE_SETTINGS_FILE, JSON.stringify(parsed, null, 2));
|
|
297
362
|
}
|
|
298
363
|
catch (error) {
|
|
299
364
|
console.warn(chalk.yellow('Warning: Could not update settings.json'));
|
|
@@ -314,25 +379,45 @@ class A24zCLI {
|
|
|
314
379
|
}
|
|
315
380
|
async status() {
|
|
316
381
|
console.log(chalk.blue('📊 A24Z Observability Status\\n'));
|
|
317
|
-
// Check installation
|
|
318
|
-
const
|
|
319
|
-
|
|
382
|
+
// Check installation of all hook types
|
|
383
|
+
const hookChecks = [
|
|
384
|
+
{ name: 'PreToolUse', file: 'a24z-pre-hook.sh' },
|
|
385
|
+
{ name: 'PostToolUse', file: 'a24z-post-hook.sh' },
|
|
386
|
+
{ name: 'UserPromptSubmit', file: 'a24z-user-prompt-submit-hook.sh' },
|
|
387
|
+
{ name: 'SessionStart', file: 'a24z-session-start-hook.sh' },
|
|
388
|
+
{ name: 'SessionEnd', file: 'a24z-session-end-hook.sh' },
|
|
389
|
+
{ name: 'SubagentStop', file: 'a24z-subagent-stop-hook.sh' },
|
|
390
|
+
{ name: 'Notification', file: 'a24z-notification-hook.sh' },
|
|
391
|
+
{ name: 'Stop', file: 'a24z-stop-hook.sh' },
|
|
392
|
+
{ name: 'PreCompact', file: 'a24z-precompact-hook.sh' }
|
|
393
|
+
];
|
|
320
394
|
const settingsExists = fs.existsSync(CLAUDE_SETTINGS_FILE);
|
|
321
|
-
|
|
322
|
-
console.log(
|
|
323
|
-
|
|
395
|
+
let installedHooks = 0;
|
|
396
|
+
console.log(chalk.white('🔧 Hook Installation Status:'));
|
|
397
|
+
for (const hook of hookChecks) {
|
|
398
|
+
const exists = fs.existsSync(path.join(HOOKS_DIR, hook.file));
|
|
399
|
+
if (exists)
|
|
400
|
+
installedHooks++;
|
|
401
|
+
console.log(` • ${hook.name}: ${exists ? chalk.green('✅ Installed') : chalk.red('❌ Not installed')}`);
|
|
402
|
+
}
|
|
403
|
+
console.log(`\\n • Total hooks installed: ${chalk.cyan(`${installedHooks}/9`)}`);
|
|
324
404
|
console.log(` • Claude settings: ${settingsExists ? chalk.green('✅ Configured') : chalk.red('❌ Not configured')}`);
|
|
405
|
+
console.log(` • Collector type: ${chalk.cyan('Universal (auto-detecting)')}`);
|
|
406
|
+
console.log(` • Collector version: ${chalk.cyan('2.1-universal-enhanced')}`);
|
|
325
407
|
if (this.config.installedAt) {
|
|
326
408
|
console.log(` • Installed at: ${chalk.cyan(new Date(this.config.installedAt).toLocaleString())}`);
|
|
327
409
|
}
|
|
410
|
+
// Show universal collector benefits
|
|
411
|
+
if (installedHooks > 0) {
|
|
412
|
+
console.log(chalk.white('\\n🎯 Universal Collector Features:'));
|
|
413
|
+
console.log(` • Auto-detects hook type from environment`);
|
|
414
|
+
console.log(` • Tool version detection (Claude Code, Cursor, VS Code)`);
|
|
415
|
+
console.log(` • Schema versioning support`);
|
|
416
|
+
console.log(` • Single codebase for all hooks (maintainable)`);
|
|
417
|
+
console.log(` • Enhanced/basic endpoint routing`);
|
|
418
|
+
}
|
|
328
419
|
console.log(chalk.white('\\n🔐 Authentication Status:'));
|
|
329
420
|
console.log(` • Logged in: ${this.config.accessToken ? chalk.green('✅ Yes') : chalk.red('❌ No')}`);
|
|
330
|
-
if (this.config.userId) {
|
|
331
|
-
console.log(` • User ID: ${chalk.cyan(this.config.userId)}`);
|
|
332
|
-
}
|
|
333
|
-
if (this.config.organizationId) {
|
|
334
|
-
console.log(` • Organization: ${chalk.cyan(this.config.organizationId)}`);
|
|
335
|
-
}
|
|
336
421
|
console.log(chalk.white('\\n⚙️ Configuration:'));
|
|
337
422
|
console.log(` • API URL: ${chalk.cyan(this.config.apiUrl)}`);
|
|
338
423
|
console.log(` • Client ID: ${chalk.cyan(this.config.clientId)}`);
|
|
@@ -367,14 +452,110 @@ class A24zCLI {
|
|
|
367
452
|
}
|
|
368
453
|
}
|
|
369
454
|
}
|
|
455
|
+
async hook(hookTypeArg) {
|
|
456
|
+
// Read stdin fully
|
|
457
|
+
const readStdin = async () => new Promise((resolve) => {
|
|
458
|
+
let data = '';
|
|
459
|
+
process.stdin.setEncoding('utf8');
|
|
460
|
+
process.stdin.on('data', (chunk) => { data += chunk; });
|
|
461
|
+
process.stdin.on('end', () => resolve(data));
|
|
462
|
+
setTimeout(() => resolve(data), 5000);
|
|
463
|
+
});
|
|
464
|
+
try {
|
|
465
|
+
const raw = await readStdin();
|
|
466
|
+
const hookType = hookTypeArg || process.env.CLAUDE_HOOK_EVENT_NAME || 'Unknown';
|
|
467
|
+
// Build environment snapshot
|
|
468
|
+
const safe = (v) => (v && v.length > 0 ? v : null);
|
|
469
|
+
const environment = {
|
|
470
|
+
CLAUDE_USER: safe(process.env.CLAUDE_USER),
|
|
471
|
+
CLAUDE_SESSION_ID: safe(process.env.CLAUDE_SESSION_ID),
|
|
472
|
+
CLAUDE_PROJECT_DIR: safe(process.env.CLAUDE_PROJECT_DIR),
|
|
473
|
+
CLAUDE_TRANSCRIPT_PATH: safe(process.env.CLAUDE_TRANSCRIPT_PATH),
|
|
474
|
+
CLAUDE_WORKING_DIR: safe(process.env.CLAUDE_WORKING_DIR),
|
|
475
|
+
CLAUDE_HOOK_EVENT_NAME: hookType,
|
|
476
|
+
CLAUDE_VERSION: safe(process.env.CLAUDE_VERSION),
|
|
477
|
+
CLAUDE_BUILD: safe(process.env.CLAUDE_BUILD),
|
|
478
|
+
PWD: safe(process.env.PWD),
|
|
479
|
+
USER: safe(process.env.USER),
|
|
480
|
+
HOME: safe(process.env.HOME),
|
|
481
|
+
HOSTNAME: safe(process.env.HOSTNAME),
|
|
482
|
+
SHELL: safe(process.env.SHELL),
|
|
483
|
+
LANG: safe(process.env.LANG),
|
|
484
|
+
TZ: safe(process.env.TZ),
|
|
485
|
+
TERM: safe(process.env.TERM),
|
|
486
|
+
NODE_VERSION: process.version,
|
|
487
|
+
captured_at: new Date().toISOString(),
|
|
488
|
+
};
|
|
489
|
+
const enhanced = typeof environment.CLAUDE_VERSION === 'string' && environment.CLAUDE_VERSION !== null;
|
|
490
|
+
const endpoint = `${this.config.apiUrl}/api/v1/hooks/ingest`; // Unified endpoint handles both enhanced and basic data
|
|
491
|
+
let rawInput = raw;
|
|
492
|
+
try {
|
|
493
|
+
rawInput = JSON.parse(raw);
|
|
494
|
+
}
|
|
495
|
+
catch { /* raw passthrough */ }
|
|
496
|
+
const payload = enhanced
|
|
497
|
+
? {
|
|
498
|
+
source_tool: { name: 'claude-code', version: environment.CLAUDE_VERSION, build: environment.CLAUDE_BUILD },
|
|
499
|
+
hook_schema: { version: 'v1.0', format: 'anthropic_official', detected_at: new Date().toISOString() },
|
|
500
|
+
hook_type: hookType,
|
|
501
|
+
timestamp: new Date().toISOString(),
|
|
502
|
+
raw_input: rawInput,
|
|
503
|
+
environment,
|
|
504
|
+
collector_metadata: {
|
|
505
|
+
version: '2.1-cli-helper',
|
|
506
|
+
deployment_mode: 'cli_subcommand',
|
|
507
|
+
configuration_version: '1.0',
|
|
508
|
+
enhanced_features: ['thin_wrapper', 'env_snapshot'],
|
|
509
|
+
hook_type_detection_method: 'arg_or_env'
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
: {
|
|
513
|
+
hook_type: hookType,
|
|
514
|
+
timestamp: new Date().toISOString(),
|
|
515
|
+
raw_input: rawInput,
|
|
516
|
+
environment,
|
|
517
|
+
collector_version: '2.1-cli-basic'
|
|
518
|
+
};
|
|
519
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
520
|
+
if (this.config.accessToken)
|
|
521
|
+
headers.Authorization = `Bearer ${this.config.accessToken}`;
|
|
522
|
+
await axios.post(endpoint, payload, { headers, timeout: 10000 });
|
|
523
|
+
}
|
|
524
|
+
catch (error) {
|
|
525
|
+
// Log to stderr but don't fail the hook
|
|
526
|
+
console.error('[a24z hook] Error:', error instanceof Error ? error.message : error);
|
|
527
|
+
}
|
|
528
|
+
finally {
|
|
529
|
+
// Always pass through stdin unchanged
|
|
530
|
+
process.stdin.resume();
|
|
531
|
+
}
|
|
532
|
+
}
|
|
370
533
|
}
|
|
371
534
|
// CLI setup
|
|
372
535
|
const program = new Command();
|
|
373
536
|
const cli = new A24zCLI();
|
|
537
|
+
/**
|
|
538
|
+
* Read CLI version from this package's package.json.
|
|
539
|
+
* Falls back to "0.0.0" if reading/parsing fails.
|
|
540
|
+
*/
|
|
541
|
+
function getCliVersion() {
|
|
542
|
+
try {
|
|
543
|
+
const pkgPath = path.resolve(__dirname, "..", "package.json");
|
|
544
|
+
const raw = fs.readFileSync(pkgPath, "utf8");
|
|
545
|
+
const pkg = JSON.parse(raw);
|
|
546
|
+
if (typeof pkg.version === "string" && pkg.version.length > 0) {
|
|
547
|
+
return pkg.version;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
catch {
|
|
551
|
+
// ignore and fall through
|
|
552
|
+
}
|
|
553
|
+
return "0.0.0";
|
|
554
|
+
}
|
|
374
555
|
program
|
|
375
556
|
.name('a24z')
|
|
376
557
|
.description('Claude Code Observability CLI - Monitor and analyze your AI tool performance')
|
|
377
|
-
.version(
|
|
558
|
+
.version(getCliVersion());
|
|
378
559
|
program
|
|
379
560
|
.command('install')
|
|
380
561
|
.description('Install A24Z observability hooks for Claude Code')
|
|
@@ -404,6 +585,13 @@ program
|
|
|
404
585
|
.action(async () => {
|
|
405
586
|
await cli.uninstall();
|
|
406
587
|
});
|
|
588
|
+
program
|
|
589
|
+
.command('hook')
|
|
590
|
+
.description('Internal: process a Claude hook payload from stdin and send to A24Z')
|
|
591
|
+
.option('--type <hookType>', 'Hook type (e.g., PreToolUse, PostToolUse)')
|
|
592
|
+
.action(async (options) => {
|
|
593
|
+
await cli.hook(options.type);
|
|
594
|
+
});
|
|
407
595
|
// Parse command line arguments
|
|
408
596
|
program.parse();
|
|
409
597
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "a24z",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "AI Agent Observability CLI - Monitor and analyze your AI tool performance",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -13,11 +13,6 @@
|
|
|
13
13
|
"templates/",
|
|
14
14
|
"README.md"
|
|
15
15
|
],
|
|
16
|
-
"scripts": {
|
|
17
|
-
"build": "tsc",
|
|
18
|
-
"prepublishOnly": "npm run build",
|
|
19
|
-
"test": "echo \"Error: no test specified\" && exit 1"
|
|
20
|
-
},
|
|
21
16
|
"keywords": [
|
|
22
17
|
"claude",
|
|
23
18
|
"ai",
|
|
@@ -48,9 +43,14 @@
|
|
|
48
43
|
"devDependencies": {
|
|
49
44
|
"@types/inquirer": "^9.0.7",
|
|
50
45
|
"@types/node": "^20.10.0",
|
|
51
|
-
"typescript": "^5.3.2"
|
|
46
|
+
"typescript": "^5.3.2",
|
|
47
|
+
"@repo/types": "1.0.0"
|
|
52
48
|
},
|
|
53
49
|
"engines": {
|
|
54
50
|
"node": ">=16.0.0"
|
|
51
|
+
},
|
|
52
|
+
"scripts": {
|
|
53
|
+
"build": "tsc",
|
|
54
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
55
55
|
}
|
|
56
|
-
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
CMD="a24z hook"
|
|
7
|
+
|
|
8
|
+
# Derive hook type from env or script name
|
|
9
|
+
HOOK_NAME="$(basename "$0")"
|
|
10
|
+
HOOK_TYPE="${CLAUDE_HOOK_EVENT_NAME:-}"
|
|
11
|
+
if [ -z "$HOOK_TYPE" ]; then
|
|
12
|
+
case "$HOOK_NAME" in
|
|
13
|
+
*pre-hook*) HOOK_TYPE="PreToolUse" ;;
|
|
14
|
+
*post-hook*) HOOK_TYPE="PostToolUse" ;;
|
|
15
|
+
*user-prompt-submit*) HOOK_TYPE="UserPromptSubmit" ;;
|
|
16
|
+
*session-start*) HOOK_TYPE="SessionStart" ;;
|
|
17
|
+
*session-end*) HOOK_TYPE="SessionEnd" ;;
|
|
18
|
+
*subagent-stop*) HOOK_TYPE="SubagentStop" ;;
|
|
19
|
+
*notification*) HOOK_TYPE="Notification" ;;
|
|
20
|
+
*stop-hook*) HOOK_TYPE="Stop" ;;
|
|
21
|
+
*precompact*) HOOK_TYPE="PreCompact" ;;
|
|
22
|
+
*) HOOK_TYPE="Unknown" ;;
|
|
23
|
+
esac
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# Read stdin and pass through to CLI subcommand
|
|
27
|
+
STDIN_DATA=$(cat)
|
|
28
|
+
|
|
29
|
+
if command -v a24z >/dev/null 2>&1; then
|
|
30
|
+
printf "%s" "$STDIN_DATA" | a24z hook --type "$HOOK_TYPE" || true
|
|
31
|
+
else
|
|
32
|
+
echo "[a24z] CLI not found in PATH; passing through input" >&2
|
|
33
|
+
# If CLI not found, pass-through so Claude continues unaffected
|
|
34
|
+
printf "%s" "$STDIN_DATA"
|
|
35
|
+
fi
|
package/templates/post-hook.sh
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# A24Z Claude Code Post-Hook Script
|
|
4
|
-
# This script captures data after tool execution and sends it to A24Z Observability
|
|
5
|
-
|
|
6
|
-
# Configuration
|
|
7
|
-
OBSERVABILITY_URL="{{API_URL}}/api/hooks/post"
|
|
8
|
-
LOG_FILE="$HOME/.claude/a24z.log"
|
|
9
|
-
DEBUG_MODE="${DEBUG_HOOKS:-false}"
|
|
10
|
-
|
|
11
|
-
# Ensure log directory exists
|
|
12
|
-
mkdir -p "$(dirname "$LOG_FILE")"
|
|
13
|
-
|
|
14
|
-
# Function for debug logging
|
|
15
|
-
debug_log() {
|
|
16
|
-
if [ "$DEBUG_MODE" = "true" ]; then
|
|
17
|
-
echo "$(date '+%Y-%m-%d %H:%M:%S') [DEBUG] $1" >> "$LOG_FILE" 2>/dev/null
|
|
18
|
-
fi
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
# Function for info logging
|
|
22
|
-
info_log() {
|
|
23
|
-
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] $1" >> "$LOG_FILE" 2>/dev/null
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
# Function for error logging
|
|
27
|
-
error_log() {
|
|
28
|
-
echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] $1" >> "$LOG_FILE" 2>/dev/null
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
# Read input from Claude Code
|
|
32
|
-
input=$(cat)
|
|
33
|
-
|
|
34
|
-
# Validate input is not empty
|
|
35
|
-
if [ -z "$input" ]; then
|
|
36
|
-
error_log "Post-hook received empty input"
|
|
37
|
-
exit 0
|
|
38
|
-
fi
|
|
39
|
-
|
|
40
|
-
debug_log "Post-hook received input: $input"
|
|
41
|
-
|
|
42
|
-
# Extract tool information using jq
|
|
43
|
-
tool_call_id=$(echo "$input" | jq -r '.tool_call_id // empty')
|
|
44
|
-
tool_output=$(echo "$input" | jq -c '.tool_output // {}')
|
|
45
|
-
success=$(echo "$input" | jq -r '.success // false')
|
|
46
|
-
error_message=$(echo "$input" | jq -r '.error_message // empty')
|
|
47
|
-
output_tokens=$(echo "$input" | jq -r '.output_tokens // empty')
|
|
48
|
-
|
|
49
|
-
# Validate required fields
|
|
50
|
-
if [ -z "$tool_call_id" ] || [ "$tool_call_id" = "null" ]; then
|
|
51
|
-
error_log "No tool_call_id found in input"
|
|
52
|
-
echo "$input" # Pass through unchanged
|
|
53
|
-
exit 0
|
|
54
|
-
fi
|
|
55
|
-
|
|
56
|
-
# Convert success to boolean
|
|
57
|
-
if [ "$success" = "true" ]; then
|
|
58
|
-
success_bool=true
|
|
59
|
-
else
|
|
60
|
-
success_bool=false
|
|
61
|
-
fi
|
|
62
|
-
|
|
63
|
-
# Build JSON payload
|
|
64
|
-
payload=$(jq -n \
|
|
65
|
-
--arg tool_call_id "$tool_call_id" \
|
|
66
|
-
--argjson tool_output "$tool_output" \
|
|
67
|
-
--argjson success "$success_bool" \
|
|
68
|
-
--arg error_message "$error_message" \
|
|
69
|
-
--arg output_tokens "$output_tokens" \
|
|
70
|
-
'{
|
|
71
|
-
tool_call_id: $tool_call_id,
|
|
72
|
-
tool_output: $tool_output,
|
|
73
|
-
success: $success,
|
|
74
|
-
error_message: (if $error_message != "" then $error_message else null end),
|
|
75
|
-
output_tokens: (if $output_tokens != "" and $output_tokens != "null" then ($output_tokens | tonumber) else null end)
|
|
76
|
-
}')
|
|
77
|
-
|
|
78
|
-
# Prepare headers
|
|
79
|
-
headers=(-H "Content-Type: application/json")
|
|
80
|
-
if [ -n "{{ACCESS_TOKEN}}" ]; then
|
|
81
|
-
headers+=(-H "Authorization: Bearer {{ACCESS_TOKEN}}")
|
|
82
|
-
fi
|
|
83
|
-
|
|
84
|
-
# Send data to A24Z observability
|
|
85
|
-
response=$(curl -s -X POST "$OBSERVABILITY_URL" \
|
|
86
|
-
"${headers[@]}" \
|
|
87
|
-
-d "$payload" \
|
|
88
|
-
-w "HTTP_STATUS:%{http_code}" 2>/dev/null)
|
|
89
|
-
|
|
90
|
-
# Extract HTTP status and response body
|
|
91
|
-
http_status=$(echo "$response" | grep -o "HTTP_STATUS:[0-9]*" | cut -d: -f2)
|
|
92
|
-
response_body=$(echo "$response" | sed 's/HTTP_STATUS:[0-9]*$//')
|
|
93
|
-
|
|
94
|
-
# Log the result
|
|
95
|
-
if [ "$http_status" = "200" ]; then
|
|
96
|
-
status=$(echo "$response_body" | jq -r '.data.status // empty')
|
|
97
|
-
duration=$(echo "$response_body" | jq -r '.data.duration // empty')
|
|
98
|
-
info_log "Post-hook sent successfully for $tool_call_id (Status: $status, Duration: ${duration}ms)"
|
|
99
|
-
else
|
|
100
|
-
error_log "Post-hook failed for $tool_call_id (HTTP $http_status): $response_body"
|
|
101
|
-
fi
|
|
102
|
-
|
|
103
|
-
# Always pass through the input unchanged
|
|
104
|
-
echo "$input"
|
package/templates/pre-hook.sh
DELETED
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
# A24Z Claude Code Pre-Hook Script
|
|
4
|
-
# This script captures data before tool execution and sends it to A24Z Observability
|
|
5
|
-
|
|
6
|
-
# Configuration
|
|
7
|
-
OBSERVABILITY_URL="{{API_URL}}/api/hooks/pre"
|
|
8
|
-
LOG_FILE="$HOME/.claude/a24z.log"
|
|
9
|
-
DEBUG_MODE="${DEBUG_HOOKS:-false}"
|
|
10
|
-
|
|
11
|
-
# Ensure log directory exists
|
|
12
|
-
mkdir -p "$(dirname "$LOG_FILE")"
|
|
13
|
-
|
|
14
|
-
# Function for debug logging
|
|
15
|
-
debug_log() {
|
|
16
|
-
if [ "$DEBUG_MODE" = "true" ]; then
|
|
17
|
-
echo "$(date '+%Y-%m-%d %H:%M:%S') [DEBUG] $1" >> "$LOG_FILE" 2>/dev/null
|
|
18
|
-
fi
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
# Function for info logging
|
|
22
|
-
info_log() {
|
|
23
|
-
echo "$(date '+%Y-%m-%d %H:%M:%S') [INFO] $1" >> "$LOG_FILE" 2>/dev/null
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
# Function for error logging
|
|
27
|
-
error_log() {
|
|
28
|
-
echo "$(date '+%Y-%m-%d %H:%M:%S') [ERROR] $1" >> "$LOG_FILE" 2>/dev/null
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
# Read input from Claude Code
|
|
32
|
-
input=$(cat)
|
|
33
|
-
|
|
34
|
-
# Validate input is not empty
|
|
35
|
-
if [ -z "$input" ]; then
|
|
36
|
-
error_log "Pre-hook received empty input"
|
|
37
|
-
exit 0
|
|
38
|
-
fi
|
|
39
|
-
|
|
40
|
-
debug_log "Pre-hook received input: $input"
|
|
41
|
-
|
|
42
|
-
# Extract tool information using jq
|
|
43
|
-
tool_name=$(echo "$input" | jq -r '.tool_name // empty')
|
|
44
|
-
tool_input=$(echo "$input" | jq -c '.tool_input // {}')
|
|
45
|
-
prompt=$(echo "$input" | jq -r '.prompt // empty')
|
|
46
|
-
context=$(echo "$input" | jq -c '.context // {}')
|
|
47
|
-
session_id=$(echo "$input" | jq -r '.session_id // empty')
|
|
48
|
-
|
|
49
|
-
# Validate required fields
|
|
50
|
-
if [ -z "$tool_name" ] || [ "$tool_name" = "null" ]; then
|
|
51
|
-
error_log "No tool_name found in input"
|
|
52
|
-
echo "$input" # Pass through unchanged
|
|
53
|
-
exit 0
|
|
54
|
-
fi
|
|
55
|
-
|
|
56
|
-
# Build JSON payload
|
|
57
|
-
payload=$(jq -n \
|
|
58
|
-
--arg tool_name "$tool_name" \
|
|
59
|
-
--argjson tool_input "$tool_input" \
|
|
60
|
-
--arg prompt "$prompt" \
|
|
61
|
-
--argjson context "$context" \
|
|
62
|
-
--arg session_id "$session_id" \
|
|
63
|
-
'{
|
|
64
|
-
tool_name: $tool_name,
|
|
65
|
-
tool_input: $tool_input,
|
|
66
|
-
prompt: (if $prompt != "" then $prompt else null end),
|
|
67
|
-
context: (if ($context | length) > 0 then $context else null end),
|
|
68
|
-
session_id: (if $session_id != "" then $session_id else null end)
|
|
69
|
-
}')
|
|
70
|
-
|
|
71
|
-
# Prepare headers
|
|
72
|
-
headers=(-H "Content-Type: application/json")
|
|
73
|
-
if [ -n "{{ACCESS_TOKEN}}" ]; then
|
|
74
|
-
headers+=(-H "Authorization: Bearer {{ACCESS_TOKEN}}")
|
|
75
|
-
fi
|
|
76
|
-
|
|
77
|
-
# Send data to A24Z observability
|
|
78
|
-
response=$(curl -s -X POST "$OBSERVABILITY_URL" \
|
|
79
|
-
"${headers[@]}" \
|
|
80
|
-
-d "$payload" \
|
|
81
|
-
-w "HTTP_STATUS:%{http_code}" 2>/dev/null)
|
|
82
|
-
|
|
83
|
-
# Extract HTTP status and response body
|
|
84
|
-
http_status=$(echo "$response" | grep -o "HTTP_STATUS:[0-9]*" | cut -d: -f2)
|
|
85
|
-
response_body=$(echo "$response" | sed 's/HTTP_STATUS:[0-9]*$//')
|
|
86
|
-
|
|
87
|
-
# Log the result
|
|
88
|
-
if [ "$http_status" = "200" ]; then
|
|
89
|
-
tool_call_id=$(echo "$response_body" | jq -r '.data.tool_call_id // empty')
|
|
90
|
-
session_id=$(echo "$response_body" | jq -r '.data.session_id // empty')
|
|
91
|
-
info_log "Pre-hook sent successfully for $tool_name (ID: $tool_call_id, Session: $session_id)"
|
|
92
|
-
|
|
93
|
-
# Add tool_call_id and other metadata to the input for the post-hook
|
|
94
|
-
enhanced_input=$(echo "$input" | jq \
|
|
95
|
-
--arg tool_call_id "$tool_call_id" \
|
|
96
|
-
--arg session_id "$session_id" \
|
|
97
|
-
--arg observability_timestamp "$(date -u +%Y-%m-%dT%H:%M:%S.%3NZ)" \
|
|
98
|
-
'. + {
|
|
99
|
-
tool_call_id: $tool_call_id,
|
|
100
|
-
session_id: $session_id,
|
|
101
|
-
a24z_metadata: {
|
|
102
|
-
timestamp: $observability_timestamp,
|
|
103
|
-
hook_version: "2.0",
|
|
104
|
-
source: "a24z-observability"
|
|
105
|
-
}
|
|
106
|
-
}')
|
|
107
|
-
echo "$enhanced_input"
|
|
108
|
-
else
|
|
109
|
-
error_log "Pre-hook failed for $tool_name (HTTP $http_status): $response_body"
|
|
110
|
-
echo "$input" # Pass through unchanged if API call fails
|
|
111
|
-
fi
|