@toolsdk.ai/registry 1.0.113 → 1.0.115

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 (97) hide show
  1. package/README.md +66 -11
  2. package/dist/api/index.d.ts +1 -1
  3. package/dist/api/index.js +23 -25
  4. package/dist/domains/config/config-route.d.ts +2 -0
  5. package/dist/domains/config/config-route.js +31 -0
  6. package/dist/domains/config/config-schema.d.ts +57 -0
  7. package/dist/domains/config/config-schema.js +10 -0
  8. package/dist/domains/config/config-types.d.ts +3 -0
  9. package/dist/domains/executor/executor-factory.d.ts +9 -0
  10. package/dist/domains/executor/executor-factory.js +17 -0
  11. package/dist/domains/executor/executor-types.d.ts +15 -0
  12. package/dist/domains/executor/local-executor.d.ts +12 -0
  13. package/dist/domains/executor/local-executor.js +48 -0
  14. package/dist/domains/executor/sandbox-executor.d.ts +16 -0
  15. package/dist/domains/executor/sandbox-executor.js +83 -0
  16. package/dist/domains/package/package-handler.d.ts +17 -0
  17. package/dist/domains/package/package-handler.js +58 -0
  18. package/dist/domains/package/package-repository.d.ts +9 -0
  19. package/dist/domains/package/package-repository.js +26 -0
  20. package/dist/domains/package/package-route.d.ts +2 -0
  21. package/dist/{api → domains/package}/package-route.js +38 -52
  22. package/dist/domains/package/package-schema.d.ts +244 -0
  23. package/dist/domains/package/package-schema.js +52 -0
  24. package/dist/domains/package/package-so.d.ts +78 -0
  25. package/dist/domains/package/package-so.js +61 -0
  26. package/dist/domains/package/package-so.test.js +378 -0
  27. package/dist/domains/package/package-types.d.ts +9 -0
  28. package/dist/domains/package/package-types.js +1 -0
  29. package/dist/domains/sandbox/clients/daytona-client.d.ts +17 -0
  30. package/dist/domains/sandbox/clients/daytona-client.js +112 -0
  31. package/dist/domains/sandbox/clients/sandock-client.d.ts +19 -0
  32. package/dist/domains/sandbox/clients/sandock-client.js +178 -0
  33. package/dist/domains/sandbox/sandbox-factory.d.ts +8 -0
  34. package/dist/domains/sandbox/sandbox-factory.js +23 -0
  35. package/dist/domains/sandbox/sandbox-pool-so.d.ts +25 -0
  36. package/dist/domains/sandbox/sandbox-pool-so.js +123 -0
  37. package/dist/domains/sandbox/sandbox-types.d.ts +25 -0
  38. package/dist/domains/sandbox/sandbox-types.js +1 -0
  39. package/dist/domains/sandbox/sandbox-utils.d.ts +3 -0
  40. package/dist/domains/sandbox/sandbox-utils.js +109 -0
  41. package/dist/domains/search/search-handler.d.ts +47 -0
  42. package/dist/domains/search/search-handler.js +113 -0
  43. package/dist/domains/search/search-route.d.ts +2 -0
  44. package/dist/domains/search/search-route.js +101 -0
  45. package/dist/domains/search/search-schema.d.ts +384 -0
  46. package/dist/domains/search/search-schema.js +99 -0
  47. package/dist/domains/search/search-so.d.ts +55 -0
  48. package/dist/{search/search-service.js → domains/search/search-so.js} +200 -297
  49. package/dist/shared/config/environment.d.ts +16 -0
  50. package/dist/shared/config/environment.js +41 -0
  51. package/dist/shared/schemas/common-schema.d.ts +249 -0
  52. package/dist/{schema.js → shared/schemas/common-schema.js} +37 -80
  53. package/dist/shared/schemas/index.d.ts +1 -0
  54. package/dist/shared/schemas/index.js +1 -0
  55. package/dist/shared/scripts-helpers/index.d.ts +60 -0
  56. package/dist/shared/scripts-helpers/index.js +61 -0
  57. package/dist/shared/utils/file-util.d.ts +1 -0
  58. package/dist/shared/utils/file-util.js +5 -0
  59. package/dist/shared/utils/index.d.ts +5 -0
  60. package/dist/shared/utils/index.js +5 -0
  61. package/dist/shared/utils/mcp-client-util.d.ts +31 -0
  62. package/dist/shared/utils/mcp-client-util.js +79 -0
  63. package/dist/shared/utils/package-util.d.ts +6 -0
  64. package/dist/shared/utils/package-util.js +53 -0
  65. package/dist/shared/utils/promise-util.d.ts +1 -0
  66. package/dist/shared/utils/promise-util.js +14 -0
  67. package/dist/{utils.d.ts → shared/utils/response-util.d.ts} +6 -2
  68. package/dist/{utils.js → shared/utils/response-util.js} +1 -6
  69. package/dist/shared/utils/string-util.d.ts +1 -0
  70. package/dist/shared/utils/string-util.js +25 -0
  71. package/dist/shared/utils/validation-util.d.ts +12 -0
  72. package/dist/shared/utils/validation-util.js +99 -0
  73. package/indexes/categories-list.json +1 -0
  74. package/indexes/packages-list.json +6 -0
  75. package/package.json +9 -2
  76. package/packages/developer-tools/neurolink.json +23 -0
  77. package/packages/search-data-extraction/ref-tools-mcp.json +7 -2
  78. package/README.dev.md +0 -195
  79. package/dist/api/package-handler.d.ts +0 -18
  80. package/dist/api/package-handler.js +0 -72
  81. package/dist/api/package-route.d.ts +0 -2
  82. package/dist/api/package-so.d.ts +0 -19
  83. package/dist/api/package-so.js +0 -263
  84. package/dist/api/package.test.js +0 -19
  85. package/dist/helper.d.ts +0 -72
  86. package/dist/helper.js +0 -278
  87. package/dist/sandbox/mcp-sandbox-client.d.ts +0 -37
  88. package/dist/sandbox/mcp-sandbox-client.js +0 -428
  89. package/dist/schema.d.ts +0 -806
  90. package/dist/search/search-route.d.ts +0 -3
  91. package/dist/search/search-route.js +0 -305
  92. package/dist/search/search-service.d.ts +0 -120
  93. package/dist/search/search.test.js +0 -100
  94. package/dist/types.d.ts +0 -27
  95. /package/dist/{api/package.test.d.ts → domains/config/config-types.js} +0 -0
  96. /package/dist/{search/search.test.d.ts → domains/executor/executor-types.js} +0 -0
  97. /package/dist/{types.js → domains/package/package-so.test.d.ts} +0 -0
@@ -0,0 +1,101 @@
1
+ import { createRoute, OpenAPIHono } from "@hono/zod-openapi";
2
+ import { createRouteResponses } from "../../shared/utils/response-util";
3
+ import { searchHandler } from "./search-handler";
4
+ import { facetsResponseSchema, healthResponseSchema, managementResponseSchema, searchQuerySchema, searchResponseSchema, suggestQuerySchema, suggestResponseSchema, } from "./search-schema";
5
+ export const searchRoutes = new OpenAPIHono();
6
+ const searchRoute = createRoute({
7
+ method: "get",
8
+ path: "/",
9
+ request: {
10
+ query: searchQuerySchema,
11
+ },
12
+ responses: createRouteResponses(searchResponseSchema, {
13
+ includeErrorResponses: true,
14
+ }),
15
+ });
16
+ searchRoutes.openapi(searchRoute, async (c) => {
17
+ const { q, limit, offset, category } = c.req.valid("query");
18
+ const result = await searchHandler.search({ q, limit, offset, category });
19
+ return c.json(result, 200);
20
+ });
21
+ const suggestRoute = createRoute({
22
+ method: "get",
23
+ path: "/suggest",
24
+ request: {
25
+ query: suggestQuerySchema,
26
+ },
27
+ responses: createRouteResponses(suggestResponseSchema, {
28
+ includeErrorResponses: true,
29
+ }),
30
+ });
31
+ searchRoutes.openapi(suggestRoute, async (c) => {
32
+ const { q, limit } = c.req.valid("query");
33
+ const result = await searchHandler.suggest(q, limit);
34
+ return c.json(result, 200);
35
+ });
36
+ const facetsRoute = createRoute({
37
+ method: "get",
38
+ path: "/facets",
39
+ responses: createRouteResponses(facetsResponseSchema, {
40
+ includeErrorResponses: true,
41
+ }),
42
+ });
43
+ searchRoutes.openapi(facetsRoute, async (c) => {
44
+ const result = await searchHandler.getFacets();
45
+ return c.json(result, 200);
46
+ });
47
+ const healthRoute = createRoute({
48
+ method: "get",
49
+ path: "/health",
50
+ responses: createRouteResponses(healthResponseSchema, {
51
+ includeErrorResponses: true,
52
+ }),
53
+ });
54
+ searchRoutes.openapi(healthRoute, async (c) => {
55
+ const result = await searchHandler.healthCheck();
56
+ return c.json(result, 200);
57
+ });
58
+ const initRoute = createRoute({
59
+ method: "post",
60
+ path: "/manage/init",
61
+ responses: createRouteResponses(managementResponseSchema, {
62
+ includeErrorResponses: true,
63
+ }),
64
+ });
65
+ searchRoutes.openapi(initRoute, async (c) => {
66
+ const result = await searchHandler.initialize();
67
+ return c.json(result, 200);
68
+ });
69
+ const indexRoute = createRoute({
70
+ method: "post",
71
+ path: "/manage/index",
72
+ responses: createRouteResponses(managementResponseSchema, {
73
+ includeErrorResponses: true,
74
+ }),
75
+ });
76
+ searchRoutes.openapi(indexRoute, async (c) => {
77
+ const result = await searchHandler.indexPackages();
78
+ return c.json(result, 200);
79
+ });
80
+ const clearRoute = createRoute({
81
+ method: "post",
82
+ path: "/manage/clear",
83
+ responses: createRouteResponses(managementResponseSchema, {
84
+ includeErrorResponses: true,
85
+ }),
86
+ });
87
+ searchRoutes.openapi(clearRoute, async (c) => {
88
+ const result = await searchHandler.clearIndex();
89
+ return c.json(result, 200);
90
+ });
91
+ const statsRoute = createRoute({
92
+ method: "get",
93
+ path: "/manage/stats",
94
+ responses: createRouteResponses(managementResponseSchema, {
95
+ includeErrorResponses: true,
96
+ }),
97
+ });
98
+ searchRoutes.openapi(statsRoute, async (c) => {
99
+ const result = await searchHandler.getStats();
100
+ return c.json(result, 200);
101
+ });
@@ -0,0 +1,384 @@
1
+ import { z } from "@hono/zod-openapi";
2
+ export declare const searchQuerySchema: z.ZodObject<{
3
+ q: z.ZodString;
4
+ limit: z.ZodOptional<z.ZodNumber>;
5
+ offset: z.ZodOptional<z.ZodNumber>;
6
+ category: z.ZodOptional<z.ZodString>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ q: string;
9
+ category?: string | undefined;
10
+ limit?: number | undefined;
11
+ offset?: number | undefined;
12
+ }, {
13
+ q: string;
14
+ category?: string | undefined;
15
+ limit?: number | undefined;
16
+ offset?: number | undefined;
17
+ }>;
18
+ export declare const searchResultSchema: z.ZodObject<{
19
+ id: z.ZodString;
20
+ name: z.ZodString;
21
+ packageName: z.ZodString;
22
+ description: z.ZodString;
23
+ category: z.ZodString;
24
+ validated: z.ZodBoolean;
25
+ author: z.ZodString;
26
+ toolCount: z.ZodNumber;
27
+ hasTools: z.ZodBoolean;
28
+ popularity: z.ZodNumber;
29
+ }, "strip", z.ZodTypeAny, {
30
+ description: string;
31
+ name: string;
32
+ packageName: string;
33
+ author: string;
34
+ category: string;
35
+ validated: boolean;
36
+ id: string;
37
+ hasTools: boolean;
38
+ popularity: number;
39
+ toolCount: number;
40
+ }, {
41
+ description: string;
42
+ name: string;
43
+ packageName: string;
44
+ author: string;
45
+ category: string;
46
+ validated: boolean;
47
+ id: string;
48
+ hasTools: boolean;
49
+ popularity: number;
50
+ toolCount: number;
51
+ }>;
52
+ export declare const searchResponseSchema: z.ZodObject<{
53
+ success: z.ZodBoolean;
54
+ code: z.ZodNumber;
55
+ message: z.ZodString;
56
+ } & {
57
+ data: z.ZodOptional<z.ZodObject<{
58
+ hits: z.ZodArray<z.ZodObject<{
59
+ id: z.ZodString;
60
+ name: z.ZodString;
61
+ packageName: z.ZodString;
62
+ description: z.ZodString;
63
+ category: z.ZodString;
64
+ validated: z.ZodBoolean;
65
+ author: z.ZodString;
66
+ toolCount: z.ZodNumber;
67
+ hasTools: z.ZodBoolean;
68
+ popularity: z.ZodNumber;
69
+ }, "strip", z.ZodTypeAny, {
70
+ description: string;
71
+ name: string;
72
+ packageName: string;
73
+ author: string;
74
+ category: string;
75
+ validated: boolean;
76
+ id: string;
77
+ hasTools: boolean;
78
+ popularity: number;
79
+ toolCount: number;
80
+ }, {
81
+ description: string;
82
+ name: string;
83
+ packageName: string;
84
+ author: string;
85
+ category: string;
86
+ validated: boolean;
87
+ id: string;
88
+ hasTools: boolean;
89
+ popularity: number;
90
+ toolCount: number;
91
+ }>, "many">;
92
+ query: z.ZodString;
93
+ processingTimeMs: z.ZodNumber;
94
+ limit: z.ZodNumber;
95
+ offset: z.ZodNumber;
96
+ estimatedTotalHits: z.ZodNumber;
97
+ }, "strip", z.ZodTypeAny, {
98
+ query: string;
99
+ limit: number;
100
+ offset: number;
101
+ hits: {
102
+ description: string;
103
+ name: string;
104
+ packageName: string;
105
+ author: string;
106
+ category: string;
107
+ validated: boolean;
108
+ id: string;
109
+ hasTools: boolean;
110
+ popularity: number;
111
+ toolCount: number;
112
+ }[];
113
+ processingTimeMs: number;
114
+ estimatedTotalHits: number;
115
+ }, {
116
+ query: string;
117
+ limit: number;
118
+ offset: number;
119
+ hits: {
120
+ description: string;
121
+ name: string;
122
+ packageName: string;
123
+ author: string;
124
+ category: string;
125
+ validated: boolean;
126
+ id: string;
127
+ hasTools: boolean;
128
+ popularity: number;
129
+ toolCount: number;
130
+ }[];
131
+ processingTimeMs: number;
132
+ estimatedTotalHits: number;
133
+ }>>;
134
+ }, "strip", z.ZodTypeAny, {
135
+ success: boolean;
136
+ code: number;
137
+ message: string;
138
+ data?: {
139
+ query: string;
140
+ limit: number;
141
+ offset: number;
142
+ hits: {
143
+ description: string;
144
+ name: string;
145
+ packageName: string;
146
+ author: string;
147
+ category: string;
148
+ validated: boolean;
149
+ id: string;
150
+ hasTools: boolean;
151
+ popularity: number;
152
+ toolCount: number;
153
+ }[];
154
+ processingTimeMs: number;
155
+ estimatedTotalHits: number;
156
+ } | undefined;
157
+ }, {
158
+ success: boolean;
159
+ code: number;
160
+ message: string;
161
+ data?: {
162
+ query: string;
163
+ limit: number;
164
+ offset: number;
165
+ hits: {
166
+ description: string;
167
+ name: string;
168
+ packageName: string;
169
+ author: string;
170
+ category: string;
171
+ validated: boolean;
172
+ id: string;
173
+ hasTools: boolean;
174
+ popularity: number;
175
+ toolCount: number;
176
+ }[];
177
+ processingTimeMs: number;
178
+ estimatedTotalHits: number;
179
+ } | undefined;
180
+ }>;
181
+ export declare const suggestQuerySchema: z.ZodObject<{
182
+ q: z.ZodString;
183
+ limit: z.ZodOptional<z.ZodNumber>;
184
+ }, "strip", z.ZodTypeAny, {
185
+ q: string;
186
+ limit?: number | undefined;
187
+ }, {
188
+ q: string;
189
+ limit?: number | undefined;
190
+ }>;
191
+ export declare const suggestResultSchema: z.ZodObject<{
192
+ name: z.ZodString;
193
+ packageName: z.ZodString;
194
+ category: z.ZodString;
195
+ highlighted: z.ZodString;
196
+ }, "strip", z.ZodTypeAny, {
197
+ name: string;
198
+ packageName: string;
199
+ category: string;
200
+ highlighted: string;
201
+ }, {
202
+ name: string;
203
+ packageName: string;
204
+ category: string;
205
+ highlighted: string;
206
+ }>;
207
+ export declare const suggestResponseSchema: z.ZodObject<{
208
+ success: z.ZodBoolean;
209
+ code: z.ZodNumber;
210
+ message: z.ZodString;
211
+ } & {
212
+ data: z.ZodOptional<z.ZodObject<{
213
+ suggestions: z.ZodArray<z.ZodObject<{
214
+ name: z.ZodString;
215
+ packageName: z.ZodString;
216
+ category: z.ZodString;
217
+ highlighted: z.ZodString;
218
+ }, "strip", z.ZodTypeAny, {
219
+ name: string;
220
+ packageName: string;
221
+ category: string;
222
+ highlighted: string;
223
+ }, {
224
+ name: string;
225
+ packageName: string;
226
+ category: string;
227
+ highlighted: string;
228
+ }>, "many">;
229
+ }, "strip", z.ZodTypeAny, {
230
+ suggestions: {
231
+ name: string;
232
+ packageName: string;
233
+ category: string;
234
+ highlighted: string;
235
+ }[];
236
+ }, {
237
+ suggestions: {
238
+ name: string;
239
+ packageName: string;
240
+ category: string;
241
+ highlighted: string;
242
+ }[];
243
+ }>>;
244
+ }, "strip", z.ZodTypeAny, {
245
+ success: boolean;
246
+ code: number;
247
+ message: string;
248
+ data?: {
249
+ suggestions: {
250
+ name: string;
251
+ packageName: string;
252
+ category: string;
253
+ highlighted: string;
254
+ }[];
255
+ } | undefined;
256
+ }, {
257
+ success: boolean;
258
+ code: number;
259
+ message: string;
260
+ data?: {
261
+ suggestions: {
262
+ name: string;
263
+ packageName: string;
264
+ category: string;
265
+ highlighted: string;
266
+ }[];
267
+ } | undefined;
268
+ }>;
269
+ export declare const facetsResponseSchema: z.ZodObject<{
270
+ success: z.ZodBoolean;
271
+ code: z.ZodNumber;
272
+ message: z.ZodString;
273
+ } & {
274
+ data: z.ZodOptional<z.ZodObject<{
275
+ categories: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
276
+ authors: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
277
+ validated: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodNumber>>;
278
+ }, "strip", z.ZodTypeAny, {
279
+ validated?: Record<string, number> | undefined;
280
+ categories?: Record<string, number> | undefined;
281
+ authors?: Record<string, number> | undefined;
282
+ }, {
283
+ validated?: Record<string, number> | undefined;
284
+ categories?: Record<string, number> | undefined;
285
+ authors?: Record<string, number> | undefined;
286
+ }>>;
287
+ }, "strip", z.ZodTypeAny, {
288
+ success: boolean;
289
+ code: number;
290
+ message: string;
291
+ data?: {
292
+ validated?: Record<string, number> | undefined;
293
+ categories?: Record<string, number> | undefined;
294
+ authors?: Record<string, number> | undefined;
295
+ } | undefined;
296
+ }, {
297
+ success: boolean;
298
+ code: number;
299
+ message: string;
300
+ data?: {
301
+ validated?: Record<string, number> | undefined;
302
+ categories?: Record<string, number> | undefined;
303
+ authors?: Record<string, number> | undefined;
304
+ } | undefined;
305
+ }>;
306
+ export declare const healthResponseSchema: z.ZodObject<{
307
+ success: z.ZodBoolean;
308
+ code: z.ZodNumber;
309
+ message: z.ZodString;
310
+ } & {
311
+ data: z.ZodOptional<z.ZodObject<{
312
+ status: z.ZodString;
313
+ host: z.ZodString;
314
+ initialized: z.ZodBoolean;
315
+ indexName: z.ZodString;
316
+ documentCount: z.ZodNumber;
317
+ }, "strip", z.ZodTypeAny, {
318
+ status: string;
319
+ host: string;
320
+ initialized: boolean;
321
+ indexName: string;
322
+ documentCount: number;
323
+ }, {
324
+ status: string;
325
+ host: string;
326
+ initialized: boolean;
327
+ indexName: string;
328
+ documentCount: number;
329
+ }>>;
330
+ }, "strip", z.ZodTypeAny, {
331
+ success: boolean;
332
+ code: number;
333
+ message: string;
334
+ data?: {
335
+ status: string;
336
+ host: string;
337
+ initialized: boolean;
338
+ indexName: string;
339
+ documentCount: number;
340
+ } | undefined;
341
+ }, {
342
+ success: boolean;
343
+ code: number;
344
+ message: string;
345
+ data?: {
346
+ status: string;
347
+ host: string;
348
+ initialized: boolean;
349
+ indexName: string;
350
+ documentCount: number;
351
+ } | undefined;
352
+ }>;
353
+ export declare const managementResponseSchema: z.ZodObject<{
354
+ success: z.ZodBoolean;
355
+ code: z.ZodNumber;
356
+ message: z.ZodString;
357
+ } & {
358
+ data: z.ZodOptional<z.ZodObject<{
359
+ message: z.ZodString;
360
+ details: z.ZodOptional<z.ZodAny>;
361
+ }, "strip", z.ZodTypeAny, {
362
+ message: string;
363
+ details?: any;
364
+ }, {
365
+ message: string;
366
+ details?: any;
367
+ }>>;
368
+ }, "strip", z.ZodTypeAny, {
369
+ success: boolean;
370
+ code: number;
371
+ message: string;
372
+ data?: {
373
+ message: string;
374
+ details?: any;
375
+ } | undefined;
376
+ }, {
377
+ success: boolean;
378
+ code: number;
379
+ message: string;
380
+ data?: {
381
+ message: string;
382
+ details?: any;
383
+ } | undefined;
384
+ }>;
@@ -0,0 +1,99 @@
1
+ import { z } from "@hono/zod-openapi";
2
+ import { BaseResponseSchema } from "../../shared/schemas/common-schema";
3
+ export const searchQuerySchema = z.object({
4
+ q: z.string().openapi({
5
+ description: "Search query",
6
+ example: "database",
7
+ }),
8
+ limit: z.coerce.number().min(1).max(100).optional().openapi({
9
+ description: "Limit the number of results",
10
+ example: 20,
11
+ }),
12
+ offset: z.coerce.number().min(0).optional().openapi({
13
+ description: "Offset for pagination",
14
+ example: 0,
15
+ }),
16
+ category: z.string().optional().openapi({
17
+ description: "Filter by category",
18
+ example: "databases",
19
+ }),
20
+ });
21
+ export const searchResultSchema = z
22
+ .object({
23
+ id: z.string(),
24
+ name: z.string(),
25
+ packageName: z.string(),
26
+ description: z.string(),
27
+ category: z.string(),
28
+ validated: z.boolean(),
29
+ author: z.string(),
30
+ toolCount: z.number(),
31
+ hasTools: z.boolean(),
32
+ popularity: z.number(),
33
+ })
34
+ .openapi("SearchResult");
35
+ export const searchResponseSchema = BaseResponseSchema.extend({
36
+ data: z
37
+ .object({
38
+ hits: z.array(searchResultSchema),
39
+ query: z.string(),
40
+ processingTimeMs: z.number(),
41
+ limit: z.number(),
42
+ offset: z.number(),
43
+ estimatedTotalHits: z.number(),
44
+ })
45
+ .optional(),
46
+ }).openapi("SearchResponse");
47
+ export const suggestQuerySchema = z.object({
48
+ q: z.string().openapi({
49
+ description: "Suggestion query",
50
+ example: "data",
51
+ }),
52
+ limit: z.coerce.number().min(1).max(20).optional().openapi({
53
+ description: "Limit the number of results",
54
+ example: 10,
55
+ }),
56
+ });
57
+ export const suggestResultSchema = z
58
+ .object({
59
+ name: z.string(),
60
+ packageName: z.string(),
61
+ category: z.string(),
62
+ highlighted: z.string(),
63
+ })
64
+ .openapi("SuggestResult");
65
+ export const suggestResponseSchema = BaseResponseSchema.extend({
66
+ data: z
67
+ .object({
68
+ suggestions: z.array(suggestResultSchema),
69
+ })
70
+ .optional(),
71
+ }).openapi("SuggestResponse");
72
+ export const facetsResponseSchema = BaseResponseSchema.extend({
73
+ data: z
74
+ .object({
75
+ categories: z.record(z.string(), z.number()).optional(),
76
+ authors: z.record(z.string(), z.number()).optional(),
77
+ validated: z.record(z.string(), z.number()).optional(),
78
+ })
79
+ .optional(),
80
+ }).openapi("FacetsResponse");
81
+ export const healthResponseSchema = BaseResponseSchema.extend({
82
+ data: z
83
+ .object({
84
+ status: z.string(),
85
+ host: z.string(),
86
+ initialized: z.boolean(),
87
+ indexName: z.string(),
88
+ documentCount: z.number(),
89
+ })
90
+ .optional(),
91
+ }).openapi("HealthResponse");
92
+ export const managementResponseSchema = BaseResponseSchema.extend({
93
+ data: z
94
+ .object({
95
+ message: z.string(),
96
+ details: z.any().optional(),
97
+ })
98
+ .optional(),
99
+ }).openapi("ManagementResponse");
@@ -0,0 +1,55 @@
1
+ import { type Index } from "meilisearch";
2
+ interface SearchOptions {
3
+ limit?: number;
4
+ offset?: number;
5
+ filter?: string | string[];
6
+ sort?: string[];
7
+ matchingStrategy?: string;
8
+ }
9
+ /**
10
+ * Search Service Object
11
+ * Manages MeiliSearch connection and indexing with singleton pattern
12
+ */
13
+ export declare class SearchSO {
14
+ private readonly client;
15
+ private _index;
16
+ private readonly host;
17
+ private readonly indexName;
18
+ private static instance;
19
+ private constructor();
20
+ get index(): Index<Record<string, any>> | null;
21
+ get isInitialized(): boolean;
22
+ static getInstance(host?: string, apiKey?: string, indexName?: string): Promise<SearchSO>;
23
+ private configureIndex;
24
+ search(query: string, options?: SearchOptions): Promise<{
25
+ hits: import("meilisearch").Hits<Record<string, any>>;
26
+ query: string;
27
+ processingTimeMs: number;
28
+ limit: number;
29
+ offset: number;
30
+ estimatedTotalHits: number;
31
+ }>;
32
+ suggest(query: string, limit?: number): Promise<{
33
+ name: string;
34
+ packageName: string;
35
+ category: string;
36
+ highlighted: string;
37
+ }[]>;
38
+ indexPackages(packagesPath: string): Promise<import("meilisearch").IndexStats>;
39
+ getFacets(): Promise<import("meilisearch").FacetDistribution | undefined>;
40
+ getStats(): Promise<import("meilisearch").IndexStats>;
41
+ clearIndex(): Promise<void>;
42
+ healthCheck(): Promise<{
43
+ status: string;
44
+ host: string;
45
+ initialized: boolean;
46
+ indexName: string;
47
+ documentCount: number;
48
+ }>;
49
+ private transformPackageForIndex;
50
+ private createSafeId;
51
+ private calculatePopularityScore;
52
+ private extractAuthor;
53
+ private extractKeywords;
54
+ }
55
+ export {};