a24z 1.0.10 → 1.0.12

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 CHANGED
@@ -1,11 +1,10 @@
1
1
  # A24Z - Claude Code Observability CLI
2
2
 
3
3
  [![npm version](https://badge.fury.io/js/a24z.svg)](https://badge.fury.io/js/a24z)
4
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
4
 
6
5
  **Monitor and analyze your Claude Code AI tool performance with comprehensive observability.**
7
6
 
8
- A24Z provides real-time insights into your AI tool usage, helping you understand performance, optimize prompts, and track success rates across your organization.
7
+ a24z provides real-time insights into your AI tool usage, helping you understand performance, optimize prompts, and track success rates across your organization.
9
8
 
10
9
  ## 🚀 Quick Start
11
10
 
@@ -15,30 +14,24 @@ A24Z provides real-time insights into your AI tool usage, helping you understand
15
14
  npm install -g a24z
16
15
  ```
17
16
 
18
- ### Setup (One Command!)
17
+ ### Setup
19
18
 
20
19
  ```bash
21
20
  # Install hooks and configure Claude Code
22
- a24z install
23
-
24
- # Login for multi-tenancy (optional)
25
- a24z login
26
-
27
- # Check everything is working
28
- a24z status
21
+ a24z install && a24z login
29
22
  ```
30
23
 
31
- **That's it!** Your Claude Code tools are now being monitored. View your dashboard at [a24z.ai](https://a24z.ai).
24
+ **That's it!** Your Claude Code tools are now being monitored. View your dashboard at [a24z.ai](https://app.a24z.ai).
32
25
 
33
26
  ## ✨ Features
34
27
 
35
- - **🔧 One-Command Installation**: Automatically configures Claude Code hooks
28
+ - **🔧 One-Command Installation**: Get up and running with just `a24z install`
36
29
  - **📊 Real-time Dashboard**: Live monitoring of all tool executions
37
- - **🏢 Multi-tenancy**: Organization-based data isolation with WorkOS auth
38
30
  - **📈 Performance Analytics**: Success rates, execution times, and trends
39
31
  - **🎯 Tool Insights**: Per-tool performance analysis and optimization suggestions
40
32
  - **🔐 Secure**: Enterprise-grade authentication and data protection
41
33
  - **⚡ Zero Configuration**: Works out of the box with sensible defaults
34
+ - **🔄 Robust Hook System**: Supports all hook types
42
35
 
43
36
  ## 📋 Commands
44
37
 
@@ -47,29 +40,31 @@ a24z status
47
40
  Installs A24Z observability hooks for Claude Code.
48
41
 
49
42
  ```bash
50
- a24z install # Use default hosted service
51
- a24z install --api-url https://your.domain # Use custom backend
43
+ a24z install claude-code
52
44
  ```
53
45
 
54
46
  **What it does:**
55
- - ✅ Copies hook scripts to `~/.claude/hooks/`
47
+
48
+ - ✅ Configures direct CLI integration with Claude Code
56
49
  - ✅ Updates `~/.claude/settings.json` automatically
57
- - ✅ Configures API endpoints
58
- - ✅ Sets up logging and error handling
50
+ - ✅ Configures API endpoints and authentication
51
+ - ✅ Sets up comprehensive hook coverage for all tool events
52
+ - ✅ Enables real-time monitoring
59
53
 
60
54
  ### `a24z login`
61
55
 
62
- Authenticate with A24Z for multi-tenancy support.
56
+ Authenticate with a24z.
63
57
 
64
58
  ```bash
65
59
  a24z login
66
60
  ```
67
61
 
68
62
  **Benefits of logging in:**
69
- - 🏢 **Organization Isolation**: Your data is kept separate from other organizations
63
+
64
+ - 🏢 **Organization Isolation**: Your data is kept in a cloud environment without hosting
70
65
  - 👥 **Team Collaboration**: Share insights with your team members
71
66
  - 🔐 **Enhanced Security**: Enterprise-grade authentication
72
- - 📊 **Advanced Analytics**: Access to organization-wide metrics
67
+ - 📊 **Advanced Analytics**: See where your Coding Agents can improve
73
68
 
74
69
  ### `a24z status`
75
70
 
@@ -80,9 +75,9 @@ a24z status
80
75
  ```
81
76
 
82
77
  **Shows:**
78
+
83
79
  - Installation status of hook scripts
84
80
  - Authentication status
85
- - API connectivity
86
81
  - Configuration details
87
82
 
88
83
  ### `a24z uninstall`
@@ -90,41 +85,84 @@ a24z status
90
85
  Remove A24Z observability hooks.
91
86
 
92
87
  ```bash
93
- a24z uninstall
88
+ a24z uninstall claude-code
94
89
  ```
95
90
 
96
91
  **What it does:**
92
+
97
93
  - 🗑️ Removes hook scripts
98
94
  - ⚙️ Cleans up Claude settings
99
95
  - 🔄 Restores original configuration
100
96
 
97
+ ### `a24z hook <tool>`
98
+
99
+ Internal command that processes hook payloads from stdin and sends them to a24z.
100
+
101
+ ```bash
102
+ a24z hook claude-code
103
+ ```
104
+
105
+ **Purpose:**
106
+
107
+ - Sends data to a24z backend for analysis
108
+ - Fire-and-forget operation - doesn't block tool execution
109
+ - Supports all hook types
110
+
111
+ **Note:** This command is called automatically by Claude Code hooks and should not be used directly by users.
112
+
101
113
  ## 🏗️ How It Works
102
114
 
103
- ### 1. Hook Installation
104
- A24Z installs lightweight bash scripts that integrate with Claude Code's native hook system:
115
+ ### 1. Direct CLI Integration
116
+
117
+ a24z configures direct CLI integration with Claude Code's native hook system:
105
118
 
106
119
  ```json
107
120
  {
108
121
  "hooks": {
109
122
  "PreToolUse": [{
110
123
  "matcher": "*",
111
- "hooks": [{ "type": "command", "command": "~/.claude/hooks/a24z-pre-hook.sh" }]
124
+ "hooks": [{ "type": "command", "command": "a24z hook claude-code" }]
112
125
  }],
113
126
  "PostToolUse": [{
114
- "matcher": "*",
115
- "hooks": [{ "type": "command", "command": "~/.claude/hooks/a24z-post-hook.sh" }]
127
+ "matcher": "*",
128
+ "hooks": [{ "type": "command", "command": "a24z hook claude-code" }]
129
+ }],
130
+ "UserPromptSubmit": [{
131
+ "matcher": "*",
132
+ "hooks": [{ "type": "command", "command": "a24z hook claude-code" }]
133
+ }],
134
+ "SessionStart": [{
135
+ "matcher": "*",
136
+ "hooks": [{ "type": "command", "command": "a24z hook claude-code" }]
137
+ }],
138
+ "SessionEnd": [{
139
+ "matcher": "*",
140
+ "hooks": [{ "type": "command", "command": "a24z hook claude-code" }]
141
+ }],
142
+ "SubagentStop": [{
143
+ "matcher": "*",
144
+ "hooks": [{ "type": "command", "command": "a24z hook claude-code" }]
145
+ }],
146
+ "Notification": [{
147
+ "matcher": "*",
148
+ "hooks": [{ "type": "command", "command": "a24z hook claude-code" }]
149
+ }],
150
+ "Stop": [{
151
+ "matcher": "*",
152
+ "hooks": [{ "type": "command", "command": "a24z hook claude-code" }]
153
+ }],
154
+ "PreCompact": [{
155
+ "matcher": "*",
156
+ "hooks": [{ "type": "command", "command": "a24z hook claude-code" }]
116
157
  }]
117
158
  }
118
159
  }
119
160
  ```
120
161
 
121
- ### 2. Data Collection
122
- - **Pre-hook**: Captures tool name, input parameters, and context before execution
123
- - **Post-hook**: Records execution results, success/failure status, and performance metrics
124
- - **Privacy**: Only metadata is collected - your actual code and sensitive data never leaves your machine
162
+ ### 2. Real-time Analysis
163
+
164
+ Data is sent to the a24z platform where it's processed to provide:
125
165
 
126
- ### 3. Real-time Analysis
127
- Data is sent to the A24Z platform where it's processed to provide:
128
166
  - Performance dashboards
129
167
  - Success rate analytics
130
168
  - Tool usage patterns
@@ -132,85 +170,19 @@ Data is sent to the A24Z platform where it's processed to provide:
132
170
 
133
171
  ## 🔧 Configuration
134
172
 
135
- ### Environment Variables
136
-
137
- ```bash
138
- # Enable debug logging
139
- export DEBUG_HOOKS=true
140
-
141
- # Custom API endpoint (for self-hosted deployments)
142
- export A24Z_API_URL=https://your-api.domain.com
143
- ```
144
-
145
173
  ### File Locations
146
174
 
147
175
  - **Config**: `~/.claude/a24z-config.json`
148
- - **Hooks**: `~/.claude/hooks/a24z-*.sh`
149
- - **Logs**: `~/.claude/a24z.log`
150
176
  - **Claude Settings**: `~/.claude/settings.json`
151
177
 
152
- ## 🏢 Enterprise & Self-Hosting
153
-
154
- ### Multi-tenancy
155
- A24Z supports full multi-tenancy with organization isolation:
156
-
157
- ```bash
158
- a24z login # Authenticate with your organization
159
- ```
160
-
161
- ### Self-Hosted Deployment
162
- Run A24Z on your own infrastructure:
163
-
164
- ```bash
165
- # Install with custom backend
166
- a24z install --api-url https://your-observability.company.com
167
-
168
- # Or set permanently
169
- export A24Z_API_URL=https://your-observability.company.com
170
- ```
171
-
172
- ## 🛠️ Development
173
-
174
- ### Local Development
175
-
176
- ```bash
177
- git clone https://github.com/your-org/a24z-observability
178
- cd packages/a24z-cli
179
- npm install
180
- npm run build
181
- npm link
182
-
183
- # Test locally
184
- a24z --help
185
- ```
186
-
187
- ### Building
188
-
189
- ```bash
190
- npm run build # Compile TypeScript to dist/
191
- ```
192
-
193
- ## 🤝 Contributing
194
-
195
- We welcome contributions! Please see our [Contributing Guide](../../CONTRIBUTING.md).
196
-
197
- ### Issues
198
-
199
- Found a bug or have a feature request? [Open an issue](https://github.com/your-org/a24z-observability/issues).
200
-
201
- ## 📄 License
202
-
203
- MIT License - see [LICENSE](LICENSE) for details.
204
-
205
178
  ## 🔗 Links
206
179
 
207
- - **Dashboard**: [a24z.dev](https://a24z.ai)
180
+ - **Dashboard**: [app.a24z.ai](https://app.a24z.ai)
208
181
  - **Documentation**: [docs.a24z.ai](https://docs.a24z.ai)
209
- - **GitHub**: [github.com/your-org/a24z-observability](https://github.com/your-org/a24z-observability)
210
- - **Support**: [support@a24z.ai](mailto:support@a24z.ai)
182
+ - **Context Engine** [a24z Memory](https://www.github.com/a24z-memory/a24z-memory)
211
183
 
212
184
  ---
213
185
 
214
- **Made with ❤️ by the A24Z Team**
186
+ ## ❤️ Made by the a24z Team
215
187
 
216
188
  *Transform your AI development workflow with comprehensive observability.*
package/bin/a24z.js CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  // This is the NPM bin entry point that loads the compiled TypeScript
4
4
  import('../dist/index.js').catch(error => {
5
- console.error('Failed to load A24Z CLI:', error);
5
+ console.error('Failed to load a24z CLI:', error);
6
6
  process.exit(1);
7
7
  });
package/dist/index.js CHANGED
@@ -9,8 +9,6 @@ import os from 'os';
9
9
  import { fileURLToPath } from 'url';
10
10
  import axios from 'axios';
11
11
  import open from 'open';
12
- import dotenv from "dotenv";
13
- dotenv.config();
14
12
  // Single source of truth for WorkOS client ID.
15
13
  // If you change the client, update this constant and publish.
16
14
  const WORKOS_CLIENT_ID = "client_01K4ZPKST26YPKMQBGQW7HZ4SB";
@@ -19,8 +17,41 @@ const __dirname = path.dirname(__filename);
19
17
  // Configuration constants
20
18
  const CLAUDE_DIR = path.join(os.homedir(), '.claude');
21
19
  const CLAUDE_SETTINGS_FILE = path.join(CLAUDE_DIR, 'settings.json');
22
- const HOOKS_DIR = path.join(CLAUDE_DIR, 'hooks');
23
20
  const CONFIG_FILE = path.join(CLAUDE_DIR, 'a24z-config.json');
21
+ // Supported tools and their validation
22
+ // Currently only supporting Claude Code
23
+ const SUPPORTED_TOOLS = [
24
+ 'claude-code'
25
+ ];
26
+ /**
27
+ * Validates that a tool name is supported
28
+ */
29
+ function validateTool(tool) {
30
+ const normalizedTool = tool.toLowerCase().trim();
31
+ // Check if tool is supported
32
+ if (!SUPPORTED_TOOLS.includes(normalizedTool)) {
33
+ throw new Error(`Unsupported tool: '${tool}'. Supported tools: ${SUPPORTED_TOOLS.join(', ')}`);
34
+ }
35
+ return normalizedTool;
36
+ }
37
+ /**
38
+ * Sanitizes input to prevent injection attacks and normalize data
39
+ */
40
+ function sanitizeInput(input, maxLength = 255) {
41
+ if (typeof input !== 'string') {
42
+ throw new Error('Input must be a string');
43
+ }
44
+ return input
45
+ .trim()
46
+ .substring(0, maxLength)
47
+ .replace(/[<>"/\\&'"]/g, ''); // Remove dangerous characters
48
+ }
49
+ /**
50
+ * Safely handles potentially undefined/null values
51
+ */
52
+ function safe(value, fallback) {
53
+ return value === null || value === undefined ? fallback : value;
54
+ }
24
55
  class A24zCLI {
25
56
  constructor() {
26
57
  this.config = this.loadConfig();
@@ -35,10 +66,12 @@ class A24zCLI {
35
66
  console.error(chalk.red('Error loading configuration:'), error);
36
67
  }
37
68
  const defaultConfig = {
38
- apiUrl: 'https://app.a24z.ai',
69
+ apiUrl: 'https://api.a24z.ai',
70
+ authUrl: 'https://app.a24z.ai',
39
71
  clientId: WORKOS_CLIENT_ID,
40
72
  accessToken: null,
41
- installedAt: null
73
+ installedAt: null,
74
+ tool: null
42
75
  };
43
76
  return defaultConfig;
44
77
  }
@@ -51,37 +84,86 @@ class A24zCLI {
51
84
  console.error(chalk.red('Error saving configuration:'), error);
52
85
  }
53
86
  }
54
- async install(options = {}) {
55
- console.log('api url', options.apiUrl);
56
- const spinner = ora('Installing A24Z Claude Code hooks...').start();
87
+ getCurrentTool() {
88
+ // Check if we have tool-specific config or use default
89
+ try {
90
+ if (fs.existsSync(CONFIG_FILE)) {
91
+ const config = JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
92
+ return config.tool || null;
93
+ }
94
+ }
95
+ catch (error) {
96
+ // ignore errors
97
+ }
98
+ return null;
99
+ }
100
+ async install(tool, options = {}) {
101
+ // Validate and sanitize tool input
102
+ let validatedTool;
103
+ try {
104
+ validatedTool = validateTool(tool);
105
+ }
106
+ catch (error) {
107
+ console.error(chalk.red('❌ Error:'), error instanceof Error ? error.message : error);
108
+ process.exit(1);
109
+ }
110
+ // Sanitize API URL if provided
111
+ if (options.apiUrl) {
112
+ try {
113
+ options.apiUrl = sanitizeInput(options.apiUrl, 500); // URLs can be longer
114
+ // Basic URL validation
115
+ const url = new URL(options.apiUrl);
116
+ if (!url.protocol.startsWith('http')) {
117
+ throw new Error('API URL must use HTTP or HTTPS protocol');
118
+ }
119
+ }
120
+ catch (error) {
121
+ console.error(chalk.red('❌ Error: Invalid API URL:'), error instanceof Error ? error.message : error);
122
+ process.exit(1);
123
+ }
124
+ }
125
+ // Sanitize Auth URL if provided
126
+ if (options.authUrl) {
127
+ try {
128
+ options.authUrl = sanitizeInput(options.authUrl, 500);
129
+ const url = new URL(options.authUrl);
130
+ if (!url.protocol.startsWith('http')) {
131
+ throw new Error('Auth URL must use HTTP or HTTPS protocol');
132
+ }
133
+ }
134
+ catch (error) {
135
+ console.error(chalk.red('❌ Error: Invalid Auth URL:'), error instanceof Error ? error.message : error);
136
+ process.exit(1);
137
+ }
138
+ }
139
+ const spinner = ora(`Installing A24Z hooks for ${validatedTool}...`).start();
57
140
  try {
58
141
  // Update configuration if provided
59
142
  if (options.apiUrl) {
60
143
  this.config.apiUrl = options.apiUrl;
61
144
  }
62
- if (options.clientId) {
63
- this.config.clientId = options.clientId;
145
+ if (options.authUrl) {
146
+ this.config.authUrl = options.authUrl;
64
147
  }
65
- // Ensure directories exist
66
- fs.mkdirSync(HOOKS_DIR, { recursive: true });
67
148
  // Copy hook scripts from templates
68
149
  await this.copyHookScripts();
69
150
  // Update Claude settings.json
70
151
  this.updateClaudeSettings();
71
152
  // Update configuration
72
153
  this.config.installedAt = new Date().toISOString();
154
+ this.config.tool = validatedTool; // Save the validated tool name
73
155
  this.saveConfig();
74
- spinner.succeed('A24Z hooks installed successfully!');
75
- console.log(chalk.green('\\n✅ Installation Complete!'));
76
- console.log(chalk.cyan('\\n📋 Next steps:'));
156
+ spinner.succeed(`A24Z hooks installed successfully for ${validatedTool}!`);
157
+ console.log(chalk.green('\✅ Installation Complete!'));
158
+ console.log(chalk.cyan('\📋 Next steps:'));
77
159
  console.log(chalk.white(' 1. Login to associate logs with your organization:'), chalk.yellow('a24z login'));
78
- console.log(chalk.white(' 2. Check installation status:'), chalk.yellow('a24z status'));
79
- console.log(chalk.white(' 3. Begin using Claude Code - your tools will be automatically monitored'));
80
- console.log(chalk.cyan('\\n🔧 Configuration:'));
81
- console.log(chalk.white(` • Hooks directory: ${HOOKS_DIR}`));
160
+ console.log(chalk.white(' 2. Check installation status:'), chalk.yellow(`a24z status`));
161
+ console.log(chalk.white(` 3. Begin using ${tool} - your tools will be automatically monitored`));
162
+ console.log(chalk.cyan('\🔧 Configuration:'));
163
+ console.log(chalk.white(` • Tool: ${tool}`));
82
164
  console.log(chalk.white(` • Settings file: ${CLAUDE_SETTINGS_FILE}`));
83
165
  console.log(chalk.white(` • API URL: ${this.config.apiUrl}`));
84
- console.log(chalk.white(` • Client ID: ${this.config.clientId}`));
166
+ console.log(chalk.white(` • Auth URL: ${this.config.authUrl}`));
85
167
  }
86
168
  catch (error) {
87
169
  spinner.fail('Installation failed');
@@ -90,46 +172,9 @@ class A24zCLI {
90
172
  }
91
173
  }
92
174
  async copyHookScripts() {
93
- const templatesDir = path.join(__dirname, '..', 'templates');
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
- }
175
+ // No shell scripts needed! Tools call CLI directly
176
+ console.log(chalk.green('✅ Direct CLI integration configured'));
177
+ console.log(chalk.cyan('💡 No shell scripts - direct CLI calls for maximum transparency'));
133
178
  }
134
179
  updateClaudeSettings() {
135
180
  let settings = {};
@@ -146,21 +191,22 @@ class A24zCLI {
146
191
  if (typeof settings.hooks !== 'object' || settings.hooks === null) {
147
192
  settings.hooks = {};
148
193
  }
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'));
194
+ // Configure direct CLI calls with tool-specific endpoints
195
+ // Tools call "a24z hook claude-code" for tool-specific processing
196
+ const directCliCommand = `a24z hook ${this.config.tool || 'claude-code'}`;
197
+ // Configure the same direct CLI command for all hook types
198
+ const hookTypes = [
199
+ 'PreToolUse', 'PostToolUse', 'UserPromptSubmit',
200
+ 'SessionStart', 'SessionEnd', 'SubagentStop',
201
+ 'Notification', 'Stop', 'PreCompact'
202
+ ];
203
+ for (const hookType of hookTypes) {
204
+ this.addOrUpdateHook(settings, hookType, directCliCommand);
205
+ }
159
206
  // Create directory and write settings
160
207
  fs.mkdirSync(path.dirname(CLAUDE_SETTINGS_FILE), { recursive: true });
161
208
  fs.writeFileSync(CLAUDE_SETTINGS_FILE, JSON.stringify(settings, null, 2));
162
209
  }
163
- // No binary helper shim; hooks will call `a24z hook` directly for transparency.
164
210
  /**
165
211
  * Merge-safe helper: adds our command without duplicating or overwriting others.
166
212
  * - Creates the hook type array if missing
@@ -179,7 +225,8 @@ class A24zCLI {
179
225
  settings.hooks[hookType] = [newEntry];
180
226
  return;
181
227
  }
182
- const hasOurCommand = existing.some(e => e.hooks.some(h => typeof h.command === 'string' && h.command.includes('a24z-')));
228
+ const toolName = this.config.tool || 'claude-code';
229
+ const hasOurCommand = existing.some(e => e.hooks.some(h => typeof h.command === 'string' && h.command.includes('a24z') && h.command.includes(toolName)));
183
230
  if (!hasOurCommand) {
184
231
  existing.push(newEntry);
185
232
  return;
@@ -205,18 +252,18 @@ class A24zCLI {
205
252
  // Ensure we have the latest client ID from environment
206
253
  if (!this.config.clientId || this.config.clientId === 'client_01K4ZPKST26YPKMQBGQW7HZ4SB') {
207
254
  this.config.clientId = process.env.WORKOS_CLIENT_ID || this.config.clientId;
208
- this.saveConfig(); // Save the updated config
255
+ this.saveConfig();
209
256
  }
210
257
  // Step 1: Request device authorization (OAuth 2.1 Device Flow)
211
- console.log(chalk.gray(`Requesting device auth from: ${this.config.apiUrl}/api/auth/device`));
258
+ console.log(chalk.gray(`Requesting device auth from: ${this.config.authUrl}/api/auth/device`));
212
259
  console.log(chalk.gray(`Using client_id: ${this.config.clientId}`));
213
- const deviceResponse = await axios.post(`${this.config.apiUrl}/api/auth/device`, {
260
+ const deviceResponse = await axios.post(`${this.config.authUrl}/api/auth/device`, {
214
261
  client_id: this.config.clientId
215
262
  });
216
263
  console.log(chalk.gray('Device response:', JSON.stringify(deviceResponse.data, null, 2)));
217
264
  const { device_code, user_code, verification_uri, verification_uri_complete, expires_in, interval } = deviceResponse.data.data;
218
265
  // Step 2: Display user code and instructions
219
- console.log(chalk.green('\\n📱 Complete authentication in your browser:'));
266
+ console.log(chalk.green('📱 Complete authentication in your browser:'));
220
267
  console.log(chalk.cyan(` Go to: ${verification_uri}`));
221
268
  console.log(chalk.yellow(` Enter code: ${user_code}`));
222
269
  if (verification_uri_complete) {
@@ -240,17 +287,16 @@ class A24zCLI {
240
287
  // Step 4: Store tokens
241
288
  this.config.accessToken = tokens.access_token;
242
289
  this.saveConfig();
243
- // Reinstall hooks with updated auth
244
- await this.install();
245
- console.log(chalk.green('\\n✅ Login successful!'));
290
+ console.log(chalk.green('✅ Login successful!'));
246
291
  if (tokens.user?.email) {
247
292
  console.log(chalk.white('👤 User:'), chalk.cyan(tokens.user.email));
248
293
  }
249
- console.log(chalk.green('\\nYour tool calls will now be associated with your organization.'));
294
+ console.log(chalk.green('Your tool calls will now be associated with your organization.'));
295
+ console.log(chalk.cyan('💡 Tip: Run "a24z install <tool>" to set up hooks for your preferred AI tool'));
250
296
  }
251
297
  catch (error) {
252
298
  console.error(chalk.red('❌ Login failed:'), error);
253
- console.log(chalk.yellow('\\nMake sure the A24Z service is available and try again.'));
299
+ console.log(chalk.yellow('Make sure the A24Z service is available and try again.'));
254
300
  process.exit(1);
255
301
  }
256
302
  }
@@ -260,7 +306,7 @@ class A24zCLI {
260
306
  let currentInterval = interval;
261
307
  while (Date.now() - startTime < timeoutMs) {
262
308
  try {
263
- const response = await axios.post(`${this.config.apiUrl}/api/auth/device/token`, {
309
+ const response = await axios.post(`${this.config.authUrl}/api/auth/device/token`, {
264
310
  device_code: deviceCode,
265
311
  client_id: this.config.clientId
266
312
  });
@@ -299,32 +345,18 @@ class A24zCLI {
299
345
  }
300
346
  throw new Error('Authentication timeout');
301
347
  }
302
- async uninstall() {
303
- const spinner = ora('Uninstalling A24Z hooks...').start();
348
+ async uninstall(tool) {
349
+ // Validate tool input
350
+ let validatedTool;
351
+ try {
352
+ validatedTool = validateTool(tool);
353
+ }
354
+ catch (error) {
355
+ console.error(chalk.red('❌ Error:'), error instanceof Error ? error.message : error);
356
+ process.exit(1);
357
+ }
358
+ const spinner = ora(`Uninstalling A24Z hooks for ${validatedTool}...`).start();
304
359
  try {
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
360
  // Update Claude settings: remove only our hooks, preserve all other user hooks/settings
329
361
  if (fs.existsSync(CLAUDE_SETTINGS_FILE)) {
330
362
  try {
@@ -341,7 +373,8 @@ class A24zCLI {
341
373
  entry.hooks = entry.hooks.filter(h => {
342
374
  if (typeof h.command !== 'string')
343
375
  return true;
344
- return !h.command.includes('a24z-');
376
+ // Remove commands that include both 'a24z' and the validated tool
377
+ return !(h.command.includes('a24z') && h.command.includes(validatedTool));
345
378
  });
346
379
  }
347
380
  }
@@ -355,7 +388,6 @@ class A24zCLI {
355
388
  }
356
389
  }
357
390
  }
358
- // Keep hooks object even if empty to avoid surprising deletions
359
391
  }
360
392
  }
361
393
  fs.writeFileSync(CLAUDE_SETTINGS_FILE, JSON.stringify(parsed, null, 2));
@@ -368,8 +400,8 @@ class A24zCLI {
368
400
  if (fs.existsSync(CONFIG_FILE)) {
369
401
  fs.unlinkSync(CONFIG_FILE);
370
402
  }
371
- spinner.succeed('A24Z hooks uninstalled successfully!');
372
- console.log(chalk.green('\\nClaude Code will no longer send observability data.'));
403
+ spinner.succeed(`A24Z hooks uninstalled successfully for ${tool}!`);
404
+ console.log(chalk.green(`${tool} will no longer send observability data.`));
373
405
  }
374
406
  catch (error) {
375
407
  spinner.fail('Uninstallation failed');
@@ -378,82 +410,34 @@ class A24zCLI {
378
410
  }
379
411
  }
380
412
  async status() {
381
- console.log(chalk.blue('📊 A24Z Observability Status\\n'));
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
- ];
394
- const settingsExists = fs.existsSync(CLAUDE_SETTINGS_FILE);
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`)}`);
404
- console.log(` • Claude settings: ${settingsExists ? chalk.green('✅ Configured') : chalk.red('❌ Not configured')}`);
405
- console.log(` • Collector type: ${chalk.cyan('Universal CLI (always enhanced)')}`);
406
- console.log(` • CLI version: ${chalk.cyan(getCliVersion())}`);
413
+ console.log(chalk.blue('📊 A24Z Observability Status'));
414
+ const currentTool = this.getCurrentTool();
415
+ console.log(chalk.white('🔧 Installation Status:'));
416
+ console.log(` • Direct CLI integration: ${chalk.green(' Configured')}`);
417
+ if (currentTool) {
418
+ console.log(` • Current tool: ${chalk.cyan(currentTool)}`);
419
+ }
407
420
  if (this.config.installedAt) {
408
421
  console.log(` • Installed at: ${chalk.cyan(new Date(this.config.installedAt).toLocaleString())}`);
409
422
  }
410
- // Show universal collector benefits
411
- if (installedHooks > 0) {
412
- console.log(chalk.white('\\n🎯 Enhanced CLI Collector Features:'));
413
- console.log(` • Always uses enhanced payload format`);
414
- console.log(` • Auto-detects Claude version or defaults to 'unknown'`);
415
- console.log(` • Full environment snapshot capture`);
416
- console.log(` • Clear CLI version tracking`);
417
- console.log(` • Structured metadata with platform detection`);
418
- console.log(` • Single unified payload format (no legacy modes)`);
419
- }
420
- console.log(chalk.white('\\n🔐 Authentication Status:'));
423
+ console.log(` • CLI version: ${chalk.cyan(getCliVersion())}`);
424
+ console.log(chalk.white('🔐 Authentication Status:'));
421
425
  console.log(` • Logged in: ${this.config.accessToken ? chalk.green('✅ Yes') : chalk.red('❌ No')}`);
422
- console.log(chalk.white('\\n⚙️ Configuration:'));
426
+ console.log(chalk.white('⚙️ Configuration:'));
423
427
  console.log(` • API URL: ${chalk.cyan(this.config.apiUrl)}`);
424
- console.log(` • Client ID: ${chalk.cyan(this.config.clientId)}`);
425
- console.log(` • Hooks directory: ${chalk.cyan(HOOKS_DIR)}`);
428
+ console.log(` • Auth URL: ${chalk.cyan(this.config.authUrl)}`);
426
429
  console.log(` • Settings file: ${chalk.cyan(CLAUDE_SETTINGS_FILE)}`);
427
- // Test API connectivity
428
- console.log(chalk.white('\\n🌐 Testing API connectivity...'));
429
- await this.testConnection();
430
430
  }
431
- async testConnection() {
431
+ async hook(tool = 'claude-code') {
432
+ // Validate tool input
433
+ let validatedTool;
432
434
  try {
433
- const headers = {};
434
- if (this.config.accessToken) {
435
- headers.Authorization = `Bearer ${this.config.accessToken}`;
436
- }
437
- const response = await axios.get(`${this.config.apiUrl}/api/v1/health`, { headers });
438
- if (response.status === 200) {
439
- console.log(` ${chalk.green('✅ API is reachable')}`);
440
- if (this.config.accessToken) {
441
- console.log(` ${chalk.green('🔐 Authentication verified')}`);
442
- }
443
- }
435
+ validatedTool = validateTool(tool);
444
436
  }
445
437
  catch (error) {
446
- if (error.response?.status === 401) {
447
- console.log(` ${chalk.yellow('⚠️ API is reachable but authentication failed')}`);
448
- console.log(` ${chalk.white('Run:')} ${chalk.yellow('a24z login')}`);
449
- }
450
- else {
451
- console.log(` ${chalk.red('❌ API is not reachable')}`);
452
- console.log(` ${chalk.white('Make sure the A24Z service is running')}`);
453
- }
438
+ console.error('[a24z hook] Error: Invalid tool name:', error instanceof Error ? error.message : error);
439
+ return; // Don't exit to avoid breaking Claude
454
440
  }
455
- }
456
- async hook(hookTypeArg) {
457
441
  // Read stdin fully
458
442
  const readStdin = async () => new Promise((resolve) => {
459
443
  let data = '';
@@ -464,86 +448,32 @@ class A24zCLI {
464
448
  });
465
449
  try {
466
450
  const raw = await readStdin();
467
- const hookType = hookTypeArg || process.env.CLAUDE_HOOK_EVENT_NAME || 'Unknown';
468
- console.error(`[a24z CLI] Processing hook type: ${hookType}`);
469
- console.error(`[a24z CLI] Raw input length: ${raw.length}`);
470
- console.error(`[a24z CLI] API URL: ${this.config.apiUrl}`);
471
- // Build environment snapshot
472
- const safe = (v) => (v && v.length > 0 ? v : null);
473
- const environment = {
474
- CLAUDE_USER: safe(process.env.CLAUDE_USER),
475
- CLAUDE_SESSION_ID: safe(process.env.CLAUDE_SESSION_ID),
476
- CLAUDE_PROJECT_DIR: safe(process.env.CLAUDE_PROJECT_DIR),
477
- CLAUDE_TRANSCRIPT_PATH: safe(process.env.CLAUDE_TRANSCRIPT_PATH),
478
- CLAUDE_WORKING_DIR: safe(process.env.CLAUDE_WORKING_DIR),
479
- CLAUDE_HOOK_EVENT_NAME: hookType,
480
- CLAUDE_VERSION: safe(process.env.CLAUDE_VERSION),
481
- CLAUDE_BUILD: safe(process.env.CLAUDE_BUILD),
482
- PWD: safe(process.env.PWD),
483
- USER: safe(process.env.USER),
484
- HOME: safe(process.env.HOME),
485
- HOSTNAME: safe(process.env.HOSTNAME),
486
- SHELL: safe(process.env.SHELL),
487
- LANG: safe(process.env.LANG),
488
- TZ: safe(process.env.TZ),
489
- TERM: safe(process.env.TERM),
490
- NODE_VERSION: process.version,
491
- captured_at: new Date().toISOString(),
492
- };
493
- const endpoint = `${this.config.apiUrl}/api/v1/hooks/ingest`;
494
- let rawInput = raw;
495
- try {
496
- rawInput = JSON.parse(raw);
497
- }
498
- catch { /* raw passthrough */ }
499
- // Always use enhanced format - much cleaner and more consistent
500
- const payload = {
501
- source_tool: {
502
- name: 'claude-code',
503
- version: environment.CLAUDE_VERSION || 'unknown',
504
- build: environment.CLAUDE_BUILD || 'unknown',
505
- platform: process.platform,
506
- detected_at: new Date().toISOString()
507
- },
508
- hook_schema: {
509
- version: 'v1.0',
510
- format: 'anthropic_official',
511
- detected_at: new Date().toISOString()
512
- },
513
- hook_type: hookType,
514
- timestamp: new Date().toISOString(),
515
- raw_input: rawInput,
516
- environment,
517
- collector_metadata: {
518
- cli_version: getCliVersion(), // ✅ Clear naming - this is the CLI version
519
- deployment_mode: 'cli_subcommand',
520
- configuration_version: '1.0',
521
- enhanced_features: ['env_snapshot', 'auto_tool_detection', 'unified_payload'],
522
- hook_type_detection_method: 'arg_or_env'
523
- }
524
- };
451
+ // Minimal processing - just send raw data to backend for obfuscation
452
+ const endpoint = `${this.config.apiUrl}/api/v1/${validatedTool}/hooks`;
453
+ console.error(`[a24z CLI] 📤 Sending raw payload to ${endpoint}`);
454
+ // Send raw data - let backend handle all processing
525
455
  const headers = { 'Content-Type': 'application/json' };
526
456
  if (this.config.accessToken)
527
457
  headers.Authorization = `Bearer ${this.config.accessToken}`;
528
- console.error(`[a24z CLI] Sending payload:`, JSON.stringify({
529
- source_tool: payload.source_tool,
530
- hook_type: payload.hook_type,
531
- has_raw_input: !!payload.raw_input,
532
- has_environment: !!payload.environment,
533
- cli_version: payload.collector_metadata.cli_version
534
- }, null, 2));
535
- await axios.post(endpoint, payload, { headers, timeout: 10000 });
536
- console.error(`[a24z CLI] Successfully sent payload for ${hookType}`);
458
+ // Fire-and-forget: Don't wait for response to avoid blocking Claude
459
+ axios.post(endpoint, raw, { headers, timeout: 5000 })
460
+ .then((response) => {
461
+ console.error(`[a24z CLI] ✅ Successfully sent raw data`);
462
+ })
463
+ .catch((error) => {
464
+ console.error(`[a24z CLI] ❌ Failed to send: ${error.message}`);
465
+ // Check for authentication errors
466
+ if (error.response?.status === 401) {
467
+ const authError = error.response.data?.error || 'Authentication required';
468
+ console.error(`[a24z CLI] 🔐 Authentication failed: ${authError}`);
469
+ console.error(`[a24z CLI] 💡 Please run 'a24z login' to authenticate`);
470
+ console.error(`[a24z CLI] 📊 Your tools will continue to work, but data won't be logged until authenticated`);
471
+ }
472
+ });
473
+ console.error(`[a24z CLI] Raw payload dispatched (fire-and-forget)`);
537
474
  }
538
475
  catch (error) {
539
- // Log to stderr but don't fail the hook
540
- console.error('[a24z hook] Error:', error instanceof Error ? error.message : error);
541
- if (error instanceof Error && 'response' in error) {
542
- const axiosError = error;
543
- console.error('[a24z hook] Response status:', axiosError.response?.status);
544
- console.error('[a24z hook] Response data:', JSON.stringify(axiosError.response?.data, null, 2));
545
- }
546
- console.error('[a24z hook] Full error object:', JSON.stringify(error, Object.getOwnPropertyNames(error), 2));
476
+ console.error('[a24z hook] Error sending payload:', error instanceof Error ? error.message : error);
547
477
  }
548
478
  finally {
549
479
  // Always pass through stdin unchanged
@@ -572,24 +502,49 @@ function getCliVersion() {
572
502
  }
573
503
  return "0.0.0";
574
504
  }
505
+ /**
506
+ * Cool a24z ASCII logo
507
+ */
508
+ function getA24zLogo() {
509
+ return `
510
+ ░▒▓██████▓▒░░▒▓███████▓▒░░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░
511
+ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░
512
+ ░▒▓█▓▒░░▒▓█▓▒░ ░▒▓█▓▒░▒▓█▓▒░░▒▓█▓▒░ ░▒▓██▓▒░
513
+ ░▒▓████████▓▒░░▒▓██████▓▒░░▒▓████████▓▒░ ░▒▓██▓▒░
514
+ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░░▒▓██▓▒░
515
+ ░▒▓█▓▒░░▒▓█▓▒░▒▓█▓▒░ ░▒▓█▓▒░▒▓█▓▒░
516
+ ░▒▓█▓▒░░▒▓█▓▒░▒▓████████▓▒░ ░▒▓█▓▒░▒▓████████▓▒░
517
+ `;
518
+ }
519
+ ;
575
520
  program
576
521
  .name('a24z')
577
- .description('Claude Code Observability CLI - Monitor and analyze your AI tool performance')
578
- .version(getCliVersion());
522
+ .description(`${getA24zLogo()}
523
+ Monitor and analyze your Coding Agents`)
524
+ .version(getCliVersion()).showHelpAfterError().showSuggestionAfterError(true);
525
+ // Add custom version command with logo
526
+ program
527
+ .command('version')
528
+ .description('Show version information with logo')
529
+ .action(() => {
530
+ console.log(getA24zLogo());
531
+ console.log(chalk.cyan(`A24Z Observability CLI v${getCliVersion()}`));
532
+ console.log('');
533
+ });
579
534
  program
580
- .command('install')
581
- .description('Install A24Z observability hooks for Claude Code')
582
- .option('--api-url <url>', 'Set the A24Z API URL')
583
- .option('--client-id <id>', 'Set the WorkOS client ID for authentication')
584
- .action(async (options) => {
585
- await cli.install({
535
+ .command('install <tool>')
536
+ .description('Install A24Z observability hooks for a specific tool')
537
+ .option('--api-url <url>', 'Set the a24z api url for log ingestion')
538
+ .option('--auth-url <url>', 'Set the a24z auth url for authentication')
539
+ .action(async (tool, options) => {
540
+ await cli.install(tool, {
586
541
  apiUrl: options.apiUrl,
587
- clientId: options.clientId,
542
+ authUrl: options.authUrl,
588
543
  });
589
544
  });
590
545
  program
591
546
  .command('login')
592
- .description('Authenticate with A24Z for multi-tenancy')
547
+ .description('Authenticate with A24Z')
593
548
  .action(async () => {
594
549
  await cli.login();
595
550
  });
@@ -600,18 +555,16 @@ program
600
555
  await cli.status();
601
556
  });
602
557
  program
603
- .command('uninstall')
604
- .description('Remove A24Z observability hooks')
605
- .action(async () => {
606
- await cli.uninstall();
558
+ .command('uninstall <tool>')
559
+ .description('Remove A24Z observability hooks for a specific tool')
560
+ .action(async (tool) => {
561
+ await cli.uninstall(tool);
607
562
  });
608
563
  program
609
- .command('hook')
610
- .description('Internal: process a Claude hook payload from stdin and send to A24Z')
611
- .option('--type <hookType>', 'Hook type (e.g., PreToolUse, PostToolUse)')
612
- .action(async (options) => {
613
- await cli.hook(options.type);
564
+ .command('hook <tool>')
565
+ .description('Internal: process a hook payload from stdin and send to A24Z')
566
+ .action(async (tool) => {
567
+ await cli.hook(tool);
614
568
  });
615
- // Parse command line arguments
616
569
  program.parse();
617
570
  //# 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.10",
3
+ "version": "1.0.12",
4
4
  "description": "AI Agent Observability CLI - Monitor and analyze your AI tool performance",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -10,14 +10,8 @@
10
10
  "files": [
11
11
  "bin/",
12
12
  "dist/",
13
- "templates/",
14
13
  "README.md"
15
14
  ],
16
- "scripts": {
17
- "build": "tsc",
18
- "prepublishOnly": "npm run build",
19
- "test": "echo \"Error: no test specified\" && exit 1"
20
- },
21
15
  "keywords": [
22
16
  "claude",
23
17
  "ai",
@@ -28,30 +22,26 @@
28
22
  "analytics",
29
23
  "performance"
30
24
  ],
31
- "author": "A24Z Team",
32
- "license": "MIT",
33
- "repository": {
34
- "type": "git",
35
- "url": "https://github.com/brandonin/a24z-observability.git",
36
- "directory": "packages/a24z-cli"
37
- },
25
+ "author": "a24z",
38
26
  "homepage": "https://a24z.ai",
39
27
  "dependencies": {
40
28
  "axios": "^1.6.2",
41
29
  "chalk": "^5.3.0",
42
30
  "commander": "^11.1.0",
43
- "dotenv": "^17.2.2",
44
31
  "inquirer": "^9.2.12",
45
32
  "open": "^9.1.0",
46
33
  "ora": "^7.0.1"
47
34
  },
48
35
  "devDependencies": {
49
- "@repo/types": "workspace:*",
50
36
  "@types/inquirer": "^9.0.7",
51
37
  "@types/node": "^20.10.0",
52
- "typescript": "^5.3.2"
38
+ "typescript": "^5.3.2",
39
+ "@repo/types": "1.0.0"
53
40
  },
54
41
  "engines": {
55
42
  "node": ">=16.0.0"
43
+ },
44
+ "scripts": {
45
+ "build": "tsc"
56
46
  }
57
- }
47
+ }
@@ -1,40 +0,0 @@
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
- echo "[a24z collector] Executing: a24z hook --type $HOOK_TYPE" >&2
31
- echo "[a24z collector] Input length: ${#STDIN_DATA}" >&2
32
- printf "%s" "$STDIN_DATA" | a24z hook --type "$HOOK_TYPE" || {
33
- echo "[a24z collector] Command failed with exit code $?" >&2
34
- true
35
- }
36
- else
37
- echo "[a24z] CLI not found in PATH; passing through input" >&2
38
- # If CLI not found, pass-through so Claude continues unaffected
39
- printf "%s" "$STDIN_DATA"
40
- fi