@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.
Files changed (93) hide show
  1. package/LICENSE +21 -0
  2. package/dist/dataset-detail.d.ts +26 -0
  3. package/dist/dataset-detail.d.ts.map +1 -0
  4. package/dist/dataset-detail.js +157 -0
  5. package/dist/dataset-detail.js.map +1 -0
  6. package/dist/dataset-search.d.ts +62 -0
  7. package/dist/dataset-search.d.ts.map +1 -0
  8. package/dist/dataset-search.js +158 -0
  9. package/dist/dataset-search.js.map +1 -0
  10. package/dist/duplicate-space.d.ts +75 -0
  11. package/dist/duplicate-space.d.ts.map +1 -0
  12. package/dist/duplicate-space.js +189 -0
  13. package/dist/duplicate-space.js.map +1 -0
  14. package/dist/error-messages.d.ts +4 -0
  15. package/dist/error-messages.d.ts.map +1 -0
  16. package/dist/error-messages.js +30 -0
  17. package/dist/error-messages.js.map +1 -0
  18. package/dist/hf-api-call.d.ts +18 -0
  19. package/dist/hf-api-call.d.ts.map +1 -0
  20. package/dist/hf-api-call.js +105 -0
  21. package/dist/hf-api-call.js.map +1 -0
  22. package/dist/index.d.ts +16 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +16 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/model-detail.d.ts +26 -0
  27. package/dist/model-detail.d.ts.map +1 -0
  28. package/dist/model-detail.js +224 -0
  29. package/dist/model-detail.js.map +1 -0
  30. package/dist/model-search.d.ts +64 -0
  31. package/dist/model-search.d.ts.map +1 -0
  32. package/dist/model-search.js +161 -0
  33. package/dist/model-search.js.map +1 -0
  34. package/dist/paper-search.d.ts +58 -0
  35. package/dist/paper-search.d.ts.map +1 -0
  36. package/dist/paper-search.js +114 -0
  37. package/dist/paper-search.js.map +1 -0
  38. package/dist/paper-summary.d.ts +35 -0
  39. package/dist/paper-summary.d.ts.map +1 -0
  40. package/dist/paper-summary.js +187 -0
  41. package/dist/paper-summary.js.map +1 -0
  42. package/dist/space-files.d.ts +44 -0
  43. package/dist/space-files.d.ts.map +1 -0
  44. package/dist/space-files.js +242 -0
  45. package/dist/space-files.js.map +1 -0
  46. package/dist/space-info.d.ts +56 -0
  47. package/dist/space-info.d.ts.map +1 -0
  48. package/dist/space-info.js +135 -0
  49. package/dist/space-info.js.map +1 -0
  50. package/dist/space-search.d.ts +71 -0
  51. package/dist/space-search.d.ts.map +1 -0
  52. package/dist/space-search.js +95 -0
  53. package/dist/space-search.js.map +1 -0
  54. package/dist/tool-ids.d.ts +23 -0
  55. package/dist/tool-ids.d.ts.map +1 -0
  56. package/dist/tool-ids.js +55 -0
  57. package/dist/tool-ids.js.map +1 -0
  58. package/dist/user-summary.d.ts +56 -0
  59. package/dist/user-summary.d.ts.map +1 -0
  60. package/dist/user-summary.js +271 -0
  61. package/dist/user-summary.js.map +1 -0
  62. package/dist/utilities.d.ts +8 -0
  63. package/dist/utilities.d.ts.map +1 -0
  64. package/dist/utilities.js +53 -0
  65. package/dist/utilities.js.map +1 -0
  66. package/eslint.config.js +43 -0
  67. package/package.json +47 -0
  68. package/src/dataset-detail.ts +257 -0
  69. package/src/dataset-search.ts +237 -0
  70. package/src/duplicate-space.ts +263 -0
  71. package/src/error-messages.ts +57 -0
  72. package/src/hf-api-call.ts +182 -0
  73. package/src/index.ts +18 -0
  74. package/src/model-detail.ts +359 -0
  75. package/src/model-search.ts +231 -0
  76. package/src/paper-search.ts +188 -0
  77. package/src/paper-summary.ts +303 -0
  78. package/src/space-files.ts +325 -0
  79. package/src/space-info.ts +190 -0
  80. package/src/space-search.ts +177 -0
  81. package/src/tool-ids.ts +84 -0
  82. package/src/user-summary.ts +421 -0
  83. package/src/utilities.ts +64 -0
  84. package/test/duplicate-space.spec.ts +41 -0
  85. package/test/fixtures/paper_result_kazakh.json +854 -0
  86. package/test/fixtures/space-result.json +263 -0
  87. package/test/paper-search.spec.ts +57 -0
  88. package/test/paper-summary.spec.ts +113 -0
  89. package/test/space-files.spec.ts +232 -0
  90. package/test/space-search.spec.ts +29 -0
  91. package/test/user-summary.spec.ts +131 -0
  92. package/tsconfig.json +31 -0
  93. package/vitest.config.ts +11 -0
@@ -0,0 +1,135 @@
1
+ import { z } from 'zod';
2
+ import { HfApiCall } from './hf-api-call.js';
3
+ import { listSpaces } from '@huggingface/hub';
4
+ import { formatDate, formatNumber, escapeMarkdown, NO_TOKEN_INSTRUCTIONS } from './utilities.js';
5
+ const STATUS_EMOJI = {
6
+ RUNNING: '🟢 Running',
7
+ RUNNING_BUILDING: '🔄 Building',
8
+ SLEEPING: '😴 Sleeping',
9
+ PAUSED: '⏸️ Paused',
10
+ STOPPED: '⏹️ Stopped',
11
+ RUNTIME_ERROR: '❌ Error',
12
+ BUILD_ERROR: '🚫 Build Error',
13
+ BUILDING: '🔨 Building',
14
+ NO_APP_FILE: '📄 No App',
15
+ CONFIG_ERROR: '⚙️ Config Error',
16
+ DELETING: '🗑️ Deleting',
17
+ };
18
+ export const SPACE_INFO_TOOL_CONFIG = {
19
+ name: 'space_info',
20
+ description: '',
21
+ schema: z.object({
22
+ username: z.string().optional().describe('Username to get spaces for (defaults to authenticated user)'),
23
+ }),
24
+ annotations: {
25
+ title: 'Hugging Face Spaces Information',
26
+ destructiveHint: false,
27
+ readOnlyHint: true,
28
+ openWorldHint: false,
29
+ },
30
+ };
31
+ export class SpaceInfoTool extends HfApiCall {
32
+ authenticatedUsername;
33
+ constructor(hfToken, authenticatedUsername) {
34
+ super('https://huggingface.co/api', hfToken);
35
+ this.authenticatedUsername = authenticatedUsername;
36
+ }
37
+ static createToolConfig(username) {
38
+ const description = username
39
+ ? `Tabluate Hugging Face Spaces information for ${username}, or another User.`
40
+ : `Tabluate public Hugging Face Spaces for a specific User. Supply a Hugging Face token or go to https://hf.co/join to create an account to view your own private Spaces.`;
41
+ return {
42
+ ...SPACE_INFO_TOOL_CONFIG,
43
+ description: description,
44
+ };
45
+ }
46
+ async getSpacesReport(targetUsername) {
47
+ if (!this.authenticatedUsername && !targetUsername)
48
+ throw new Error(NO_TOKEN_INSTRUCTIONS);
49
+ const username = targetUsername || this.authenticatedUsername || 'error';
50
+ const spaces = [];
51
+ const spacesWithRuntime = [];
52
+ try {
53
+ for await (const space of listSpaces({
54
+ search: { owner: username },
55
+ additionalFields: ['runtime', 'subdomain'],
56
+ accessToken: this.hfToken,
57
+ })) {
58
+ spaces.push(space);
59
+ const runtime = space.runtime;
60
+ const hardware = runtime?.hardware?.current || 'cpu-basic';
61
+ spacesWithRuntime.push({
62
+ name: space.name.split('/')[1] || space.name,
63
+ url: `https://huggingface.co/spaces/${space.name}`,
64
+ sdk: space.sdk || 'unknown',
65
+ status: runtime?.stage || 'UNKNOWN',
66
+ statusEmoji: STATUS_EMOJI[runtime?.stage || 'STOPPED'] || '❓ Unknown',
67
+ hardware: hardware,
68
+ storage: runtime?.resources?.requests?.ephemeral || 'None',
69
+ visibility: space.private ? '🔒 Private' : '🌍 Public',
70
+ likes: space.likes,
71
+ lastModified: space.updatedAt ? formatDate(space.updatedAt) : 'Unknown',
72
+ });
73
+ }
74
+ const report = {
75
+ user: username,
76
+ generatedAt: new Date(),
77
+ totalSpaces: spaces.length,
78
+ publicSpaces: spaces.filter((s) => !s.private).length,
79
+ privateSpaces: spaces.filter((s) => s.private).length,
80
+ runningSpaces: spacesWithRuntime.filter((s) => s.status === 'RUNNING').length,
81
+ totalLikes: spaces.reduce((sum, s) => sum + s.likes, 0),
82
+ sdkCounts: spaces.reduce((acc, s) => {
83
+ const sdk = s.sdk || 'unknown';
84
+ acc[sdk] = (acc[sdk] || 0) + 1;
85
+ return acc;
86
+ }, {}),
87
+ spaces: spacesWithRuntime.sort((a, b) => b.lastModified.localeCompare(a.lastModified)),
88
+ };
89
+ return this.generateMarkdown(report);
90
+ }
91
+ catch (error) {
92
+ if (error instanceof Error) {
93
+ throw new Error(`Failed to get spaces information: ${error.message}`);
94
+ }
95
+ throw error;
96
+ }
97
+ }
98
+ generateMarkdown(report) {
99
+ if (report.totalSpaces === 0) {
100
+ return `# Hugging Face Spaces Report
101
+ **User**: ${report.user}
102
+ **Generated**: ${formatDate(report.generatedAt)}
103
+
104
+ No spaces were found for user '${report.user}'.
105
+
106
+ You can create your first Space at [https://huggingface.co/new-space](https://huggingface.co/new-space).`;
107
+ }
108
+ const sdkSummary = Object.entries(report.sdkCounts)
109
+ .filter(([_, count]) => count > 0)
110
+ .map(([sdk, count]) => `${sdk} (${count})`)
111
+ .join(', ');
112
+ let markdown = `# Hugging Face Spaces Report
113
+ **User**: ${report.user}
114
+ **Generated**: ${formatDate(report.generatedAt)}
115
+
116
+ ## Summary
117
+ - **Total Spaces**: ${report.totalSpaces}
118
+ - **Public**: ${report.publicSpaces}${report.privateSpaces > 0 ? ` | **Private**: ${report.privateSpaces}` : ''}
119
+ - **Currently Running**: ${report.runningSpaces}
120
+ - **Total Likes**: ${formatNumber(report.totalLikes)}
121
+ - **SDKs**: ${sdkSummary || 'None'}
122
+
123
+ ## All Spaces
124
+ | Space | SDK | Status | Hardware | Storage | Visibility | Likes ❤️ | Last Modified |
125
+ |-------|-----|--------|----------|---------|------------|----------|--------------|\n`;
126
+ for (const space of report.spaces) {
127
+ markdown += `| [${escapeMarkdown(space.name)}](${space.url}) | ${escapeMarkdown(space.sdk)} | ${space.statusEmoji} | ${escapeMarkdown(space.hardware)} | ${escapeMarkdown(space.storage)} | ${space.visibility} | ${space.likes} | ${space.lastModified} |\n`;
128
+ }
129
+ return markdown;
130
+ }
131
+ }
132
+ export const formatSpaceInfoResult = async (tool, params) => {
133
+ return tool.getSpacesReport(params.username);
134
+ };
135
+ //# sourceMappingURL=space-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-info.js","sourceRoot":"","sources":["../src/space-info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { z } from 'zod';
2
+ import { HfApiCall } from './hf-api-call.js';
3
+ export interface SpaceSearchResult {
4
+ id: string;
5
+ emoji?: string;
6
+ likes?: number;
7
+ title?: string;
8
+ author: string;
9
+ runtime: {
10
+ stage?: string;
11
+ };
12
+ ai_category?: string;
13
+ ai_short_description?: string;
14
+ shortDescription?: string;
15
+ semanticRelevancyScore?: number;
16
+ trendingScore?: number;
17
+ lastModified?: Date;
18
+ }
19
+ interface SpaceSearchParams {
20
+ q: string;
21
+ sdk: string;
22
+ filter?: string;
23
+ }
24
+ export declare const SEMANTIC_SEARCH_TOOL_CONFIG: {
25
+ readonly name: "space_search";
26
+ readonly description: string;
27
+ readonly schema: z.ZodObject<{
28
+ query: z.ZodString;
29
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
30
+ mcp: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
31
+ }, "strip", z.ZodTypeAny, {
32
+ query: string;
33
+ limit: number;
34
+ mcp: boolean;
35
+ }, {
36
+ query: string;
37
+ limit?: number | undefined;
38
+ mcp?: boolean | undefined;
39
+ }>;
40
+ readonly annotations: {
41
+ readonly title: "Hugging Face Space Search";
42
+ readonly destructiveHint: false;
43
+ readonly readOnlyHint: true;
44
+ readonly openWorldHint: true;
45
+ };
46
+ };
47
+ export declare class SpaceSearchTool extends HfApiCall<SpaceSearchParams, SpaceSearchResult[]> {
48
+ constructor(hfToken?: string, apiUrl?: string);
49
+ search(query: string, limit?: number, mcp?: boolean): Promise<{
50
+ results: SpaceSearchResult[];
51
+ totalCount: number;
52
+ }>;
53
+ searchWithFilter(filter: string, limit?: number, headerLevel?: number): Promise<string>;
54
+ }
55
+ export declare const SearchParamsSchema: z.ZodObject<{
56
+ query: z.ZodString;
57
+ limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
58
+ mcp: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
59
+ }, "strip", z.ZodTypeAny, {
60
+ query: string;
61
+ limit: number;
62
+ mcp: boolean;
63
+ }, {
64
+ query: string;
65
+ limit?: number | undefined;
66
+ mcp?: boolean | undefined;
67
+ }>;
68
+ export type SearchParams = z.infer<typeof SEMANTIC_SEARCH_TOOL_CONFIG.schema>;
69
+ export declare const formatSearchResults: (query: string, results: SpaceSearchResult[], totalCount: number, headerLevel?: number) => string;
70
+ export {};
71
+ //# sourceMappingURL=space-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-search.d.ts","sourceRoot":"","sources":["../src/space-search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,IAAI,CAAC;CACpB;AAGD,UAAU,iBAAiB;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;CAe9B,CAAC;AAKX,qBAAa,eAAgB,SAAQ,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;gBAMzE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,SAAsD;IAUpF,MAAM,CACX,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAA0B,EACjC,GAAG,GAAE,OAAe,GAClB,OAAO,CAAC;QAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IA6B1D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,EAAE,WAAW,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC;CAwBpG;AAGD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAAqC,CAAC;AAErE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,MAAM,CAAC,CAAC;AAO9E,eAAO,MAAM,mBAAmB,GAC/B,OAAO,MAAM,EACb,SAAS,iBAAiB,EAAE,EAC5B,YAAY,MAAM,EAClB,cAAa,MAAU,KACrB,MAkCF,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { z } from 'zod';
2
+ import { HfApiCall } from './hf-api-call.js';
3
+ import { escapeMarkdown } from './utilities.js';
4
+ const RESULTS_TO_RETURN = 10;
5
+ export const SEMANTIC_SEARCH_TOOL_CONFIG = {
6
+ name: 'space_search',
7
+ description: 'Find Hugging Face Spaces using semantic search. ' + 'Include links to the Space when presenting the results.',
8
+ schema: z.object({
9
+ query: z.string().min(1, 'Query is required').max(100, 'Query too long').describe('Semantic Search Query'),
10
+ limit: z.number().optional().default(RESULTS_TO_RETURN).describe('Number of results to return'),
11
+ mcp: z.boolean().optional().default(false).describe('Only return MCP Server enabled Spaces'),
12
+ }),
13
+ annotations: {
14
+ title: 'Hugging Face Space Search',
15
+ destructiveHint: false,
16
+ readOnlyHint: true,
17
+ openWorldHint: true,
18
+ },
19
+ };
20
+ export class SpaceSearchTool extends HfApiCall {
21
+ constructor(hfToken, apiUrl = 'https://huggingface.co/api/spaces/semantic-search') {
22
+ super(apiUrl, hfToken);
23
+ }
24
+ async search(query, limit = RESULTS_TO_RETURN, mcp = false) {
25
+ try {
26
+ if (!query) {
27
+ return { results: [], totalCount: 0 };
28
+ }
29
+ const params = { q: query, sdk: 'gradio' };
30
+ if (mcp) {
31
+ params.filter = 'mcp-server';
32
+ }
33
+ const results = await this.callApi(params);
34
+ return { results: results.slice(0, limit), totalCount: results.length };
35
+ }
36
+ catch (error) {
37
+ if (error instanceof Error) {
38
+ throw new Error(`Failed to search for spaces: ${error.message}`);
39
+ }
40
+ throw error;
41
+ }
42
+ }
43
+ async searchWithFilter(filter, limit = 10, headerLevel = 1) {
44
+ try {
45
+ const url = new URL('https://huggingface.co/api/spaces');
46
+ url.searchParams.append('filter', filter);
47
+ url.searchParams.append('limit', limit.toString());
48
+ url.searchParams.append('sort', 'likes');
49
+ url.searchParams.append('direction', '-1');
50
+ const results = await this.fetchFromApi(url);
51
+ if (results.length === 0) {
52
+ return `No matching Hugging Face Spaces found referencing ${filter}.`;
53
+ }
54
+ return formatSearchResults(filter, results, results.length, headerLevel);
55
+ }
56
+ catch (error) {
57
+ if (error instanceof Error) {
58
+ throw new Error(`Failed to search for spaces: ${error.message}`);
59
+ }
60
+ throw error;
61
+ }
62
+ }
63
+ }
64
+ export const SearchParamsSchema = SEMANTIC_SEARCH_TOOL_CONFIG.schema;
65
+ export const formatSearchResults = (query, results, totalCount, headerLevel = 1) => {
66
+ if (results.length === 0) {
67
+ return `No matching Hugging Face Spaces found for the query '${query}'. Try a different query.`;
68
+ }
69
+ const showingText = results.length < totalCount
70
+ ? `Showing ${results.length.toString()} of ${totalCount.toString()} results`
71
+ : `All ${results.length.toString()} results`;
72
+ const headerPrefix = '#'.repeat(headerLevel);
73
+ let markdown = `${headerPrefix} Space Search Results for the query '${query}' (${showingText})\n\n`;
74
+ markdown += '| Space | Description | Author | ID | Category | Likes | Trending Score | Relevance |\n';
75
+ markdown += '|-------|-------------|--------|----|----------|--------|----------------|-----------|\n';
76
+ for (const result of results) {
77
+ const title = result.title || 'Untitled';
78
+ const description = result.shortDescription || result.ai_short_description || 'No description';
79
+ const author = result.author || 'Unknown';
80
+ const id = result.id || '';
81
+ const emoji = result.emoji ? escapeMarkdown(result.emoji) + ' ' : '';
82
+ const relevance = result.semanticRelevancyScore ? (result.semanticRelevancyScore * 100).toFixed(1) + '%' : 'N/A';
83
+ markdown +=
84
+ `| ${emoji}[${escapeMarkdown(title)}](https://hf.co/spaces/${id}) ` +
85
+ `| ${escapeMarkdown(description)} ` +
86
+ `| ${escapeMarkdown(author)} ` +
87
+ `| \`${escapeMarkdown(id)}\` ` +
88
+ `| \`${escapeMarkdown(result.ai_category ?? '-')}\` ` +
89
+ `| ${escapeMarkdown(result.likes?.toString() ?? '-')} ` +
90
+ `| ${escapeMarkdown(result.trendingScore?.toString() ?? '-')} ` +
91
+ `| ${relevance} |\n`;
92
+ }
93
+ return markdown;
94
+ };
95
+ //# sourceMappingURL=space-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"space-search.js","sourceRoot":"","sources":["../src/space-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export declare const SPACE_SEARCH_TOOL_ID: "space_search";
2
+ export declare const MODEL_SEARCH_TOOL_ID: "model_search";
3
+ export declare const MODEL_DETAIL_TOOL_ID: "model_details";
4
+ export declare const PAPER_SEARCH_TOOL_ID: "paper_search";
5
+ export declare const DATASET_SEARCH_TOOL_ID: "dataset_search";
6
+ export declare const DATASET_DETAIL_TOOL_ID: "dataset_details";
7
+ export declare const DUPLICATE_SPACE_TOOL_ID: "duplicate_space";
8
+ export declare const SPACE_INFO_TOOL_ID: "space_info";
9
+ export declare const SPACE_FILES_TOOL_ID: "space_files";
10
+ export declare const USER_SUMMARY_PROMPT_ID: "User Summary";
11
+ export declare const PAPER_SUMMARY_PROMPT_ID: "Paper Summary";
12
+ export declare const ALL_BUILTIN_TOOL_IDS: readonly ["space_search", "model_search", "model_details", "paper_search", "dataset_search", "dataset_details", "duplicate_space", "space_info", "space_files"];
13
+ export declare const TOOL_ID_GROUPS: {
14
+ readonly search: readonly ["space_search", "model_search", "dataset_search", "paper_search"];
15
+ readonly spaces: readonly ["space_search", "duplicate_space", "space_info", "space_files"];
16
+ readonly detail: readonly ["model_details", "dataset_details"];
17
+ readonly hf_api: readonly ["space_search", "model_search", "dataset_search", "paper_search", "model_details", "dataset_details"];
18
+ readonly all: readonly ["space_search", "model_search", "model_details", "paper_search", "dataset_search", "dataset_details", "duplicate_space", "space_info", "space_files"];
19
+ };
20
+ export type BuiltinToolId = (typeof ALL_BUILTIN_TOOL_IDS)[number];
21
+ export declare function isValidBuiltinToolId(toolId: string): toolId is BuiltinToolId;
22
+ export declare function getToolDescription(toolId: BuiltinToolId): string;
23
+ //# sourceMappingURL=tool-ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-ids.d.ts","sourceRoot":"","sources":["../src/tool-ids.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,oBAAoB,gBAAmC,CAAC;AACrE,eAAO,MAAM,oBAAoB,gBAAgC,CAAC;AAClE,eAAO,MAAM,oBAAoB,iBAAgC,CAAC;AAClE,eAAO,MAAM,oBAAoB,gBAAgC,CAAC;AAClE,eAAO,MAAM,sBAAsB,kBAAkC,CAAC;AACtE,eAAO,MAAM,sBAAsB,mBAAkC,CAAC;AACtE,eAAO,MAAM,uBAAuB,mBAAmC,CAAC;AACxE,eAAO,MAAM,kBAAkB,cAA8B,CAAC;AAC9D,eAAO,MAAM,mBAAmB,eAA+B,CAAC;AAChE,eAAO,MAAM,sBAAsB,gBAAkC,CAAC;AACtE,eAAO,MAAM,uBAAuB,iBAAmC,CAAC;AAGxE,eAAO,MAAM,oBAAoB,iKAUvB,CAAC;AAEX,eAAO,MAAM,cAAc;;;;;;CAajB,CAAC;AAGX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAGlE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,IAAI,aAAa,CAE5E;AAGD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAchE"}
@@ -0,0 +1,55 @@
1
+ import { SEMANTIC_SEARCH_TOOL_CONFIG, MODEL_SEARCH_TOOL_CONFIG, MODEL_DETAIL_TOOL_CONFIG, PAPER_SEARCH_TOOL_CONFIG, DATASET_SEARCH_TOOL_CONFIG, DATASET_DETAIL_TOOL_CONFIG, DUPLICATE_SPACE_TOOL_CONFIG, SPACE_INFO_TOOL_CONFIG, SPACE_FILES_TOOL_CONFIG, USER_SUMMARY_PROMPT_CONFIG, PAPER_SUMMARY_PROMPT_CONFIG, } from './index.js';
2
+ export const SPACE_SEARCH_TOOL_ID = SEMANTIC_SEARCH_TOOL_CONFIG.name;
3
+ export const MODEL_SEARCH_TOOL_ID = MODEL_SEARCH_TOOL_CONFIG.name;
4
+ export const MODEL_DETAIL_TOOL_ID = MODEL_DETAIL_TOOL_CONFIG.name;
5
+ export const PAPER_SEARCH_TOOL_ID = PAPER_SEARCH_TOOL_CONFIG.name;
6
+ export const DATASET_SEARCH_TOOL_ID = DATASET_SEARCH_TOOL_CONFIG.name;
7
+ export const DATASET_DETAIL_TOOL_ID = DATASET_DETAIL_TOOL_CONFIG.name;
8
+ export const DUPLICATE_SPACE_TOOL_ID = DUPLICATE_SPACE_TOOL_CONFIG.name;
9
+ export const SPACE_INFO_TOOL_ID = SPACE_INFO_TOOL_CONFIG.name;
10
+ export const SPACE_FILES_TOOL_ID = SPACE_FILES_TOOL_CONFIG.name;
11
+ export const USER_SUMMARY_PROMPT_ID = USER_SUMMARY_PROMPT_CONFIG.name;
12
+ export const PAPER_SUMMARY_PROMPT_ID = PAPER_SUMMARY_PROMPT_CONFIG.name;
13
+ export const ALL_BUILTIN_TOOL_IDS = [
14
+ SPACE_SEARCH_TOOL_ID,
15
+ MODEL_SEARCH_TOOL_ID,
16
+ MODEL_DETAIL_TOOL_ID,
17
+ PAPER_SEARCH_TOOL_ID,
18
+ DATASET_SEARCH_TOOL_ID,
19
+ DATASET_DETAIL_TOOL_ID,
20
+ DUPLICATE_SPACE_TOOL_ID,
21
+ SPACE_INFO_TOOL_ID,
22
+ SPACE_FILES_TOOL_ID,
23
+ ];
24
+ export const TOOL_ID_GROUPS = {
25
+ search: [SPACE_SEARCH_TOOL_ID, MODEL_SEARCH_TOOL_ID, DATASET_SEARCH_TOOL_ID, PAPER_SEARCH_TOOL_ID],
26
+ spaces: [SPACE_SEARCH_TOOL_ID, DUPLICATE_SPACE_TOOL_ID, SPACE_INFO_TOOL_ID, SPACE_FILES_TOOL_ID],
27
+ detail: [MODEL_DETAIL_TOOL_ID, DATASET_DETAIL_TOOL_ID],
28
+ hf_api: [
29
+ SPACE_SEARCH_TOOL_ID,
30
+ MODEL_SEARCH_TOOL_ID,
31
+ DATASET_SEARCH_TOOL_ID,
32
+ PAPER_SEARCH_TOOL_ID,
33
+ MODEL_DETAIL_TOOL_ID,
34
+ DATASET_DETAIL_TOOL_ID,
35
+ ],
36
+ all: [...ALL_BUILTIN_TOOL_IDS],
37
+ };
38
+ export function isValidBuiltinToolId(toolId) {
39
+ return ALL_BUILTIN_TOOL_IDS.includes(toolId);
40
+ }
41
+ export function getToolDescription(toolId) {
42
+ const configs = {
43
+ [SPACE_SEARCH_TOOL_ID]: SEMANTIC_SEARCH_TOOL_CONFIG,
44
+ [MODEL_SEARCH_TOOL_ID]: MODEL_SEARCH_TOOL_CONFIG,
45
+ [MODEL_DETAIL_TOOL_ID]: MODEL_DETAIL_TOOL_CONFIG,
46
+ [PAPER_SEARCH_TOOL_ID]: PAPER_SEARCH_TOOL_CONFIG,
47
+ [DATASET_SEARCH_TOOL_ID]: DATASET_SEARCH_TOOL_CONFIG,
48
+ [DATASET_DETAIL_TOOL_ID]: DATASET_DETAIL_TOOL_CONFIG,
49
+ [DUPLICATE_SPACE_TOOL_ID]: DUPLICATE_SPACE_TOOL_CONFIG,
50
+ [SPACE_INFO_TOOL_ID]: SPACE_INFO_TOOL_CONFIG,
51
+ [SPACE_FILES_TOOL_ID]: SPACE_FILES_TOOL_CONFIG,
52
+ };
53
+ return configs[toolId]?.description || `Tool: ${toolId}`;
54
+ }
55
+ //# sourceMappingURL=tool-ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-ids.js","sourceRoot":"","sources":["../src/tool-ids.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,GAC3B,MAAM,YAAY,CAAC;AAGpB,MAAM,CAAC,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAClE,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,IAAI,CAAC;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC,IAAI,CAAC;AACxE,MAAM,CAAC,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,CAAC;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,CAAC;AAChE,MAAM,CAAC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,IAAI,CAAC;AACtE,MAAM,CAAC,MAAM,uBAAuB,GAAG,2BAA2B,CAAC,IAAI,CAAC;AAGxE,MAAM,CAAC,MAAM,oBAAoB,GAAG;IACnC,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,sBAAsB;IACtB,sBAAsB;IACtB,uBAAuB;IACvB,kBAAkB;IAClB,mBAAmB;CACV,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG;IAC7B,MAAM,EAAE,CAAC,oBAAoB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,CAAU;IAC3G,MAAM,EAAE,CAAC,oBAAoB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,mBAAmB,CAAU;IACzG,MAAM,EAAE,CAAC,oBAAoB,EAAE,sBAAsB,CAAU;IAC/D,MAAM,EAAE;QACP,oBAAoB;QACpB,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,oBAAoB;QACpB,sBAAsB;KACb;IACV,GAAG,EAAE,CAAC,GAAG,oBAAoB,CAAU;CAC9B,CAAC;AAMX,MAAM,UAAU,oBAAoB,CAAC,MAAc;IAClD,OAAQ,oBAA0C,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACrE,CAAC;AAGD,MAAM,UAAU,kBAAkB,CAAC,MAAqB;IACvD,MAAM,OAAO,GAAG;QACf,CAAC,oBAAoB,CAAC,EAAE,2BAA2B;QACnD,CAAC,oBAAoB,CAAC,EAAE,wBAAwB;QAChD,CAAC,oBAAoB,CAAC,EAAE,wBAAwB;QAChD,CAAC,oBAAoB,CAAC,EAAE,wBAAwB;QAChD,CAAC,sBAAsB,CAAC,EAAE,0BAA0B;QACpD,CAAC,sBAAsB,CAAC,EAAE,0BAA0B;QACpD,CAAC,uBAAuB,CAAC,EAAE,2BAA2B;QACtD,CAAC,kBAAkB,CAAC,EAAE,sBAAsB;QAC5C,CAAC,mBAAmB,CAAC,EAAE,uBAAuB;KACrC,CAAC;IAEX,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,WAAW,IAAI,SAAS,MAAM,EAAE,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { z } from 'zod';
2
+ import { HfApiCall } from './hf-api-call.js';
3
+ export declare const USER_SUMMARY_PROMPT_CONFIG: {
4
+ readonly name: "User Summary";
5
+ readonly description: string;
6
+ readonly schema: z.ZodObject<{
7
+ user_id: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ user_id: string;
10
+ }, {
11
+ user_id: string;
12
+ }>;
13
+ };
14
+ export type UserSummaryParams = z.infer<typeof USER_SUMMARY_PROMPT_CONFIG.schema>;
15
+ interface Organization {
16
+ id: string;
17
+ name: string;
18
+ fullname: string;
19
+ avatarUrl?: string;
20
+ }
21
+ interface UserOverviewResponse {
22
+ _id: string;
23
+ avatarUrl: string;
24
+ isPro: boolean;
25
+ fullname?: string;
26
+ numModels: number;
27
+ numDatasets: number;
28
+ numSpaces: number;
29
+ numDiscussions: number;
30
+ numPapers: number;
31
+ numUpvotes: number;
32
+ numLikes: number;
33
+ numFollowers: number;
34
+ numFollowing: number;
35
+ orgs: Organization[];
36
+ user: string;
37
+ type: string;
38
+ isFollowing: boolean;
39
+ createdAt: string;
40
+ details?: string;
41
+ name?: string;
42
+ }
43
+ export declare function extractUserIdFromInput(input: string): string;
44
+ export declare class UserSummaryPrompt extends HfApiCall<Record<string, string>, UserOverviewResponse> {
45
+ constructor(hfToken?: string);
46
+ generateSummary(params: UserSummaryParams): Promise<string>;
47
+ private getUserOverview;
48
+ private addStatIfPresent;
49
+ private formatUserProfile;
50
+ private getModelsSection;
51
+ private getDatasetsSection;
52
+ private getSpacesSection;
53
+ private getPapersSection;
54
+ }
55
+ export {};
56
+ //# sourceMappingURL=user-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-summary.d.ts","sourceRoot":"","sources":["../src/user-summary.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAc,MAAM,kBAAkB,CAAC;AAQzD,eAAO,MAAM,0BAA0B;;;;;;;;;;CAa7B,CAAC;AAGX,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,MAAM,CAAC,CAAC;AAGlF,UAAU,YAAY;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,UAAU,oBAAoB;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAQD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAsD5D;AAKD,qBAAa,iBAAkB,SAAQ,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,oBAAoB,CAAC;gBAIjF,OAAO,CAAC,EAAE,MAAM;IAOtB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;YA+DnD,eAAe;IAwC7B,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,iBAAiB;YAqFX,gBAAgB;YAmBhB,kBAAkB;YAmBlB,gBAAgB;YAkChB,gBAAgB;CAgB9B"}