@shnitzel/plugscout 0.3.28 → 0.3.29
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.
|
@@ -1521,6 +1521,13 @@ function buildItemLinks(item) {
|
|
|
1521
1521
|
add('npm', `https://www.npmjs.com/package/${encodeURIComponent(pkg)}`);
|
|
1522
1522
|
}
|
|
1523
1523
|
}
|
|
1524
|
+
// MCP items: io.github.<owner>/<repo> ID pattern → derive GitHub URL
|
|
1525
|
+
if (item.kind === 'mcp' && item.id.startsWith('mcp:io.github.')) {
|
|
1526
|
+
const ownerRepo = item.id.slice('mcp:io.github.'.length);
|
|
1527
|
+
if (ownerRepo.includes('/')) {
|
|
1528
|
+
add('Repository', `https://github.com/${ownerRepo}`);
|
|
1529
|
+
}
|
|
1530
|
+
}
|
|
1524
1531
|
// install.url is the most direct link for the user
|
|
1525
1532
|
add('Install page', item.install.url);
|
|
1526
1533
|
// Metadata links — priority order
|
|
@@ -1,19 +1,16 @@
|
|
|
1
1
|
import fs from 'node:fs/promises';
|
|
2
2
|
import { spawn } from 'node:child_process';
|
|
3
3
|
import { createInterface, moveCursor, clearScreenDown } from 'node:readline';
|
|
4
|
-
import { loadQuarantine, loadWhitelist } from '../../../catalog/repository.js';
|
|
5
|
-
import { getStaleRegistries, loadSyncState } from '../../../catalog/sync-state.js';
|
|
6
4
|
import { getPackagePath } from '../../../lib/paths.js';
|
|
7
5
|
import { colors } from '../formatters/colors.js';
|
|
8
6
|
import { isSetUp, loadCatalogItems } from '../../../api/index.js';
|
|
9
7
|
export async function renderHomeScreen() {
|
|
10
8
|
const termCols = process.stdout.columns ?? 80;
|
|
11
9
|
const useCompact = termCols < 82;
|
|
12
|
-
const [logo, pkg, catalogStats
|
|
10
|
+
const [logo, pkg, catalogStats] = await Promise.all([
|
|
13
11
|
readLogo(useCompact),
|
|
14
12
|
readPackageMeta(),
|
|
15
13
|
readCatalogStats(),
|
|
16
|
-
readRuntimeStats()
|
|
17
14
|
]);
|
|
18
15
|
const lines = [];
|
|
19
16
|
const version = pkg.version ?? '0.0.0';
|
|
@@ -29,7 +26,6 @@ export async function renderHomeScreen() {
|
|
|
29
26
|
lines.push(colorIfTty('Catalog', colors.bold));
|
|
30
27
|
lines.push(colorIfTty(` items=${catalogStats.items} skill=${catalogStats.skill} mcp=${catalogStats.mcp} claude-plugin=${catalogStats.claudePlugin} claude-connector=${catalogStats.claudeConnector}`, colors.dim));
|
|
31
28
|
lines.push(colorIfTty(` copilot-extension=${catalogStats.copilotExtension} cursor-extension=${catalogStats.cursorExtension} gemini-extension=${catalogStats.geminiExtension}`, colors.dim));
|
|
32
|
-
lines.push(colorIfTty(` stale-registries=${runtimeStats.staleRegistries} whitelist=${runtimeStats.whitelist} quarantined=${runtimeStats.quarantined}`, colors.dim));
|
|
33
29
|
lines.push('');
|
|
34
30
|
lines.push(colorIfTty('Quick actions', colors.bold));
|
|
35
31
|
for (const cmd of [
|
|
@@ -113,14 +109,6 @@ async function readCatalogStats() {
|
|
|
113
109
|
});
|
|
114
110
|
return { items: items.length, skill, mcp, claudePlugin, claudeConnector, copilotExtension, cursorExtension, geminiExtension };
|
|
115
111
|
}
|
|
116
|
-
async function readRuntimeStats() {
|
|
117
|
-
const [syncState, whitelist, quarantine] = await Promise.all([loadSyncState(), loadWhitelist(), loadQuarantine()]);
|
|
118
|
-
return {
|
|
119
|
-
staleRegistries: getStaleRegistries(syncState).length,
|
|
120
|
-
whitelist: whitelist.size,
|
|
121
|
-
quarantined: quarantine.length
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
112
|
function colorIfTty(value, apply) {
|
|
125
113
|
if (!process.stdout.isTTY || process.env.NO_COLOR === '1') {
|
|
126
114
|
return value;
|
|
@@ -585,6 +585,12 @@ function buildItemLinks(item) {
|
|
|
585
585
|
add('npm', `https://www.npmjs.com/package/${encodeURIComponent(pkg)}`);
|
|
586
586
|
}
|
|
587
587
|
}
|
|
588
|
+
if (item.kind === 'mcp' && item.id.startsWith('mcp:io.github.')) {
|
|
589
|
+
const ownerRepo = item.id.slice('mcp:io.github.'.length);
|
|
590
|
+
if (ownerRepo.includes('/')) {
|
|
591
|
+
add('Repository', `https://github.com/${ownerRepo}`);
|
|
592
|
+
}
|
|
593
|
+
}
|
|
588
594
|
add('Install page', item.install.url);
|
|
589
595
|
add('Repository', meta.repositoryUrl);
|
|
590
596
|
add('Repository', meta.githubUrl);
|
package/package.json
CHANGED