@toolsdk.ai/registry 1.0.114 → 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/sandbox/clients/daytona-client.d.ts +17 -0
  29. package/dist/domains/sandbox/clients/daytona-client.js +112 -0
  30. package/dist/domains/sandbox/clients/sandock-client.d.ts +19 -0
  31. package/dist/domains/sandbox/clients/sandock-client.js +178 -0
  32. package/dist/domains/sandbox/sandbox-factory.d.ts +8 -0
  33. package/dist/domains/sandbox/sandbox-factory.js +23 -0
  34. package/dist/domains/sandbox/sandbox-pool-so.d.ts +25 -0
  35. package/dist/domains/sandbox/sandbox-pool-so.js +123 -0
  36. package/dist/domains/sandbox/sandbox-types.d.ts +25 -0
  37. package/dist/domains/sandbox/sandbox-types.js +1 -0
  38. package/dist/domains/sandbox/sandbox-utils.d.ts +3 -0
  39. package/dist/domains/sandbox/sandbox-utils.js +109 -0
  40. package/dist/domains/search/search-handler.d.ts +47 -0
  41. package/dist/domains/search/search-handler.js +113 -0
  42. package/dist/domains/search/search-route.d.ts +2 -0
  43. package/dist/domains/search/search-route.js +101 -0
  44. package/dist/domains/search/search-schema.d.ts +384 -0
  45. package/dist/domains/search/search-schema.js +99 -0
  46. package/dist/domains/search/search-so.d.ts +55 -0
  47. package/dist/{search/search-service.js → domains/search/search-so.js} +200 -297
  48. package/dist/shared/config/environment.d.ts +16 -0
  49. package/dist/shared/config/environment.js +41 -0
  50. package/dist/shared/schemas/common-schema.d.ts +249 -0
  51. package/dist/{schema.js → shared/schemas/common-schema.js} +37 -80
  52. package/dist/shared/schemas/index.d.ts +1 -0
  53. package/dist/shared/schemas/index.js +1 -0
  54. package/dist/shared/scripts-helpers/index.d.ts +60 -0
  55. package/dist/shared/scripts-helpers/index.js +61 -0
  56. package/dist/shared/utils/file-util.d.ts +1 -0
  57. package/dist/shared/utils/file-util.js +5 -0
  58. package/dist/shared/utils/index.d.ts +5 -0
  59. package/dist/shared/utils/index.js +5 -0
  60. package/dist/shared/utils/mcp-client-util.d.ts +31 -0
  61. package/dist/shared/utils/mcp-client-util.js +79 -0
  62. package/dist/shared/utils/package-util.d.ts +6 -0
  63. package/dist/shared/utils/package-util.js +53 -0
  64. package/dist/shared/utils/promise-util.d.ts +1 -0
  65. package/dist/shared/utils/promise-util.js +14 -0
  66. package/dist/{utils.d.ts → shared/utils/response-util.d.ts} +6 -2
  67. package/dist/{utils.js → shared/utils/response-util.js} +1 -6
  68. package/dist/shared/utils/string-util.d.ts +1 -0
  69. package/dist/shared/utils/string-util.js +25 -0
  70. package/dist/shared/utils/validation-util.d.ts +12 -0
  71. package/dist/shared/utils/validation-util.js +99 -0
  72. package/indexes/categories-list.json +1 -0
  73. package/indexes/packages-list.json +6 -0
  74. package/package.json +8 -2
  75. package/packages/developer-tools/neurolink.json +23 -0
  76. package/README.dev.md +0 -195
  77. package/dist/api/package-handler.d.ts +0 -18
  78. package/dist/api/package-handler.js +0 -73
  79. package/dist/api/package-route.d.ts +0 -2
  80. package/dist/api/package-so.d.ts +0 -19
  81. package/dist/api/package-so.js +0 -223
  82. package/dist/api/package.test.js +0 -19
  83. package/dist/helper.d.ts +0 -74
  84. package/dist/helper.js +0 -312
  85. package/dist/sandbox/mcp-sandbox-client.d.ts +0 -16
  86. package/dist/sandbox/mcp-sandbox-client.js +0 -229
  87. package/dist/sandbox/mcp-sandbox-client.test.js +0 -491
  88. package/dist/schema.d.ts +0 -806
  89. package/dist/search/search-route.d.ts +0 -3
  90. package/dist/search/search-route.js +0 -305
  91. package/dist/search/search-service.d.ts +0 -120
  92. package/dist/search/search.test.js +0 -100
  93. package/dist/types.d.ts +0 -28
  94. /package/dist/{api/package.test.d.ts → domains/config/config-types.js} +0 -0
  95. /package/dist/{sandbox/mcp-sandbox-client.test.d.ts → domains/executor/executor-types.js} +0 -0
  96. /package/dist/{search/search.test.d.ts → domains/package/package-so.test.d.ts} +0 -0
  97. /package/dist/{types.js → domains/package/package-types.js} +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
+ }