agent-discover 1.0.28 → 1.0.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.
- package/agent-desk-plugin.json +1 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +28 -1
- package/dist/context.js.map +1 -1
- package/dist/domain/marketplace.d.ts +1 -0
- package/dist/domain/marketplace.d.ts.map +1 -1
- package/dist/domain/marketplace.js +114 -25
- package/dist/domain/marketplace.js.map +1 -1
- package/package.json +1 -1
package/agent-desk-plugin.json
CHANGED
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAOA,OAAO,EAAY,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAOA,OAAO,EAAY,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAChB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,UAAU,CAqE/D"}
|
package/dist/context.js
CHANGED
|
@@ -30,7 +30,34 @@ export function createContext(dbOptions) {
|
|
|
30
30
|
const server = registry.getByName(name);
|
|
31
31
|
return server ? server.id : null;
|
|
32
32
|
});
|
|
33
|
-
|
|
33
|
+
// Hydrate the in-process proxy from servers marked active in the DB.
|
|
34
|
+
// Activation lives in McpProxy.activeServers (in-memory) but the DB-backed
|
|
35
|
+
// active flag is the cross-process source of truth, so each new instance
|
|
36
|
+
// (e.g. a fresh stdio child spawned by an MCP client) re-establishes its
|
|
37
|
+
// own proxy connections to the same set of child servers.
|
|
38
|
+
void (async () => {
|
|
39
|
+
const activeRows = db.queryAll('SELECT name FROM servers WHERE active = 1 AND installed = 1');
|
|
40
|
+
for (const row of activeRows) {
|
|
41
|
+
const server = registry.getByName(row.name);
|
|
42
|
+
if (!server)
|
|
43
|
+
continue;
|
|
44
|
+
try {
|
|
45
|
+
await proxy.activate({
|
|
46
|
+
name: server.name,
|
|
47
|
+
command: server.command ?? undefined,
|
|
48
|
+
args: server.args,
|
|
49
|
+
env: server.env,
|
|
50
|
+
transport: server.transport,
|
|
51
|
+
url: server.homepage ?? undefined,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
process.stderr.write(`[agent-discover] failed to hydrate active server "${server.name}": ${err instanceof Error ? err.message : String(err)}\n`);
|
|
56
|
+
// Clear the stale active flag so we don't retry forever
|
|
57
|
+
registry.setActive(server.name, false);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
})();
|
|
34
61
|
return {
|
|
35
62
|
db,
|
|
36
63
|
events,
|
package/dist/context.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,uCAAuC;AACvC,EAAE;AACF,sEAAsE;AACtE,sEAAsE;AACtE,gFAAgF;AAEhF,OAAO,EAAE,QAAQ,EAA2B,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAerD,MAAM,UAAU,aAAa,CAAC,SAAqB;IACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC9B,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAE5C,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,mBAAmB,CAAC,CAAC,IAAY,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,GAAG,CAAC
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,uCAAuC;AACvC,EAAE;AACF,sEAAsE;AACtE,sEAAsE;AACtE,gFAAgF;AAEhF,OAAO,EAAE,QAAQ,EAA2B,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAerD,MAAM,UAAU,aAAa,CAAC,SAAqB;IACjD,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC9B,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,MAAM,QAAQ,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC7B,MAAM,WAAW,GAAG,IAAI,iBAAiB,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAE5C,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACjC,KAAK,CAAC,mBAAmB,CAAC,CAAC,IAAY,EAAE,EAAE;QACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,qEAAqE;IACrE,2EAA2E;IAC3E,yEAAyE;IACzE,yEAAyE;IACzE,0DAA0D;IAC1D,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAC5B,6DAA6D,CAC9D,CAAC;QACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,IAAI,CAAC;gBACH,MAAM,KAAK,CAAC,QAAQ,CAAC;oBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS;oBACpC,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,GAAG,EAAE,MAAM,CAAC,GAAG;oBACf,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,GAAG,EAAE,MAAM,CAAC,QAAQ,IAAI,SAAS;iBAClC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qDAAqD,MAAM,CAAC,IAAI,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC3H,CAAC;gBACF,wDAAwD;gBACxD,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,EAAE;QACF,MAAM;QACN,QAAQ;QACR,KAAK;QACL,WAAW;QACX,SAAS;QACT,OAAO;QACP,MAAM;QACN,OAAO;QACP,KAAK;YACH,IAAI,MAAM;gBAAE,OAAO;YACnB,MAAM,GAAG,IAAI,CAAC;YACd,KAAK,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACtC,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { MarketplaceResult } from '../types.js';
|
|
2
2
|
export declare class MarketplaceClient {
|
|
3
3
|
browse(query?: string, limit?: number, cursor?: string): Promise<MarketplaceResult>;
|
|
4
|
+
private searchNpm;
|
|
4
5
|
getServer(name: string): Promise<Record<string, unknown> | null>;
|
|
5
6
|
private parseResponse;
|
|
6
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/domain/marketplace.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/domain/marketplace.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAkBrD,qBAAa,iBAAiB;IACtB,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,SAAK,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAiDvE,SAAS;IA2CjB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAuBtE,OAAO,CAAC,aAAa;CAoDtB"}
|
|
@@ -5,7 +5,20 @@
|
|
|
5
5
|
// registry.modelcontextprotocol.io. Provides search and browse capabilities.
|
|
6
6
|
// =============================================================================
|
|
7
7
|
const REGISTRY_API = 'https://registry.modelcontextprotocol.io';
|
|
8
|
+
const NPM_SEARCH_API = 'https://registry.npmjs.org/-/v1/search';
|
|
8
9
|
const REQUEST_TIMEOUT_MS = 15_000;
|
|
10
|
+
// Compare two semver-ish strings; returns >0 if a is newer
|
|
11
|
+
function compareVersions(a, b) {
|
|
12
|
+
const pa = a.split(/[.\-+]/).map((x) => parseInt(x, 10) || 0);
|
|
13
|
+
const pb = b.split(/[.\-+]/).map((x) => parseInt(x, 10) || 0);
|
|
14
|
+
for (let i = 0; i < Math.max(pa.length, pb.length); i++) {
|
|
15
|
+
const da = pa[i] ?? 0;
|
|
16
|
+
const db = pb[i] ?? 0;
|
|
17
|
+
if (da !== db)
|
|
18
|
+
return da - db;
|
|
19
|
+
}
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
9
22
|
export class MarketplaceClient {
|
|
10
23
|
async browse(query, limit = 20, cursor) {
|
|
11
24
|
const params = new URLSearchParams();
|
|
@@ -17,13 +30,14 @@ export class MarketplaceClient {
|
|
|
17
30
|
const url = `${REGISTRY_API}/v0/servers?${params}`;
|
|
18
31
|
const controller = new AbortController();
|
|
19
32
|
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
|
|
33
|
+
let registryResult;
|
|
20
34
|
try {
|
|
21
35
|
const res = await fetch(url, { signal: controller.signal });
|
|
22
36
|
if (!res.ok) {
|
|
23
37
|
throw new Error(`Registry API error: ${res.status} ${res.statusText}`);
|
|
24
38
|
}
|
|
25
39
|
const data = await res.json();
|
|
26
|
-
|
|
40
|
+
registryResult = this.parseResponse(data);
|
|
27
41
|
}
|
|
28
42
|
catch (err) {
|
|
29
43
|
if (err instanceof Error && err.name === 'AbortError') {
|
|
@@ -34,6 +48,69 @@ export class MarketplaceClient {
|
|
|
34
48
|
finally {
|
|
35
49
|
clearTimeout(timeoutId);
|
|
36
50
|
}
|
|
51
|
+
// Augment with npm search when a query is provided. The official MCP
|
|
52
|
+
// registry is sparsely populated; many popular MCPs (e.g. @playwright/mcp,
|
|
53
|
+
// @modelcontextprotocol/server-*) live only on npm.
|
|
54
|
+
if (query && !cursor) {
|
|
55
|
+
try {
|
|
56
|
+
const npmResults = await this.searchNpm(query, limit);
|
|
57
|
+
const seen = new Set(registryResult.servers.map((s) => s.name));
|
|
58
|
+
for (const npm of npmResults) {
|
|
59
|
+
if (!seen.has(npm.name)) {
|
|
60
|
+
registryResult.servers.push(npm);
|
|
61
|
+
seen.add(npm.name);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// npm fallback is best-effort; never block the main response
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return registryResult;
|
|
70
|
+
}
|
|
71
|
+
async searchNpm(query, limit) {
|
|
72
|
+
const params = new URLSearchParams();
|
|
73
|
+
// Bias towards MCP-tagged packages without excluding bare matches.
|
|
74
|
+
params.set('text', `${query} keywords:mcp`);
|
|
75
|
+
params.set('size', String(Math.min(limit, 50)));
|
|
76
|
+
const controller = new AbortController();
|
|
77
|
+
const timeoutId = setTimeout(() => controller.abort(), REQUEST_TIMEOUT_MS);
|
|
78
|
+
try {
|
|
79
|
+
const res = await fetch(`${NPM_SEARCH_API}?${params}`, { signal: controller.signal });
|
|
80
|
+
if (!res.ok)
|
|
81
|
+
return [];
|
|
82
|
+
const data = (await res.json());
|
|
83
|
+
const objects = Array.isArray(data.objects) ? data.objects : [];
|
|
84
|
+
return objects.map((entry) => {
|
|
85
|
+
const pkg = (entry.package ?? {});
|
|
86
|
+
const name = String(pkg.name ?? '');
|
|
87
|
+
const version = String(pkg.version ?? '');
|
|
88
|
+
const description = String(pkg.description ?? '');
|
|
89
|
+
const links = (pkg.links ?? {});
|
|
90
|
+
return {
|
|
91
|
+
name,
|
|
92
|
+
description,
|
|
93
|
+
version,
|
|
94
|
+
repository: links.repository ?? null,
|
|
95
|
+
packages: [
|
|
96
|
+
{
|
|
97
|
+
registry_name: 'npm',
|
|
98
|
+
name,
|
|
99
|
+
version,
|
|
100
|
+
runtime: 'node',
|
|
101
|
+
license: null,
|
|
102
|
+
url: null,
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return [];
|
|
110
|
+
}
|
|
111
|
+
finally {
|
|
112
|
+
clearTimeout(timeoutId);
|
|
113
|
+
}
|
|
37
114
|
}
|
|
38
115
|
async getServer(name) {
|
|
39
116
|
const controller = new AbortController();
|
|
@@ -67,31 +144,43 @@ export class MarketplaceClient {
|
|
|
67
144
|
const rawServers = Array.isArray(obj.servers) ? obj.servers : [];
|
|
68
145
|
// API returns { servers: [{ server: {...}, _meta: {...} }], metadata: { nextCursor } }
|
|
69
146
|
const metadata = (obj.metadata ?? {});
|
|
147
|
+
const mapped = rawServers.map((entry) => {
|
|
148
|
+
const wrapper = entry;
|
|
149
|
+
// Each entry wraps the actual server data under a "server" key
|
|
150
|
+
const server = (wrapper.server ?? wrapper);
|
|
151
|
+
const repo = server.repository;
|
|
152
|
+
const remotes = Array.isArray(server.remotes) ? server.remotes : [];
|
|
153
|
+
return {
|
|
154
|
+
name: String(server.name ?? ''),
|
|
155
|
+
description: String(server.description ?? ''),
|
|
156
|
+
version: String(server.version ?? ''),
|
|
157
|
+
repository: repo?.url ? String(repo.url) : null,
|
|
158
|
+
packages: remotes.map((r) => {
|
|
159
|
+
const remote = r;
|
|
160
|
+
return {
|
|
161
|
+
registry_name: String(remote.type ?? ''),
|
|
162
|
+
name: String(server.name ?? ''),
|
|
163
|
+
version: String(server.version ?? ''),
|
|
164
|
+
runtime: String(remote.type ?? ''),
|
|
165
|
+
license: null,
|
|
166
|
+
url: remote.url ? String(remote.url) : null,
|
|
167
|
+
};
|
|
168
|
+
}),
|
|
169
|
+
};
|
|
170
|
+
});
|
|
171
|
+
// Dedupe by name; the registry returns one row per version. Keep the
|
|
172
|
+
// entry with the highest version so the UI shows each package once.
|
|
173
|
+
const dedup = new Map();
|
|
174
|
+
for (const s of mapped) {
|
|
175
|
+
if (!s.name)
|
|
176
|
+
continue;
|
|
177
|
+
const existing = dedup.get(s.name);
|
|
178
|
+
if (!existing || compareVersions(s.version, existing.version) > 0) {
|
|
179
|
+
dedup.set(s.name, s);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
70
182
|
return {
|
|
71
|
-
servers:
|
|
72
|
-
const wrapper = entry;
|
|
73
|
-
// Each entry wraps the actual server data under a "server" key
|
|
74
|
-
const server = (wrapper.server ?? wrapper);
|
|
75
|
-
const repo = server.repository;
|
|
76
|
-
const remotes = Array.isArray(server.remotes) ? server.remotes : [];
|
|
77
|
-
return {
|
|
78
|
-
name: String(server.name ?? ''),
|
|
79
|
-
description: String(server.description ?? ''),
|
|
80
|
-
version: String(server.version ?? ''),
|
|
81
|
-
repository: repo?.url ? String(repo.url) : null,
|
|
82
|
-
packages: remotes.map((r) => {
|
|
83
|
-
const remote = r;
|
|
84
|
-
return {
|
|
85
|
-
registry_name: String(remote.type ?? ''),
|
|
86
|
-
name: String(server.name ?? ''),
|
|
87
|
-
version: String(server.version ?? ''),
|
|
88
|
-
runtime: String(remote.type ?? ''),
|
|
89
|
-
license: null,
|
|
90
|
-
url: remote.url ? String(remote.url) : null,
|
|
91
|
-
};
|
|
92
|
-
}),
|
|
93
|
-
};
|
|
94
|
-
}),
|
|
183
|
+
servers: [...dedup.values()],
|
|
95
184
|
next_cursor: metadata.nextCursor ? String(metadata.nextCursor) : null,
|
|
96
185
|
};
|
|
97
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/domain/marketplace.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,sCAAsC;AACtC,EAAE;AACF,4DAA4D;AAC5D,6EAA6E;AAC7E,gFAAgF;AAIhF,MAAM,YAAY,GAAG,0CAA0C,CAAC;AAChE,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,OAAO,iBAAiB;IAC5B,KAAK,CAAC,MAAM,CAAC,KAAc,EAAE,KAAK,GAAG,EAAE,EAAE,MAAe;QACtD,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,IAAI,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,IAAI,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEzC,MAAM,GAAG,GAAG,GAAG,YAAY,eAAe,MAAM,EAAE,CAAC;QAEnD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAE3E,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC9B,
|
|
1
|
+
{"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/domain/marketplace.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED