@1mcp/agent 0.25.5 → 0.26.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/build/auth/sdkOAuthClientProvider.d.ts.map +1 -1
- package/build/auth/sdkOAuthClientProvider.js +3 -5
- package/build/auth/sdkOAuthClientProvider.js.map +1 -1
- package/build/auth/sessionTypes.d.ts +10 -0
- package/build/auth/sessionTypes.d.ts.map +1 -1
- package/build/auth/storage/fileStorageService.d.ts +25 -1
- package/build/auth/storage/fileStorageService.d.ts.map +1 -1
- package/build/auth/storage/fileStorageService.js +155 -27
- package/build/auth/storage/fileStorageService.js.map +1 -1
- package/build/auth/storage/oauthStorageService.js +1 -1
- package/build/auth/storage/oauthStorageService.js.map +1 -1
- package/build/commands/mcp/index.d.ts.map +1 -1
- package/build/commands/mcp/index.js +3 -2
- package/build/commands/mcp/index.js.map +1 -1
- package/build/commands/registry/index.d.ts +6 -0
- package/build/commands/registry/index.d.ts.map +1 -0
- package/build/commands/registry/index.js +67 -0
- package/build/commands/registry/index.js.map +1 -0
- package/build/commands/registry/options.d.ts +47 -0
- package/build/commands/registry/options.d.ts.map +1 -0
- package/build/commands/registry/options.js +39 -0
- package/build/commands/registry/options.js.map +1 -0
- package/build/commands/registry/search.d.ts +21 -0
- package/build/commands/registry/search.d.ts.map +1 -0
- package/build/commands/registry/search.js +186 -0
- package/build/commands/registry/search.js.map +1 -0
- package/build/commands/registry/show.d.ts +25 -0
- package/build/commands/registry/show.d.ts.map +1 -0
- package/build/commands/registry/show.js +87 -0
- package/build/commands/registry/show.js.map +1 -0
- package/build/commands/registry/status.d.ts +16 -0
- package/build/commands/registry/status.d.ts.map +1 -0
- package/build/commands/registry/status.js +86 -0
- package/build/commands/registry/status.js.map +1 -0
- package/build/commands/registry/versions.d.ts +21 -0
- package/build/commands/registry/versions.d.ts.map +1 -0
- package/build/commands/registry/versions.js +76 -0
- package/build/commands/registry/versions.js.map +1 -0
- package/build/constants/auth.d.ts +27 -0
- package/build/constants/auth.d.ts.map +1 -1
- package/build/constants/auth.js +31 -0
- package/build/constants/auth.js.map +1 -1
- package/build/constants/mcp.d.ts +1 -1
- package/build/constants/mcp.js +1 -1
- package/build/core/tools/handlers/registryHandler.d.ts +11 -0
- package/build/core/tools/handlers/registryHandler.d.ts.map +1 -0
- package/build/core/tools/handlers/registryHandler.js +49 -0
- package/build/core/tools/handlers/registryHandler.js.map +1 -0
- package/build/core/tools/handlers/searchHandler.d.ts +19 -0
- package/build/core/tools/handlers/searchHandler.d.ts.map +1 -0
- package/build/core/tools/handlers/searchHandler.js +104 -0
- package/build/core/tools/handlers/searchHandler.js.map +1 -0
- package/build/core/tools/handlers/showHandler.d.ts +10 -0
- package/build/core/tools/handlers/showHandler.d.ts.map +1 -0
- package/build/core/tools/handlers/showHandler.js +44 -0
- package/build/core/tools/handlers/showHandler.js.map +1 -0
- package/build/core/tools/handlers/versionsHandler.d.ts +10 -0
- package/build/core/tools/handlers/versionsHandler.d.ts.map +1 -0
- package/build/core/tools/handlers/versionsHandler.js +44 -0
- package/build/core/tools/handlers/versionsHandler.js.map +1 -0
- package/build/domains/preset/manager/presetManager.d.ts.map +1 -1
- package/build/domains/preset/manager/presetManager.js +2 -2
- package/build/domains/preset/manager/presetManager.js.map +1 -1
- package/build/domains/registry/cacheManager.d.ts +61 -0
- package/build/domains/registry/cacheManager.d.ts.map +1 -0
- package/build/domains/registry/cacheManager.js +158 -0
- package/build/domains/registry/cacheManager.js.map +1 -0
- package/build/domains/registry/formatters/commonFormatters.d.ts +34 -0
- package/build/domains/registry/formatters/commonFormatters.d.ts.map +1 -0
- package/build/domains/registry/formatters/commonFormatters.js +154 -0
- package/build/domains/registry/formatters/commonFormatters.js.map +1 -0
- package/build/domains/registry/formatters/serverDetailFormatter.d.ts +6 -0
- package/build/domains/registry/formatters/serverDetailFormatter.d.ts.map +1 -0
- package/build/domains/registry/formatters/serverDetailFormatter.js +310 -0
- package/build/domains/registry/formatters/serverDetailFormatter.js.map +1 -0
- package/build/domains/registry/formatters/versionsFormatter.d.ts +6 -0
- package/build/domains/registry/formatters/versionsFormatter.d.ts.map +1 -0
- package/build/domains/registry/formatters/versionsFormatter.js +84 -0
- package/build/domains/registry/formatters/versionsFormatter.js.map +1 -0
- package/build/domains/registry/mcpRegistryClient.d.ts +101 -0
- package/build/domains/registry/mcpRegistryClient.d.ts.map +1 -0
- package/build/domains/registry/mcpRegistryClient.js +464 -0
- package/build/domains/registry/mcpRegistryClient.js.map +1 -0
- package/build/domains/registry/mcpToolSchemas.d.ts +63 -0
- package/build/domains/registry/mcpToolSchemas.d.ts.map +1 -0
- package/build/domains/registry/mcpToolSchemas.js +52 -0
- package/build/domains/registry/mcpToolSchemas.js.map +1 -0
- package/build/domains/registry/searchFiltering.d.ts +48 -0
- package/build/domains/registry/searchFiltering.d.ts.map +1 -0
- package/build/domains/registry/searchFiltering.js +201 -0
- package/build/domains/registry/searchFiltering.js.map +1 -0
- package/build/domains/registry/types.d.ts +204 -0
- package/build/domains/registry/types.d.ts.map +1 -0
- package/build/domains/registry/types.js +5 -0
- package/build/domains/registry/types.js.map +1 -0
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/build/transport/http/restorableStreamableTransport.d.ts +52 -0
- package/build/transport/http/restorableStreamableTransport.d.ts.map +1 -0
- package/build/transport/http/restorableStreamableTransport.js +68 -0
- package/build/transport/http/restorableStreamableTransport.js.map +1 -0
- package/build/transport/http/routes/streamableHttpRoutes.d.ts +2 -1
- package/build/transport/http/routes/streamableHttpRoutes.d.ts.map +1 -1
- package/build/transport/http/routes/streamableHttpRoutes.js +113 -30
- package/build/transport/http/routes/streamableHttpRoutes.js.map +1 -1
- package/build/transport/http/server.d.ts +2 -0
- package/build/transport/http/server.d.ts.map +1 -1
- package/build/transport/http/server.js +10 -2
- package/build/transport/http/server.js.map +1 -1
- package/build/transport/http/storage/streamableSessionRepository.d.ts +57 -0
- package/build/transport/http/storage/streamableSessionRepository.d.ts.map +1 -0
- package/build/transport/http/storage/streamableSessionRepository.js +156 -0
- package/build/transport/http/storage/streamableSessionRepository.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { CacheOptions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory cache manager with TTL support for MCP Registry responses
|
|
4
|
+
*/
|
|
5
|
+
export declare class CacheManager {
|
|
6
|
+
private cache;
|
|
7
|
+
private cleanupTimer?;
|
|
8
|
+
private options;
|
|
9
|
+
constructor(options?: Partial<CacheOptions>);
|
|
10
|
+
/**
|
|
11
|
+
* Get a cached value by key
|
|
12
|
+
*/
|
|
13
|
+
get<T>(key: string): Promise<T | null>;
|
|
14
|
+
/**
|
|
15
|
+
* Set a value in the cache with optional TTL
|
|
16
|
+
*/
|
|
17
|
+
set<T>(key: string, value: T, ttlSeconds?: number): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Invalidate cache entries matching a pattern
|
|
20
|
+
*/
|
|
21
|
+
invalidate(pattern: string): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Clear all cache entries
|
|
24
|
+
*/
|
|
25
|
+
clear(): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Get cache statistics
|
|
28
|
+
*/
|
|
29
|
+
getStats(): {
|
|
30
|
+
totalEntries: number;
|
|
31
|
+
validEntries: number;
|
|
32
|
+
expiredEntries: number;
|
|
33
|
+
maxSize: number;
|
|
34
|
+
hitRatio: number;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Generate a cache key for registry requests
|
|
38
|
+
*/
|
|
39
|
+
generateKey(endpoint: string, params?: Record<string, any>): string;
|
|
40
|
+
/**
|
|
41
|
+
* Start the cleanup timer
|
|
42
|
+
*/
|
|
43
|
+
private startCleanupTimer;
|
|
44
|
+
/**
|
|
45
|
+
* Stop the cleanup timer
|
|
46
|
+
*/
|
|
47
|
+
destroy(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Clean up expired entries
|
|
50
|
+
*/
|
|
51
|
+
private cleanup;
|
|
52
|
+
/**
|
|
53
|
+
* Evict oldest entries when cache is full
|
|
54
|
+
*/
|
|
55
|
+
private evictOldest;
|
|
56
|
+
/**
|
|
57
|
+
* Calculate hit ratio (placeholder for future hit/miss tracking)
|
|
58
|
+
*/
|
|
59
|
+
private getHitRatio;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=cacheManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cacheManager.d.ts","sourceRoot":"","sources":["../../../src/domains/registry/cacheManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,YAAY,EAAE,MAAM,YAAY,CAAC;AAEtD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAA2C;IACxD,OAAO,CAAC,YAAY,CAAC,CAAiC;IACtD,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM;IAU/C;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAc5C;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBvE;;OAEG;IACG,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAchD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACH,QAAQ;;;;;;;IAsBR;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,MAAM;IASvE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,IAAI,IAAI;IAOf;;OAEG;IACH,OAAO,CAAC,OAAO;IAiBf;;OAEG;IACH,OAAO,CAAC,WAAW;IAanB;;OAEG;IACH,OAAO,CAAC,WAAW;CAIpB"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import logger from '../../logger/logger.js';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory cache manager with TTL support for MCP Registry responses
|
|
4
|
+
*/
|
|
5
|
+
export class CacheManager {
|
|
6
|
+
cache = new Map();
|
|
7
|
+
cleanupTimer;
|
|
8
|
+
options;
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
this.options = {
|
|
11
|
+
defaultTtl: options.defaultTtl || 300, // 5 minutes default
|
|
12
|
+
maxSize: options.maxSize || 1000,
|
|
13
|
+
cleanupInterval: options.cleanupInterval || 60000, // 1 minute
|
|
14
|
+
};
|
|
15
|
+
this.startCleanupTimer();
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Get a cached value by key
|
|
19
|
+
*/
|
|
20
|
+
async get(key) {
|
|
21
|
+
const entry = this.cache.get(key);
|
|
22
|
+
if (!entry) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
if (Date.now() > entry.expiresAt) {
|
|
26
|
+
this.cache.delete(key);
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
return entry.value;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Set a value in the cache with optional TTL
|
|
33
|
+
*/
|
|
34
|
+
async set(key, value, ttlSeconds) {
|
|
35
|
+
const ttl = ttlSeconds || this.options.defaultTtl;
|
|
36
|
+
const now = Date.now();
|
|
37
|
+
const entry = {
|
|
38
|
+
value,
|
|
39
|
+
expiresAt: now + ttl * 1000,
|
|
40
|
+
createdAt: now,
|
|
41
|
+
};
|
|
42
|
+
// Remove oldest entries if cache is full
|
|
43
|
+
if (this.cache.size >= this.options.maxSize) {
|
|
44
|
+
this.evictOldest();
|
|
45
|
+
}
|
|
46
|
+
this.cache.set(key, entry);
|
|
47
|
+
logger.debug(`Cache set: ${key} (TTL: ${ttl}s)`);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Invalidate cache entries matching a pattern
|
|
51
|
+
*/
|
|
52
|
+
async invalidate(pattern) {
|
|
53
|
+
const regex = new RegExp(pattern);
|
|
54
|
+
const keysToDelete = [];
|
|
55
|
+
for (const key of this.cache.keys()) {
|
|
56
|
+
if (regex.test(key)) {
|
|
57
|
+
keysToDelete.push(key);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
keysToDelete.forEach((key) => this.cache.delete(key));
|
|
61
|
+
logger.debug(`Cache invalidated: ${keysToDelete.length} entries matching "${pattern}"`);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Clear all cache entries
|
|
65
|
+
*/
|
|
66
|
+
async clear() {
|
|
67
|
+
const size = this.cache.size;
|
|
68
|
+
this.cache.clear();
|
|
69
|
+
logger.debug(`Cache cleared: ${size} entries removed`);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get cache statistics
|
|
73
|
+
*/
|
|
74
|
+
getStats() {
|
|
75
|
+
const now = Date.now();
|
|
76
|
+
let expiredCount = 0;
|
|
77
|
+
let validCount = 0;
|
|
78
|
+
for (const entry of this.cache.values()) {
|
|
79
|
+
if (now > entry.expiresAt) {
|
|
80
|
+
expiredCount++;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
validCount++;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
totalEntries: this.cache.size,
|
|
88
|
+
validEntries: validCount,
|
|
89
|
+
expiredEntries: expiredCount,
|
|
90
|
+
maxSize: this.options.maxSize,
|
|
91
|
+
hitRatio: this.getHitRatio(),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Generate a cache key for registry requests
|
|
96
|
+
*/
|
|
97
|
+
generateKey(endpoint, params = {}) {
|
|
98
|
+
const sortedParams = Object.keys(params)
|
|
99
|
+
.sort()
|
|
100
|
+
.map((key) => `${key}=${params[key]}`)
|
|
101
|
+
.join('&');
|
|
102
|
+
return `${endpoint}${sortedParams ? `?${sortedParams}` : ''}`;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Start the cleanup timer
|
|
106
|
+
*/
|
|
107
|
+
startCleanupTimer() {
|
|
108
|
+
this.cleanupTimer = setInterval(() => {
|
|
109
|
+
this.cleanup();
|
|
110
|
+
}, this.options.cleanupInterval);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Stop the cleanup timer
|
|
114
|
+
*/
|
|
115
|
+
destroy() {
|
|
116
|
+
if (this.cleanupTimer) {
|
|
117
|
+
clearInterval(this.cleanupTimer);
|
|
118
|
+
this.cleanupTimer = undefined;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Clean up expired entries
|
|
123
|
+
*/
|
|
124
|
+
cleanup() {
|
|
125
|
+
const now = Date.now();
|
|
126
|
+
const keysToDelete = [];
|
|
127
|
+
for (const [key, entry] of this.cache.entries()) {
|
|
128
|
+
if (now > entry.expiresAt) {
|
|
129
|
+
keysToDelete.push(key);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
keysToDelete.forEach((key) => this.cache.delete(key));
|
|
133
|
+
if (keysToDelete.length > 0) {
|
|
134
|
+
logger.debug(`Cache cleanup: ${keysToDelete.length} expired entries removed`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Evict oldest entries when cache is full
|
|
139
|
+
*/
|
|
140
|
+
evictOldest() {
|
|
141
|
+
const entries = Array.from(this.cache.entries());
|
|
142
|
+
entries.sort((a, b) => a[1].createdAt - b[1].createdAt);
|
|
143
|
+
const toRemove = Math.ceil(this.options.maxSize * 0.1); // Remove 10% of entries
|
|
144
|
+
for (let i = 0; i < toRemove && entries.length > 0; i++) {
|
|
145
|
+
const [key] = entries[i];
|
|
146
|
+
this.cache.delete(key);
|
|
147
|
+
}
|
|
148
|
+
logger.debug(`Cache eviction: ${toRemove} oldest entries removed`);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Calculate hit ratio (placeholder for future hit/miss tracking)
|
|
152
|
+
*/
|
|
153
|
+
getHitRatio() {
|
|
154
|
+
// TODO: Implement hit/miss tracking for more accurate statistics
|
|
155
|
+
return 0;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=cacheManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../../src/domains/registry/cacheManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ServerPackage, Transport } from '../../../domains/registry/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Truncate string to specified length with ellipsis
|
|
4
|
+
*/
|
|
5
|
+
export declare function truncateString(str: string | null | undefined, maxLength: number): string;
|
|
6
|
+
/**
|
|
7
|
+
* Format transport value to handle objects and undefined values
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatTransport(transport?: Transport | string): string;
|
|
10
|
+
/**
|
|
11
|
+
* Format status with colors
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatStatus(status: string | null | undefined): string;
|
|
14
|
+
/**
|
|
15
|
+
* Format registry types without colors (for table display)
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatRegistryTypesPlain(packages?: ServerPackage[] | null | undefined): string;
|
|
18
|
+
/**
|
|
19
|
+
* Format transport types without colors (for table display)
|
|
20
|
+
*/
|
|
21
|
+
export declare function formatTransportTypesPlain(packages?: ServerPackage[] | null | undefined): string;
|
|
22
|
+
/**
|
|
23
|
+
* Format ISO date string to readable format
|
|
24
|
+
*/
|
|
25
|
+
export declare function formatDate(isoString: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Format date as relative time (e.g., "2 days ago")
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatRelativeDate(isoString: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Format ISO timestamp to readable format with time
|
|
32
|
+
*/
|
|
33
|
+
export declare function formatTimestamp(isoString: string): string;
|
|
34
|
+
//# sourceMappingURL=commonFormatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commonFormatters.d.ts","sourceRoot":"","sources":["../../../../src/domains/registry/formatters/commonFormatters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAI1E;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAIxF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAQtE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CActE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,GAAE,aAAa,EAAE,GAAG,IAAI,GAAG,SAAc,GAAG,MAAM,CAYlG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,GAAE,aAAa,EAAE,GAAG,IAAI,GAAG,SAAc,GAAG,MAAM,CASnG;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkBpD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA0B5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAmBzD"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
/**
|
|
3
|
+
* Truncate string to specified length with ellipsis
|
|
4
|
+
*/
|
|
5
|
+
export function truncateString(str, maxLength) {
|
|
6
|
+
if (!str || typeof str !== 'string')
|
|
7
|
+
return '';
|
|
8
|
+
if (str.length <= maxLength)
|
|
9
|
+
return str;
|
|
10
|
+
return str.substring(0, maxLength - 3) + '...';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Format transport value to handle objects and undefined values
|
|
14
|
+
*/
|
|
15
|
+
export function formatTransport(transport) {
|
|
16
|
+
if (!transport)
|
|
17
|
+
return '';
|
|
18
|
+
if (typeof transport === 'string')
|
|
19
|
+
return transport;
|
|
20
|
+
if (typeof transport === 'object') {
|
|
21
|
+
// Handle case where transport is an object
|
|
22
|
+
return transport.type || String(transport);
|
|
23
|
+
}
|
|
24
|
+
return String(transport);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Format status with colors
|
|
28
|
+
*/
|
|
29
|
+
export function formatStatus(status) {
|
|
30
|
+
if (status === '')
|
|
31
|
+
return chalk.gray('● ');
|
|
32
|
+
if (!status)
|
|
33
|
+
return chalk.gray('● UNKNOWN');
|
|
34
|
+
switch (status) {
|
|
35
|
+
case 'active':
|
|
36
|
+
return chalk.green('● ACTIVE');
|
|
37
|
+
case 'deprecated':
|
|
38
|
+
return chalk.yellow('● DEPRECATED');
|
|
39
|
+
case 'archived':
|
|
40
|
+
return chalk.red('● ARCHIVED');
|
|
41
|
+
default:
|
|
42
|
+
return chalk.gray(`● ${status.toUpperCase()}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Format registry types without colors (for table display)
|
|
47
|
+
*/
|
|
48
|
+
export function formatRegistryTypesPlain(packages = []) {
|
|
49
|
+
if (!packages)
|
|
50
|
+
return 'unknown';
|
|
51
|
+
const types = packages
|
|
52
|
+
.map((p) => p.registryType)
|
|
53
|
+
.filter((type) => type && type !== 'unknown')
|
|
54
|
+
.filter(Boolean);
|
|
55
|
+
const uniqueTypes = [...new Set(types)];
|
|
56
|
+
if (uniqueTypes.length === 0)
|
|
57
|
+
return 'unknown';
|
|
58
|
+
return uniqueTypes.join(', ');
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Format transport types without colors (for table display)
|
|
62
|
+
*/
|
|
63
|
+
export function formatTransportTypesPlain(packages = []) {
|
|
64
|
+
if (!packages)
|
|
65
|
+
return 'stdio';
|
|
66
|
+
const transports = packages.map((p) => formatTransport(p.transport)).filter(Boolean);
|
|
67
|
+
const uniqueTransports = [...new Set(transports)];
|
|
68
|
+
if (uniqueTransports.length === 0)
|
|
69
|
+
return 'stdio';
|
|
70
|
+
return uniqueTransports.join(', ');
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Format ISO date string to readable format
|
|
74
|
+
*/
|
|
75
|
+
export function formatDate(isoString) {
|
|
76
|
+
if (!isoString || typeof isoString !== 'string') {
|
|
77
|
+
return 'Unknown';
|
|
78
|
+
}
|
|
79
|
+
try {
|
|
80
|
+
const date = new Date(isoString);
|
|
81
|
+
// Check if date is valid
|
|
82
|
+
if (isNaN(date.getTime())) {
|
|
83
|
+
return 'Invalid Date';
|
|
84
|
+
}
|
|
85
|
+
return date.toLocaleDateString('en-US', {
|
|
86
|
+
year: 'numeric',
|
|
87
|
+
month: 'short',
|
|
88
|
+
day: 'numeric',
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return 'Invalid Date';
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Format date as relative time (e.g., "2 days ago")
|
|
97
|
+
*/
|
|
98
|
+
export function formatRelativeDate(isoString) {
|
|
99
|
+
if (!isoString)
|
|
100
|
+
return 'Unknown';
|
|
101
|
+
try {
|
|
102
|
+
const date = new Date(isoString);
|
|
103
|
+
if (isNaN(date.getTime()))
|
|
104
|
+
return 'Invalid Date';
|
|
105
|
+
const now = new Date();
|
|
106
|
+
const diffMs = now.getTime() - date.getTime();
|
|
107
|
+
const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));
|
|
108
|
+
const diffHours = Math.floor(diffMs / (1000 * 60 * 60));
|
|
109
|
+
const diffMinutes = Math.floor(diffMs / (1000 * 60));
|
|
110
|
+
if (diffDays > 7) {
|
|
111
|
+
return formatDate(isoString);
|
|
112
|
+
}
|
|
113
|
+
else if (diffDays > 0) {
|
|
114
|
+
return `${diffDays} day${diffDays > 1 ? 's' : ''} ago`;
|
|
115
|
+
}
|
|
116
|
+
else if (diffHours > 0) {
|
|
117
|
+
return `${diffHours} hour${diffHours > 1 ? 's' : ''} ago`;
|
|
118
|
+
}
|
|
119
|
+
else if (diffMinutes > 0) {
|
|
120
|
+
return `${diffMinutes} minute${diffMinutes > 1 ? 's' : ''} ago`;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
return 'Just now';
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return 'Invalid Date';
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Format ISO timestamp to readable format with time
|
|
132
|
+
*/
|
|
133
|
+
export function formatTimestamp(isoString) {
|
|
134
|
+
if (!isoString)
|
|
135
|
+
return '';
|
|
136
|
+
try {
|
|
137
|
+
const date = new Date(isoString);
|
|
138
|
+
if (isNaN(date.getTime())) {
|
|
139
|
+
return isoString;
|
|
140
|
+
}
|
|
141
|
+
return date.toLocaleString('en-US', {
|
|
142
|
+
year: 'numeric',
|
|
143
|
+
month: 'short',
|
|
144
|
+
day: 'numeric',
|
|
145
|
+
hour: '2-digit',
|
|
146
|
+
minute: '2-digit',
|
|
147
|
+
second: '2-digit',
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return isoString;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=commonFormatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commonFormatters.js","sourceRoot":"","sources":["../../../../src/domains/registry/formatters/commonFormatters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { OutputFormat, RegistryServer } from '../../../domains/registry/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Format a server's details for display
|
|
4
|
+
*/
|
|
5
|
+
export declare function formatServerDetails(server: RegistryServer, format?: OutputFormat): string;
|
|
6
|
+
//# sourceMappingURL=serverDetailFormatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverDetailFormatter.d.ts","sourceRoot":"","sources":["../../../../src/domains/registry/formatters/serverDetailFormatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EACZ,cAAc,EAGf,MAAM,gCAAgC,CAAC;AAOxC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,GAAE,YAAsB,GAAG,MAAM,CAUlG"}
|