@saferun/cli 0.6.6 ā 0.6.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -155,24 +155,6 @@ function registerCommands(program) {
|
|
|
155
155
|
const { ConfigCommand } = await Promise.resolve().then(() => __importStar(require('./commands/config')));
|
|
156
156
|
await new ConfigCommand().slack(options);
|
|
157
157
|
});
|
|
158
|
-
// saferun statistics - view AI detection statistics
|
|
159
|
-
program
|
|
160
|
-
.command('statistics')
|
|
161
|
-
.alias('stats')
|
|
162
|
-
.description('View AI detection statistics')
|
|
163
|
-
.argument('[subcommand]', 'Subcommand: stats, list')
|
|
164
|
-
.action(async (subcommand) => {
|
|
165
|
-
const { StatisticsCommand } = await Promise.resolve().then(() => __importStar(require('./commands/statistics')));
|
|
166
|
-
const cmd = new StatisticsCommand();
|
|
167
|
-
switch (subcommand) {
|
|
168
|
-
case 'list':
|
|
169
|
-
await cmd.list();
|
|
170
|
-
break;
|
|
171
|
-
case 'stats':
|
|
172
|
-
default:
|
|
173
|
-
await cmd.stats(); // Default to stats
|
|
174
|
-
}
|
|
175
|
-
});
|
|
176
158
|
// saferun shell-init - setup shell integration
|
|
177
159
|
program
|
|
178
160
|
.command('shell-init')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-commands.js","sourceRoot":"","sources":["../src/register-commands.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"register-commands.js","sourceRoot":"","sources":["../src/register-commands.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Command: saferun statistics
|
|
4
|
-
* View AI detection statistics
|
|
5
|
-
*/
|
|
6
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
-
};
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.StatisticsCommand = void 0;
|
|
11
|
-
const chalk_1 = __importDefault(require("chalk"));
|
|
12
|
-
const git_1 = require("../utils/git");
|
|
13
|
-
const feedback_1 = require("../utils/feedback");
|
|
14
|
-
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
15
|
-
class StatisticsCommand {
|
|
16
|
-
async stats() {
|
|
17
|
-
const gitInfo = await (0, git_1.getGitInfo)();
|
|
18
|
-
if (!gitInfo) {
|
|
19
|
-
console.error(chalk_1.default.red('Error: Not a git repository'));
|
|
20
|
-
process.exit(1);
|
|
21
|
-
}
|
|
22
|
-
const stats = await (0, feedback_1.getFeedbackStats)(gitInfo.repoRoot);
|
|
23
|
-
console.log(chalk_1.default.bold('\nš AI Detection Feedback Statistics\n'));
|
|
24
|
-
const table = new cli_table3_1.default({
|
|
25
|
-
head: ['Metric', 'Count', 'Percentage'],
|
|
26
|
-
style: { head: ['cyan'] },
|
|
27
|
-
});
|
|
28
|
-
const total = stats.total || 1;
|
|
29
|
-
table.push(['Total feedback', stats.total.toString(), '100%'], [
|
|
30
|
-
chalk_1.default.green('Correct detections'),
|
|
31
|
-
stats.correct.toString(),
|
|
32
|
-
`${((stats.correct / total) * 100).toFixed(1)}%`,
|
|
33
|
-
], [
|
|
34
|
-
chalk_1.default.yellow('False positives'),
|
|
35
|
-
stats.false_positives.toString(),
|
|
36
|
-
`${((stats.false_positives / total) * 100).toFixed(1)}%`,
|
|
37
|
-
], [
|
|
38
|
-
chalk_1.default.red('False negatives'),
|
|
39
|
-
stats.false_negatives.toString(),
|
|
40
|
-
`${((stats.false_negatives / total) * 100).toFixed(1)}%`,
|
|
41
|
-
]);
|
|
42
|
-
console.log(table.toString());
|
|
43
|
-
if (stats.total === 0) {
|
|
44
|
-
console.log(chalk_1.default.gray('\nNo feedback collected yet'));
|
|
45
|
-
console.log(chalk_1.default.gray('Feedback is requested after AI-detected operations'));
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
const accuracy = ((stats.correct / total) * 100).toFixed(1);
|
|
49
|
-
console.log(chalk_1.default.bold(`\nDetection Accuracy: ${accuracy}%`));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
async list() {
|
|
53
|
-
const gitInfo = await (0, git_1.getGitInfo)();
|
|
54
|
-
if (!gitInfo) {
|
|
55
|
-
console.error(chalk_1.default.red('Error: Not a git repository'));
|
|
56
|
-
process.exit(1);
|
|
57
|
-
}
|
|
58
|
-
const entries = await (0, feedback_1.readFeedback)(gitInfo.repoRoot);
|
|
59
|
-
if (entries.length === 0) {
|
|
60
|
-
console.log(chalk_1.default.yellow('No feedback entries'));
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
console.log(chalk_1.default.bold('\nš Feedback Entries\n'));
|
|
64
|
-
const table = new cli_table3_1.default({
|
|
65
|
-
head: ['Date', 'Operation', 'Score', 'Action', 'Feedback'],
|
|
66
|
-
style: { head: ['cyan'] },
|
|
67
|
-
});
|
|
68
|
-
entries.slice(-10).forEach((entry) => {
|
|
69
|
-
const feedbackColor = entry.user_feedback === 'correct'
|
|
70
|
-
? chalk_1.default.green
|
|
71
|
-
: entry.user_feedback === 'false_positive'
|
|
72
|
-
? chalk_1.default.yellow
|
|
73
|
-
: chalk_1.default.red;
|
|
74
|
-
table.push([
|
|
75
|
-
new Date(entry.timestamp).toLocaleString(),
|
|
76
|
-
entry.operation_type || 'unknown',
|
|
77
|
-
entry.total_score.toFixed(2),
|
|
78
|
-
entry.action_taken,
|
|
79
|
-
feedbackColor(entry.user_feedback || 'pending'),
|
|
80
|
-
]);
|
|
81
|
-
});
|
|
82
|
-
console.log(table.toString());
|
|
83
|
-
console.log(chalk_1.default.gray(`\nShowing last 10 of ${entries.length} entries`));
|
|
84
|
-
}
|
|
85
|
-
async sync() {
|
|
86
|
-
const gitInfo = await (0, git_1.getGitInfo)();
|
|
87
|
-
if (!gitInfo) {
|
|
88
|
-
console.error(chalk_1.default.red('Error: Not a git repository'));
|
|
89
|
-
process.exit(1);
|
|
90
|
-
}
|
|
91
|
-
console.log(chalk_1.default.cyan('Syncing feedback to SafeRun backend...'));
|
|
92
|
-
// TODO: Implement actual sync with API client
|
|
93
|
-
console.log(chalk_1.default.yellow('ā ļø Sync not yet implemented'));
|
|
94
|
-
console.log(chalk_1.default.gray('Feedback is stored locally in .saferun/feedback.queue'));
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
exports.StatisticsCommand = StatisticsCommand;
|
|
98
|
-
//# sourceMappingURL=statistics.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../src/commands/statistics.ts"],"names":[],"mappings":"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"}
|