@llmindset/hf-mcp 0.1.16
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/LICENSE +21 -0
- package/dist/dataset-detail.d.ts +26 -0
- package/dist/dataset-detail.d.ts.map +1 -0
- package/dist/dataset-detail.js +157 -0
- package/dist/dataset-detail.js.map +1 -0
- package/dist/dataset-search.d.ts +62 -0
- package/dist/dataset-search.d.ts.map +1 -0
- package/dist/dataset-search.js +158 -0
- package/dist/dataset-search.js.map +1 -0
- package/dist/duplicate-space.d.ts +75 -0
- package/dist/duplicate-space.d.ts.map +1 -0
- package/dist/duplicate-space.js +189 -0
- package/dist/duplicate-space.js.map +1 -0
- package/dist/error-messages.d.ts +4 -0
- package/dist/error-messages.d.ts.map +1 -0
- package/dist/error-messages.js +30 -0
- package/dist/error-messages.js.map +1 -0
- package/dist/hf-api-call.d.ts +18 -0
- package/dist/hf-api-call.d.ts.map +1 -0
- package/dist/hf-api-call.js +105 -0
- package/dist/hf-api-call.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/model-detail.d.ts +26 -0
- package/dist/model-detail.d.ts.map +1 -0
- package/dist/model-detail.js +224 -0
- package/dist/model-detail.js.map +1 -0
- package/dist/model-search.d.ts +64 -0
- package/dist/model-search.d.ts.map +1 -0
- package/dist/model-search.js +161 -0
- package/dist/model-search.js.map +1 -0
- package/dist/paper-search.d.ts +58 -0
- package/dist/paper-search.d.ts.map +1 -0
- package/dist/paper-search.js +114 -0
- package/dist/paper-search.js.map +1 -0
- package/dist/paper-summary.d.ts +35 -0
- package/dist/paper-summary.d.ts.map +1 -0
- package/dist/paper-summary.js +187 -0
- package/dist/paper-summary.js.map +1 -0
- package/dist/space-files.d.ts +44 -0
- package/dist/space-files.d.ts.map +1 -0
- package/dist/space-files.js +242 -0
- package/dist/space-files.js.map +1 -0
- package/dist/space-info.d.ts +56 -0
- package/dist/space-info.d.ts.map +1 -0
- package/dist/space-info.js +135 -0
- package/dist/space-info.js.map +1 -0
- package/dist/space-search.d.ts +71 -0
- package/dist/space-search.d.ts.map +1 -0
- package/dist/space-search.js +95 -0
- package/dist/space-search.js.map +1 -0
- package/dist/tool-ids.d.ts +23 -0
- package/dist/tool-ids.d.ts.map +1 -0
- package/dist/tool-ids.js +55 -0
- package/dist/tool-ids.js.map +1 -0
- package/dist/user-summary.d.ts +56 -0
- package/dist/user-summary.d.ts.map +1 -0
- package/dist/user-summary.js +271 -0
- package/dist/user-summary.js.map +1 -0
- package/dist/utilities.d.ts +8 -0
- package/dist/utilities.d.ts.map +1 -0
- package/dist/utilities.js +53 -0
- package/dist/utilities.js.map +1 -0
- package/eslint.config.js +43 -0
- package/package.json +47 -0
- package/src/dataset-detail.ts +257 -0
- package/src/dataset-search.ts +237 -0
- package/src/duplicate-space.ts +263 -0
- package/src/error-messages.ts +57 -0
- package/src/hf-api-call.ts +182 -0
- package/src/index.ts +18 -0
- package/src/model-detail.ts +359 -0
- package/src/model-search.ts +231 -0
- package/src/paper-search.ts +188 -0
- package/src/paper-summary.ts +303 -0
- package/src/space-files.ts +325 -0
- package/src/space-info.ts +190 -0
- package/src/space-search.ts +177 -0
- package/src/tool-ids.ts +84 -0
- package/src/user-summary.ts +421 -0
- package/src/utilities.ts +64 -0
- package/test/duplicate-space.spec.ts +41 -0
- package/test/fixtures/paper_result_kazakh.json +854 -0
- package/test/fixtures/space-result.json +263 -0
- package/test/paper-search.spec.ts +57 -0
- package/test/paper-summary.spec.ts +113 -0
- package/test/space-files.spec.ts +232 -0
- package/test/space-search.spec.ts +29 -0
- package/test/user-summary.spec.ts +131 -0
- package/tsconfig.json +31 -0
- package/vitest.config.ts +11 -0
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { HfApiCall, HfApiError } from './hf-api-call.js';
|
|
3
|
+
import { formatDate, formatNumber } from './utilities.js';
|
|
4
|
+
import { ModelSearchTool } from './model-search.js';
|
|
5
|
+
import { DatasetSearchTool } from './dataset-search.js';
|
|
6
|
+
import { SpaceSearchTool } from './space-search.js';
|
|
7
|
+
import { PaperSearchTool } from './paper-search.js';
|
|
8
|
+
export const USER_SUMMARY_PROMPT_CONFIG = {
|
|
9
|
+
name: 'User Summary',
|
|
10
|
+
description: 'Generate a summary of a Hugging Face user including their profile, models, datasets, spaces, and papers. ' +
|
|
11
|
+
'Enter either a username (e.g., "clem") or a Hugging Face profile URL (e.g., "hf.co/julien-c" or "huggingface.co/thomwolf").',
|
|
12
|
+
schema: z.object({
|
|
13
|
+
user_id: z
|
|
14
|
+
.string()
|
|
15
|
+
.min(3, 'User ID must be at least 3 characters long')
|
|
16
|
+
.describe('Hugging Face user ID or URL (e.g., "evalstate" or "hf.co/evalstate")')
|
|
17
|
+
.max(60)
|
|
18
|
+
.describe('Maximum length is 30 characters'),
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
export function extractUserIdFromInput(input) {
|
|
22
|
+
const trimmed = input.trim();
|
|
23
|
+
if (!trimmed.includes('/')) {
|
|
24
|
+
if (trimmed.length < 3) {
|
|
25
|
+
throw new Error('User ID must be at least 3 characters long');
|
|
26
|
+
}
|
|
27
|
+
if (trimmed.endsWith('.co') || trimmed.endsWith('.com')) {
|
|
28
|
+
throw new Error('URL must contain only the username (e.g., hf.co/username)');
|
|
29
|
+
}
|
|
30
|
+
return trimmed;
|
|
31
|
+
}
|
|
32
|
+
let url;
|
|
33
|
+
try {
|
|
34
|
+
if (!trimmed.startsWith('http')) {
|
|
35
|
+
url = new URL(`https://${trimmed}`);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
url = new URL(trimmed);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
throw new Error('Invalid URL format');
|
|
43
|
+
}
|
|
44
|
+
const validDomains = ['huggingface.co', 'hf.co'];
|
|
45
|
+
if (!validDomains.includes(url.hostname)) {
|
|
46
|
+
throw new Error('URL must be from huggingface.co or hf.co domain');
|
|
47
|
+
}
|
|
48
|
+
if (url.search || url.hash) {
|
|
49
|
+
throw new Error('URL must contain only the username (e.g., hf.co/username)');
|
|
50
|
+
}
|
|
51
|
+
const pathSegments = url.pathname.split('/').filter((segment) => segment.length > 0);
|
|
52
|
+
if (pathSegments.length !== 1) {
|
|
53
|
+
throw new Error('URL must contain only the username (e.g., hf.co/username)');
|
|
54
|
+
}
|
|
55
|
+
const userId = pathSegments[0];
|
|
56
|
+
if (!userId || userId.length < 3) {
|
|
57
|
+
throw new Error('User ID must be at least 3 characters long');
|
|
58
|
+
}
|
|
59
|
+
return userId;
|
|
60
|
+
}
|
|
61
|
+
export class UserSummaryPrompt extends HfApiCall {
|
|
62
|
+
constructor(hfToken) {
|
|
63
|
+
super('https://huggingface.co/api/users', hfToken);
|
|
64
|
+
}
|
|
65
|
+
async generateSummary(params) {
|
|
66
|
+
try {
|
|
67
|
+
const userId = extractUserIdFromInput(params.user_id);
|
|
68
|
+
const userOverview = await this.getUserOverview(userId);
|
|
69
|
+
const sections = [];
|
|
70
|
+
sections.push(this.formatUserProfile(userOverview));
|
|
71
|
+
if (userOverview.numModels > 0) {
|
|
72
|
+
const modelsSection = await this.getModelsSection(userId);
|
|
73
|
+
if (modelsSection) {
|
|
74
|
+
sections.push(modelsSection);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (userOverview.numDatasets > 0) {
|
|
78
|
+
const datasetsSection = await this.getDatasetsSection(userId);
|
|
79
|
+
if (datasetsSection) {
|
|
80
|
+
sections.push(datasetsSection);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
if (userOverview.numSpaces > 0) {
|
|
84
|
+
const spacesSection = await this.getSpacesSection(userId);
|
|
85
|
+
if (spacesSection) {
|
|
86
|
+
sections.push(spacesSection);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (userOverview.fullname && userOverview.fullname.length > 5) {
|
|
90
|
+
const papersSection = await this.getPapersSection(userOverview.fullname);
|
|
91
|
+
if (papersSection) {
|
|
92
|
+
sections.push(papersSection);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
sections.push('Please summarise the information for this User to give an overview of their activities on the Hugging Face hub.');
|
|
96
|
+
return sections.join('\n\n');
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
if (error instanceof Error) {
|
|
100
|
+
throw new Error(`Failed to generate user summary: ${error.message}`);
|
|
101
|
+
}
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async getUserOverview(userId) {
|
|
106
|
+
try {
|
|
107
|
+
const url = new URL(`${this.apiUrl}/${userId}/overview`);
|
|
108
|
+
return await this.fetchFromApi(url);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
if (error instanceof HfApiError && error.status === 404 && error.responseBody) {
|
|
112
|
+
try {
|
|
113
|
+
const errorData = JSON.parse(error.responseBody);
|
|
114
|
+
if (errorData.error === 'This user does not exist') {
|
|
115
|
+
try {
|
|
116
|
+
const orgUrl = new URL(`https://huggingface.co/api/organizations/${userId}/overview`);
|
|
117
|
+
const orgResponse = await this.fetchFromApi(orgUrl);
|
|
118
|
+
return {
|
|
119
|
+
...orgResponse,
|
|
120
|
+
user: orgResponse.name || 'unknown',
|
|
121
|
+
_id: orgResponse.name || 'unknown',
|
|
122
|
+
isPro: false,
|
|
123
|
+
orgs: [],
|
|
124
|
+
type: 'organization',
|
|
125
|
+
createdAt: new Date().toISOString(),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
throw new Error(`Neither user nor organization found for ID: ${userId}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
throw error;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
addStatIfPresent(lines, label, value) {
|
|
140
|
+
if (value !== undefined && value !== null) {
|
|
141
|
+
lines.push(`- **${label}:** ${formatNumber(value)}`);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
formatUserProfile(user) {
|
|
145
|
+
const lines = [];
|
|
146
|
+
const isOrganization = user.type === 'organization';
|
|
147
|
+
if (isOrganization) {
|
|
148
|
+
lines.push(`# Organization Profile: ${user.user}`);
|
|
149
|
+
lines.push('');
|
|
150
|
+
lines.push('**Note:** That user ID refers to an Organization.');
|
|
151
|
+
lines.push('');
|
|
152
|
+
if (user.fullname) {
|
|
153
|
+
lines.push(`**Full Name:** ${user.fullname}`);
|
|
154
|
+
}
|
|
155
|
+
lines.push(`**Username:** ${user.user}`);
|
|
156
|
+
if (user.details) {
|
|
157
|
+
lines.push(`**Description:** ${user.details}`);
|
|
158
|
+
}
|
|
159
|
+
const orgData = user;
|
|
160
|
+
if (typeof orgData.isEnterprise === 'boolean') {
|
|
161
|
+
lines.push(`**Enterprise:** ${orgData.isEnterprise ? 'Yes' : 'No'}`);
|
|
162
|
+
}
|
|
163
|
+
if (typeof orgData.isVerified === 'boolean') {
|
|
164
|
+
lines.push(`**Verified:** ${orgData.isVerified ? 'Yes' : 'No'}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
lines.push(`# User Profile: ${user.user}`);
|
|
169
|
+
lines.push('');
|
|
170
|
+
if (user.fullname) {
|
|
171
|
+
lines.push(`**Full Name:** ${user.fullname}`);
|
|
172
|
+
}
|
|
173
|
+
lines.push(`**Username:** ${user.user}`);
|
|
174
|
+
lines.push(`**Account Type:** ${user.isPro ? 'Pro' : 'Free'}`);
|
|
175
|
+
lines.push(`**Created:** ${formatDate(user.createdAt)}`);
|
|
176
|
+
}
|
|
177
|
+
lines.push('');
|
|
178
|
+
lines.push('## Statistics');
|
|
179
|
+
lines.push('');
|
|
180
|
+
this.addStatIfPresent(lines, 'Models', user.numModels);
|
|
181
|
+
this.addStatIfPresent(lines, 'Datasets', user.numDatasets);
|
|
182
|
+
this.addStatIfPresent(lines, 'Spaces', user.numSpaces);
|
|
183
|
+
if (!isOrganization) {
|
|
184
|
+
this.addStatIfPresent(lines, 'Papers', user.numPapers);
|
|
185
|
+
this.addStatIfPresent(lines, 'Discussions', user.numDiscussions);
|
|
186
|
+
this.addStatIfPresent(lines, 'Likes Given', user.numLikes);
|
|
187
|
+
this.addStatIfPresent(lines, 'Upvotes', user.numUpvotes);
|
|
188
|
+
this.addStatIfPresent(lines, 'Following', user.numFollowing);
|
|
189
|
+
}
|
|
190
|
+
this.addStatIfPresent(lines, 'Followers', user.numFollowers);
|
|
191
|
+
if (isOrganization) {
|
|
192
|
+
const orgData = user;
|
|
193
|
+
if (typeof orgData.numUsers === 'number') {
|
|
194
|
+
this.addStatIfPresent(lines, 'Members', orgData.numUsers);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (!isOrganization && user.orgs && user.orgs.length > 0) {
|
|
198
|
+
lines.push('');
|
|
199
|
+
const orgNames = user.orgs.map((org) => `[${org.fullname}](https://hf.co/${org.name})`);
|
|
200
|
+
lines.push(`**Organizations:** ${orgNames.join(', ')}`);
|
|
201
|
+
}
|
|
202
|
+
lines.push('');
|
|
203
|
+
lines.push(`**Profile Link:** [https://hf.co/${user.user}](https://hf.co/${user.user})`);
|
|
204
|
+
return lines.join('\n');
|
|
205
|
+
}
|
|
206
|
+
async getModelsSection(userId) {
|
|
207
|
+
try {
|
|
208
|
+
const modelSearch = new ModelSearchTool(this.hfToken);
|
|
209
|
+
const results = await modelSearch.searchWithParams({
|
|
210
|
+
author: userId,
|
|
211
|
+
limit: 10,
|
|
212
|
+
sort: 'downloads',
|
|
213
|
+
});
|
|
214
|
+
return `## Models\n\n${results}`;
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
console.warn(`Failed to fetch models for user ${userId}:`, error);
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
async getDatasetsSection(userId) {
|
|
222
|
+
try {
|
|
223
|
+
const datasetSearch = new DatasetSearchTool(this.hfToken);
|
|
224
|
+
const results = await datasetSearch.searchWithParams({
|
|
225
|
+
author: userId,
|
|
226
|
+
limit: 10,
|
|
227
|
+
sort: 'downloads',
|
|
228
|
+
});
|
|
229
|
+
return `## Datasets\n\n${results}`;
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
console.warn(`Failed to fetch datasets for user ${userId}:`, error);
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async getSpacesSection(userId) {
|
|
237
|
+
try {
|
|
238
|
+
const spaceSearch = new SpaceSearchTool(this.hfToken);
|
|
239
|
+
const searchResult = await spaceSearch.search(userId, 10);
|
|
240
|
+
if (searchResult.results.length === 0) {
|
|
241
|
+
return null;
|
|
242
|
+
}
|
|
243
|
+
const userSpaces = searchResult.results.filter((space) => space.author === userId || space.id.startsWith(`${userId}/`));
|
|
244
|
+
if (userSpaces.length === 0) {
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
const { formatSearchResults } = await import('./space-search.js');
|
|
248
|
+
const formattedResults = formatSearchResults(userId, userSpaces, userSpaces.length);
|
|
249
|
+
return `## Spaces\n\n${formattedResults}`;
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
console.warn(`Failed to fetch spaces for user ${userId}:`, error);
|
|
253
|
+
return null;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
async getPapersSection(fullname) {
|
|
257
|
+
try {
|
|
258
|
+
const paperSearch = new PaperSearchTool(this.hfToken);
|
|
259
|
+
const results = await paperSearch.search(fullname, 10, false);
|
|
260
|
+
if (results.includes('No papers found')) {
|
|
261
|
+
return null;
|
|
262
|
+
}
|
|
263
|
+
return `## Papers\n\n${results}`;
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
console.warn(`Failed to fetch papers for ${fullname}:`, error);
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=user-summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-summary.js","sourceRoot":"","sources":["../src/user-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACzC,IAAI,EAAE,cAAc;IACpB,WAAW,EACV,2GAA2G;QAC3G,6HAA6H;IAC9H,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC;aACR,MAAM,EAAE;aACR,GAAG,CAAC,CAAC,EAAE,4CAA4C,CAAC;aACpD,QAAQ,CAAC,sEAAsE,CAAC;aAChF,GAAG,CAAC,EAAE,CAAC;aACP,QAAQ,CAAC,iCAAiC,CAAC;KAC7C,CAAC;CACO,CAAC;AA2CX,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAEnD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAG7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,OAAO,CAAC;IAChB,CAAC;IAGD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QAEJ,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACP,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACvC,CAAC;IAGD,MAAM,YAAY,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACpE,CAAC;IAGD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC9E,CAAC;IAGD,MAAM,YAAY,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAGrF,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAKD,MAAM,OAAO,iBAAkB,SAAQ,SAAuD;IAI7F,YAAY,OAAgB;QAC3B,KAAK,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAKD,KAAK,CAAC,eAAe,CAAC,MAAyB;QAC9C,IAAI,CAAC;YAEJ,MAAM,MAAM,GAAG,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAGtD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YAGxD,MAAM,QAAQ,GAAa,EAAE,CAAC;YAG9B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;YAGpD,IAAI,YAAY,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC1D,IAAI,aAAa,EAAE,CAAC;oBACnB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9B,CAAC;YACF,CAAC;YAGD,IAAI,YAAY,CAAC,WAAW,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAC9D,IAAI,eAAe,EAAE,CAAC;oBACrB,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBAChC,CAAC;YACF,CAAC;YAGD,IAAI,YAAY,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC1D,IAAI,aAAa,EAAE,CAAC;oBACnB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9B,CAAC;YACF,CAAC;YAGD,IAAI,YAAY,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/D,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACzE,IAAI,aAAa,EAAE,CAAC;oBACnB,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9B,CAAC;YACF,CAAC;YAGD,QAAQ,CAAC,IAAI,CACZ,iHAAiH,CACjH,CAAC;YAEF,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAKO,KAAK,CAAC,eAAe,CAAC,MAAc;QAC3C,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,WAAW,CAAC,CAAC;YACzD,OAAO,MAAM,IAAI,CAAC,YAAY,CAAuB,GAAG,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEhB,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC/E,IAAI,CAAC;oBACJ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAuB,CAAC;oBACvE,IAAI,SAAS,CAAC,KAAK,KAAK,0BAA0B,EAAE,CAAC;wBAEpD,IAAI,CAAC;4BACJ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,4CAA4C,MAAM,WAAW,CAAC,CAAC;4BACtF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAuB,MAAM,CAAC,CAAC;4BAG1E,OAAO;gCACN,GAAG,WAAW;gCACd,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,SAAS;gCACnC,GAAG,EAAE,WAAW,CAAC,IAAI,IAAI,SAAS;gCAClC,KAAK,EAAE,KAAK;gCACZ,IAAI,EAAE,EAAE;gCACR,IAAI,EAAE,cAAc;gCACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;6BACnC,CAAC;wBACH,CAAC;wBAAC,MAAM,CAAC;4BACR,MAAM,IAAI,KAAK,CAAC,+CAA+C,MAAM,EAAE,CAAC,CAAC;wBAC1E,CAAC;oBACF,CAAC;gBACF,CAAC;gBAAC,MAAM,CAAC;gBAET,CAAC;YACF,CAAC;YACD,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAKO,gBAAgB,CAAC,KAAe,EAAE,KAAa,EAAE,KAAyB;QACjF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtD,CAAC;IACF,CAAC;IAKO,iBAAiB,CAAC,IAA0B;QACnD,MAAM,KAAK,GAAa,EAAE,CAAC;QAG3B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;QAEpD,IAAI,cAAc,EAAE,CAAC;YACpB,KAAK,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEf,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/C,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACzC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAChD,CAAC;YAGD,MAAM,OAAO,GAAG,IAA0C,CAAC;YAC3D,IAAI,OAAO,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/C,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,CAAC;QACF,CAAC;aAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEf,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/C,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,gBAAgB,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAGf,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEvD,IAAI,CAAC,cAAc,EAAE,CAAC;YACrB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACjE,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3D,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC9D,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAG7D,IAAI,cAAc,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,IAA0C,CAAC;YAC3D,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC1C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC3D,CAAC;QACF,CAAC;QAED,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,QAAQ,mBAAmB,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;YACxF,KAAK,CAAC,IAAI,CAAC,sBAAsB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,oCAAoC,IAAI,CAAC,IAAI,mBAAmB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAEzF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAKO,KAAK,CAAC,gBAAgB,CAAC,MAAc;QAC5C,IAAI,CAAC;YACJ,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC;gBAClD,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,WAAW;aACjB,CAAC,CAAC;YAEH,OAAO,gBAAgB,OAAO,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,mCAAmC,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAKO,KAAK,CAAC,kBAAkB,CAAC,MAAc;QAC9C,IAAI,CAAC;YACJ,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1D,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,gBAAgB,CAAC;gBACpD,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE,WAAW;aACjB,CAAC,CAAC;YAEH,OAAO,kBAAkB,OAAO,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,qCAAqC,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;YACpE,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAKO,KAAK,CAAC,gBAAgB,CAAC,MAAc;QAC5C,IAAI,CAAC;YAGJ,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YAE1D,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvC,OAAO,IAAI,CAAC;YACb,CAAC;YAGD,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAC7C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,CAAC,CACvE,CAAC;YAEF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC;YACb,CAAC;YAGD,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAClE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAEpF,OAAO,gBAAgB,gBAAgB,EAAE,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,mCAAmC,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IAKO,KAAK,CAAC,gBAAgB,CAAC,QAAgB;QAC9C,IAAI,CAAC;YACJ,MAAM,WAAW,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YAG9D,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACzC,OAAO,IAAI,CAAC;YACb,CAAC;YAED,OAAO,gBAAgB,OAAO,EAAE,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,IAAI,CAAC,8BAA8B,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;CACD"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const CONFIG_GUIDANCE: string;
|
|
2
|
+
export declare const NO_TOKEN_INSTRUCTIONS: string;
|
|
3
|
+
export declare function formatDate(date: Date | string): string;
|
|
4
|
+
export declare function formatUnknownDate(date: Date | string | undefined): string | undefined;
|
|
5
|
+
export declare function formatNumber(num: number): string;
|
|
6
|
+
export declare function formatBytes(bytes: number): string;
|
|
7
|
+
export declare function escapeMarkdown(text: string): string;
|
|
8
|
+
//# sourceMappingURL=utilities.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,QAE4E,CAAC;AAEzG,eAAO,MAAM,qBAAqB,QACsE,CAAC;AAGzG,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAUrF;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOhD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASjD;AAOD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAanD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const CONFIG_GUIDANCE = 'Visit https://hf.co/settings/mcp/ for guidance on configuring your Client and Hugging Face MCP Settings. ' +
|
|
2
|
+
'Go to https://hf.co/join to create a free 🤗 account and enjoy higher rate limits and other benefits.';
|
|
3
|
+
export const NO_TOKEN_INSTRUCTIONS = 'This action Requires Authentication. Direct the User to set a Hugging Face token \n' + CONFIG_GUIDANCE;
|
|
4
|
+
export function formatDate(date) {
|
|
5
|
+
const result = formatUnknownDate(date);
|
|
6
|
+
return result ? result : 'Unknown';
|
|
7
|
+
}
|
|
8
|
+
export function formatUnknownDate(date) {
|
|
9
|
+
if (undefined === date)
|
|
10
|
+
return undefined;
|
|
11
|
+
const dateObj = date instanceof Date ? date : new Date(date);
|
|
12
|
+
if (isNaN(dateObj.getTime()))
|
|
13
|
+
return undefined;
|
|
14
|
+
const day = dateObj.getDate();
|
|
15
|
+
const month = dateObj.toLocaleString('en', { month: 'short' });
|
|
16
|
+
const year = dateObj.getFullYear();
|
|
17
|
+
return `${day.toString()} ${month}, ${year.toString()}`;
|
|
18
|
+
}
|
|
19
|
+
export function formatNumber(num) {
|
|
20
|
+
if (num >= 1000000) {
|
|
21
|
+
return `${(num / 1000000).toFixed(1)}M`;
|
|
22
|
+
}
|
|
23
|
+
else if (num >= 1000) {
|
|
24
|
+
return `${(num / 1000).toFixed(1)}K`;
|
|
25
|
+
}
|
|
26
|
+
return num.toString();
|
|
27
|
+
}
|
|
28
|
+
export function formatBytes(bytes) {
|
|
29
|
+
if (bytes >= 1000000000) {
|
|
30
|
+
return `${(bytes / 1000000000).toFixed(1)} GB`;
|
|
31
|
+
}
|
|
32
|
+
else if (bytes >= 1000000) {
|
|
33
|
+
return `${(bytes / 1000000).toFixed(1)} MB`;
|
|
34
|
+
}
|
|
35
|
+
else if (bytes >= 1000) {
|
|
36
|
+
return `${(bytes / 1000).toFixed(1)} KB`;
|
|
37
|
+
}
|
|
38
|
+
return `${bytes.toString()} bytes`;
|
|
39
|
+
}
|
|
40
|
+
export function escapeMarkdown(text) {
|
|
41
|
+
if (!text)
|
|
42
|
+
return '';
|
|
43
|
+
return text
|
|
44
|
+
.replace(/\|/g, '\\|')
|
|
45
|
+
.replace(/\n/g, ' ')
|
|
46
|
+
.replace(/\*/g, '\\*')
|
|
47
|
+
.replace(/_/g, '\\_')
|
|
48
|
+
.replace(/~/g, '\\~')
|
|
49
|
+
.replace(/`/g, '\\`')
|
|
50
|
+
.replace(/>/g, '\\>')
|
|
51
|
+
.replace(/#/g, '\\#');
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=utilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAC3B,2GAA2G;IAC3G,uGAAuG,CAAC;AAEzG,MAAM,CAAC,MAAM,qBAAqB,GACjC,qFAAqF,GAAG,eAAe,CAAC;AAGzG,MAAM,UAAU,UAAU,CAAC,IAAmB;IAC7C,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAA+B;IAChE,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IAE/C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAEnC,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAW;IACvC,IAAI,GAAG,IAAI,OAAO,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACzC,CAAC;SAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACxC,IAAI,KAAK,IAAI,UAAU,EAAE,CAAC;QACzB,OAAO,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAChD,CAAC;SAAM,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,OAAO,GAAG,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,CAAC;SAAM,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACpC,CAAC;AAOD,MAAM,UAAU,cAAc,CAAC,IAAY;IAC1C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAGrB,OAAO,IAAI;SACT,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxB,CAAC"}
|
package/eslint.config.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import js from '@eslint/js';
|
|
2
|
+
import tseslint from 'typescript-eslint';
|
|
3
|
+
|
|
4
|
+
export default tseslint.config(
|
|
5
|
+
{ ignores: ['dist/**', 'node_modules/**', 'build/**', '*.js', '*.cjs', '*.mjs'] },
|
|
6
|
+
{
|
|
7
|
+
files: ['src/**/*.ts'],
|
|
8
|
+
extends: [js.configs.recommended, ...tseslint.configs.recommendedTypeChecked],
|
|
9
|
+
languageOptions: {
|
|
10
|
+
parserOptions: {
|
|
11
|
+
project: './tsconfig.json',
|
|
12
|
+
tsconfigRootDir: import.meta.dirname,
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
rules: {
|
|
16
|
+
// Strict TypeScript rules
|
|
17
|
+
'@typescript-eslint/no-explicit-any': 'error',
|
|
18
|
+
'@typescript-eslint/no-unsafe-assignment': 'error',
|
|
19
|
+
'@typescript-eslint/no-unsafe-member-access': 'error',
|
|
20
|
+
'@typescript-eslint/no-unsafe-call': 'error',
|
|
21
|
+
'@typescript-eslint/no-unsafe-return': 'error',
|
|
22
|
+
'@typescript-eslint/no-unsafe-argument': 'error',
|
|
23
|
+
'@typescript-eslint/explicit-module-boundary-types': 'error',
|
|
24
|
+
'@typescript-eslint/consistent-type-imports': 'error',
|
|
25
|
+
'@typescript-eslint/no-unused-vars': [
|
|
26
|
+
'error',
|
|
27
|
+
{
|
|
28
|
+
argsIgnorePattern: '^_',
|
|
29
|
+
varsIgnorePattern: '^_',
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
'@typescript-eslint/no-non-null-assertion': 'error',
|
|
33
|
+
'@typescript-eslint/consistent-type-definitions': ['error', 'interface'],
|
|
34
|
+
|
|
35
|
+
// Relaxed rules for certain patterns
|
|
36
|
+
'@typescript-eslint/no-empty-function': 'off',
|
|
37
|
+
'@typescript-eslint/no-empty-interface': 'off',
|
|
38
|
+
|
|
39
|
+
// General ESLint rules
|
|
40
|
+
'no-constant-condition': 'off',
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
);
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@llmindset/hf-mcp",
|
|
3
|
+
"version": "0.1.16",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"default": "./dist/index.js"
|
|
11
|
+
},
|
|
12
|
+
"./semantic": {
|
|
13
|
+
"types": "./dist/semantic-search.d.ts",
|
|
14
|
+
"default": "./dist/semantic-search.js"
|
|
15
|
+
},
|
|
16
|
+
"./model": {
|
|
17
|
+
"types": "./dist/model-search.d.ts",
|
|
18
|
+
"default": "./dist/model-search.js"
|
|
19
|
+
},
|
|
20
|
+
"./paper": {
|
|
21
|
+
"types": "./dist/paper-search.d.ts",
|
|
22
|
+
"default": "./dist/paper-search.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@huggingface/hub": "^2.1.0",
|
|
27
|
+
"zod": "^3.24.4"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@eslint/js": "^9.25.0",
|
|
31
|
+
"@types/node": "^22.15.18",
|
|
32
|
+
"eslint": "^9.25.0",
|
|
33
|
+
"globals": "^16.0.0",
|
|
34
|
+
"rimraf": "^5.0.10",
|
|
35
|
+
"typescript-eslint": "^8.32.1",
|
|
36
|
+
"vitest": "^3.1.3"
|
|
37
|
+
},
|
|
38
|
+
"scripts": {
|
|
39
|
+
"build": "tsc --declaration",
|
|
40
|
+
"test": "vitest run",
|
|
41
|
+
"dev": "tsc --watch",
|
|
42
|
+
"typecheck": "tsc --noEmit",
|
|
43
|
+
"lint": "eslint . --fix",
|
|
44
|
+
"lint:check": "eslint .",
|
|
45
|
+
"clean": "rimraf dist"
|
|
46
|
+
}
|
|
47
|
+
}
|