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 +75 -103
- package/bin/a24z.js +1 -1
- package/dist/index.js +224 -271
- package/dist/index.js.map +1 -1
- package/package.json +8 -18
- package/templates/universal-collector.sh +0 -40
package/README.md
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
# A24Z - Claude Code Observability CLI
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/js/a24z)
|
|
4
|
-
[](https://opensource.org/licenses/MIT)
|
|
5
4
|
|
|
6
5
|
**Monitor and analyze your Claude Code AI tool performance with comprehensive observability.**
|
|
7
6
|
|
|
8
|
-
|
|
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
|
|
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**:
|
|
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
|
|
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
|
-
|
|
47
|
+
|
|
48
|
+
- ✅ Configures direct CLI integration with Claude Code
|
|
56
49
|
- ✅ Updates `~/.claude/settings.json` automatically
|
|
57
|
-
- ✅ Configures API endpoints
|
|
58
|
-
- ✅ Sets up
|
|
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
|
|
56
|
+
Authenticate with a24z.
|
|
63
57
|
|
|
64
58
|
```bash
|
|
65
59
|
a24z login
|
|
66
60
|
```
|
|
67
61
|
|
|
68
62
|
**Benefits of logging in:**
|
|
69
|
-
|
|
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**:
|
|
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.
|
|
104
|
-
|
|
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": "
|
|
124
|
+
"hooks": [{ "type": "command", "command": "a24z hook claude-code" }]
|
|
112
125
|
}],
|
|
113
126
|
"PostToolUse": [{
|
|
114
|
-
"matcher": "*",
|
|
115
|
-
"hooks": [{ "type": "command", "command": "
|
|
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.
|
|
122
|
-
|
|
123
|
-
|
|
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.
|
|
180
|
+
- **Dashboard**: [app.a24z.ai](https://app.a24z.ai)
|
|
208
181
|
- **Documentation**: [docs.a24z.ai](https://docs.a24z.ai)
|
|
209
|
-
- **
|
|
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
|
-
|
|
186
|
+
## ❤️ Made by the a24z Team
|
|
215
187
|
|
|
216
188
|
*Transform your AI development workflow with comprehensive observability.*
|
package/bin/a24z.js
CHANGED
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://
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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.
|
|
63
|
-
this.config.
|
|
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(
|
|
75
|
-
console.log(chalk.green('
|
|
76
|
-
console.log(chalk.cyan('
|
|
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(
|
|
79
|
-
console.log(chalk.white(
|
|
80
|
-
console.log(chalk.cyan('
|
|
81
|
-
console.log(chalk.white(` •
|
|
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(` •
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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
|
|
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();
|
|
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.
|
|
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.
|
|
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('
|
|
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
|
-
|
|
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('
|
|
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('
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
372
|
-
console.log(chalk.green(
|
|
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
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
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
|
-
|
|
411
|
-
|
|
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('
|
|
426
|
+
console.log(chalk.white('⚙️ Configuration:'));
|
|
423
427
|
console.log(` • API URL: ${chalk.cyan(this.config.apiUrl)}`);
|
|
424
|
-
console.log(` •
|
|
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
|
|
431
|
+
async hook(tool = 'claude-code') {
|
|
432
|
+
// Validate tool input
|
|
433
|
+
let validatedTool;
|
|
432
434
|
try {
|
|
433
|
-
|
|
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
|
-
|
|
447
|
-
|
|
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
|
-
|
|
468
|
-
|
|
469
|
-
console.error(`[a24z CLI]
|
|
470
|
-
|
|
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
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
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
|
-
|
|
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(
|
|
578
|
-
|
|
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
|
|
582
|
-
.option('--api-url <url>', 'Set the
|
|
583
|
-
.option('--
|
|
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
|
-
|
|
542
|
+
authUrl: options.authUrl,
|
|
588
543
|
});
|
|
589
544
|
});
|
|
590
545
|
program
|
|
591
546
|
.command('login')
|
|
592
|
-
.description('Authenticate with A24Z
|
|
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
|
|
611
|
-
.
|
|
612
|
-
.
|
|
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.
|
|
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": "
|
|
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
|