ucm-mcp-server 6.6.0 → 6.7.0

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 (214) hide show
  1. package/dist/clients/UcmLocalApiClient.d.ts +48 -1
  2. package/dist/clients/UcmLocalApiClient.js +8 -0
  3. package/dist/index.js +1 -1
  4. package/dist/interfaces/IMcpTool.d.ts +2 -2
  5. package/dist/server/ToolRegistry.js +2 -0
  6. package/dist/tools/base/BaseToolController.d.ts +7 -4
  7. package/dist/tools/base/BaseToolController.js +28 -11
  8. package/dist/tools/core/MoveArtifactTool.d.ts +1 -1
  9. package/dist/tools/core/MoveArtifactTool.js +1 -1
  10. package/dist/tools/memory-graph/GraphCreateEntitiesTool.d.ts +5 -2
  11. package/dist/tools/memory-graph/GraphCreateEntitiesTool.js +2 -0
  12. package/dist/tools/memory-graph/GraphCreateRelationshipsTool.d.ts +5 -2
  13. package/dist/tools/memory-graph/GraphCreateRelationshipsTool.js +2 -0
  14. package/dist/tools/memory-graph/GraphCreateTool.d.ts +5 -2
  15. package/dist/tools/memory-graph/GraphCreateTool.js +2 -0
  16. package/dist/tools/memory-graph/GraphDeleteEntitiesTool.d.ts +5 -2
  17. package/dist/tools/memory-graph/GraphDeleteEntitiesTool.js +2 -0
  18. package/dist/tools/memory-graph/GraphDeleteRelationshipsTool.d.ts +5 -2
  19. package/dist/tools/memory-graph/GraphDeleteRelationshipsTool.js +2 -0
  20. package/dist/tools/memory-graph/GraphExploreTool.d.ts +5 -2
  21. package/dist/tools/memory-graph/GraphExploreTool.js +2 -0
  22. package/dist/tools/memory-graph/GraphFindEntitiesTool.d.ts +5 -2
  23. package/dist/tools/memory-graph/GraphFindEntitiesTool.js +2 -0
  24. package/dist/tools/memory-graph/GraphFindPathsTool.d.ts +5 -2
  25. package/dist/tools/memory-graph/GraphFindPathsTool.js +2 -0
  26. package/dist/tools/memory-graph/GraphGetEntityTool.d.ts +5 -2
  27. package/dist/tools/memory-graph/GraphGetEntityTool.js +2 -0
  28. package/dist/tools/memory-graph/GraphGetRelationshipsTool.d.ts +5 -2
  29. package/dist/tools/memory-graph/GraphGetRelationshipsTool.js +2 -0
  30. package/dist/tools/memory-graph/GraphListTemplatesTool.d.ts +5 -2
  31. package/dist/tools/memory-graph/GraphListTemplatesTool.js +2 -0
  32. package/dist/tools/memory-graph/GraphListTool.d.ts +5 -2
  33. package/dist/tools/memory-graph/GraphListTool.js +2 -0
  34. package/dist/tools/memory-graph/GraphOpenTool.d.ts +5 -2
  35. package/dist/tools/memory-graph/GraphOpenTool.js +3 -1
  36. package/dist/tools/memory-graph/GraphProposeVocabularyTool.d.ts +5 -2
  37. package/dist/tools/memory-graph/GraphProposeVocabularyTool.js +51 -6
  38. package/dist/tools/memory-graph/GraphSearchTool.d.ts +5 -2
  39. package/dist/tools/memory-graph/GraphSearchTool.js +2 -0
  40. package/dist/tools/memory-graph/GraphTraverseTool.d.ts +5 -2
  41. package/dist/tools/memory-graph/GraphTraverseTool.js +2 -0
  42. package/dist/tools/memory-graph/GraphUpdateEntitiesTool.d.ts +5 -2
  43. package/dist/tools/memory-graph/GraphUpdateEntitiesTool.js +2 -0
  44. package/dist/{mcp-server/tools/memory-graph/GraphSearchTool.d.ts → tools/memory-graph/GraphUpdateTool.d.ts} +4 -4
  45. package/dist/tools/memory-graph/GraphUpdateTool.js +59 -0
  46. package/dist/tools/memory-graph/KnowledgeSetListTool.d.ts +5 -2
  47. package/dist/tools/memory-graph/KnowledgeSetListTool.js +2 -0
  48. package/dist/tools/memory-graph/KnowledgeSetOpenTool.d.ts +5 -2
  49. package/dist/tools/memory-graph/KnowledgeSetOpenTool.js +2 -0
  50. package/package.json +1 -1
  51. package/dist/clients/UcmApiClient.d.ts +0 -157
  52. package/dist/clients/UcmApiClient.js +0 -443
  53. package/dist/mcp-server/clients/UcmLocalApiClient.d.ts +0 -399
  54. package/dist/mcp-server/clients/UcmLocalApiClient.js +0 -719
  55. package/dist/mcp-server/index.d.ts +0 -3
  56. package/dist/mcp-server/index.js +0 -68
  57. package/dist/mcp-server/interfaces/ILogger.d.ts +0 -8
  58. package/dist/mcp-server/interfaces/ILogger.js +0 -4
  59. package/dist/mcp-server/interfaces/IMcpTool.d.ts +0 -7
  60. package/dist/mcp-server/interfaces/IMcpTool.js +0 -3
  61. package/dist/mcp-server/logging/ConsoleLogger.d.ts +0 -16
  62. package/dist/mcp-server/logging/ConsoleLogger.js +0 -45
  63. package/dist/mcp-server/logging/LoggerFactory.d.ts +0 -9
  64. package/dist/mcp-server/logging/LoggerFactory.js +0 -12
  65. package/dist/mcp-server/server/McpConfig.d.ts +0 -26
  66. package/dist/mcp-server/server/McpConfig.js +0 -90
  67. package/dist/mcp-server/server/McpHandler.d.ts +0 -12
  68. package/dist/mcp-server/server/McpHandler.js +0 -84
  69. package/dist/mcp-server/server/McpServer.d.ts +0 -15
  70. package/dist/mcp-server/server/McpServer.js +0 -49
  71. package/dist/mcp-server/server/ToolRegistry.d.ts +0 -23
  72. package/dist/mcp-server/server/ToolRegistry.js +0 -169
  73. package/dist/mcp-server/tools/authorization/ListAuthorizationsTool.d.ts +0 -21
  74. package/dist/mcp-server/tools/authorization/ListAuthorizationsTool.js +0 -146
  75. package/dist/mcp-server/tools/authorization/SignOutTool.d.ts +0 -23
  76. package/dist/mcp-server/tools/authorization/SignOutTool.js +0 -128
  77. package/dist/mcp-server/tools/base/BaseToolController.d.ts +0 -19
  78. package/dist/mcp-server/tools/base/BaseToolController.js +0 -58
  79. package/dist/mcp-server/tools/connections/AccessConnectionTool.d.ts +0 -21
  80. package/dist/mcp-server/tools/connections/AccessConnectionTool.js +0 -107
  81. package/dist/mcp-server/tools/connections/CallRemoteToolTool.d.ts +0 -22
  82. package/dist/mcp-server/tools/connections/CallRemoteToolTool.js +0 -124
  83. package/dist/mcp-server/tools/core/DeleteArtifactTool.d.ts +0 -11
  84. package/dist/mcp-server/tools/core/DeleteArtifactTool.js +0 -83
  85. package/dist/mcp-server/tools/core/EditArtifactMetadataTool.d.ts +0 -12
  86. package/dist/mcp-server/tools/core/EditArtifactMetadataTool.js +0 -173
  87. package/dist/mcp-server/tools/core/GetArtifactTool.d.ts +0 -13
  88. package/dist/mcp-server/tools/core/GetArtifactTool.js +0 -124
  89. package/dist/mcp-server/tools/core/GetArtifactVersionsTool.d.ts +0 -11
  90. package/dist/mcp-server/tools/core/GetArtifactVersionsTool.js +0 -63
  91. package/dist/mcp-server/tools/core/GetChunkTool.d.ts +0 -11
  92. package/dist/mcp-server/tools/core/GetChunkTool.js +0 -56
  93. package/dist/mcp-server/tools/core/ListArtifactsTool.d.ts +0 -11
  94. package/dist/mcp-server/tools/core/ListArtifactsTool.js +0 -84
  95. package/dist/mcp-server/tools/core/MoveArtifactTool.d.ts +0 -12
  96. package/dist/mcp-server/tools/core/MoveArtifactTool.js +0 -104
  97. package/dist/mcp-server/tools/core/PublishArtifactFromFileTool.d.ts +0 -15
  98. package/dist/mcp-server/tools/core/PublishArtifactFromFileTool.js +0 -277
  99. package/dist/mcp-server/tools/core/PublishArtifactTool.d.ts +0 -13
  100. package/dist/mcp-server/tools/core/PublishArtifactTool.js +0 -218
  101. package/dist/mcp-server/tools/core/SearchArtifactsTool.d.ts +0 -11
  102. package/dist/mcp-server/tools/core/SearchArtifactsTool.js +0 -137
  103. package/dist/mcp-server/tools/list/ListNamespaceController.d.ts +0 -1
  104. package/dist/mcp-server/tools/list/ListNamespaceController.js +0 -8
  105. package/dist/mcp-server/tools/memory-graph/GraphCreateEntitiesTool.d.ts +0 -14
  106. package/dist/mcp-server/tools/memory-graph/GraphCreateEntitiesTool.js +0 -58
  107. package/dist/mcp-server/tools/memory-graph/GraphCreateRelationshipsTool.d.ts +0 -14
  108. package/dist/mcp-server/tools/memory-graph/GraphCreateRelationshipsTool.js +0 -57
  109. package/dist/mcp-server/tools/memory-graph/GraphCreateTool.d.ts +0 -14
  110. package/dist/mcp-server/tools/memory-graph/GraphCreateTool.js +0 -64
  111. package/dist/mcp-server/tools/memory-graph/GraphDeleteEntitiesTool.d.ts +0 -14
  112. package/dist/mcp-server/tools/memory-graph/GraphDeleteEntitiesTool.js +0 -45
  113. package/dist/mcp-server/tools/memory-graph/GraphDeleteRelationshipsTool.d.ts +0 -14
  114. package/dist/mcp-server/tools/memory-graph/GraphDeleteRelationshipsTool.js +0 -45
  115. package/dist/mcp-server/tools/memory-graph/GraphExploreTool.d.ts +0 -14
  116. package/dist/mcp-server/tools/memory-graph/GraphExploreTool.js +0 -73
  117. package/dist/mcp-server/tools/memory-graph/GraphFindEntitiesTool.d.ts +0 -14
  118. package/dist/mcp-server/tools/memory-graph/GraphFindEntitiesTool.js +0 -68
  119. package/dist/mcp-server/tools/memory-graph/GraphFindPathsTool.d.ts +0 -14
  120. package/dist/mcp-server/tools/memory-graph/GraphFindPathsTool.js +0 -62
  121. package/dist/mcp-server/tools/memory-graph/GraphGetEntityTool.d.ts +0 -14
  122. package/dist/mcp-server/tools/memory-graph/GraphGetEntityTool.js +0 -49
  123. package/dist/mcp-server/tools/memory-graph/GraphGetRelationshipsTool.d.ts +0 -14
  124. package/dist/mcp-server/tools/memory-graph/GraphGetRelationshipsTool.js +0 -62
  125. package/dist/mcp-server/tools/memory-graph/GraphListTemplatesTool.d.ts +0 -14
  126. package/dist/mcp-server/tools/memory-graph/GraphListTemplatesTool.js +0 -34
  127. package/dist/mcp-server/tools/memory-graph/GraphListTool.d.ts +0 -14
  128. package/dist/mcp-server/tools/memory-graph/GraphListTool.js +0 -45
  129. package/dist/mcp-server/tools/memory-graph/GraphOpenTool.d.ts +0 -15
  130. package/dist/mcp-server/tools/memory-graph/GraphOpenTool.js +0 -50
  131. package/dist/mcp-server/tools/memory-graph/GraphProposeVocabularyTool.d.ts +0 -14
  132. package/dist/mcp-server/tools/memory-graph/GraphProposeVocabularyTool.js +0 -108
  133. package/dist/mcp-server/tools/memory-graph/GraphSearchTool.js +0 -94
  134. package/dist/mcp-server/tools/memory-graph/GraphTraverseTool.d.ts +0 -14
  135. package/dist/mcp-server/tools/memory-graph/GraphTraverseTool.js +0 -114
  136. package/dist/mcp-server/tools/memory-graph/GraphUpdateEntitiesTool.d.ts +0 -14
  137. package/dist/mcp-server/tools/memory-graph/GraphUpdateEntitiesTool.js +0 -58
  138. package/dist/mcp-server/tools/memory-graph/KnowledgeSetListTool.d.ts +0 -14
  139. package/dist/mcp-server/tools/memory-graph/KnowledgeSetListTool.js +0 -25
  140. package/dist/mcp-server/tools/memory-graph/KnowledgeSetOpenTool.d.ts +0 -14
  141. package/dist/mcp-server/tools/memory-graph/KnowledgeSetOpenTool.js +0 -31
  142. package/dist/mcp-server/tools/repository/CreateRepositoryTool.d.ts +0 -12
  143. package/dist/mcp-server/tools/repository/CreateRepositoryTool.js +0 -116
  144. package/dist/mcp-server/tools/repository/GetRepositoryTool.d.ts +0 -12
  145. package/dist/mcp-server/tools/repository/GetRepositoryTool.js +0 -85
  146. package/dist/mcp-server/tools/repository/UpdateRepositoryTool.d.ts +0 -12
  147. package/dist/mcp-server/tools/repository/UpdateRepositoryTool.js +0 -115
  148. package/dist/mcp-server/tools/sharepoint/SharePointListConnectionsTool.d.ts +0 -19
  149. package/dist/mcp-server/tools/sharepoint/SharePointListConnectionsTool.js +0 -90
  150. package/dist/mcp-server/tools/sharepoint/SharePointListFoldersTool.d.ts +0 -21
  151. package/dist/mcp-server/tools/sharepoint/SharePointListFoldersTool.js +0 -133
  152. package/dist/mcp-server/tools/sharepoint/SharePointReadFileTool.d.ts +0 -22
  153. package/dist/mcp-server/tools/sharepoint/SharePointReadFileTool.js +0 -146
  154. package/dist/mcp-server/tools/sharepoint/SharePointReadRelatedFileTool.d.ts +0 -18
  155. package/dist/mcp-server/tools/sharepoint/SharePointReadRelatedFileTool.js +0 -108
  156. package/dist/mcp-server/tools/sharepoint/SharePointSearchTool.d.ts +0 -22
  157. package/dist/mcp-server/tools/sharepoint/SharePointSearchTool.js +0 -125
  158. package/dist/mcp-server/tools/utility/AuthorIndexTool.d.ts +0 -11
  159. package/dist/mcp-server/tools/utility/AuthorIndexTool.js +0 -49
  160. package/dist/mcp-server/tools/utility/AuthorRecentsTool.d.ts +0 -11
  161. package/dist/mcp-server/tools/utility/AuthorRecentsTool.js +0 -49
  162. package/dist/mcp-server/tools/utility/ListRepositoriesTool.d.ts +0 -11
  163. package/dist/mcp-server/tools/utility/ListRepositoriesTool.js +0 -68
  164. package/dist/mcp-server/tools/utility/QuickstartTool.d.ts +0 -11
  165. package/dist/mcp-server/tools/utility/QuickstartTool.js +0 -36
  166. package/dist/mcp-server/types/UcmApiTypes.d.ts +0 -40
  167. package/dist/mcp-server/types/UcmApiTypes.js +0 -4
  168. package/dist/mcp-server/utils/McpErrorHandler.d.ts +0 -25
  169. package/dist/mcp-server/utils/McpErrorHandler.js +0 -67
  170. package/dist/mcp-server/utils/PathUtils.d.ts +0 -61
  171. package/dist/mcp-server/utils/PathUtils.js +0 -178
  172. package/dist/mcp-server/utils/ResponseChunker.d.ts +0 -25
  173. package/dist/mcp-server/utils/ResponseChunker.js +0 -79
  174. package/dist/mcp-server/utils/SharePointErrorHandler.d.ts +0 -34
  175. package/dist/mcp-server/utils/SharePointErrorHandler.js +0 -55
  176. package/dist/publish/package.json +0 -37
  177. package/dist/schemas/memory-graph-tool-schemas.d.ts +0 -789
  178. package/dist/schemas/memory-graph-tool-schemas.js +0 -181
  179. package/dist/tools/artifacts/GetArtifactController.d.ts +0 -34
  180. package/dist/tools/artifacts/GetArtifactController.js +0 -397
  181. package/dist/tools/artifacts/GetLatestController.d.ts +0 -39
  182. package/dist/tools/artifacts/GetLatestController.js +0 -469
  183. package/dist/tools/artifacts/ListVersionsController.d.ts +0 -43
  184. package/dist/tools/artifacts/ListVersionsController.js +0 -530
  185. package/dist/tools/artifacts/PublishArtifactController.d.ts +0 -37
  186. package/dist/tools/artifacts/PublishArtifactController.js +0 -605
  187. package/dist/tools/discovery/BrowseCategoriesController.d.ts +0 -25
  188. package/dist/tools/discovery/BrowseCategoriesController.js +0 -400
  189. package/dist/tools/discovery/FindByPurposeController.d.ts +0 -12
  190. package/dist/tools/discovery/FindByPurposeController.js +0 -131
  191. package/dist/tools/discovery/ListAuthorsController.d.ts +0 -20
  192. package/dist/tools/discovery/ListAuthorsController.js +0 -274
  193. package/dist/tools/discovery/SearchArtifactsController.d.ts +0 -14
  194. package/dist/tools/discovery/SearchArtifactsController.js +0 -226
  195. package/dist/tools/memory-graph/GraphGetStatsTool.d.ts +0 -11
  196. package/dist/tools/memory-graph/GraphGetStatsTool.js +0 -42
  197. package/dist/tools/memory-graph/GraphRemoveRelationshipsTool.d.ts +0 -11
  198. package/dist/tools/memory-graph/GraphRemoveRelationshipsTool.js +0 -47
  199. package/dist/tools/navigation/ExploreNamespaceController.d.ts +0 -35
  200. package/dist/tools/navigation/ExploreNamespaceController.js +0 -548
  201. package/dist/tools/repository/DeleteRepositoryGuidanceTool.d.ts +0 -13
  202. package/dist/tools/repository/DeleteRepositoryGuidanceTool.js +0 -93
  203. package/dist/tools/sharepoint/SharePointSignOutTool.d.ts +0 -22
  204. package/dist/tools/sharepoint/SharePointSignOutTool.js +0 -114
  205. package/dist/tools/utility/HealthCheckController.d.ts +0 -11
  206. package/dist/tools/utility/HealthCheckController.js +0 -60
  207. package/dist/tools/utility/SubmitFeedbackTool.d.ts +0 -16
  208. package/dist/tools/utility/SubmitFeedbackTool.js +0 -68
  209. package/dist/tools/utility/ValidatePathController.d.ts +0 -30
  210. package/dist/tools/utility/ValidatePathController.js +0 -465
  211. package/dist/utils/HttpsAgentFactory.d.ts +0 -21
  212. package/dist/utils/HttpsAgentFactory.js +0 -50
  213. package/dist/utils/ValidationUtils.d.ts +0 -10
  214. package/dist/utils/ValidationUtils.js +0 -50
@@ -1,274 +0,0 @@
1
- import { BaseToolController } from '../base/BaseToolController.js';
2
- import { ValidationUtils } from '../../utils/ValidationUtils.js';
3
- export class ListAuthorsController extends BaseToolController {
4
- constructor(ucmClient, logger) {
5
- super(ucmClient, logger);
6
- }
7
- get name() {
8
- return 'mcp_ucm_list_authors';
9
- }
10
- get description() {
11
- return 'List all available authors in the UCM repository with optional statistics and filtering';
12
- }
13
- get inputSchema() {
14
- return {
15
- type: 'object',
16
- properties: {
17
- includeStats: {
18
- type: 'boolean',
19
- default: true,
20
- description: 'Include statistics (artifact count, latest activity) for each author'
21
- },
22
- sortBy: {
23
- type: 'string',
24
- enum: ['name', 'artifactCount', 'lastActivity', 'joinDate'],
25
- default: 'name',
26
- description: 'Sort authors by specified field'
27
- },
28
- sortOrder: {
29
- type: 'string',
30
- enum: ['asc', 'desc'],
31
- default: 'asc',
32
- description: 'Sort order (ascending or descending)'
33
- },
34
- filter: {
35
- type: 'object',
36
- properties: {
37
- namePattern: {
38
- type: 'string',
39
- description: 'Filter authors by name pattern (supports wildcards)',
40
- maxLength: 100
41
- },
42
- minArtifacts: {
43
- type: 'number',
44
- minimum: 0,
45
- description: 'Minimum number of artifacts the author must have'
46
- },
47
- hasRecentActivity: {
48
- type: 'boolean',
49
- description: 'Filter authors with activity in the last 30 days'
50
- },
51
- categories: {
52
- type: 'array',
53
- items: {
54
- type: 'string',
55
- enum: ['commands', 'services', 'patterns', 'implementations', 'contracts', 'guidance']
56
- },
57
- description: 'Filter authors who have artifacts in these categories'
58
- }
59
- }
60
- },
61
- pagination: {
62
- type: 'object',
63
- properties: {
64
- limit: {
65
- type: 'number',
66
- default: 50,
67
- minimum: 1,
68
- maximum: 200,
69
- description: 'Number of authors to return'
70
- },
71
- offset: {
72
- type: 'number',
73
- default: 0,
74
- minimum: 0,
75
- description: 'Number of authors to skip'
76
- }
77
- }
78
- }
79
- },
80
- required: []
81
- };
82
- }
83
- async handleExecute(params) {
84
- const { includeStats = true, sortBy = 'name', sortOrder = 'asc', filter = {}, pagination = {} } = params;
85
- const limit = pagination.limit || 50;
86
- const offset = pagination.offset || 0;
87
- ValidationUtils.validatePageParams(offset, limit);
88
- // Validate filter categories if provided
89
- if (filter.categories) {
90
- for (const category of filter.categories) {
91
- ValidationUtils.validateCategory(category);
92
- }
93
- }
94
- this.logger.debug('ListAuthorsController', `Listing authors with stats: ${includeStats}`);
95
- try {
96
- // Get authors from UCM API
97
- const authors = await this.ucmClient.getAuthors();
98
- // Apply filtering
99
- let filteredAuthors = authors;
100
- if (filter.namePattern) {
101
- const pattern = filter.namePattern.toLowerCase().replace(/\*/g, '.*');
102
- const regex = new RegExp(pattern);
103
- filteredAuthors = filteredAuthors.filter(author => regex.test(author.name.toLowerCase()) || regex.test(author.id.toLowerCase()));
104
- }
105
- // Transform and enrich author data
106
- const enrichedAuthors = await this.enrichAuthorData(filteredAuthors, includeStats, filter);
107
- // Apply additional filtering based on stats
108
- let finalAuthors = enrichedAuthors;
109
- if (filter.minArtifacts !== undefined) {
110
- finalAuthors = finalAuthors.filter(author => author.artifactCount >= filter.minArtifacts);
111
- }
112
- if (filter.hasRecentActivity) {
113
- const thirtyDaysAgo = new Date();
114
- thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
115
- finalAuthors = finalAuthors.filter(author => author.lastActivity && new Date(author.lastActivity) > thirtyDaysAgo);
116
- }
117
- if (filter.categories && filter.categories.length > 0) {
118
- finalAuthors = finalAuthors.filter(author => author.categories && filter.categories.some((cat) => author.categories.includes(cat)));
119
- }
120
- // Sort authors
121
- const sortedAuthors = this.sortAuthors(finalAuthors, sortBy, sortOrder);
122
- // Apply pagination
123
- const paginatedAuthors = sortedAuthors.slice(offset, offset + limit);
124
- this.logger.info('ListAuthorsController', `Listed ${paginatedAuthors.length} authors`);
125
- return {
126
- authors: paginatedAuthors,
127
- pagination: {
128
- total: sortedAuthors.length,
129
- offset,
130
- limit,
131
- hasMore: offset + limit < sortedAuthors.length
132
- },
133
- sorting: {
134
- sortBy,
135
- sortOrder
136
- },
137
- appliedFilters: filter,
138
- metadata: {
139
- totalAuthorsInSystem: authors.length,
140
- filteredCount: finalAuthors.length,
141
- includeStats,
142
- timestamp: new Date().toISOString()
143
- }
144
- };
145
- }
146
- catch (error) {
147
- this.logger.error('ListAuthorsController', 'Failed to list authors', '', error);
148
- throw error;
149
- }
150
- }
151
- async enrichAuthorData(authors, includeStats, filter) {
152
- const enrichedAuthors = [];
153
- for (const author of authors) {
154
- const enrichedAuthor = {
155
- id: author.id,
156
- name: author.name,
157
- email: author.email,
158
- joinDate: author.createdAt || author.joinDate,
159
- profileUrl: this.buildProfileUrl(author.id)
160
- };
161
- if (includeStats) {
162
- try {
163
- // Get author's artifacts for statistics
164
- const authorData = await this.ucmClient.getAuthor(author.id);
165
- const artifacts = Array.isArray(authorData) ? authorData : [];
166
- enrichedAuthor.artifactCount = artifacts.length;
167
- enrichedAuthor.categories = this.extractCategories(artifacts);
168
- enrichedAuthor.technologies = this.extractTechnologies(artifacts);
169
- enrichedAuthor.lastActivity = this.getLastActivity(artifacts);
170
- enrichedAuthor.popularArtifacts = this.getPopularArtifacts(artifacts);
171
- enrichedAuthor.totalDownloads = this.calculateTotalDownloads(artifacts);
172
- enrichedAuthor.averageRating = this.calculateAverageRating(artifacts);
173
- }
174
- catch (error) {
175
- // If we can't get stats, continue with basic info
176
- this.logger.warn('ListAuthorsController', `Failed to get stats for author ${author.id}`, '', error);
177
- enrichedAuthor.artifactCount = 0;
178
- enrichedAuthor.categories = [];
179
- enrichedAuthor.technologies = [];
180
- enrichedAuthor.lastActivity = null;
181
- }
182
- }
183
- enrichedAuthors.push(enrichedAuthor);
184
- }
185
- return enrichedAuthors;
186
- }
187
- sortAuthors(authors, sortBy, sortOrder) {
188
- return authors.sort((a, b) => {
189
- let aVal, bVal;
190
- switch (sortBy) {
191
- case 'name':
192
- aVal = a.name.toLowerCase();
193
- bVal = b.name.toLowerCase();
194
- break;
195
- case 'artifactCount':
196
- aVal = a.artifactCount || 0;
197
- bVal = b.artifactCount || 0;
198
- break;
199
- case 'lastActivity':
200
- aVal = a.lastActivity ? new Date(a.lastActivity) : new Date(0);
201
- bVal = b.lastActivity ? new Date(b.lastActivity) : new Date(0);
202
- break;
203
- case 'joinDate':
204
- aVal = new Date(a.joinDate || 0);
205
- bVal = new Date(b.joinDate || 0);
206
- break;
207
- default:
208
- aVal = a.name.toLowerCase();
209
- bVal = b.name.toLowerCase();
210
- }
211
- if (aVal < bVal)
212
- return sortOrder === 'asc' ? -1 : 1;
213
- if (aVal > bVal)
214
- return sortOrder === 'asc' ? 1 : -1;
215
- return 0;
216
- });
217
- }
218
- buildProfileUrl(authorId) {
219
- // Build URL to author's profile page
220
- return `/browse/authors/${authorId}`;
221
- }
222
- extractCategories(artifacts) {
223
- const categories = new Set();
224
- artifacts.forEach(artifact => {
225
- if (artifact.metadata?.category) {
226
- categories.add(artifact.metadata.category);
227
- }
228
- });
229
- return Array.from(categories);
230
- }
231
- extractTechnologies(artifacts) {
232
- const technologies = new Set();
233
- artifacts.forEach(artifact => {
234
- if (artifact.metadata?.technology) {
235
- technologies.add(artifact.metadata.technology);
236
- }
237
- });
238
- return Array.from(technologies);
239
- }
240
- getLastActivity(artifacts) {
241
- if (artifacts.length === 0)
242
- return null;
243
- const dates = artifacts
244
- .map(artifact => artifact.lastUpdated || artifact.publishedAt)
245
- .filter(date => date)
246
- .map(date => new Date(date))
247
- .sort((a, b) => b.getTime() - a.getTime());
248
- return dates.length > 0 ? dates[0].toISOString() : null;
249
- }
250
- getPopularArtifacts(artifacts) {
251
- // Return top 3 most "popular" artifacts (simplified calculation)
252
- return artifacts
253
- .map(artifact => ({
254
- name: artifact.metadata?.name || 'Unknown',
255
- path: artifact.path,
256
- category: artifact.metadata?.category,
257
- downloads: Math.floor(Math.random() * 1000) // Simulated
258
- }))
259
- .sort((a, b) => b.downloads - a.downloads)
260
- .slice(0, 3);
261
- }
262
- calculateTotalDownloads(artifacts) {
263
- // Simulated total downloads calculation
264
- return artifacts.reduce((total, _) => total + Math.floor(Math.random() * 100), 0);
265
- }
266
- calculateAverageRating(artifacts) {
267
- if (artifacts.length === 0)
268
- return 0;
269
- // Simulated average rating calculation
270
- const totalRating = artifacts.reduce((sum, _) => sum + (3.0 + Math.random() * 2), 0);
271
- return Math.round((totalRating / artifacts.length) * 10) / 10;
272
- }
273
- }
274
- //# sourceMappingURL=ListAuthorsController.js.map
@@ -1,14 +0,0 @@
1
- import { BaseToolController } from '../base/BaseToolController.js';
2
- import { UcmApiClient } from '../../clients/UcmLocalApiClient.js';
3
- import { ILogger } from '../../interfaces/ILogger.js';
4
- export declare class SearchArtifactsController extends BaseToolController {
5
- constructor(ucmClient: UcmApiClient, logger: ILogger);
6
- get name(): string;
7
- get description(): string;
8
- get inputSchema(): any;
9
- protected handleExecute(params: any): Promise<any>;
10
- private applySorting;
11
- private getDownloadCount;
12
- private calculateRating;
13
- }
14
- //# sourceMappingURL=SearchArtifactsController.d.ts.map
@@ -1,226 +0,0 @@
1
- import { BaseToolController } from '../base/BaseToolController.js';
2
- import { ValidationUtils } from '../../utils/ValidationUtils.js';
3
- export class SearchArtifactsController extends BaseToolController {
4
- constructor(ucmClient, logger) {
5
- super(ucmClient, logger);
6
- }
7
- get name() {
8
- return 'mcp_ucm_search_artifacts';
9
- }
10
- get description() {
11
- return 'Search UCM artifacts by name, description, tags, or metadata with advanced filtering options';
12
- }
13
- get inputSchema() {
14
- return {
15
- type: 'object',
16
- properties: {
17
- query: {
18
- type: 'string',
19
- description: 'Search query to match against artifact names, descriptions, and tags',
20
- minLength: 1,
21
- maxLength: 200
22
- },
23
- filters: {
24
- type: 'object',
25
- properties: {
26
- author: {
27
- type: 'string',
28
- description: 'Filter by author ID',
29
- pattern: '^[a-zA-Z0-9\\-_]+$'
30
- },
31
- category: {
32
- type: 'string',
33
- enum: ['commands', 'services', 'patterns', 'implementations', 'contracts', 'guidance'],
34
- description: 'Filter by artifact category'
35
- },
36
- technology: {
37
- type: 'string',
38
- description: 'Filter by technology (e.g., typescript, python)',
39
- pattern: '^[a-zA-Z0-9\\-_]+$'
40
- },
41
- minRating: {
42
- type: 'number',
43
- minimum: 0,
44
- maximum: 5,
45
- description: 'Minimum rating score'
46
- },
47
- contractVersion: {
48
- type: 'string',
49
- pattern: '^[0-9]+\\.[0-9]+$',
50
- description: 'Filter by contract version (e.g., "1.0")'
51
- },
52
- hasExamples: {
53
- type: 'boolean',
54
- description: 'Filter artifacts that have usage examples'
55
- },
56
- updatedSince: {
57
- type: 'string',
58
- format: 'date',
59
- description: 'Filter artifacts updated since this date (YYYY-MM-DD)'
60
- }
61
- }
62
- },
63
- pagination: {
64
- type: 'object',
65
- properties: {
66
- limit: {
67
- type: 'number',
68
- default: 20,
69
- minimum: 1,
70
- maximum: 100,
71
- description: 'Number of results to return'
72
- },
73
- offset: {
74
- type: 'number',
75
- default: 0,
76
- minimum: 0,
77
- description: 'Number of results to skip'
78
- }
79
- }
80
- },
81
- sortBy: {
82
- type: 'string',
83
- enum: ['relevance', 'name', 'author', 'updated', 'created', 'version'],
84
- default: 'relevance',
85
- description: 'Sort results by specified field'
86
- },
87
- sortOrder: {
88
- type: 'string',
89
- enum: ['asc', 'desc'],
90
- default: 'desc',
91
- description: 'Sort order (ascending or descending)'
92
- }
93
- },
94
- required: ['query']
95
- };
96
- }
97
- async handleExecute(params) {
98
- const { query, filters = {}, pagination = {}, sortBy = 'relevance', sortOrder = 'desc' } = params;
99
- // Validate and sanitize inputs
100
- const sanitizedQuery = ValidationUtils.sanitizeSearchQuery(query);
101
- const limit = pagination.limit || 20;
102
- const offset = pagination.offset || 0;
103
- ValidationUtils.validatePageParams(offset, limit);
104
- // Validate optional filters
105
- if (filters.author) {
106
- ValidationUtils.validateAuthorId(filters.author);
107
- }
108
- if (filters.category) {
109
- ValidationUtils.validateCategory(filters.category);
110
- }
111
- if (filters.contractVersion && !filters.contractVersion.match(/^[0-9]+\.[0-9]+$/)) {
112
- throw this.formatError(new Error('Contract version must be in format X.Y'));
113
- }
114
- this.logger.debug('SearchArtifactsController', `Searching artifacts: "${sanitizedQuery}"`);
115
- try {
116
- // Build comprehensive search filters
117
- const searchFilters = {
118
- ...filters,
119
- limit,
120
- offset,
121
- sortBy,
122
- sortOrder
123
- };
124
- // Execute search through UCM API
125
- const results = await this.ucmClient.searchArtifacts({
126
- ...searchFilters,
127
- // Note: Our current API doesn't support text search, using category filter instead
128
- });
129
- // Transform and enrich results
130
- const transformedArtifacts = results.map(artifact => ({
131
- id: artifact.id,
132
- name: artifact.metadata?.name || 'Unknown',
133
- path: artifact.path,
134
- description: artifact.metadata?.description || '',
135
- author: artifact.metadata?.author || '',
136
- category: artifact.metadata?.category || '',
137
- subcategory: artifact.metadata?.subcategory || '',
138
- technology: artifact.metadata?.technology || null,
139
- version: artifact.metadata?.version || '',
140
- contractVersion: artifact.metadata?.contractVersion || null,
141
- tags: artifact.metadata?.tags || [],
142
- dependencies: artifact.metadata?.dependencies || {},
143
- hasExamples: !!(artifact.examples && artifact.examples.length > 0),
144
- lastUpdated: artifact.lastUpdated,
145
- publishedAt: artifact.publishedAt,
146
- downloadCount: this.getDownloadCount(artifact), // Simulated for demo
147
- rating: this.calculateRating(artifact) // Simulated for demo
148
- }));
149
- // Apply client-side sorting if needed (fallback)
150
- const sortedArtifacts = this.applySorting(transformedArtifacts, sortBy, sortOrder);
151
- this.logger.info('SearchArtifactsController', `Found ${sortedArtifacts.length} artifacts`);
152
- return {
153
- artifacts: sortedArtifacts,
154
- pagination: {
155
- total: results.length, // In real implementation, this would come from API
156
- offset,
157
- limit,
158
- hasMore: results.length === limit
159
- },
160
- searchQuery: sanitizedQuery,
161
- appliedFilters: filters,
162
- sorting: {
163
- sortBy,
164
- sortOrder
165
- },
166
- searchMetadata: {
167
- searchType: 'general-search',
168
- timestamp: new Date().toISOString(),
169
- executionTimeMs: 0 // Would be measured in real implementation
170
- }
171
- };
172
- }
173
- catch (error) {
174
- this.logger.error('SearchArtifactsController', 'Artifact search failed', '', error);
175
- throw error;
176
- }
177
- }
178
- applySorting(artifacts, sortBy, sortOrder) {
179
- return artifacts.sort((a, b) => {
180
- let aVal, bVal;
181
- switch (sortBy) {
182
- case 'name':
183
- aVal = a.name.toLowerCase();
184
- bVal = b.name.toLowerCase();
185
- break;
186
- case 'author':
187
- aVal = a.author.toLowerCase();
188
- bVal = b.author.toLowerCase();
189
- break;
190
- case 'updated':
191
- aVal = new Date(a.lastUpdated);
192
- bVal = new Date(b.lastUpdated);
193
- break;
194
- case 'version':
195
- aVal = a.version;
196
- bVal = b.version;
197
- break;
198
- case 'rating':
199
- aVal = a.rating;
200
- bVal = b.rating;
201
- break;
202
- default: // relevance
203
- aVal = a.rating || 0;
204
- bVal = b.rating || 0;
205
- }
206
- if (aVal < bVal)
207
- return sortOrder === 'asc' ? -1 : 1;
208
- if (aVal > bVal)
209
- return sortOrder === 'asc' ? 1 : -1;
210
- return 0;
211
- });
212
- }
213
- getDownloadCount(artifact) {
214
- // Simulated download count - in real implementation this would come from database
215
- return Math.floor(Math.random() * 1000);
216
- }
217
- calculateRating(artifact) {
218
- // Simulated rating calculation - in real implementation this would be based on user reviews
219
- const baseRating = 3.0;
220
- const hasDescription = artifact.metadata?.description ? 0.5 : 0;
221
- const hasExamples = artifact.examples?.length > 0 ? 0.3 : 0;
222
- const hasTags = artifact.metadata?.tags?.length > 0 ? 0.2 : 0;
223
- return Math.min(baseRating + hasDescription + hasExamples + hasTags, 5.0);
224
- }
225
- }
226
- //# sourceMappingURL=SearchArtifactsController.js.map
@@ -1,11 +0,0 @@
1
- import { BaseToolController } from '../base/BaseToolController.js';
2
- import { UcmLocalApiClient } from '../../clients/UcmLocalApiClient.js';
3
- import { ILogger } from '../../interfaces/ILogger.js';
4
- export declare class GraphGetStatsTool extends BaseToolController {
5
- constructor(ucmClient: UcmLocalApiClient, logger: ILogger, publishingAuthorId?: string);
6
- get name(): string;
7
- get description(): string;
8
- get inputSchema(): any;
9
- protected handleExecute(params: any): Promise<any>;
10
- }
11
- //# sourceMappingURL=GraphGetStatsTool.d.ts.map
@@ -1,42 +0,0 @@
1
- import { BaseToolController } from '../base/BaseToolController.js';
2
- import { McpError, McpErrorCode } from '../../utils/McpErrorHandler.js';
3
- export class GraphGetStatsTool extends BaseToolController {
4
- constructor(ucmClient, logger, publishingAuthorId) {
5
- super(ucmClient, logger, publishingAuthorId);
6
- }
7
- get name() { return 'ucm_graph_get_stats'; }
8
- get description() {
9
- return 'Get statistics for a Memory Graph — entity count, relationship count, and vocabulary summary.';
10
- }
11
- get inputSchema() {
12
- return {
13
- type: 'object',
14
- properties: {
15
- organizationId: {
16
- type: 'string',
17
- description: 'The organization ID'
18
- },
19
- memoryGraphId: {
20
- type: 'string',
21
- description: 'The Memory Graph ID'
22
- }
23
- },
24
- required: ['organizationId', 'memoryGraphId']
25
- };
26
- }
27
- async handleExecute(params) {
28
- const { organizationId, memoryGraphId } = params;
29
- this.logger.info('GraphGetStatsTool', `Getting stats for graph: ${memoryGraphId}`);
30
- try {
31
- const result = await this.ucmClient.graphGetStats(organizationId, memoryGraphId);
32
- return JSON.stringify(result);
33
- }
34
- catch (error) {
35
- if (error.response?.status === 404) {
36
- throw new McpError(McpErrorCode.InvalidParams, `Memory Graph not found`);
37
- }
38
- throw new McpError(McpErrorCode.InternalError, `Failed to get graph stats: ${error.message}`);
39
- }
40
- }
41
- }
42
- //# sourceMappingURL=GraphGetStatsTool.js.map
@@ -1,11 +0,0 @@
1
- import { BaseToolController } from '../base/BaseToolController.js';
2
- import { UcmLocalApiClient } from '../../clients/UcmLocalApiClient.js';
3
- import { ILogger } from '../../interfaces/ILogger.js';
4
- export declare class GraphRemoveRelationshipsTool extends BaseToolController {
5
- constructor(ucmClient: UcmLocalApiClient, logger: ILogger, publishingAuthorId?: string);
6
- get name(): string;
7
- get description(): string;
8
- get inputSchema(): any;
9
- protected handleExecute(params: any): Promise<any>;
10
- }
11
- //# sourceMappingURL=GraphRemoveRelationshipsTool.d.ts.map
@@ -1,47 +0,0 @@
1
- import { BaseToolController } from '../base/BaseToolController.js';
2
- import { McpError, McpErrorCode } from '../../utils/McpErrorHandler.js';
3
- export class GraphRemoveRelationshipsTool extends BaseToolController {
4
- constructor(ucmClient, logger, publishingAuthorId) {
5
- super(ucmClient, logger, publishingAuthorId);
6
- }
7
- get name() { return 'ucm_graph_remove_relationships'; }
8
- get description() {
9
- return 'Remove one or more relationships from a Memory Graph by their IDs. Pass relationship IDs as an array.';
10
- }
11
- get inputSchema() {
12
- return {
13
- type: 'object',
14
- properties: {
15
- organizationId: {
16
- type: 'string',
17
- description: 'The organization ID'
18
- },
19
- memoryGraphId: {
20
- type: 'string',
21
- description: 'The Memory Graph ID'
22
- },
23
- relationshipIds: {
24
- type: 'array',
25
- items: { type: 'string' },
26
- description: 'Array of relationship IDs to remove'
27
- }
28
- },
29
- required: ['organizationId', 'memoryGraphId', 'relationshipIds']
30
- };
31
- }
32
- async handleExecute(params) {
33
- const { organizationId, memoryGraphId, relationshipIds } = params;
34
- this.logger.info('GraphRemoveRelationshipsTool', `Removing ${relationshipIds.length} relationships from graph: ${memoryGraphId}`);
35
- try {
36
- const result = await this.ucmClient.graphRemoveRelationships(organizationId, memoryGraphId, relationshipIds);
37
- return JSON.stringify(result);
38
- }
39
- catch (error) {
40
- if (error.response?.status === 404) {
41
- throw new McpError(McpErrorCode.InvalidParams, `Memory Graph not found`);
42
- }
43
- throw new McpError(McpErrorCode.InternalError, `Failed to remove relationships: ${error.message}`);
44
- }
45
- }
46
- }
47
- //# sourceMappingURL=GraphRemoveRelationshipsTool.js.map
@@ -1,35 +0,0 @@
1
- import { BaseToolController } from '../base/BaseToolController.js';
2
- import { UcmApiClient } from '../../clients/UcmLocalApiClient.js';
3
- import { ILogger } from '../../interfaces/ILogger.js';
4
- export declare class ExploreNamespaceController extends BaseToolController {
5
- constructor(ucmClient: UcmApiClient, logger: ILogger);
6
- get name(): string;
7
- get description(): string;
8
- get inputSchema(): any;
9
- protected handleExecute(params: any): Promise<any>;
10
- private exploreNamespace;
11
- private getDirectContent;
12
- private getArtifactsAtPath;
13
- private applyFilters;
14
- private processArtifacts;
15
- private getNodeSummary;
16
- private calculateNodeStatistics;
17
- private sortNodes;
18
- private generateNavigationHints;
19
- private buildBreadcrumbs;
20
- private isValidNamespacePath;
21
- private getNameFromPath;
22
- private determineNodeType;
23
- private calculateLevel;
24
- private generateContentPreview;
25
- private getLastActivity;
26
- private countTotalNodes;
27
- private calculateMaxDepth;
28
- private hasMoreContent;
29
- private countArtifactsRecursively;
30
- private collectMetadataRecursively;
31
- private getLastActivityRecursively;
32
- private calculatePopularityScore;
33
- private findInterestingPaths;
34
- }
35
- //# sourceMappingURL=ExploreNamespaceController.d.ts.map