@jonathan0823/pi-sonarqube 0.5.0 → 0.6.0

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/commands.js CHANGED
@@ -1,6 +1,9 @@
1
1
  import { SONAR_SEVERITIES, SONAR_STATUSES, SONAR_TYPES, SONAR_SOFTWARE_QUALITIES, SONAR_IMPACT_SEVERITIES, } from "./types.js";
2
+ import { execFileSync } from "node:child_process";
3
+ import { readdirSync } from "node:fs";
4
+ import { basename, dirname, relative, resolve } from "node:path";
2
5
  import { looksLikePath } from "./config.js";
3
- import { parseSonarIssueArgs, issueFilterLabel } from "./api.js";
6
+ import { parseSonarIssueArgs, issueFilterLabel, fetchProjectProfiles, fetchRuleSearch, } from "./api.js";
4
7
  // ── Constants ───────────────────────────────────────────────────────────────
5
8
  export const STATE_TYPE = "sonarqube-analysis-state";
6
9
  const SONAR_COMMANDS = [
@@ -91,11 +94,224 @@ function createFilterCompletionList(mode) {
91
94
  ["quality", SONAR_SOFTWARE_QUALITIES, "software quality (MQR)", true],
92
95
  ["impactSeverity", SONAR_IMPACT_SEVERITIES, "impact severity (MQR)", false],
93
96
  ];
97
+ const ruleItems = [
98
+ { value: "rule:", label: "rule:", description: "rule key" },
99
+ { value: "rules:", label: "rules:", description: "rule key" },
100
+ ];
101
+ const scopeItems = [
102
+ {
103
+ value: "in:",
104
+ label: "in:",
105
+ description: "path or dir scope (e.g. in:src/api.ts or in:src/)",
106
+ },
107
+ ];
94
108
  return mode === "MQR"
95
- ? [...buildItems(mqrGroups), ...buildItems(legacyGroups)]
96
- : [...buildItems(legacyGroups), ...buildItems(mqrGroups)];
109
+ ? [
110
+ ...scopeItems,
111
+ ...ruleItems,
112
+ ...buildItems(mqrGroups),
113
+ ...buildItems(legacyGroups),
114
+ ]
115
+ : [
116
+ ...scopeItems,
117
+ ...ruleItems,
118
+ ...buildItems(legacyGroups),
119
+ ...buildItems(mqrGroups),
120
+ ];
121
+ }
122
+ function listDirCompletions(dirPath, baseDir) {
123
+ try {
124
+ const entries = readdirSync(dirPath, { withFileTypes: true });
125
+ const items = [];
126
+ const relativePrefix = dirPath === baseDir ? "" : relative(baseDir, dirPath) + "/";
127
+ for (const entry of entries) {
128
+ if (entry.name.startsWith("."))
129
+ continue;
130
+ const isDir = entry.isDirectory();
131
+ const name = isDir ? entry.name + "/" : entry.name;
132
+ const fullPath = relativePrefix + name;
133
+ items.push({
134
+ value: `in:${fullPath}`,
135
+ label: name,
136
+ description: relativePrefix.replace(/\/$/, ""),
137
+ });
138
+ }
139
+ items.sort((a, b) => {
140
+ const aDir = a.description === "" ? 0 : 1;
141
+ const bDir = b.description === "" ? 0 : 1;
142
+ if (aDir !== bDir)
143
+ return aDir - bDir;
144
+ // Within same depth, dirs first, then by label
145
+ const aD = a.label.endsWith("/") ? 0 : 1;
146
+ const bD = b.label.endsWith("/") ? 0 : 1;
147
+ return aD - bD || a.label.localeCompare(b.label);
148
+ });
149
+ return items.length > 0 ? items.slice(0, 50) : null;
150
+ }
151
+ catch {
152
+ return null;
153
+ }
97
154
  }
98
- export function sonarArgumentCompletions(argumentText, issues, mode) {
155
+ function fuzzyWithCmd(cmd, args, prefix, baseDir) {
156
+ const out = execFileSync(cmd, args, {
157
+ encoding: "utf8",
158
+ timeout: 3000,
159
+ maxBuffer: 5 * 1024 * 1024,
160
+ windowsHide: true,
161
+ });
162
+ const lines = out.trim().split("\n").filter(Boolean);
163
+ if (lines.length === 0)
164
+ return null;
165
+ const lowerPrefix = prefix.toLowerCase();
166
+ const matched = [];
167
+ const seen = new Set();
168
+ for (const line of lines) {
169
+ if (matched.length >= 50)
170
+ break;
171
+ // Normalize: fd outputs dirs with trailing /, rg doesn't
172
+ const isDir = line.endsWith("/");
173
+ const entry = isDir ? line.slice(0, -1) : line;
174
+ if (!entry.toLowerCase().includes(lowerPrefix) || seen.has(entry))
175
+ continue;
176
+ seen.add(entry);
177
+ const dir = dirname(entry);
178
+ const name = basename(entry) + (isDir ? "/" : "");
179
+ matched.push({
180
+ value: `in:${line}`,
181
+ label: name,
182
+ description: dir === "." ? "" : dir + "/",
183
+ });
184
+ // For rg (no dirs output), extract ancestor dirs that match
185
+ if (!isDir) {
186
+ addAncestorDirMatches(entry, lowerPrefix, matched, seen);
187
+ }
188
+ }
189
+ matched.sort((a, b) => {
190
+ const aDir = a.label.endsWith("/") ? 0 : 1;
191
+ const bDir = b.label.endsWith("/") ? 0 : 1;
192
+ if (aDir !== bDir)
193
+ return aDir - bDir;
194
+ return a.label.localeCompare(b.label);
195
+ });
196
+ return matched;
197
+ }
198
+ /**
199
+ * For non-directory entries, extract ancestor directories that match the prefix
200
+ * and add them as autocomplete suggestions.
201
+ */
202
+ function addAncestorDirMatches(entry, lowerPrefix, matched, seen) {
203
+ const segs = entry.split("/");
204
+ for (let i = 0; i < segs.length - 1; i++) {
205
+ if (matched.length >= 50)
206
+ break;
207
+ const dirPath = segs.slice(0, i + 1).join("/") + "/";
208
+ if (seen.has(dirPath))
209
+ continue;
210
+ seen.add(dirPath);
211
+ if (segs[i].toLowerCase().includes(lowerPrefix)) {
212
+ const parentDir = segs.slice(0, i).join("/");
213
+ matched.push({
214
+ value: `in:${dirPath}`,
215
+ label: segs[i] + "/",
216
+ description: parentDir || "",
217
+ });
218
+ }
219
+ }
220
+ }
221
+ async function fetchRuleAutocompleteCompletions(serverUrl, token, projectKey, query) {
222
+ try {
223
+ const profiles = await fetchProjectProfiles(serverUrl, token, projectKey);
224
+ const languages = [
225
+ ...new Set(profiles.map((p) => p.language).filter(Boolean)),
226
+ ];
227
+ const rules = await fetchRuleSearch(serverUrl, token, query, languages);
228
+ if (rules.length === 0)
229
+ return null;
230
+ return rules.map((r) => ({
231
+ value: `rule:${r.key}`,
232
+ label: r.key,
233
+ description: r.name ?? "",
234
+ }));
235
+ }
236
+ catch {
237
+ return null;
238
+ }
239
+ }
240
+ function getInPathCompletions(prefix, baseDir) {
241
+ // Directory browsing: show contents when prefix ends with /
242
+ if (prefix.endsWith("/")) {
243
+ return listDirCompletions(resolve(baseDir, prefix), baseDir);
244
+ }
245
+ // Empty prefix: show root directory contents
246
+ if (!prefix) {
247
+ return listDirCompletions(baseDir, baseDir);
248
+ }
249
+ // Try fd first (fast, respects .gitignore, matches Pi TUI behavior)
250
+ try {
251
+ return fuzzyWithCmd("fd", [
252
+ "--base-directory",
253
+ baseDir,
254
+ "--type",
255
+ "f",
256
+ "--type",
257
+ "d",
258
+ "--hidden",
259
+ "--exclude",
260
+ ".git",
261
+ "--max-results",
262
+ "50",
263
+ "--full-path",
264
+ prefix,
265
+ ], prefix, baseDir);
266
+ }
267
+ catch {
268
+ // fd not available
269
+ }
270
+ // Fallback: rg --files (slower but available on most systems)
271
+ try {
272
+ return fuzzyWithCmd("rg", ["--files", "--color", "never", "--no-ignore-parent"], prefix, baseDir);
273
+ }
274
+ catch {
275
+ // rg not available
276
+ }
277
+ // Last resort: list current directory
278
+ return listDirCompletions(baseDir, baseDir);
279
+ }
280
+ function getOpenCompletions(issues, mode, current) {
281
+ const issueItems = (issues ?? []).slice(0, 10).map((issue, index) => {
282
+ const lineSuffix = issue.line ? `:${issue.line}` : "";
283
+ return {
284
+ value: String(index + 1),
285
+ label: String(index + 1),
286
+ description: `${issue.severity} ${issue.filePath}${lineSuffix}`,
287
+ };
288
+ });
289
+ const suggestions = [...issueItems, ...createFilterCompletionList(mode)];
290
+ const filtered = filterAutocompleteItems(suggestions, current);
291
+ return filtered.length > 0 ? filtered : null;
292
+ }
293
+ async function getFilterCompletions(current, mode, cwd, serverUrl, token, projectKey) {
294
+ if (current.startsWith("in:") && cwd) {
295
+ return getInPathCompletions(current.slice(3), cwd);
296
+ }
297
+ if ((current.startsWith("rule:") || current.startsWith("rules:")) &&
298
+ serverUrl &&
299
+ projectKey) {
300
+ const query = current.split(":").slice(1).join(":");
301
+ const ruleItems = await fetchRuleAutocompleteCompletions(serverUrl, token, projectKey, query);
302
+ const staticSuggestions = createFilterCompletionList(mode);
303
+ const filtered = filterAutocompleteItems(staticSuggestions, current);
304
+ const combined = [
305
+ ...(filtered.length > 0 ? filtered : []),
306
+ ...(ruleItems ?? []),
307
+ ];
308
+ return combined.length > 0 ? combined : null;
309
+ }
310
+ const suggestions = createFilterCompletionList(mode);
311
+ const filtered = filterAutocompleteItems(suggestions, current);
312
+ return filtered.length > 0 ? filtered : null;
313
+ }
314
+ export async function sonarArgumentCompletions(argumentText, issues, mode, cwd, serverUrl, token, projectKey) {
99
315
  const { command, current, tokens } = splitSonarArgumentContext(argumentText);
100
316
  const lowerCommand = command.toLowerCase();
101
317
  const commandMatches = SONAR_COMMANDS.filter((item) => item.value.startsWith(lowerCommand));
@@ -110,22 +326,10 @@ export function sonarArgumentCompletions(argumentText, issues, mode) {
110
326
  }));
111
327
  }
112
328
  if (lowerCommand === "open") {
113
- const issueItems = (issues ?? []).slice(0, 10).map((issue, index) => {
114
- const lineSuffix = issue.line ? `:${issue.line}` : "";
115
- return {
116
- value: String(index + 1),
117
- label: String(index + 1),
118
- description: `${issue.severity} ${issue.filePath}${lineSuffix}`,
119
- };
120
- });
121
- const suggestions = [...issueItems, ...createFilterCompletionList(mode)];
122
- const filtered = filterAutocompleteItems(suggestions, current);
123
- return filtered.length > 0 ? filtered : null;
329
+ return getOpenCompletions(issues, mode, current);
124
330
  }
125
331
  if (lowerCommand === "analyze" || lowerCommand === "issues") {
126
- const suggestions = createFilterCompletionList(mode);
127
- const filtered = filterAutocompleteItems(suggestions, current);
128
- return filtered.length > 0 ? filtered : null;
332
+ return getFilterCompletions(current, mode, cwd, serverUrl, token, projectKey);
129
333
  }
130
334
  if (lowerCommand === "init" ||
131
335
  lowerCommand === "metrics" ||
@@ -187,6 +391,9 @@ export function helpText() {
187
391
  "Filters:",
188
392
  " /sonarqube issues be CRITICAL",
189
393
  " /sonarqube issues be severity:CRITICAL status:OPEN",
394
+ " /sonarqube issues be rule:S1192",
395
+ " /sonarqube issues in:src/api.ts",
396
+ " /sonarqube issues in:src/",
190
397
  " /sonarqube issues be quality:RELIABILITY",
191
398
  " /sonarqube issues be quality:SECURITY impactSeverity:HIGH",
192
399
  "",
@@ -200,6 +407,7 @@ export function helpText() {
200
407
  "Defaults:",
201
408
  " config is stored in .pi/sonarqube.json",
202
409
  " use project paths directly (no alias needed)",
410
+ " issue and duplication browsers search file, rule, severity, status, message, and stats",
203
411
  ].join("\n");
204
412
  }
205
413
  export function targetLabel(targetInput) {
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,iCAAiC,CAAC;AA8XzC,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,EAAE,YAAY,QAgSjD;AA+bD,YAAY,EACV,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,iCAAiC,CAAC;AAqZzC,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,EAAE,YAAY,QA8SjD;AAybD,YAAY,EACV,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -27,6 +27,9 @@ const SonarToolParams = Type.Object({
27
27
  description: "Software quality to fetch (e.g. MAINTAINABILITY)",
28
28
  }))),
29
29
  impactSeverities: Type.Optional(Type.Array(Type.String({ description: "Impact severity to fetch (e.g. HIGH)" }))),
30
+ pathScope: Type.Optional(Type.String({
31
+ description: "Scope issues to a specific file or directory path (e.g. src/api.ts or src/). Use this instead of the `path` parameter for file-level filtering.",
32
+ })),
30
33
  });
31
34
  // ── State restoration ───────────────────────────────────────────────────────
32
35
  async function restoreState(pi, ctx, statesByBaseDir) {
@@ -46,6 +49,7 @@ async function restoreState(pi, ctx, statesByBaseDir) {
46
49
  // ── Analysis orchestration ──────────────────────────────────────────────────
47
50
  async function analyzeProject(pi, ctx, inputPath, filters) {
48
51
  const config = await resolveConfig(ctx, inputPath);
52
+ _cachedConfig = { serverUrl: config.serverUrl, projectKey: config.projectKey, token: config.token };
49
53
  const baseDirStat = await stat(config.baseDir).catch(() => undefined);
50
54
  if (!baseDirStat?.isDirectory()) {
51
55
  throw new Error(`Project directory not found: ${config.baseDir}`);
@@ -64,7 +68,7 @@ async function analyzeProject(pi, ctx, inputPath, filters) {
64
68
  : undefined;
65
69
  analysisUi.setPhase("Fetching issues...");
66
70
  const normalizedFilters = normalizeIssueFilters(filters);
67
- const issues = await fetchIssues(config.serverUrl, config.token, config.projectKey, ctx.signal, normalizedFilters);
71
+ const issues = await fetchIssues(config.serverUrl, config.token, config.projectKey, ctx.signal, normalizedFilters, config.baseDir);
68
72
  analysisUi.setPhase("Fetching metrics...");
69
73
  const measures = await fetchDuplicationMeasures(config.serverUrl, config.token, config.projectKey, ctx.signal);
70
74
  analysisUi.setPhase("Detecting mode...");
@@ -187,6 +191,20 @@ function renderIssueListResult(state, expanded, theme) {
187
191
  return new Text(lines.join("\n"), 0, 0);
188
192
  }
189
193
  // ── Extension entrypoint ────────────────────────────────────────────────────
194
+ // ponytail: lazy config cache so rule autocomplete can fetch from the server
195
+ let _cachedConfig;
196
+ async function cachedServerConfig(cwd) {
197
+ if (!_cachedConfig) {
198
+ try {
199
+ const cfg = await resolveConfig({ cwd });
200
+ _cachedConfig = { serverUrl: cfg.serverUrl, projectKey: cfg.projectKey, token: cfg.token };
201
+ }
202
+ catch {
203
+ // fall through
204
+ }
205
+ }
206
+ return _cachedConfig;
207
+ }
190
208
  export default function sonarqube(pi) {
191
209
  const statesByBaseDir = new Map();
192
210
  let latestState;
@@ -209,7 +227,8 @@ export default function sonarqube(pi) {
209
227
  return current.getSuggestions(lines, cursorLine, cursorCol, options);
210
228
  const argumentText = match[1] ?? "";
211
229
  const { current: currentToken } = splitSonarArgumentContext(argumentText);
212
- const extraItems = sonarArgumentCompletions(argumentText, latestState?.issues, latestState?.cleanCodeMode) ?? [];
230
+ const cfg = await cachedServerConfig(ctx.cwd);
231
+ const extraItems = (await sonarArgumentCompletions(argumentText, latestState?.issues, latestState?.cleanCodeMode, undefined, cfg?.serverUrl, cfg?.token, cfg?.projectKey)) ?? [];
213
232
  const currentSuggestions = await current.getSuggestions(lines, cursorLine, cursorCol, options);
214
233
  const merged = mergeAutocompleteSuggestions(currentToken, currentSuggestions, extraItems);
215
234
  return merged ?? currentSuggestions;
@@ -234,6 +253,7 @@ export default function sonarqube(pi) {
234
253
  promptGuidelines: [
235
254
  "Use sonarqube when the user asks to run a local SonarQube scan, inspect issues, or open an issue's source location.",
236
255
  "Use the optional severity, status, type, rule, quality, and impact severity filters to fetch only the most relevant issues.",
256
+ "To scope issues to a specific file or directory, use the `pathScope` parameter (e.g. pathScope: 'src/api.ts') — do not use the `path` parameter for file filtering.",
237
257
  ],
238
258
  parameters: SonarToolParams,
239
259
  async execute(_toolCallId, params, _signal, _onUpdate, ctx) {
@@ -245,6 +265,7 @@ export default function sonarqube(pi) {
245
265
  rules: params.rules,
246
266
  softwareQualities: params.softwareQualities,
247
267
  impactSeverities: params.impactSeverities,
268
+ pathScope: params.pathScope,
248
269
  });
249
270
  assertFiltersNotAmbiguous(filters);
250
271
  if (params.action === "analyze") {
@@ -346,7 +367,10 @@ export default function sonarqube(pi) {
346
367
  });
347
368
  pi.registerCommand("sonarqube", {
348
369
  description: "Run a local SonarQube analysis, browse the latest issues, or init project config",
349
- getArgumentCompletions: (argumentPrefix) => sonarArgumentCompletions(argumentPrefix, latestState?.issues, latestState?.cleanCodeMode),
370
+ getArgumentCompletions: async (argumentPrefix) => {
371
+ const cfg = await cachedServerConfig(process.cwd());
372
+ return sonarArgumentCompletions(argumentPrefix, latestState?.issues, latestState?.cleanCodeMode, process.cwd(), cfg?.serverUrl, cfg?.token, cfg?.projectKey);
373
+ },
350
374
  handler: async (args, ctx) => {
351
375
  try {
352
376
  const parsed = parseCommandArgs(args);
@@ -369,7 +393,7 @@ export default function sonarqube(pi) {
369
393
  await commandMetrics(ctx, parsed.targetInput);
370
394
  return;
371
395
  case "duplications":
372
- await commandDuplications(pi, ctx, parsed.targetInput, parsed.issueIndex);
396
+ await commandDuplications(pi, ctx, parsed.targetInput, parsed.issueIndex, parsed.filters);
373
397
  return;
374
398
  default:
375
399
  await commandIssuesOrOpen(pi, ctx, statesByBaseDir, parsed, rememberState);
@@ -393,15 +417,21 @@ async function commandAnalyze(pi, ctx, targetInput, filters, rememberState) {
393
417
  ctx.ui.notify(`${formatSummary(state)}. Use /sonarqube issues${scope} to browse.`, state.issues.length === 0 ? "info" : "warning");
394
418
  }
395
419
  }
396
- async function commandMetrics(ctx, targetInput) {
397
- const config = await resolveConfig(ctx, targetInput);
398
- const cleanCodeMode = await fetchCleanCodeMode(config.serverUrl, config.token, ctx.signal);
420
+ async function loadMetricsData(config, signal) {
421
+ const cleanCodeMode = await fetchCleanCodeMode(config.serverUrl, config.token, signal);
399
422
  const [measures, issueCounts, qualityCounts] = await Promise.all([
400
- fetchDuplicationMeasures(config.serverUrl, config.token, config.projectKey, ctx.signal),
401
- fetchIssueSeverityCounts(config.serverUrl, config.token, config.projectKey, ctx.signal, cleanCodeMode),
402
- fetchIssueQualityCounts(config.serverUrl, config.token, config.projectKey, ctx.signal),
423
+ fetchDuplicationMeasures(config.serverUrl, config.token, config.projectKey, signal),
424
+ fetchIssueSeverityCounts(config.serverUrl, config.token, config.projectKey, signal, cleanCodeMode),
425
+ fetchIssueQualityCounts(config.serverUrl, config.token, config.projectKey, signal),
403
426
  ]);
404
- if (!measures && !issueCounts && !qualityCounts) {
427
+ if (!measures && !issueCounts && !qualityCounts)
428
+ return null;
429
+ return { cleanCodeMode, measures, issueCounts, qualityCounts };
430
+ }
431
+ async function commandMetrics(ctx, targetInput) {
432
+ const config = await resolveConfig(ctx, targetInput);
433
+ const metrics = await loadMetricsData(config, ctx.signal);
434
+ if (!metrics) {
405
435
  if (ctx.hasUI) {
406
436
  ctx.ui.notify(`Project "${config.projectKey}" has not been analyzed yet. Run /sonarqube analyze first.`, "warning");
407
437
  }
@@ -409,20 +439,20 @@ async function commandMetrics(ctx, targetInput) {
409
439
  }
410
440
  const text = formatMetricsOutput({
411
441
  projectKey: config.projectKey,
412
- measures,
413
- issueCounts,
414
- issueQualityCounts: qualityCounts,
415
- cleanCodeMode,
442
+ measures: metrics.measures,
443
+ issueCounts: metrics.issueCounts,
444
+ issueQualityCounts: metrics.qualityCounts,
445
+ cleanCodeMode: metrics.cleanCodeMode,
416
446
  });
417
447
  if (ctx.hasUI) {
418
448
  ctx.ui.notify(text, "info");
419
449
  }
420
450
  }
421
- async function commandDuplications(pi, ctx, targetInput, fileIndex) {
451
+ async function commandDuplications(pi, ctx, targetInput, fileIndex, filters) {
422
452
  const config = await resolveConfig(ctx, targetInput);
423
453
  let files;
424
454
  try {
425
- files = await fetchFileDuplications(config.serverUrl, config.token, config.projectKey, ctx.signal);
455
+ files = await fetchFileDuplications(config.serverUrl, config.token, config.projectKey, ctx.signal, filters?.pathScope, config.baseDir);
426
456
  }
427
457
  catch (error) {
428
458
  const msg = sonarErrorMessage(error);
@@ -443,7 +473,7 @@ async function commandDuplications(pi, ctx, targetInput, fileIndex) {
443
473
  await showDuplicationDrillDown(ctx, config, files, fileIndex);
444
474
  return;
445
475
  }
446
- await showDuplicationListOrBrowser(ctx, config, files);
476
+ await showDuplicationListOrBrowser(ctx, config, files, filters);
447
477
  }
448
478
  async function showDuplicationDrillDown(ctx, config, files, fileIndex) {
449
479
  const file = files[fileIndex - 1];
@@ -461,12 +491,13 @@ async function showDuplicationDrillDown(ctx, config, files, fileIndex) {
461
491
  ctx.ui.notify(text, "info");
462
492
  }
463
493
  }
464
- async function showDuplicationListOrBrowser(ctx, config, files) {
494
+ async function showDuplicationListOrBrowser(ctx, config, files, filters) {
465
495
  if (ctx.mode !== "tui") {
466
496
  ctx.ui.notify(formatDuplicationsList(files), "info");
467
497
  return;
468
498
  }
469
- const choice = await showDuplicationBrowser(ctx, files);
499
+ const scopeLabel = filters?.pathScope ? issueFilterLabel(filters) : undefined;
500
+ const choice = await showDuplicationBrowser(ctx, files, scopeLabel);
470
501
  if (choice == null)
471
502
  return;
472
503
  const file = files[choice];
@@ -642,13 +673,8 @@ async function toolMetrics(ctx, path) {
642
673
  details: { error: "Project not configured." },
643
674
  };
644
675
  }
645
- const cleanCodeMode = await fetchCleanCodeMode(config.serverUrl, config.token, ctx.signal);
646
- const [measures, issueCounts, qualityCounts] = await Promise.all([
647
- fetchDuplicationMeasures(config.serverUrl, config.token, config.projectKey, ctx.signal),
648
- fetchIssueSeverityCounts(config.serverUrl, config.token, config.projectKey, ctx.signal, cleanCodeMode),
649
- fetchIssueQualityCounts(config.serverUrl, config.token, config.projectKey, ctx.signal),
650
- ]);
651
- if (!measures && !issueCounts && !qualityCounts) {
676
+ const metrics = await loadMetricsData(config, ctx.signal);
677
+ if (!metrics) {
652
678
  return {
653
679
  content: [
654
680
  {
@@ -663,19 +689,19 @@ async function toolMetrics(ctx, path) {
663
689
  }
664
690
  const text = formatMetricsOutput({
665
691
  projectKey: config.projectKey,
666
- measures,
667
- issueCounts,
668
- issueQualityCounts: qualityCounts,
669
- cleanCodeMode,
692
+ measures: metrics.measures,
693
+ issueCounts: metrics.issueCounts,
694
+ issueQualityCounts: metrics.qualityCounts,
695
+ cleanCodeMode: metrics.cleanCodeMode,
670
696
  });
671
697
  return {
672
698
  content: [{ type: "text", text }],
673
699
  details: {
674
700
  projectKey: config.projectKey,
675
- measures,
676
- issueCounts,
677
- issueQualityCounts: qualityCounts,
678
- cleanCodeMode,
701
+ measures: metrics.measures,
702
+ issueCounts: metrics.issueCounts,
703
+ issueQualityCounts: metrics.qualityCounts,
704
+ cleanCodeMode: metrics.cleanCodeMode,
679
705
  },
680
706
  };
681
707
  }