@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,26 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import allPackagesList from "../../../indexes/packages-list.json";
4
+ import { MCPServerPackageConfigSchema } from "../../shared/schemas";
5
+ export class PackageRepository {
6
+ constructor(packagesDir) {
7
+ this.packagesList = allPackagesList;
8
+ this.packagesDir = packagesDir;
9
+ }
10
+ getPackageConfig(packageName) {
11
+ const packageInfo = this.packagesList[packageName];
12
+ if (!packageInfo) {
13
+ throw new Error(`Package '${packageName}' not found`);
14
+ }
15
+ const configPath = path.join(this.packagesDir, packageInfo.path);
16
+ const configContent = fs.readFileSync(configPath, "utf-8");
17
+ const packageConfig = MCPServerPackageConfigSchema.parse(JSON.parse(configContent));
18
+ return packageConfig;
19
+ }
20
+ getAllPackages() {
21
+ return this.packagesList;
22
+ }
23
+ exists(packageName) {
24
+ return !!this.packagesList[packageName];
25
+ }
26
+ }
@@ -0,0 +1,2 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ export declare const packageRoutes: OpenAPIHono<import("hono").Env, {}, "/">;
@@ -1,55 +1,9 @@
1
- import path from "node:path";
2
1
  import { createRoute, OpenAPIHono } from "@hono/zod-openapi";
3
- import { getPythonDependencies } from "../helper";
4
- import { CategoriesResponseSchema, ExecuteToolResponseSchema, FeaturedResponseSchema, PackageDetailResponseSchema, PackagesListResponseSchema, packageNameQuerySchema, ToolExecuteSchema, ToolsResponseSchema, } from "../schema";
5
- import { createResponse, createRouteResponses, getDirname } from "../utils";
2
+ import { createResponse, createRouteResponses } from "../../shared/utils/response-util";
3
+ import { getPythonDependencies } from "../../shared/utils/validation-util";
6
4
  import { packageHandler } from "./package-handler";
7
- const __dirname = getDirname(import.meta.url);
5
+ import { ExecuteToolResponseSchema, PackageDetailResponseSchema, PackagesListResponseSchema, packageNameQuerySchema, ToolExecuteSchema, ToolsResponseSchema, } from "./package-schema";
8
6
  export const packageRoutes = new OpenAPIHono();
9
- const featuredRoute = createRoute({
10
- method: "get",
11
- path: "/config/featured",
12
- responses: createRouteResponses(FeaturedResponseSchema),
13
- });
14
- packageRoutes.openapi(featuredRoute, async (c) => {
15
- const featuredPath = path.join(__dirname, "../../config/featured.mjs");
16
- const featuredModule = await import(`file://${featuredPath}`);
17
- const featured = featuredModule.default;
18
- const response = createResponse(featured);
19
- return c.json(response, 200);
20
- });
21
- const categoriesRoute = createRoute({
22
- method: "get",
23
- path: "/config/categories",
24
- responses: createRouteResponses(CategoriesResponseSchema),
25
- });
26
- packageRoutes.openapi(categoriesRoute, async (c) => {
27
- const categoriesPath = path.join(__dirname, "../../config/categories.mjs");
28
- const categoriesModule = await import(`file://${categoriesPath}`);
29
- const categories = categoriesModule.default;
30
- const response = createResponse(categories);
31
- return c.json(response, 200);
32
- });
33
- const packagesListRoute = createRoute({
34
- method: "get",
35
- path: "/indexes/packages-list",
36
- responses: createRouteResponses(PackagesListResponseSchema),
37
- });
38
- packageRoutes.openapi(packagesListRoute, async (c) => {
39
- const packagesList = (await import("../../indexes/packages-list.json")).default;
40
- const response = createResponse(packagesList);
41
- return c.json(response, 200);
42
- });
43
- const pythonTomlRoute = createRoute({
44
- method: "get",
45
- path: "/python-mcp/pyproject",
46
- responses: createRouteResponses(PackagesListResponseSchema),
47
- });
48
- packageRoutes.openapi(pythonTomlRoute, async (c) => {
49
- const pythonDependencies = getPythonDependencies();
50
- const response = createResponse(pythonDependencies);
51
- return c.json(response, 200);
52
- });
53
7
  const packageDetailRoute = createRoute({
54
8
  method: "get",
55
9
  path: "/packages/detail",
@@ -58,7 +12,11 @@ const packageDetailRoute = createRoute({
58
12
  includeErrorResponses: true,
59
13
  }),
60
14
  });
61
- packageRoutes.openapi(packageDetailRoute, packageHandler.getPackageDetail);
15
+ packageRoutes.openapi(packageDetailRoute, async (c) => {
16
+ const { packageName } = c.req.valid("query");
17
+ const result = await packageHandler.getPackageDetail(packageName);
18
+ return c.json(result, 200);
19
+ });
62
20
  const toolsRoute = createRoute({
63
21
  method: "get",
64
22
  path: "/packages/tools",
@@ -67,7 +25,11 @@ const toolsRoute = createRoute({
67
25
  includeErrorResponses: true,
68
26
  }),
69
27
  });
70
- packageRoutes.openapi(toolsRoute, packageHandler.listTools);
28
+ packageRoutes.openapi(toolsRoute, async (c) => {
29
+ const { packageName } = c.req.valid("query");
30
+ const result = await packageHandler.listTools(packageName);
31
+ return c.json(result, 200);
32
+ });
71
33
  const executeToolRoute = createRoute({
72
34
  method: "post",
73
35
  path: "/packages/run",
@@ -85,4 +47,28 @@ const executeToolRoute = createRoute({
85
47
  includeErrorResponses: true,
86
48
  }),
87
49
  });
88
- packageRoutes.openapi(executeToolRoute, packageHandler.executeTool);
50
+ packageRoutes.openapi(executeToolRoute, async (c) => {
51
+ const body = c.req.valid("json");
52
+ const result = await packageHandler.executeTool(body.packageName, body.toolKey, body.inputData, body.envs);
53
+ return c.json(result, 200);
54
+ });
55
+ const packagesListRoute = createRoute({
56
+ method: "get",
57
+ path: "/indexes/packages-list",
58
+ responses: createRouteResponses(PackagesListResponseSchema),
59
+ });
60
+ packageRoutes.openapi(packagesListRoute, async (c) => {
61
+ const packagesList = (await import("../../../indexes/packages-list.json")).default;
62
+ const response = createResponse(packagesList);
63
+ return c.json(response, 200);
64
+ });
65
+ const pythonTomlRoute = createRoute({
66
+ method: "get",
67
+ path: "/python-mcp/pyproject",
68
+ responses: createRouteResponses(PackagesListResponseSchema),
69
+ });
70
+ packageRoutes.openapi(pythonTomlRoute, async (c) => {
71
+ const pythonDependencies = getPythonDependencies();
72
+ const response = createResponse(pythonDependencies);
73
+ return c.json(response, 200);
74
+ });
@@ -0,0 +1,244 @@
1
+ import { z } from "@hono/zod-openapi";
2
+ export declare const packageNameQuerySchema: z.ZodObject<{
3
+ packageName: z.ZodString;
4
+ }, "strip", z.ZodTypeAny, {
5
+ packageName: string;
6
+ }, {
7
+ packageName: string;
8
+ }>;
9
+ export declare const ToolExecuteSchema: z.ZodObject<{
10
+ packageName: z.ZodString;
11
+ toolKey: z.ZodString;
12
+ inputData: z.ZodRecord<z.ZodString, z.ZodUnknown>;
13
+ envs: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
14
+ }, "strip", z.ZodTypeAny, {
15
+ packageName: string;
16
+ toolKey: string;
17
+ inputData: Record<string, unknown>;
18
+ envs?: Record<string, string> | undefined;
19
+ }, {
20
+ packageName: string;
21
+ toolKey: string;
22
+ inputData: Record<string, unknown>;
23
+ envs?: Record<string, string> | undefined;
24
+ }>;
25
+ export declare const PackageDetailResponseSchema: z.ZodObject<{
26
+ success: z.ZodBoolean;
27
+ code: z.ZodNumber;
28
+ message: z.ZodString;
29
+ } & {
30
+ data: z.ZodOptional<z.ZodObject<{
31
+ name: z.ZodOptional<z.ZodString>;
32
+ packageName: z.ZodString;
33
+ description: z.ZodOptional<z.ZodString>;
34
+ category: z.ZodOptional<z.ZodString>;
35
+ validated: z.ZodOptional<z.ZodBoolean>;
36
+ runtime: z.ZodOptional<z.ZodEnum<["node", "python", "java", "go"]>>;
37
+ tools: z.ZodOptional<z.ZodArray<z.ZodObject<{
38
+ name: z.ZodString;
39
+ description: z.ZodOptional<z.ZodString>;
40
+ inputSchema: z.ZodOptional<z.ZodObject<{
41
+ type: z.ZodString;
42
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
43
+ required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
44
+ }, "strip", z.ZodTypeAny, {
45
+ type: string;
46
+ properties?: Record<string, unknown> | undefined;
47
+ required?: string[] | undefined;
48
+ }, {
49
+ type: string;
50
+ properties?: Record<string, unknown> | undefined;
51
+ required?: string[] | undefined;
52
+ }>>;
53
+ }, "strip", z.ZodTypeAny, {
54
+ name: string;
55
+ description?: string | undefined;
56
+ inputSchema?: {
57
+ type: string;
58
+ properties?: Record<string, unknown> | undefined;
59
+ required?: string[] | undefined;
60
+ } | undefined;
61
+ }, {
62
+ name: string;
63
+ description?: string | undefined;
64
+ inputSchema?: {
65
+ type: string;
66
+ properties?: Record<string, unknown> | undefined;
67
+ required?: string[] | undefined;
68
+ } | undefined;
69
+ }>, "many">>;
70
+ }, "strip", z.ZodTypeAny, {
71
+ packageName: string;
72
+ description?: string | undefined;
73
+ name?: string | undefined;
74
+ runtime?: "node" | "python" | "java" | "go" | undefined;
75
+ category?: string | undefined;
76
+ validated?: boolean | undefined;
77
+ tools?: {
78
+ name: string;
79
+ description?: string | undefined;
80
+ inputSchema?: {
81
+ type: string;
82
+ properties?: Record<string, unknown> | undefined;
83
+ required?: string[] | undefined;
84
+ } | undefined;
85
+ }[] | undefined;
86
+ }, {
87
+ packageName: string;
88
+ description?: string | undefined;
89
+ name?: string | undefined;
90
+ runtime?: "node" | "python" | "java" | "go" | undefined;
91
+ category?: string | undefined;
92
+ validated?: boolean | undefined;
93
+ tools?: {
94
+ name: string;
95
+ description?: string | undefined;
96
+ inputSchema?: {
97
+ type: string;
98
+ properties?: Record<string, unknown> | undefined;
99
+ required?: string[] | undefined;
100
+ } | undefined;
101
+ }[] | undefined;
102
+ }>>;
103
+ }, "strip", z.ZodTypeAny, {
104
+ success: boolean;
105
+ code: number;
106
+ message: string;
107
+ data?: {
108
+ packageName: string;
109
+ description?: string | undefined;
110
+ name?: string | undefined;
111
+ runtime?: "node" | "python" | "java" | "go" | undefined;
112
+ category?: string | undefined;
113
+ validated?: boolean | undefined;
114
+ tools?: {
115
+ name: string;
116
+ description?: string | undefined;
117
+ inputSchema?: {
118
+ type: string;
119
+ properties?: Record<string, unknown> | undefined;
120
+ required?: string[] | undefined;
121
+ } | undefined;
122
+ }[] | undefined;
123
+ } | undefined;
124
+ }, {
125
+ success: boolean;
126
+ code: number;
127
+ message: string;
128
+ data?: {
129
+ packageName: string;
130
+ description?: string | undefined;
131
+ name?: string | undefined;
132
+ runtime?: "node" | "python" | "java" | "go" | undefined;
133
+ category?: string | undefined;
134
+ validated?: boolean | undefined;
135
+ tools?: {
136
+ name: string;
137
+ description?: string | undefined;
138
+ inputSchema?: {
139
+ type: string;
140
+ properties?: Record<string, unknown> | undefined;
141
+ required?: string[] | undefined;
142
+ } | undefined;
143
+ }[] | undefined;
144
+ } | undefined;
145
+ }>;
146
+ export declare const ToolsResponseSchema: z.ZodObject<{
147
+ success: z.ZodBoolean;
148
+ code: z.ZodNumber;
149
+ message: z.ZodString;
150
+ } & {
151
+ data: z.ZodOptional<z.ZodArray<z.ZodObject<{
152
+ name: z.ZodString;
153
+ description: z.ZodOptional<z.ZodString>;
154
+ inputSchema: z.ZodOptional<z.ZodObject<{
155
+ type: z.ZodString;
156
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
157
+ required: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
158
+ }, "strip", z.ZodTypeAny, {
159
+ type: string;
160
+ properties?: Record<string, unknown> | undefined;
161
+ required?: string[] | undefined;
162
+ }, {
163
+ type: string;
164
+ properties?: Record<string, unknown> | undefined;
165
+ required?: string[] | undefined;
166
+ }>>;
167
+ }, "strip", z.ZodTypeAny, {
168
+ name: string;
169
+ description?: string | undefined;
170
+ inputSchema?: {
171
+ type: string;
172
+ properties?: Record<string, unknown> | undefined;
173
+ required?: string[] | undefined;
174
+ } | undefined;
175
+ }, {
176
+ name: string;
177
+ description?: string | undefined;
178
+ inputSchema?: {
179
+ type: string;
180
+ properties?: Record<string, unknown> | undefined;
181
+ required?: string[] | undefined;
182
+ } | undefined;
183
+ }>, "many">>;
184
+ }, "strip", z.ZodTypeAny, {
185
+ success: boolean;
186
+ code: number;
187
+ message: string;
188
+ data?: {
189
+ name: string;
190
+ description?: string | undefined;
191
+ inputSchema?: {
192
+ type: string;
193
+ properties?: Record<string, unknown> | undefined;
194
+ required?: string[] | undefined;
195
+ } | undefined;
196
+ }[] | undefined;
197
+ }, {
198
+ success: boolean;
199
+ code: number;
200
+ message: string;
201
+ data?: {
202
+ name: string;
203
+ description?: string | undefined;
204
+ inputSchema?: {
205
+ type: string;
206
+ properties?: Record<string, unknown> | undefined;
207
+ required?: string[] | undefined;
208
+ } | undefined;
209
+ }[] | undefined;
210
+ }>;
211
+ export declare const ExecuteToolResponseSchema: z.ZodObject<{
212
+ success: z.ZodBoolean;
213
+ code: z.ZodNumber;
214
+ message: z.ZodString;
215
+ } & {
216
+ data: z.ZodOptional<z.ZodUnknown>;
217
+ }, "strip", z.ZodTypeAny, {
218
+ success: boolean;
219
+ code: number;
220
+ message: string;
221
+ data?: unknown;
222
+ }, {
223
+ success: boolean;
224
+ code: number;
225
+ message: string;
226
+ data?: unknown;
227
+ }>;
228
+ export declare const PackagesListResponseSchema: z.ZodObject<{
229
+ success: z.ZodBoolean;
230
+ code: z.ZodNumber;
231
+ message: z.ZodString;
232
+ } & {
233
+ data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
234
+ }, "strip", z.ZodTypeAny, {
235
+ success: boolean;
236
+ code: number;
237
+ message: string;
238
+ data?: Record<string, unknown> | undefined;
239
+ }, {
240
+ success: boolean;
241
+ code: number;
242
+ message: string;
243
+ data?: Record<string, unknown> | undefined;
244
+ }>;
@@ -0,0 +1,52 @@
1
+ import { z } from "@hono/zod-openapi";
2
+ import { BaseResponseSchema } from "../../shared/schemas/common-schema";
3
+ export const packageNameQuerySchema = z.object({
4
+ packageName: z
5
+ .string()
6
+ .min(1)
7
+ .openapi({
8
+ param: { name: "packageName", in: "query" },
9
+ example: "@modelcontextprotocol/server-filesystem",
10
+ description: "Package name",
11
+ }),
12
+ });
13
+ export const ToolExecuteSchema = z
14
+ .object({
15
+ packageName: z.string().openapi({ example: "@modelcontextprotocol/server-filesystem" }),
16
+ toolKey: z.string().openapi({ example: "read_file" }),
17
+ inputData: z.record(z.unknown()).openapi({ example: { path: "/tmp/test.txt" } }),
18
+ envs: z.record(z.string()).optional(),
19
+ })
20
+ .openapi("ToolExecute");
21
+ const ToolDataSchema = z.object({
22
+ name: z.string(),
23
+ description: z.string().optional(),
24
+ inputSchema: z
25
+ .object({
26
+ type: z.string(),
27
+ properties: z.record(z.unknown()).optional(),
28
+ required: z.array(z.string()).optional(),
29
+ })
30
+ .optional(),
31
+ });
32
+ const PackageDetailDataSchema = z.object({
33
+ name: z.string().optional(),
34
+ packageName: z.string(),
35
+ description: z.string().optional(),
36
+ category: z.string().optional(),
37
+ validated: z.boolean().optional(),
38
+ runtime: z.enum(["node", "python", "java", "go"]).optional(),
39
+ tools: z.array(ToolDataSchema).optional(),
40
+ });
41
+ export const PackageDetailResponseSchema = BaseResponseSchema.extend({
42
+ data: PackageDetailDataSchema.optional(),
43
+ }).openapi("PackageDetailResponse");
44
+ export const ToolsResponseSchema = BaseResponseSchema.extend({
45
+ data: z.array(ToolDataSchema).optional(),
46
+ }).openapi("ToolsResponse");
47
+ export const ExecuteToolResponseSchema = BaseResponseSchema.extend({
48
+ data: z.unknown().optional(),
49
+ }).openapi("ExecuteToolResponse");
50
+ export const PackagesListResponseSchema = BaseResponseSchema.extend({
51
+ data: z.record(z.unknown()).optional(),
52
+ }).openapi("PackagesListResponse");
@@ -0,0 +1,78 @@
1
+ import type { Tool } from "@modelcontextprotocol/sdk/types.js";
2
+ import type { ToolExecutor } from "../executor/executor-types";
3
+ import type { PackageRepository } from "./package-repository";
4
+ export declare class PackageSO {
5
+ private readonly _packageName;
6
+ private readonly _config;
7
+ private readonly _packageInfo;
8
+ private readonly _executor;
9
+ private constructor();
10
+ get packageName(): string;
11
+ get name(): string | undefined;
12
+ get description(): string | undefined;
13
+ get category(): string | undefined;
14
+ get validated(): boolean | undefined;
15
+ get config(): {
16
+ type: "mcp-server";
17
+ runtime: "node" | "python" | "java" | "go";
18
+ packageName: string;
19
+ description?: string | undefined;
20
+ name?: string | undefined;
21
+ key?: string | undefined;
22
+ packageVersion?: string | undefined;
23
+ bin?: string | undefined;
24
+ binArgs?: string[] | undefined;
25
+ readme?: string | undefined;
26
+ url?: string | undefined;
27
+ license?: string | undefined;
28
+ logo?: string | undefined;
29
+ author?: string | undefined;
30
+ env?: Record<string, {
31
+ description: string;
32
+ required: boolean;
33
+ }> | undefined;
34
+ };
35
+ static init(packageName: string, repository: PackageRepository, executor: ToolExecutor): Promise<PackageSO>;
36
+ getTools(): Promise<Tool[]>;
37
+ executeTool(toolKey: string, inputData: Record<string, unknown>, envs?: Record<string, string>): Promise<unknown>;
38
+ getDetailWithTools(): Promise<{
39
+ name: string | undefined;
40
+ packageName: string;
41
+ description: string | undefined;
42
+ category: string | undefined;
43
+ validated: boolean | undefined;
44
+ tools: {
45
+ [x: string]: unknown;
46
+ name: string;
47
+ inputSchema: {
48
+ [x: string]: unknown;
49
+ type: "object";
50
+ properties?: {
51
+ [x: string]: unknown;
52
+ } | undefined;
53
+ required?: string[] | undefined;
54
+ };
55
+ description?: string | undefined;
56
+ title?: string | undefined;
57
+ outputSchema?: {
58
+ [x: string]: unknown;
59
+ type: "object";
60
+ properties?: {
61
+ [x: string]: unknown;
62
+ } | undefined;
63
+ required?: string[] | undefined;
64
+ } | undefined;
65
+ annotations?: {
66
+ [x: string]: unknown;
67
+ title?: string | undefined;
68
+ readOnlyHint?: boolean | undefined;
69
+ destructiveHint?: boolean | undefined;
70
+ idempotentHint?: boolean | undefined;
71
+ openWorldHint?: boolean | undefined;
72
+ } | undefined;
73
+ _meta?: {
74
+ [x: string]: unknown;
75
+ } | undefined;
76
+ }[] | undefined;
77
+ }>;
78
+ }
@@ -0,0 +1,61 @@
1
+ export class PackageSO {
2
+ constructor(_packageName, _config, _packageInfo, _repository, _executor) {
3
+ this._packageName = _packageName;
4
+ this._config = _config;
5
+ this._packageInfo = _packageInfo;
6
+ this._executor = _executor;
7
+ }
8
+ get packageName() {
9
+ return this._packageName;
10
+ }
11
+ get name() {
12
+ return this._config.name;
13
+ }
14
+ get description() {
15
+ return this._config.description;
16
+ }
17
+ get category() {
18
+ return this._packageInfo.category;
19
+ }
20
+ get validated() {
21
+ return this._packageInfo.validated;
22
+ }
23
+ get config() {
24
+ return this._config;
25
+ }
26
+ static async init(packageName, repository, executor) {
27
+ const config = repository.getPackageConfig(packageName);
28
+ const allPackages = repository.getAllPackages();
29
+ const packageInfo = allPackages[packageName] || {};
30
+ return new PackageSO(packageName, config, packageInfo, repository, executor);
31
+ }
32
+ async getTools() {
33
+ return await this._executor.listTools(this.packageName);
34
+ }
35
+ async executeTool(toolKey, inputData, envs) {
36
+ return await this._executor.executeTool({
37
+ packageName: this.packageName,
38
+ toolKey,
39
+ inputData,
40
+ envs,
41
+ });
42
+ }
43
+ async getDetailWithTools() {
44
+ let tools;
45
+ try {
46
+ tools = await this.getTools();
47
+ }
48
+ catch (error) {
49
+ console.warn(`[PackageSO] Failed to get tools for ${this.packageName}:`, error);
50
+ tools = undefined;
51
+ }
52
+ return {
53
+ name: this.name,
54
+ packageName: this.packageName,
55
+ description: this.description,
56
+ category: this.category,
57
+ validated: this.validated,
58
+ tools,
59
+ };
60
+ }
61
+ }