@convext/cli 1.0.14 → 1.0.16
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/api.d.ts +47 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +61 -0
- package/dist/api.js.map +1 -1
- package/dist/cli.js +19 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +25 -37
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +34 -85
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/stats.d.ts +7 -0
- package/dist/commands/stats.d.ts.map +1 -0
- package/dist/commands/stats.js +159 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/sync.d.ts +2 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +98 -1
- package/dist/commands/sync.js.map +1 -1
- package/dist/utils/hooks.d.ts +46 -0
- package/dist/utils/hooks.d.ts.map +1 -0
- package/dist/utils/hooks.js +270 -0
- package/dist/utils/hooks.js.map +1 -0
- package/dist/utils/telemetry.d.ts +58 -0
- package/dist/utils/telemetry.d.ts.map +1 -0
- package/dist/utils/telemetry.js +156 -0
- package/dist/utils/telemetry.js.map +1 -0
- package/package.json +1 -1
package/dist/commands/mcp.js
CHANGED
|
@@ -13,8 +13,6 @@ const EDITORS = [
|
|
|
13
13
|
join(homedir(), ".claude", "mcp.json"),
|
|
14
14
|
],
|
|
15
15
|
projectConfigName: ".mcp.json",
|
|
16
|
-
supportsHttp: true,
|
|
17
|
-
supportsStdio: true,
|
|
18
16
|
docs: "https://docs.anthropic.com/claude-code",
|
|
19
17
|
},
|
|
20
18
|
{
|
|
@@ -25,8 +23,6 @@ const EDITORS = [
|
|
|
25
23
|
join(homedir(), "Library", "Application Support", "Cursor", "User", "globalStorage", "mcp.json"),
|
|
26
24
|
],
|
|
27
25
|
projectConfigName: ".mcp.json",
|
|
28
|
-
supportsHttp: true,
|
|
29
|
-
supportsStdio: true,
|
|
30
26
|
docs: "https://docs.cursor.com",
|
|
31
27
|
},
|
|
32
28
|
{
|
|
@@ -37,8 +33,6 @@ const EDITORS = [
|
|
|
37
33
|
join(homedir(), ".codeium", "windsurf", "mcp.json"),
|
|
38
34
|
],
|
|
39
35
|
projectConfigName: ".mcp.json",
|
|
40
|
-
supportsHttp: true,
|
|
41
|
-
supportsStdio: true,
|
|
42
36
|
docs: "https://windsurf.run/mcp",
|
|
43
37
|
},
|
|
44
38
|
{
|
|
@@ -48,8 +42,6 @@ const EDITORS = [
|
|
|
48
42
|
join(homedir(), ".vscode", "mcp.json"),
|
|
49
43
|
],
|
|
50
44
|
projectConfigName: ".vscode/mcp.json",
|
|
51
|
-
supportsHttp: true,
|
|
52
|
-
supportsStdio: true,
|
|
53
45
|
docs: "https://code.visualstudio.com",
|
|
54
46
|
},
|
|
55
47
|
];
|
|
@@ -68,7 +60,6 @@ function detectCurrentEditor() {
|
|
|
68
60
|
return EDITORS.find(e => e.id === "vscode");
|
|
69
61
|
}
|
|
70
62
|
// Check for Claude Code - check multiple indicators
|
|
71
|
-
// Claude Code sets CLAUDE_CODE_ENTRY or runs as 'claude' command
|
|
72
63
|
if (process.env.CLAUDE_CODE ||
|
|
73
64
|
process.env.CLAUDE_CODE_ENTRY ||
|
|
74
65
|
process.env.MCP_SERVER_NAME === "claude-code" ||
|
|
@@ -80,14 +71,12 @@ function detectCurrentEditor() {
|
|
|
80
71
|
return EDITORS.find(e => e.id === "windsurf");
|
|
81
72
|
}
|
|
82
73
|
// Fallback: Check which editors have existing config files
|
|
83
|
-
// This helps when running from a plain terminal
|
|
84
74
|
const editorsWithConfig = EDITORS.filter(e => {
|
|
85
75
|
for (const configPath of e.configPaths) {
|
|
86
76
|
if (existsSync(configPath)) {
|
|
87
77
|
return true;
|
|
88
78
|
}
|
|
89
79
|
}
|
|
90
|
-
// Also check project-level config
|
|
91
80
|
const projectConfig = join(process.cwd(), e.projectConfigName);
|
|
92
81
|
return existsSync(projectConfig);
|
|
93
82
|
});
|
|
@@ -123,44 +112,33 @@ function findExistingConfig(editor) {
|
|
|
123
112
|
}
|
|
124
113
|
return undefined;
|
|
125
114
|
}
|
|
126
|
-
function hasConvextServer(config) {
|
|
127
|
-
return config.mcpServers !== undefined && "convext" in config.mcpServers;
|
|
128
|
-
}
|
|
129
115
|
function isConvextConfigured(config) {
|
|
130
116
|
if (!config.mcpServers?.convext) {
|
|
131
117
|
return { configured: false };
|
|
132
118
|
}
|
|
133
119
|
const server = config.mcpServers.convext;
|
|
134
|
-
// Check for
|
|
135
|
-
if (server.
|
|
136
|
-
return { configured: true
|
|
120
|
+
// Check for modern OAuth HTTP config
|
|
121
|
+
if (server.transport === "http" && server.url?.includes("convext")) {
|
|
122
|
+
return { configured: true };
|
|
123
|
+
}
|
|
124
|
+
// Legacy npx config - needs update
|
|
125
|
+
if (server.command === "npx") {
|
|
126
|
+
return { configured: false, needsUpdate: true, isLegacy: true };
|
|
137
127
|
}
|
|
138
|
-
//
|
|
139
|
-
if (server.type === "http" && server.
|
|
140
|
-
return { configured: true,
|
|
128
|
+
// Legacy HTTP with token header - needs update
|
|
129
|
+
if (server.type === "http" && server.headers?.Authorization) {
|
|
130
|
+
return { configured: false, needsUpdate: true, isLegacy: true };
|
|
141
131
|
}
|
|
142
|
-
// Has convext but
|
|
132
|
+
// Has convext but unknown format
|
|
143
133
|
return { configured: false, needsUpdate: true };
|
|
144
134
|
}
|
|
145
|
-
function generateNpxConfig() {
|
|
146
|
-
return {
|
|
147
|
-
command: "npx",
|
|
148
|
-
args: ["-y", "@convext/mcp-server"],
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
135
|
function generateHttpConfig() {
|
|
152
136
|
const apiUrl = getApiUrl();
|
|
153
137
|
return {
|
|
154
|
-
type: "http",
|
|
155
138
|
url: `${apiUrl}/mcp`,
|
|
156
|
-
|
|
157
|
-
Authorization: "Bearer ${CONVEXT_TOKEN}",
|
|
158
|
-
},
|
|
139
|
+
transport: "http",
|
|
159
140
|
};
|
|
160
141
|
}
|
|
161
|
-
function checkEnvironmentToken() {
|
|
162
|
-
return Boolean(process.env.CONVEXT_TOKEN);
|
|
163
|
-
}
|
|
164
142
|
export async function mcpCommand(options) {
|
|
165
143
|
const spinner = ora();
|
|
166
144
|
console.log(chalk.bold("\nConvext MCP Configuration\n"));
|
|
@@ -195,17 +173,8 @@ export async function mcpCommand(options) {
|
|
|
195
173
|
if (existing) {
|
|
196
174
|
const status = isConvextConfigured(existing.config);
|
|
197
175
|
if (status.configured) {
|
|
198
|
-
console.log(chalk.green(
|
|
176
|
+
console.log(chalk.green("✓ Convext MCP already configured (OAuth HTTP)"));
|
|
199
177
|
console.log(chalk.gray(` Config: ${existing.path}`));
|
|
200
|
-
// Check environment token
|
|
201
|
-
if (!checkEnvironmentToken()) {
|
|
202
|
-
console.log(chalk.yellow("\n⚠ CONVEXT_TOKEN environment variable not set"));
|
|
203
|
-
console.log(chalk.gray(" The MCP server needs this to authenticate.\n"));
|
|
204
|
-
showTokenInstructions();
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
console.log(chalk.green("✓ CONVEXT_TOKEN is set"));
|
|
208
|
-
}
|
|
209
178
|
if (!options.fix) {
|
|
210
179
|
const update = await promptConfirm("Update configuration anyway?", false);
|
|
211
180
|
if (!update) {
|
|
@@ -213,6 +182,11 @@ export async function mcpCommand(options) {
|
|
|
213
182
|
}
|
|
214
183
|
}
|
|
215
184
|
}
|
|
185
|
+
else if (status.isLegacy) {
|
|
186
|
+
console.log(chalk.yellow("⚠ Legacy Convext MCP config detected - needs migration"));
|
|
187
|
+
console.log(chalk.gray(` Config: ${existing.path}`));
|
|
188
|
+
console.log(chalk.gray(" The new OAuth-based approach is simpler: no tokens or npm packages needed!\n"));
|
|
189
|
+
}
|
|
216
190
|
else if (status.needsUpdate) {
|
|
217
191
|
console.log(chalk.yellow("⚠ Convext MCP configured but needs update"));
|
|
218
192
|
console.log(chalk.gray(` Config: ${existing.path}`));
|
|
@@ -225,21 +199,18 @@ export async function mcpCommand(options) {
|
|
|
225
199
|
else {
|
|
226
200
|
console.log(chalk.yellow("⚠ No MCP configuration found"));
|
|
227
201
|
}
|
|
228
|
-
// Step 3:
|
|
229
|
-
console.log("\n" + chalk.bold("
|
|
230
|
-
console.log(chalk.gray("
|
|
231
|
-
console.log(chalk.gray("
|
|
232
|
-
|
|
233
|
-
{ label: "npx @convext/mcp-server (recommended)", value: "npx" },
|
|
234
|
-
{ label: "Direct HTTP connection", value: "http" },
|
|
235
|
-
], 0);
|
|
202
|
+
// Step 3: Show info about OAuth
|
|
203
|
+
console.log("\n" + chalk.bold("About OAuth Authentication:"));
|
|
204
|
+
console.log(chalk.gray(" Convext uses OAuth 2.1 for secure authentication."));
|
|
205
|
+
console.log(chalk.gray(" On first connection, your browser will open for authorization."));
|
|
206
|
+
console.log(chalk.gray(" No tokens or environment variables needed!\n"));
|
|
236
207
|
// Step 4: Select scope (project or global)
|
|
237
208
|
const scope = await promptSelect("Where should the config be saved?", [
|
|
238
209
|
{ label: `Project (${editor.projectConfigName})`, value: "project" },
|
|
239
210
|
{ label: `Global (${editor.configPaths[0]})`, value: "global" },
|
|
240
211
|
], 0);
|
|
241
212
|
// Step 5: Generate and write config
|
|
242
|
-
const serverConfig =
|
|
213
|
+
const serverConfig = generateHttpConfig();
|
|
243
214
|
const configPath = scope === "project"
|
|
244
215
|
? join(process.cwd(), editor.projectConfigName)
|
|
245
216
|
: editor.configPaths[0];
|
|
@@ -253,7 +224,6 @@ export async function mcpCommand(options) {
|
|
|
253
224
|
}
|
|
254
225
|
}
|
|
255
226
|
catch {
|
|
256
|
-
// Invalid JSON, start fresh but preserve file
|
|
257
227
|
console.log(chalk.yellow(` Warning: ${configPath} had invalid JSON, creating new config`));
|
|
258
228
|
}
|
|
259
229
|
}
|
|
@@ -267,44 +237,18 @@ export async function mcpCommand(options) {
|
|
|
267
237
|
// Write config
|
|
268
238
|
writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
|
|
269
239
|
console.log(chalk.green(`\n✓ MCP configuration saved to ${configPath}`));
|
|
270
|
-
// Step 6:
|
|
271
|
-
if (!checkEnvironmentToken()) {
|
|
272
|
-
console.log(chalk.yellow("\n⚠ Important: Set CONVEXT_TOKEN environment variable\n"));
|
|
273
|
-
showTokenInstructions();
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
console.log(chalk.green("✓ CONVEXT_TOKEN is already set"));
|
|
277
|
-
}
|
|
278
|
-
// Step 7: Show next steps
|
|
240
|
+
// Step 6: Show next steps
|
|
279
241
|
console.log("\n" + chalk.bold("Next Steps:"));
|
|
280
242
|
console.log(` 1. ${chalk.cyan("Restart " + editor.name)} for changes to take effect`);
|
|
281
|
-
console.log(` 2.
|
|
282
|
-
console.log(` 3.
|
|
243
|
+
console.log(` 2. On first connection, ${chalk.cyan("authorize in your browser")} when prompted`);
|
|
244
|
+
console.log(` 3. Ask the AI: ${chalk.gray('"What Convext rules apply to this project?"')}`);
|
|
245
|
+
console.log(` 4. The AI will use the MCP server to fetch your rules\n`);
|
|
283
246
|
if (scope === "project") {
|
|
284
247
|
console.log(chalk.gray(` Tip: Commit ${editor.projectConfigName} to share with your team\n`));
|
|
285
248
|
}
|
|
286
249
|
}
|
|
287
|
-
function showTokenInstructions() {
|
|
288
|
-
console.log(chalk.bold(" Set CONVEXT_TOKEN:"));
|
|
289
|
-
console.log(chalk.gray(" macOS/Linux (add to ~/.zshrc or ~/.bashrc):"));
|
|
290
|
-
console.log(chalk.cyan(' export CONVEXT_TOKEN="your_token_here"'));
|
|
291
|
-
console.log();
|
|
292
|
-
console.log(chalk.gray(" Or for system-wide (macOS):"));
|
|
293
|
-
console.log(chalk.cyan(" launchctl setenv CONVEXT_TOKEN your_token_here"));
|
|
294
|
-
console.log();
|
|
295
|
-
console.log(chalk.gray(" Get your token from: ") + chalk.cyan(getApiUrl() + "/settings/api_tokens"));
|
|
296
|
-
}
|
|
297
250
|
export function mcpStatusCommand() {
|
|
298
251
|
console.log(chalk.bold("\nMCP Configuration Status\n"));
|
|
299
|
-
// Check environment token
|
|
300
|
-
const hasToken = checkEnvironmentToken();
|
|
301
|
-
if (hasToken) {
|
|
302
|
-
console.log(chalk.green("✓ CONVEXT_TOKEN is set"));
|
|
303
|
-
}
|
|
304
|
-
else {
|
|
305
|
-
console.log(chalk.red("✗ CONVEXT_TOKEN not set"));
|
|
306
|
-
}
|
|
307
|
-
console.log();
|
|
308
252
|
// Check each editor
|
|
309
253
|
for (const editor of EDITORS) {
|
|
310
254
|
const existing = findExistingConfig(editor);
|
|
@@ -314,8 +258,13 @@ export function mcpStatusCommand() {
|
|
|
314
258
|
}
|
|
315
259
|
const status = isConvextConfigured(existing.config);
|
|
316
260
|
if (status.configured) {
|
|
317
|
-
console.log(chalk.green(`✓ ${editor.name}: configured (
|
|
261
|
+
console.log(chalk.green(`✓ ${editor.name}: configured (OAuth HTTP)`));
|
|
262
|
+
console.log(chalk.gray(` ${existing.path}`));
|
|
263
|
+
}
|
|
264
|
+
else if (status.isLegacy) {
|
|
265
|
+
console.log(chalk.yellow(`⚠ ${editor.name}: legacy config (needs migration)`));
|
|
318
266
|
console.log(chalk.gray(` ${existing.path}`));
|
|
267
|
+
console.log(chalk.gray(` Run 'convext mcp' to update to OAuth`));
|
|
319
268
|
}
|
|
320
269
|
else if (status.needsUpdate) {
|
|
321
270
|
console.log(chalk.yellow(`⚠ ${editor.name}: needs update`));
|
package/dist/commands/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAmJD,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDvE"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { readEvents, readEventsInRange, summarizeEvents, getEventCount, } from '../utils/telemetry.js';
|
|
3
|
+
function formatDate(dateStr) {
|
|
4
|
+
const date = new Date(dateStr);
|
|
5
|
+
return date.toLocaleDateString('en-US', {
|
|
6
|
+
month: 'short',
|
|
7
|
+
day: 'numeric',
|
|
8
|
+
year: 'numeric',
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
function renderTable(headers, rows, columnWidths) {
|
|
12
|
+
const widths = columnWidths || headers.map((h, i) => Math.max(h.length, ...rows.map((r) => (r[i] || '').length)));
|
|
13
|
+
// Header
|
|
14
|
+
console.log(headers.map((h, i) => h.padEnd(widths[i])).join(' '));
|
|
15
|
+
console.log(widths.map((w) => '─'.repeat(w)).join(' '));
|
|
16
|
+
// Rows
|
|
17
|
+
for (const row of rows) {
|
|
18
|
+
console.log(row.map((cell, i) => (cell || '').padEnd(widths[i])).join(' '));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function renderComplianceBar(blocked, total) {
|
|
22
|
+
if (total === 0)
|
|
23
|
+
return chalk.gray('No data');
|
|
24
|
+
const percentage = Math.round((blocked / total) * 100);
|
|
25
|
+
const barWidth = 20;
|
|
26
|
+
const filledWidth = Math.round((blocked / total) * barWidth);
|
|
27
|
+
const bar = chalk.green('█'.repeat(filledWidth)) +
|
|
28
|
+
chalk.gray('░'.repeat(barWidth - filledWidth));
|
|
29
|
+
return `${bar} ${percentage}% blocked`;
|
|
30
|
+
}
|
|
31
|
+
function renderSummary(summary) {
|
|
32
|
+
console.log(chalk.bold('\nCompliance Statistics\n'));
|
|
33
|
+
// Period
|
|
34
|
+
if (summary.period_start && summary.period_end) {
|
|
35
|
+
console.log(chalk.gray(`Period: ${formatDate(summary.period_start)} - ${formatDate(summary.period_end)}`));
|
|
36
|
+
console.log();
|
|
37
|
+
}
|
|
38
|
+
// Overview
|
|
39
|
+
console.log(chalk.bold('Overview'));
|
|
40
|
+
console.log(chalk.gray('─'.repeat(40)));
|
|
41
|
+
console.log(` Total Events: ${chalk.cyan(summary.total_events)}`);
|
|
42
|
+
console.log(` Violations Blocked: ${chalk.green(summary.violations_blocked)}`);
|
|
43
|
+
console.log(` Violations Warned: ${chalk.yellow(summary.violations_warned)}`);
|
|
44
|
+
console.log(` Compliance Checks: ${chalk.cyan(summary.compliance_checks)}`);
|
|
45
|
+
console.log(` Tasks Completed: ${chalk.cyan(summary.tasks_completed)}`);
|
|
46
|
+
console.log();
|
|
47
|
+
// By Rule
|
|
48
|
+
const ruleEntries = Object.entries(summary.by_rule);
|
|
49
|
+
if (ruleEntries.length > 0) {
|
|
50
|
+
console.log(chalk.bold('Violations by Rule'));
|
|
51
|
+
console.log(chalk.gray('─'.repeat(60)));
|
|
52
|
+
const rows = ruleEntries
|
|
53
|
+
.sort((a, b) => (b[1].blocked + b[1].warned) - (a[1].blocked + a[1].warned))
|
|
54
|
+
.slice(0, 10)
|
|
55
|
+
.map(([rule, counts]) => [
|
|
56
|
+
rule.length > 30 ? rule.slice(0, 27) + '...' : rule,
|
|
57
|
+
String(counts.blocked),
|
|
58
|
+
String(counts.warned),
|
|
59
|
+
renderComplianceBar(counts.blocked, counts.blocked + counts.warned + counts.passed),
|
|
60
|
+
]);
|
|
61
|
+
renderTable(['Rule', 'Blocked', 'Warned', 'Enforcement'], rows, [32, 8, 8, 30]);
|
|
62
|
+
console.log();
|
|
63
|
+
}
|
|
64
|
+
// By Source
|
|
65
|
+
const sourceEntries = Object.entries(summary.by_source);
|
|
66
|
+
if (sourceEntries.length > 0) {
|
|
67
|
+
console.log(chalk.bold('Events by Source'));
|
|
68
|
+
console.log(chalk.gray('─'.repeat(40)));
|
|
69
|
+
const total = Object.values(summary.by_source).reduce((a, b) => a + b, 0);
|
|
70
|
+
for (const [source, count] of sourceEntries.sort((a, b) => b[1] - a[1])) {
|
|
71
|
+
const pct = Math.round((count / total) * 100);
|
|
72
|
+
const sourceIcon = source === 'hook' ? '⚡' :
|
|
73
|
+
source === 'mcp' ? '🔧' :
|
|
74
|
+
source === 'pre-commit' ? '📝' :
|
|
75
|
+
source === 'ci' ? '🏗️' : '○';
|
|
76
|
+
console.log(` ${sourceIcon} ${source.padEnd(12)} ${String(count).padStart(5)} (${pct}%)`);
|
|
77
|
+
}
|
|
78
|
+
console.log();
|
|
79
|
+
}
|
|
80
|
+
// Activity by Day (last 7 days)
|
|
81
|
+
const dayEntries = Object.entries(summary.by_day);
|
|
82
|
+
if (dayEntries.length > 0) {
|
|
83
|
+
console.log(chalk.bold('Recent Activity'));
|
|
84
|
+
console.log(chalk.gray('─'.repeat(40)));
|
|
85
|
+
const last7Days = dayEntries
|
|
86
|
+
.sort((a, b) => b[0].localeCompare(a[0]))
|
|
87
|
+
.slice(0, 7)
|
|
88
|
+
.reverse();
|
|
89
|
+
const maxCount = Math.max(...last7Days.map(([, count]) => count));
|
|
90
|
+
const barMaxWidth = 20;
|
|
91
|
+
for (const [day, count] of last7Days) {
|
|
92
|
+
const barWidth = Math.max(1, Math.round((count / maxCount) * barMaxWidth));
|
|
93
|
+
const bar = chalk.cyan('▓'.repeat(barWidth));
|
|
94
|
+
const dayLabel = new Date(day).toLocaleDateString('en-US', { weekday: 'short', month: 'short', day: 'numeric' });
|
|
95
|
+
console.log(` ${dayLabel.padEnd(12)} ${bar} ${count}`);
|
|
96
|
+
}
|
|
97
|
+
console.log();
|
|
98
|
+
}
|
|
99
|
+
// Summary line
|
|
100
|
+
const totalViolations = summary.violations_blocked + summary.violations_warned;
|
|
101
|
+
if (totalViolations > 0) {
|
|
102
|
+
const blockRate = Math.round((summary.violations_blocked / totalViolations) * 100);
|
|
103
|
+
console.log(chalk.bold(`Enforcement Rate: `) +
|
|
104
|
+
(blockRate >= 90 ? chalk.green(`${blockRate}%`) :
|
|
105
|
+
blockRate >= 70 ? chalk.yellow(`${blockRate}%`) :
|
|
106
|
+
chalk.red(`${blockRate}%`)) +
|
|
107
|
+
chalk.gray(` (${summary.violations_blocked} blocked / ${totalViolations} total violations)`));
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
console.log(chalk.green('✓ No violations recorded'));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
export async function statsCommand(options) {
|
|
114
|
+
const days = options.days ?? 7;
|
|
115
|
+
const verbose = options.verbose ?? false;
|
|
116
|
+
// Check if any telemetry exists
|
|
117
|
+
const totalCount = getEventCount();
|
|
118
|
+
if (totalCount === 0) {
|
|
119
|
+
console.log(chalk.yellow('\nNo telemetry data found.'));
|
|
120
|
+
console.log(chalk.gray('\nTelemetry is collected when:'));
|
|
121
|
+
console.log(chalk.gray(' - Hooks block or warn on violations'));
|
|
122
|
+
console.log(chalk.gray(' - MCP compliance checks are run'));
|
|
123
|
+
console.log(chalk.gray(' - Tasks are completed via MCP'));
|
|
124
|
+
console.log(chalk.gray('\nRun `convext sync --hooks` to generate enforcement hooks.'));
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
// Get events for the specified period
|
|
128
|
+
const endDate = new Date();
|
|
129
|
+
const startDate = new Date();
|
|
130
|
+
startDate.setDate(startDate.getDate() - days);
|
|
131
|
+
const events = days === 0
|
|
132
|
+
? readEvents()
|
|
133
|
+
: readEventsInRange(startDate, endDate);
|
|
134
|
+
if (events.length === 0) {
|
|
135
|
+
console.log(chalk.yellow(`\nNo events in the last ${days} days.`));
|
|
136
|
+
console.log(chalk.gray(`Total events recorded: ${totalCount}`));
|
|
137
|
+
console.log(chalk.gray('\nUse --days 0 to see all-time statistics.'));
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
// Generate summary
|
|
141
|
+
const summary = summarizeEvents(events);
|
|
142
|
+
if (options.json) {
|
|
143
|
+
console.log(JSON.stringify(summary, null, 2));
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
renderSummary(summary);
|
|
147
|
+
if (verbose) {
|
|
148
|
+
console.log(chalk.gray('\nRecent events:'));
|
|
149
|
+
const recentEvents = events.slice(-10).reverse();
|
|
150
|
+
for (const event of recentEvents) {
|
|
151
|
+
const time = new Date(event.timestamp).toLocaleTimeString();
|
|
152
|
+
const icon = event.result === 'blocked' ? chalk.red('✗') :
|
|
153
|
+
event.result === 'warned' ? chalk.yellow('⚠') :
|
|
154
|
+
event.result === 'passed' ? chalk.green('✓') : '○';
|
|
155
|
+
console.log(` ${icon} ${chalk.gray(time)} ${event.event_type} ${event.rule_title || ''}`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=stats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.js","sourceRoot":"","sources":["../../src/commands/stats.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/sync.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AA6CA,UAAU,WAAW;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACjD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAwID,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqOrE"}
|
package/dist/commands/sync.js
CHANGED
|
@@ -2,11 +2,14 @@ import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import ora from "ora";
|
|
5
|
-
import { getProjectContext, getProjectMarkdown, assignRuleSets, } from "../api.js";
|
|
5
|
+
import { getProjectContext, getProjectMarkdown, getProjectRulesWithEnforcement, assignRuleSets, uploadTelemetry, } from "../api.js";
|
|
6
6
|
import { backupFile, ensureParentDir } from "../utils/fileManager.js";
|
|
7
7
|
import { promptConfirm, promptCheckbox } from "../utils/prompts.js";
|
|
8
8
|
import { scanRepository } from "../utils/scanner.js";
|
|
9
|
+
import { generateHooks, writeHooks, mergeClaudeCodeSettings } from "../utils/hooks.js";
|
|
10
|
+
import { readEvents, rotateLog } from "../utils/telemetry.js";
|
|
9
11
|
import { initCommand } from "./init.js";
|
|
12
|
+
import { getApiUrl } from "../config.js";
|
|
10
13
|
function loadLocalProjectConfig() {
|
|
11
14
|
const configPath = join(process.cwd(), ".convext", "config.json");
|
|
12
15
|
if (!existsSync(configPath)) {
|
|
@@ -304,6 +307,14 @@ export async function syncCommand(options) {
|
|
|
304
307
|
else {
|
|
305
308
|
console.log("\n" + chalk.gray("All files are up to date"));
|
|
306
309
|
}
|
|
310
|
+
// Generate hooks if requested
|
|
311
|
+
if (options.hooks && projectId) {
|
|
312
|
+
await syncHooks(projectId, cwd, options.dryRun ?? false, verbose);
|
|
313
|
+
}
|
|
314
|
+
// Upload telemetry if requested
|
|
315
|
+
if (options.telemetry && projectId) {
|
|
316
|
+
await syncTelemetry(projectId, options.dryRun ?? false, verbose);
|
|
317
|
+
}
|
|
307
318
|
}
|
|
308
319
|
catch (error) {
|
|
309
320
|
spinner.fail("Sync failed");
|
|
@@ -319,4 +330,90 @@ export async function syncCommand(options) {
|
|
|
319
330
|
process.exit(1);
|
|
320
331
|
}
|
|
321
332
|
}
|
|
333
|
+
async function syncHooks(projectId, cwd, dryRun, verbose) {
|
|
334
|
+
const log = (msg) => verbose && console.log(chalk.gray(`[verbose] ${msg}`));
|
|
335
|
+
console.log("\n" + chalk.bold("Generating Hooks:"));
|
|
336
|
+
try {
|
|
337
|
+
log("Fetching rules with enforcement patterns...");
|
|
338
|
+
const { rules } = await getProjectRulesWithEnforcement(projectId);
|
|
339
|
+
const enforceableRules = rules.filter((r) => r.enforcement?.block_paths?.length ||
|
|
340
|
+
r.enforcement?.block_content?.length ||
|
|
341
|
+
r.enforcement?.block_dependencies?.length);
|
|
342
|
+
log(`Found ${enforceableRules.length} enforceable rules out of ${rules.length} total`);
|
|
343
|
+
if (enforceableRules.length === 0) {
|
|
344
|
+
console.log(chalk.yellow(" No enforceable rules found. Hooks not generated."));
|
|
345
|
+
console.log(chalk.gray(" Add enforcement patterns to your rules in the Convext UI."));
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
348
|
+
const hookConfig = {
|
|
349
|
+
projectId,
|
|
350
|
+
apiUrl: getApiUrl(),
|
|
351
|
+
rules: enforceableRules,
|
|
352
|
+
};
|
|
353
|
+
const hooks = generateHooks(hookConfig, cwd);
|
|
354
|
+
if (dryRun) {
|
|
355
|
+
console.log(chalk.cyan(" [DRY RUN] Would generate:"));
|
|
356
|
+
for (const file of hooks.files) {
|
|
357
|
+
console.log(chalk.gray(` - ${file.path}`));
|
|
358
|
+
}
|
|
359
|
+
console.log(chalk.gray(" - .claude/settings.json (hooks config)"));
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
const written = writeHooks(hooks, cwd);
|
|
363
|
+
for (const path of written) {
|
|
364
|
+
console.log(chalk.green(` ✓ ${path}`));
|
|
365
|
+
}
|
|
366
|
+
// Update Claude Code settings
|
|
367
|
+
const settingsPath = join(cwd, ".claude", "settings.json");
|
|
368
|
+
ensureParentDir(settingsPath);
|
|
369
|
+
let existingSettings = {};
|
|
370
|
+
if (existsSync(settingsPath)) {
|
|
371
|
+
try {
|
|
372
|
+
existingSettings = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
373
|
+
}
|
|
374
|
+
catch {
|
|
375
|
+
existingSettings = {};
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
const mergedSettings = mergeClaudeCodeSettings(existingSettings, hooks.settings);
|
|
379
|
+
writeFileSync(settingsPath, JSON.stringify(mergedSettings, null, 2), "utf-8");
|
|
380
|
+
console.log(chalk.green(` ✓ .claude/settings.json (hooks config)`));
|
|
381
|
+
console.log(chalk.green(`\n✓ Generated ${written.length} hook(s) with ${enforceableRules.length} enforceable rules`));
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
console.log(chalk.red(" ✗ Failed to generate hooks"));
|
|
385
|
+
if (error instanceof Error) {
|
|
386
|
+
console.log(chalk.gray(` Error: ${error.message}`));
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
async function syncTelemetry(projectId, dryRun, verbose) {
|
|
391
|
+
const log = (msg) => verbose && console.log(chalk.gray(`[verbose] ${msg}`));
|
|
392
|
+
console.log("\n" + chalk.bold("Syncing Telemetry:"));
|
|
393
|
+
try {
|
|
394
|
+
const events = readEvents();
|
|
395
|
+
if (events.length === 0) {
|
|
396
|
+
console.log(chalk.gray(" No local telemetry to upload."));
|
|
397
|
+
return;
|
|
398
|
+
}
|
|
399
|
+
log(`Found ${events.length} local events`);
|
|
400
|
+
if (dryRun) {
|
|
401
|
+
console.log(chalk.cyan(` [DRY RUN] Would upload ${events.length} event(s)`));
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
const result = await uploadTelemetry(projectId, events);
|
|
405
|
+
console.log(chalk.green(` ✓ Uploaded ${result.uploaded} event(s)`));
|
|
406
|
+
// Archive uploaded events
|
|
407
|
+
const archivePath = rotateLog();
|
|
408
|
+
if (archivePath) {
|
|
409
|
+
console.log(chalk.gray(` ↻ Archived to ${archivePath}`));
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
catch (error) {
|
|
413
|
+
console.log(chalk.red(" ✗ Failed to upload telemetry"));
|
|
414
|
+
if (error instanceof Error) {
|
|
415
|
+
console.log(chalk.gray(` Error: ${error.message}`));
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
322
419
|
//# sourceMappingURL=sync.js.map
|