Skip to content

Commit 2845666

Browse files
committed
Add missing api tools for modules
1 parent 050ecf2 commit 2845666

2 files changed

Lines changed: 300 additions & 1 deletion

File tree

src/server.ts

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,17 @@ import {
8181
GetModulesSchema,
8282
CreateModuleSchema,
8383
GetModuleSchema,
84+
UpdateModuleSchema,
8485
DeleteModuleSchema,
8586
GetModuleVersionsSchema,
87+
PublishModuleVersionSchema,
8688
GetModuleVersionSchema,
8789
DeleteModuleVersionSchema,
8890
GetModuleAliasesSchema,
91+
CreateModuleVersionAliasSchema,
92+
GetModuleVersionAliasSchema,
93+
DeleteModuleVersionAliasSchema,
94+
UpdateModuleVersionAliasSchema,
8995
modulesToolDefinitions,
9096
modulesWithVersionsToolDefinitions,
9197
modulesToolNames,
@@ -917,6 +923,17 @@ class YepCodeMcpServer extends Server {
917923
}
918924
);
919925

926+
case modulesToolNames.updateModule:
927+
return this.handleToolRequest(
928+
UpdateModuleSchema,
929+
request,
930+
async (data) => {
931+
const { id, ...updateData } = data;
932+
const module = await this.yepCodeApi.updateModule(id, updateData);
933+
return module;
934+
}
935+
);
936+
920937
case modulesToolNames.deleteModule:
921938
return this.handleToolRequest(
922939
DeleteModuleSchema,
@@ -943,6 +960,24 @@ class YepCodeMcpServer extends Server {
943960
}
944961
);
945962

963+
case modulesToolNames.publishModuleVersion:
964+
return this.handleToolRequest(
965+
PublishModuleVersionSchema,
966+
request,
967+
async (data) => {
968+
const { moduleId, tag, comment, sourceCode } = data;
969+
const publishData: any = {};
970+
if (tag !== undefined) publishData.tag = tag;
971+
if (comment !== undefined) publishData.comment = comment;
972+
if (sourceCode !== undefined) publishData.sourceCode = sourceCode;
973+
const version = await this.yepCodeApi.publishModuleVersion(
974+
moduleId,
975+
publishData
976+
);
977+
return version;
978+
}
979+
);
980+
946981
case modulesToolNames.getModuleVersion:
947982
return this.handleToolRequest(
948983
GetModuleVersionSchema,
@@ -979,6 +1014,66 @@ class YepCodeMcpServer extends Server {
9791014
}
9801015
);
9811016

1017+
case modulesToolNames.createModuleVersionAlias:
1018+
return this.handleToolRequest(
1019+
CreateModuleVersionAliasSchema,
1020+
request,
1021+
async (data) => {
1022+
const { moduleId, ...aliasData } = data;
1023+
const alias = await this.yepCodeApi.createModuleVersionAlias(
1024+
moduleId,
1025+
aliasData
1026+
);
1027+
return alias;
1028+
}
1029+
);
1030+
1031+
case modulesToolNames.getModuleVersionAlias:
1032+
return this.handleToolRequest(
1033+
GetModuleVersionAliasSchema,
1034+
request,
1035+
async (data) => {
1036+
const alias = await this.yepCodeApi.getModuleVersionAlias(
1037+
data.moduleId,
1038+
data.aliasId
1039+
);
1040+
return alias;
1041+
}
1042+
);
1043+
1044+
case modulesToolNames.deleteModuleVersionAlias:
1045+
return this.handleToolRequest(
1046+
DeleteModuleVersionAliasSchema,
1047+
request,
1048+
async (data) => {
1049+
await this.yepCodeApi.deleteModuleVersionAlias(
1050+
data.moduleId,
1051+
data.aliasId
1052+
);
1053+
return {
1054+
result: `Module version alias ${data.aliasId} deleted successfully`,
1055+
};
1056+
}
1057+
);
1058+
1059+
case modulesToolNames.updateModuleVersionAlias:
1060+
return this.handleToolRequest(
1061+
UpdateModuleVersionAliasSchema,
1062+
request,
1063+
async (data) => {
1064+
const { moduleId, aliasId, name, versionId } = data;
1065+
const updateData: any = {};
1066+
if (name !== undefined) updateData.name = name;
1067+
if (versionId !== undefined) updateData.versionId = versionId;
1068+
const alias = await this.yepCodeApi.updateModuleVersionAlias(
1069+
moduleId,
1070+
aliasId,
1071+
updateData
1072+
);
1073+
return alias;
1074+
}
1075+
);
1076+
9821077
default:
9831078
this.logger.error(`Unknown tool requested: ${request.params.name}`);
9841079
throw new McpError(

src/tools/modules-tool-definitions.ts

Lines changed: 205 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,27 @@ export const GetModuleSchema = z.object({
3838
),
3939
});
4040

41+
// Schema for updating a module
42+
export const UpdateModuleSchema = z.object({
43+
id: z
44+
.string()
45+
.describe(
46+
"Unique identifier (UUID) of the script library module to update"
47+
),
48+
name: z
49+
.string()
50+
.optional()
51+
.describe(
52+
"The name of the script library. Must not have spaces, dashes and dots are allowed"
53+
),
54+
sourceCode: z
55+
.string()
56+
.optional()
57+
.describe(
58+
"The updated source code of the script library module. This is the reusable code that can be imported by processes."
59+
),
60+
});
61+
4162
// Schema for deleting a module
4263
export const DeleteModuleSchema = z.object({
4364
id: z
@@ -73,6 +94,14 @@ export const DeleteModuleVersionSchema = z.object({
7394
versionId: z.string().describe("Version ID"),
7495
});
7596

97+
// Schema for publishing a module version
98+
export const PublishModuleVersionSchema = z.object({
99+
moduleId: z.string().describe("Module ID"),
100+
tag: z.string().optional().describe("Version tag"),
101+
comment: z.string().optional().describe("Version comment"),
102+
sourceCode: z.string().optional().describe("Module source code"),
103+
});
104+
76105
// Schema for getting module aliases
77106
export const GetModuleAliasesSchema = z.object({
78107
moduleId: z.string().describe("Module ID"),
@@ -88,16 +117,54 @@ export const GetModuleAliasesSchema = z.object({
88117
.describe("Amount of items to retrieve"),
89118
});
90119

120+
// Schema for creating a module version alias
121+
export const CreateModuleVersionAliasSchema = z.object({
122+
moduleId: z.string().describe("Module ID"),
123+
name: z.string().describe("Alias name"),
124+
versionId: z
125+
.string()
126+
.describe("The version id of the script library being aliased"),
127+
});
128+
129+
// Schema for getting a specific module version alias
130+
export const GetModuleVersionAliasSchema = z.object({
131+
moduleId: z.string().describe("Module ID"),
132+
aliasId: z.string().describe("Alias ID"),
133+
});
134+
135+
// Schema for deleting a module version alias
136+
export const DeleteModuleVersionAliasSchema = z.object({
137+
moduleId: z.string().describe("Module ID"),
138+
aliasId: z.string().describe("Alias ID"),
139+
});
140+
141+
// Schema for updating a module version alias
142+
export const UpdateModuleVersionAliasSchema = z.object({
143+
moduleId: z.string().describe("Module ID"),
144+
aliasId: z.string().describe("Alias ID"),
145+
name: z.string().optional().describe("Alias name"),
146+
versionId: z
147+
.string()
148+
.optional()
149+
.describe("The version id of the script library being aliased"),
150+
});
151+
91152
// Tool names
92153
export const modulesToolNames = {
93154
getModules: "get_modules",
94155
createModule: "create_module",
95156
getModule: "get_module",
157+
updateModule: "update_module",
96158
deleteModule: "delete_module",
97159
getModuleVersions: "get_module_versions",
160+
publishModuleVersion: "publish_module_version",
98161
getModuleVersion: "get_module_version",
99162
deleteModuleVersion: "delete_module_version",
100163
getModuleAliases: "get_module_aliases",
164+
createModuleVersionAlias: "create_module_version_alias",
165+
getModuleVersionAlias: "get_module_version_alias",
166+
deleteModuleVersionAlias: "delete_module_version_alias",
167+
updateModuleVersionAlias: "update_module_version_alias",
101168
} as const;
102169

103170
// Tool definitions
@@ -180,11 +247,38 @@ export const modulesToolDefinitions = [
180247
required: ["id"],
181248
},
182249
},
250+
{
251+
name: modulesToolNames.updateModule,
252+
title: "Update Module",
253+
description:
254+
"Updates an existing script library module with new source code or metadata. All provided fields will replace the existing values.",
255+
inputSchema: {
256+
type: "object",
257+
properties: {
258+
id: {
259+
type: "string",
260+
description:
261+
"Unique identifier (UUID) of the script library module to update",
262+
},
263+
name: {
264+
type: "string",
265+
description:
266+
"The name of the script library. Must not have spaces, dashes and dots are allowed",
267+
},
268+
sourceCode: {
269+
type: "string",
270+
description:
271+
"The updated source code of the script library module. This is the reusable code that can be imported by processes.",
272+
},
273+
},
274+
required: ["id"],
275+
},
276+
},
183277
{
184278
name: modulesToolNames.deleteModule,
185279
title: "Delete Module",
186280
description:
187-
"Deletes a script library module and all its versions. This action cannot be undone.",
281+
"Permanently deletes a script library module. This action cannot be undone and may affect processes that import this module.",
188282
inputSchema: {
189283
type: "object",
190284
properties: {
@@ -300,4 +394,114 @@ export const modulesWithVersionsToolDefinitions = [
300394
required: ["moduleId"],
301395
},
302396
},
397+
{
398+
name: modulesToolNames.publishModuleVersion,
399+
title: "Publish Module Version",
400+
description: "Publishes a new version of a module.",
401+
inputSchema: {
402+
type: "object",
403+
properties: {
404+
moduleId: {
405+
type: "string",
406+
description: "Module ID",
407+
},
408+
tag: {
409+
type: "string",
410+
description: "Version tag",
411+
},
412+
comment: {
413+
type: "string",
414+
description: "Version comment",
415+
},
416+
sourceCode: {
417+
type: "string",
418+
description: "Module source code",
419+
},
420+
},
421+
required: ["moduleId"],
422+
},
423+
},
424+
{
425+
name: modulesToolNames.createModuleVersionAlias,
426+
title: "Create Module Version Alias",
427+
description: "Creates a new alias for a module version.",
428+
inputSchema: {
429+
type: "object",
430+
properties: {
431+
moduleId: {
432+
type: "string",
433+
description: "Module ID",
434+
},
435+
name: {
436+
type: "string",
437+
description: "Alias name",
438+
},
439+
versionId: {
440+
type: "string",
441+
description: "The version id of the script library being aliased",
442+
},
443+
},
444+
required: ["moduleId", "name", "versionId"],
445+
},
446+
},
447+
{
448+
name: modulesToolNames.getModuleVersionAlias,
449+
title: "Get Module Version Alias",
450+
description:
451+
"Retrieves detailed information about a specific module version alias.",
452+
inputSchema: {
453+
type: "object",
454+
properties: {
455+
aliasId: {
456+
type: "string",
457+
description: "Alias ID",
458+
},
459+
},
460+
required: ["moduleId", "aliasId"],
461+
},
462+
},
463+
{
464+
name: modulesToolNames.deleteModuleVersionAlias,
465+
title: "Delete Module Version Alias",
466+
description:
467+
"Permanently deletes a module version alias. This action cannot be undone.",
468+
inputSchema: {
469+
type: "object",
470+
properties: {
471+
aliasId: {
472+
type: "string",
473+
description: "Alias ID",
474+
},
475+
},
476+
required: ["moduleId", "aliasId"],
477+
},
478+
},
479+
{
480+
name: modulesToolNames.updateModuleVersionAlias,
481+
title: "Update Module Version Alias",
482+
description:
483+
"Updates an existing module version alias with new configuration. All provided fields will replace the existing values.",
484+
inputSchema: {
485+
type: "object",
486+
properties: {
487+
moduleId: {
488+
type: "string",
489+
description: "Module ID",
490+
},
491+
aliasId: {
492+
type: "string",
493+
description: "Alias ID",
494+
},
495+
name: {
496+
type: "string",
497+
description: "Alias name",
498+
},
499+
versionId: {
500+
type: "string",
501+
description: "The version id of the script library being aliased",
502+
},
503+
},
504+
required: ["moduleId", "aliasId"],
505+
},
506+
},
303507
];

0 commit comments

Comments
 (0)