@saferun/cli 0.6.5 → 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.
@@ -1,12 +1,10 @@
1
1
  /**
2
2
  * Command: saferun agent
3
- * Manage AI agent registration
3
+ * View AI agent detection status (read-only)
4
+ *
5
+ * NOTE: register/unregister commands were removed for security.
6
+ * Agents should not be able to self-register to bypass protection.
4
7
  */
5
8
  export declare class AgentCommand {
6
- register(type: string, options: {
7
- id?: string;
8
- version?: string;
9
- }): Promise<void>;
10
- unregister(): Promise<void>;
11
9
  status(): Promise<void>;
12
10
  }
@@ -1,7 +1,10 @@
1
1
  "use strict";
2
2
  /**
3
3
  * Command: saferun agent
4
- * Manage AI agent registration
4
+ * View AI agent detection status (read-only)
5
+ *
6
+ * NOTE: register/unregister commands were removed for security.
7
+ * Agents should not be able to self-register to bypass protection.
5
8
  */
6
9
  var __importDefault = (this && this.__importDefault) || function (mod) {
7
10
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -12,32 +15,6 @@ const chalk_1 = __importDefault(require("chalk"));
12
15
  const git_1 = require("../utils/git");
13
16
  const agent_handshake_1 = require("../utils/agent-handshake");
14
17
  class AgentCommand {
15
- async register(type, options) {
16
- const gitInfo = await (0, git_1.getGitInfo)();
17
- if (!gitInfo) {
18
- console.error(chalk_1.default.red('Error: Not a git repository'));
19
- process.exit(1);
20
- }
21
- const handshake = (0, agent_handshake_1.createHandshake)(type, {
22
- agentId: options.id,
23
- version: options.version,
24
- });
25
- (0, agent_handshake_1.registerAgent)(handshake, gitInfo.repoRoot);
26
- console.log(chalk_1.default.green('āœ… Agent registered successfully'));
27
- console.log(chalk_1.default.gray(`\nAgent ID: ${handshake.agent_id}`));
28
- console.log(chalk_1.default.gray(`Agent Type: ${handshake.agent_type}`));
29
- console.log(chalk_1.default.gray(`Session Start: ${handshake.session_start}`));
30
- console.log(chalk_1.default.bold('\nšŸ’” This agent will now be detected with 100% confidence'));
31
- }
32
- async unregister() {
33
- const gitInfo = await (0, git_1.getGitInfo)();
34
- if (!gitInfo) {
35
- console.error(chalk_1.default.red('Error: Not a git repository'));
36
- process.exit(1);
37
- }
38
- (0, agent_handshake_1.unregisterAgent)(gitInfo.repoRoot);
39
- console.log(chalk_1.default.green('āœ… Agent unregistered'));
40
- }
41
18
  async status() {
42
19
  const gitInfo = await (0, git_1.getGitInfo)();
43
20
  if (!gitInfo) {
@@ -46,13 +23,14 @@ class AgentCommand {
46
23
  }
47
24
  const handshake = (0, agent_handshake_1.getAgentHandshake)(gitInfo.repoRoot);
48
25
  if (!handshake) {
49
- console.log(chalk_1.default.yellow('No agent registered'));
50
- console.log(chalk_1.default.gray('\nRegister an agent with:'));
51
- console.log(chalk_1.default.gray(' saferun agent register <type>'));
52
- console.log(chalk_1.default.gray('\nSupported types: chatgpt, claude, n8n, zapier, custom'));
26
+ console.log(chalk_1.default.green('āœ… No AI agent currently detected'));
27
+ console.log(chalk_1.default.gray('\nSafeRun automatically detects AI agents based on:'));
28
+ console.log(chalk_1.default.gray(' • Environment variables (CURSOR_*, CLAUDE_*, etc.)'));
29
+ console.log(chalk_1.default.gray(' • Process tree analysis'));
30
+ console.log(chalk_1.default.gray(' • Terminal session context'));
53
31
  return;
54
32
  }
55
- console.log(chalk_1.default.bold('\nšŸ¤– Registered Agent\n'));
33
+ console.log(chalk_1.default.bold('\nšŸ¤– Detected Agent\n'));
56
34
  console.log(chalk_1.default.gray('Agent ID: ') + chalk_1.default.white(handshake.agent_id));
57
35
  console.log(chalk_1.default.gray('Agent Type: ') + chalk_1.default.white(handshake.agent_type));
58
36
  console.log(chalk_1.default.gray('Session Start:') + chalk_1.default.white(new Date(handshake.session_start).toLocaleString()));
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;AAEH,kDAA0B;AAC1B,sCAA0C;AAC1C,8DAA6D;AAE7D,MAAa,YAAY;IACvB,KAAK,CAAC,MAAM;QACV,MAAM,OAAO,GAAG,MAAM,IAAA,gBAAU,GAAE,CAAC;QACnC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,SAAS,GAAG,IAAA,mCAAiB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEtD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAE5G,IAAI,SAAS,CAAC,aAAa,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;CACF;AAjCD,oCAiCC"}
@@ -155,61 +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 allow - whitelist management
159
- program
160
- .command('allow')
161
- .description('Manage whitelist for bots and automation')
162
- .argument('[subcommand]', 'Subcommand: ci, bot, automation, agent, list, remove')
163
- .argument('[args...]', 'Additional arguments')
164
- .allowUnknownOption(true)
165
- .action(async (subcommand, args, options) => {
166
- const { AllowCommand } = await Promise.resolve().then(() => __importStar(require('./commands/allow')));
167
- const cmd = new AllowCommand();
168
- switch (subcommand) {
169
- case 'ci':
170
- await cmd.addCI(options.scope || args[0] || 'ci', options.reason);
171
- break;
172
- case 'bot':
173
- await cmd.addBot(options.name || options.email || args[0], options.reason);
174
- break;
175
- case 'automation':
176
- await cmd.addAutomation(options.context || args[0], options.reason);
177
- break;
178
- case 'agent':
179
- await cmd.addAgent(options.id || args[0], options.type, options.reason);
180
- break;
181
- case 'list':
182
- await cmd.list();
183
- break;
184
- case 'remove':
185
- await cmd.remove(args[0]);
186
- break;
187
- default:
188
- console.log('Usage: saferun allow <ci|bot|automation|agent|list|remove>');
189
- }
190
- });
191
- // saferun feedback - view detection feedback
192
- program
193
- .command('feedback')
194
- .description('View AI detection feedback and statistics')
195
- .argument('[subcommand]', 'Subcommand: stats, list, sync')
196
- .action(async (subcommand) => {
197
- const { FeedbackCommand } = await Promise.resolve().then(() => __importStar(require('./commands/feedback')));
198
- const cmd = new FeedbackCommand();
199
- switch (subcommand) {
200
- case 'stats':
201
- await cmd.stats();
202
- break;
203
- case 'list':
204
- await cmd.list();
205
- break;
206
- case 'sync':
207
- await cmd.sync();
208
- break;
209
- default:
210
- await cmd.stats(); // Default to stats
211
- }
212
- });
213
158
  // saferun shell-init - setup shell integration
214
159
  program
215
160
  .command('shell-init')
@@ -220,26 +165,18 @@ function registerCommands(program) {
220
165
  const { ShellInitCommand } = await Promise.resolve().then(() => __importStar(require('./commands/shell-init')));
221
166
  await new ShellInitCommand().run({ auto: options.auto, shell: options.shell });
222
167
  });
223
- // saferun agent - agent registration
168
+ // saferun agent - agent status (read-only)
224
169
  program
225
170
  .command('agent')
226
- .description('Manage AI agent registration')
227
- .argument('[subcommand]', 'Subcommand: register, unregister, status')
171
+ .description('View AI agent detection status')
172
+ .argument('[subcommand]', 'Subcommand: status')
228
173
  .argument('[args...]', 'Additional arguments')
229
174
  .action(async (subcommand, args, options) => {
230
175
  const { AgentCommand } = await Promise.resolve().then(() => __importStar(require('./commands/agent')));
231
176
  const cmd = new AgentCommand();
232
- switch (subcommand) {
233
- case 'register':
234
- await cmd.register((args === null || args === void 0 ? void 0 : args[0]) || 'unknown', { id: options === null || options === void 0 ? void 0 : options.id, version: options === null || options === void 0 ? void 0 : options.version });
235
- break;
236
- case 'unregister':
237
- await cmd.unregister();
238
- break;
239
- case 'status':
240
- default:
241
- await cmd.status();
242
- }
177
+ // Only allow status command (read-only)
178
+ // register/unregister removed for security - agents should not self-register
179
+ await cmd.status();
243
180
  });
244
181
  program
245
182
  .command('hook')
@@ -1 +1 @@
1
- {"version":3,"file":"register-commands.js","sourceRoot":"","sources":["../src/register-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-commands.js","sourceRoot":"","sources":["../src/register-commands.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@saferun/cli",
3
- "version": "0.6.5",
3
+ "version": "0.6.7",
4
4
  "description": "AI Safety Middleware - Protect your Git workflows from dangerous AI agent operations",
5
5
  "author": "SafeRun Team",
6
6
  "license": "MIT",
@@ -1,12 +0,0 @@
1
- /**
2
- * Command: saferun allow
3
- * Add entries to whitelist to reduce false positives
4
- */
5
- export declare class AllowCommand {
6
- addCI(scope: string, reason?: string): Promise<void>;
7
- addBot(name: string, reason?: string): Promise<void>;
8
- addAutomation(context: string, reason?: string): Promise<void>;
9
- addAgent(id: string, type?: string, reason?: string): Promise<void>;
10
- list(): Promise<void>;
11
- remove(identifier: string): Promise<void>;
12
- }
@@ -1,122 +0,0 @@
1
- "use strict";
2
- /**
3
- * Command: saferun allow
4
- * Add entries to whitelist to reduce false positives
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.AllowCommand = void 0;
11
- const chalk_1 = __importDefault(require("chalk"));
12
- const git_1 = require("../utils/git");
13
- const whitelist_1 = require("../utils/whitelist");
14
- const cli_table3_1 = __importDefault(require("cli-table3"));
15
- class AllowCommand {
16
- async addCI(scope, reason) {
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
- await (0, whitelist_1.addToWhitelist)(gitInfo.repoRoot, {
23
- type: 'ci',
24
- identifier: scope,
25
- reason: reason || `CI/CD system: ${scope}`,
26
- });
27
- console.log(chalk_1.default.green(`āœ“ Added CI system "${scope}" to whitelist`));
28
- console.log(chalk_1.default.gray(` Operations from ${scope} will be allowed automatically`));
29
- }
30
- async addBot(name, reason) {
31
- const gitInfo = await (0, git_1.getGitInfo)();
32
- if (!gitInfo) {
33
- console.error(chalk_1.default.red('Error: Not a git repository'));
34
- process.exit(1);
35
- }
36
- await (0, whitelist_1.addToWhitelist)(gitInfo.repoRoot, {
37
- type: 'bot',
38
- identifier: name,
39
- reason: reason || `Bot: ${name}`,
40
- });
41
- console.log(chalk_1.default.green(`āœ“ Added bot "${name}" to whitelist`));
42
- console.log(chalk_1.default.gray(` Git operations by this bot will be allowed`));
43
- }
44
- async addAutomation(context, reason) {
45
- const gitInfo = await (0, git_1.getGitInfo)();
46
- if (!gitInfo) {
47
- console.error(chalk_1.default.red('Error: Not a git repository'));
48
- process.exit(1);
49
- }
50
- await (0, whitelist_1.addToWhitelist)(gitInfo.repoRoot, {
51
- type: 'automation',
52
- identifier: context,
53
- reason: reason || `Automation: ${context}`,
54
- });
55
- console.log(chalk_1.default.green(`āœ“ Added automation "${context}" to whitelist`));
56
- console.log(chalk_1.default.gray(` This automation context will be allowed`));
57
- }
58
- async addAgent(id, type, reason) {
59
- const gitInfo = await (0, git_1.getGitInfo)();
60
- if (!gitInfo) {
61
- console.error(chalk_1.default.red('Error: Not a git repository'));
62
- process.exit(1);
63
- }
64
- await (0, whitelist_1.addToWhitelist)(gitInfo.repoRoot, {
65
- type: 'agent',
66
- identifier: id,
67
- scope: type ? `type:${type}` : undefined,
68
- reason: reason || `AI Agent: ${id}`,
69
- });
70
- console.log(chalk_1.default.green(`āœ“ Added agent "${id}" to whitelist`));
71
- if (type) {
72
- console.log(chalk_1.default.gray(` Type: ${type}`));
73
- }
74
- }
75
- async list() {
76
- const gitInfo = await (0, git_1.getGitInfo)();
77
- if (!gitInfo) {
78
- console.error(chalk_1.default.red('Error: Not a git repository'));
79
- process.exit(1);
80
- }
81
- const entries = await (0, whitelist_1.listWhitelist)(gitInfo.repoRoot);
82
- if (entries.length === 0) {
83
- console.log(chalk_1.default.yellow('No whitelist entries'));
84
- console.log(chalk_1.default.gray('\nAdd entries with:'));
85
- console.log(chalk_1.default.gray(' saferun allow ci --scope jenkins'));
86
- console.log(chalk_1.default.gray(' saferun allow bot --name "renovate[bot]"'));
87
- return;
88
- }
89
- console.log(chalk_1.default.bold('\nšŸ¤ Whitelist Entries\n'));
90
- const table = new cli_table3_1.default({
91
- head: ['Type', 'Identifier', 'Scope', 'Added', 'Reason'],
92
- style: { head: ['cyan'] },
93
- });
94
- entries.forEach((entry) => {
95
- table.push([
96
- entry.type.toUpperCase(),
97
- entry.identifier,
98
- entry.scope || '-',
99
- new Date(entry.added_at).toLocaleDateString(),
100
- entry.reason || '-',
101
- ]);
102
- });
103
- console.log(table.toString());
104
- console.log(chalk_1.default.gray(`\nTotal: ${entries.length} entries`));
105
- }
106
- async remove(identifier) {
107
- const gitInfo = await (0, git_1.getGitInfo)();
108
- if (!gitInfo) {
109
- console.error(chalk_1.default.red('Error: Not a git repository'));
110
- process.exit(1);
111
- }
112
- const removed = await (0, whitelist_1.removeFromWhitelist)(gitInfo.repoRoot, identifier);
113
- if (removed) {
114
- console.log(chalk_1.default.green(`āœ“ Removed "${identifier}" from whitelist`));
115
- }
116
- else {
117
- console.log(chalk_1.default.yellow(`Entry "${identifier}" not found in whitelist`));
118
- }
119
- }
120
- }
121
- exports.AllowCommand = AllowCommand;
122
- //# sourceMappingURL=allow.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"allow.js","sourceRoot":"","sources":["../../src/commands/allow.ts"],"names":[],"mappings":"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"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Command: saferun feedback
3
- * View and manage detection feedback
4
- */
5
- export declare class FeedbackCommand {
6
- stats(): Promise<void>;
7
- list(): Promise<void>;
8
- sync(): Promise<void>;
9
- }
@@ -1,98 +0,0 @@
1
- "use strict";
2
- /**
3
- * Command: saferun feedback
4
- * View and manage detection feedback
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.FeedbackCommand = 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 FeedbackCommand {
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.FeedbackCommand = FeedbackCommand;
98
- //# sourceMappingURL=feedback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/commands/feedback.ts"],"names":[],"mappings":"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"}