@edicarlos.lds/businessmap-mcp 1.7.0 → 2.1.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 (146) hide show
  1. package/README.md +11 -7
  2. package/dist/client/businessmap-client.d.ts +18 -1
  3. package/dist/client/businessmap-client.d.ts.map +1 -1
  4. package/dist/client/businessmap-client.js +52 -0
  5. package/dist/client/businessmap-client.js.map +1 -1
  6. package/dist/client/modules/board-client.d.ts +13 -1
  7. package/dist/client/modules/board-client.d.ts.map +1 -1
  8. package/dist/client/modules/board-client.js +23 -0
  9. package/dist/client/modules/board-client.js.map +1 -1
  10. package/dist/client/modules/card-client.d.ts +52 -1
  11. package/dist/client/modules/card-client.d.ts.map +1 -1
  12. package/dist/client/modules/card-client.js +94 -0
  13. package/dist/client/modules/card-client.js.map +1 -1
  14. package/dist/client/modules/index.d.ts +4 -2
  15. package/dist/client/modules/index.d.ts.map +1 -1
  16. package/dist/client/modules/index.js.map +1 -1
  17. package/dist/client/modules/user-client.d.ts +5 -1
  18. package/dist/client/modules/user-client.d.ts.map +1 -1
  19. package/dist/client/modules/user-client.js +8 -0
  20. package/dist/client/modules/user-client.js.map +1 -1
  21. package/dist/config/environment.d.ts +3 -1
  22. package/dist/config/environment.d.ts.map +1 -1
  23. package/dist/config/environment.js +37 -6
  24. package/dist/config/environment.js.map +1 -1
  25. package/dist/index.js +40 -32
  26. package/dist/index.js.map +1 -1
  27. package/dist/schemas/board-schemas.d.ts +110 -1
  28. package/dist/schemas/board-schemas.d.ts.map +1 -1
  29. package/dist/schemas/board-schemas.js +65 -1
  30. package/dist/schemas/board-schemas.js.map +1 -1
  31. package/dist/schemas/card-schemas.d.ts +140 -7
  32. package/dist/schemas/card-schemas.d.ts.map +1 -1
  33. package/dist/schemas/card-schemas.js +80 -1
  34. package/dist/schemas/card-schemas.js.map +1 -1
  35. package/dist/schemas/common-schemas.d.ts +1 -1
  36. package/dist/schemas/common-schemas.d.ts.map +1 -1
  37. package/dist/schemas/common-schemas.js +1 -1
  38. package/dist/schemas/common-schemas.js.map +1 -1
  39. package/dist/schemas/custom-field-schemas.d.ts +1 -1
  40. package/dist/schemas/custom-field-schemas.d.ts.map +1 -1
  41. package/dist/schemas/custom-field-schemas.js +1 -1
  42. package/dist/schemas/custom-field-schemas.js.map +1 -1
  43. package/dist/schemas/user-schemas.d.ts +11 -1
  44. package/dist/schemas/user-schemas.d.ts.map +1 -1
  45. package/dist/schemas/user-schemas.js +11 -1
  46. package/dist/schemas/user-schemas.js.map +1 -1
  47. package/dist/schemas/utility-schemas.d.ts +1 -1
  48. package/dist/schemas/utility-schemas.d.ts.map +1 -1
  49. package/dist/schemas/utility-schemas.js +1 -1
  50. package/dist/schemas/utility-schemas.js.map +1 -1
  51. package/dist/schemas/workflow-schemas.d.ts +1 -1
  52. package/dist/schemas/workflow-schemas.d.ts.map +1 -1
  53. package/dist/schemas/workflow-schemas.js +1 -1
  54. package/dist/schemas/workflow-schemas.js.map +1 -1
  55. package/dist/schemas/workspace-schemas.d.ts +1 -1
  56. package/dist/schemas/workspace-schemas.d.ts.map +1 -1
  57. package/dist/schemas/workspace-schemas.js +1 -1
  58. package/dist/schemas/workspace-schemas.js.map +1 -1
  59. package/dist/server/http.d.ts +1 -2
  60. package/dist/server/http.d.ts.map +1 -1
  61. package/dist/server/http.js +82 -42
  62. package/dist/server/http.js.map +1 -1
  63. package/dist/server/mcp-server.d.ts +3 -2
  64. package/dist/server/mcp-server.d.ts.map +1 -1
  65. package/dist/server/mcp-server.js +21 -2
  66. package/dist/server/mcp-server.js.map +1 -1
  67. package/dist/server/prompts/base-prompt.d.ts +14 -0
  68. package/dist/server/prompts/base-prompt.d.ts.map +1 -0
  69. package/dist/server/prompts/base-prompt.js +2 -0
  70. package/dist/server/prompts/base-prompt.js.map +1 -0
  71. package/dist/server/prompts/board-prompts.d.ts +9 -0
  72. package/dist/server/prompts/board-prompts.d.ts.map +1 -0
  73. package/dist/server/prompts/board-prompts.js +101 -0
  74. package/dist/server/prompts/board-prompts.js.map +1 -0
  75. package/dist/server/prompts/card-prompts.d.ts +8 -0
  76. package/dist/server/prompts/card-prompts.d.ts.map +1 -0
  77. package/dist/server/prompts/card-prompts.js +47 -0
  78. package/dist/server/prompts/card-prompts.js.map +1 -0
  79. package/dist/server/prompts/index.d.ts +5 -0
  80. package/dist/server/prompts/index.d.ts.map +1 -0
  81. package/dist/server/prompts/index.js +4 -0
  82. package/dist/server/prompts/index.js.map +1 -0
  83. package/dist/server/prompts/workspace-prompts.d.ts +8 -0
  84. package/dist/server/prompts/workspace-prompts.d.ts.map +1 -0
  85. package/dist/server/prompts/workspace-prompts.js +59 -0
  86. package/dist/server/prompts/workspace-prompts.js.map +1 -0
  87. package/dist/server/resources/base-resource.d.ts +18 -0
  88. package/dist/server/resources/base-resource.d.ts.map +1 -0
  89. package/dist/server/resources/base-resource.js +10 -0
  90. package/dist/server/resources/base-resource.js.map +1 -0
  91. package/dist/server/resources/board-resources.d.ts +7 -0
  92. package/dist/server/resources/board-resources.d.ts.map +1 -0
  93. package/dist/server/resources/board-resources.js +31 -0
  94. package/dist/server/resources/board-resources.js.map +1 -0
  95. package/dist/server/resources/card-resources.d.ts +7 -0
  96. package/dist/server/resources/card-resources.d.ts.map +1 -0
  97. package/dist/server/resources/card-resources.js +34 -0
  98. package/dist/server/resources/card-resources.js.map +1 -0
  99. package/dist/server/resources/index.d.ts +5 -0
  100. package/dist/server/resources/index.d.ts.map +1 -0
  101. package/dist/server/resources/index.js +5 -0
  102. package/dist/server/resources/index.js.map +1 -0
  103. package/dist/server/resources/workspace-resources.d.ts +7 -0
  104. package/dist/server/resources/workspace-resources.d.ts.map +1 -0
  105. package/dist/server/resources/workspace-resources.js +17 -0
  106. package/dist/server/resources/workspace-resources.js.map +1 -0
  107. package/dist/server/tools/base-tool.d.ts +1 -1
  108. package/dist/server/tools/base-tool.d.ts.map +1 -1
  109. package/dist/server/tools/base-tool.js.map +1 -1
  110. package/dist/server/tools/board-tools.d.ts +3 -0
  111. package/dist/server/tools/board-tools.d.ts.map +1 -1
  112. package/dist/server/tools/board-tools.js +72 -1
  113. package/dist/server/tools/board-tools.js.map +1 -1
  114. package/dist/server/tools/card-tools.d.ts +13 -0
  115. package/dist/server/tools/card-tools.d.ts.map +1 -1
  116. package/dist/server/tools/card-tools.js +249 -1
  117. package/dist/server/tools/card-tools.js.map +1 -1
  118. package/dist/server/tools/custom-field-tools.d.ts.map +1 -1
  119. package/dist/server/tools/custom-field-tools.js +1 -0
  120. package/dist/server/tools/custom-field-tools.js.map +1 -1
  121. package/dist/server/tools/index.d.ts +2 -1
  122. package/dist/server/tools/index.d.ts.map +1 -1
  123. package/dist/server/tools/index.js.map +1 -1
  124. package/dist/server/tools/user-tools.d.ts +1 -0
  125. package/dist/server/tools/user-tools.d.ts.map +1 -1
  126. package/dist/server/tools/user-tools.js +26 -1
  127. package/dist/server/tools/user-tools.js.map +1 -1
  128. package/dist/server/tools/utility-tools.d.ts.map +1 -1
  129. package/dist/server/tools/utility-tools.js +2 -0
  130. package/dist/server/tools/utility-tools.js.map +1 -1
  131. package/dist/server/tools/workflow-tools.d.ts.map +1 -1
  132. package/dist/server/tools/workflow-tools.js +2 -0
  133. package/dist/server/tools/workflow-tools.js.map +1 -1
  134. package/dist/server/tools/workspace-tools.d.ts.map +1 -1
  135. package/dist/server/tools/workspace-tools.js +3 -0
  136. package/dist/server/tools/workspace-tools.js.map +1 -1
  137. package/dist/types/board.d.ts +16 -0
  138. package/dist/types/board.d.ts.map +1 -1
  139. package/dist/types/card.d.ts +47 -0
  140. package/dist/types/card.d.ts.map +1 -1
  141. package/dist/types/user.d.ts +8 -0
  142. package/dist/types/user.d.ts.map +1 -1
  143. package/dist/utils/logger.d.ts +5 -5
  144. package/dist/utils/logger.d.ts.map +1 -1
  145. package/dist/utils/logger.js.map +1 -1
  146. package/package.json +4 -5
@@ -1,4 +1,4 @@
1
- import { createBoardSchema, createLaneSchema, getBoardSchema, getCurrentBoardStructureSchema, getLaneSchema, listBoardsSchema, searchBoardSchema, } from '../../schemas/index.js';
1
+ import { createBoardSchema, createColumnSchema, createColumnInputSchema, createLaneSchema, deleteColumnSchema, getBoardSchema, getCurrentBoardStructureSchema, getLaneSchema, listBoardsSchema, searchBoardSchema, updateColumnSchema, } from '../../schemas/index.js';
2
2
  import { logger } from '../../utils/logger.js';
3
3
  import { createErrorResponse, createSuccessResponse } from './base-tool.js';
4
4
  export class BoardToolHandler {
@@ -12,6 +12,9 @@ export class BoardToolHandler {
12
12
  if (!readOnlyMode) {
13
13
  this.registerCreateBoard(server, client);
14
14
  this.registerCreateLane(server, client);
15
+ this.registerCreateColumn(server, client);
16
+ this.registerUpdateColumn(server, client);
17
+ this.registerDeleteColumn(server, client);
15
18
  }
16
19
  }
17
20
  registerListBoards(server, client) {
@@ -19,6 +22,7 @@ export class BoardToolHandler {
19
22
  title: 'List Boards',
20
23
  description: 'Get a list of boards with optional filters',
21
24
  inputSchema: listBoardsSchema.shape,
25
+ annotations: { readOnlyHint: true, idempotentHint: true },
22
26
  }, async (params) => {
23
27
  try {
24
28
  const boards = await client.getBoards(params);
@@ -34,6 +38,7 @@ export class BoardToolHandler {
34
38
  title: 'Search Board',
35
39
  description: 'Search for a board by ID or name, with intelligent fallback to list all boards if direct search fails',
36
40
  inputSchema: searchBoardSchema.shape,
41
+ annotations: { readOnlyHint: true, idempotentHint: true },
37
42
  }, async ({ board_id, board_name, workspace_id }) => {
38
43
  try {
39
44
  if (board_id) {
@@ -112,6 +117,7 @@ export class BoardToolHandler {
112
117
  title: 'Get Board Columns',
113
118
  description: 'Get all columns for a board (válido na API oficial)',
114
119
  inputSchema: getBoardSchema.shape,
120
+ annotations: { readOnlyHint: true, idempotentHint: true },
115
121
  }, async ({ board_id }) => {
116
122
  try {
117
123
  const columns = await client.getColumns(board_id);
@@ -127,6 +133,7 @@ export class BoardToolHandler {
127
133
  title: 'Get Board Lanes',
128
134
  description: 'Get all lanes/swimlanes for a board (válido na API oficial)',
129
135
  inputSchema: getBoardSchema.shape,
136
+ annotations: { readOnlyHint: true, idempotentHint: true },
130
137
  }, async ({ board_id }) => {
131
138
  try {
132
139
  const lanes = await client.getLanes(board_id);
@@ -142,6 +149,7 @@ export class BoardToolHandler {
142
149
  title: 'Get Lane Details',
143
150
  description: 'Get details of a specific lane/swimlane (válido na API oficial)',
144
151
  inputSchema: getLaneSchema.shape,
152
+ annotations: { readOnlyHint: true, idempotentHint: true },
145
153
  }, async ({ lane_id }) => {
146
154
  try {
147
155
  const lane = await client.getLane(lane_id);
@@ -157,6 +165,7 @@ export class BoardToolHandler {
157
165
  title: 'Create Board',
158
166
  description: 'Create a new board in a workspace',
159
167
  inputSchema: createBoardSchema.shape,
168
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
160
169
  }, async ({ name, workspace_id, description }) => {
161
170
  try {
162
171
  const board = await client.createBoard({
@@ -176,6 +185,7 @@ export class BoardToolHandler {
176
185
  title: 'Create Lane',
177
186
  description: 'Create a new lane/swimlane in a board (válido na API oficial)',
178
187
  inputSchema: createLaneSchema.shape,
188
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
179
189
  }, async ({ workflow_id, name, description, color, position }) => {
180
190
  try {
181
191
  const lane = await client.createLane({
@@ -197,6 +207,7 @@ export class BoardToolHandler {
197
207
  title: 'Get Current Board Structure',
198
208
  description: 'Get the complete current structure of a board including workflows, columns, lanes, and configurations',
199
209
  inputSchema: getCurrentBoardStructureSchema.shape,
210
+ annotations: { readOnlyHint: true, idempotentHint: true },
200
211
  }, async ({ board_id }) => {
201
212
  try {
202
213
  const structure = await client.getCurrentBoardStructure(board_id);
@@ -207,5 +218,65 @@ export class BoardToolHandler {
207
218
  }
208
219
  });
209
220
  }
221
+ registerCreateColumn(server, client) {
222
+ server.registerTool('create_column', {
223
+ title: 'Create Column',
224
+ description: 'Create a new column on a board. Supports both main columns (requires workflow_id and section) and sub-columns (requires parent_column_id). Section values: 1=Backlog, 2=Requested, 3=Progress, 4=Done.',
225
+ inputSchema: createColumnInputSchema.shape,
226
+ }, async (params) => {
227
+ try {
228
+ const { board_id, workflow_id, section, parent_column_id, position, name, limit, description, } = createColumnSchema.parse(params);
229
+ const columnParams = parent_column_id
230
+ ? { parent_column_id, position, name, ...(limit !== undefined && { limit }), ...(description && { description }) }
231
+ : { workflow_id, section, position, name, ...(limit !== undefined && { limit }), ...(description && { description }) };
232
+ const column = await client.createColumn(board_id, columnParams);
233
+ return createSuccessResponse(column, 'Column created successfully:');
234
+ }
235
+ catch (error) {
236
+ return createErrorResponse(error, 'creating column');
237
+ }
238
+ });
239
+ }
240
+ registerUpdateColumn(server, client) {
241
+ server.registerTool('update_column', {
242
+ title: 'Update Column',
243
+ description: 'Update the details of a specific column on a board',
244
+ inputSchema: updateColumnSchema.shape,
245
+ }, async ({ board_id, column_id, name, limit, section, position, description }) => {
246
+ try {
247
+ const params = {};
248
+ if (name !== undefined)
249
+ params['name'] = name;
250
+ if (limit !== undefined)
251
+ params['limit'] = limit;
252
+ if (section !== undefined)
253
+ params['section'] = section;
254
+ if (position !== undefined)
255
+ params['position'] = position;
256
+ if (description !== undefined)
257
+ params['description'] = description;
258
+ const column = await client.updateColumn(board_id, column_id, params);
259
+ return createSuccessResponse(column, 'Column updated successfully:');
260
+ }
261
+ catch (error) {
262
+ return createErrorResponse(error, 'updating column');
263
+ }
264
+ });
265
+ }
266
+ registerDeleteColumn(server, client) {
267
+ server.registerTool('delete_column', {
268
+ title: 'Delete Column',
269
+ description: 'Delete a column from a board',
270
+ inputSchema: deleteColumnSchema.shape,
271
+ }, async ({ board_id, column_id }) => {
272
+ try {
273
+ await client.deleteColumn(board_id, column_id);
274
+ return createSuccessResponse({ board_id, column_id }, 'Column deleted successfully:');
275
+ }
276
+ catch (error) {
277
+ return createErrorResponse(error, 'deleting column');
278
+ }
279
+ });
280
+ }
210
281
  }
211
282
  //# sourceMappingURL=board-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"board-tools.js","sourceRoot":"","sources":["../../../src/server/tools/board-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"board-tools.js","sourceRoot":"","sources":["../../../src/server/tools/board-tools.ts"],"names":[],"mappings":"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"}
@@ -26,5 +26,18 @@ export declare class CardToolHandler implements BaseToolHandler {
26
26
  private registerRemoveCardParent;
27
27
  private registerGetCardParentGraph;
28
28
  private registerGetCardChildren;
29
+ private registerBlockCard;
30
+ private registerUnblockCard;
31
+ private registerCreateComment;
32
+ private registerUpdateComment;
33
+ private registerDeleteComment;
34
+ private registerCreateTag;
35
+ private registerAddTagToCard;
36
+ private registerRemoveTagFromCard;
37
+ private registerAddStickerToCard;
38
+ private registerRemoveStickerFromCard;
39
+ private registerDeleteCard;
40
+ private registerAddPredecessor;
41
+ private registerRemovePredecessor;
29
42
  }
30
43
  //# sourceMappingURL=card-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"card-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/card-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAuBvE,OAAO,EAAE,eAAe,EAA8C,MAAM,gBAAgB,CAAC;AAE7F,qBAAa,eAAgB,YAAW,eAAe;IACrD,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI;IA6BxF,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,mBAAmB;IA0B3B,OAAO,CAAC,uBAAuB;IAsB/B,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,uBAAuB;IAsB/B,OAAO,CAAC,0BAA0B;IAsBlC,OAAO,CAAC,uBAAuB;IAsB/B,OAAO,CAAC,sBAAsB;IAmB9B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,sBAAsB;IAsB9B,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,wBAAwB;IAsBhC,OAAO,CAAC,0BAA0B;IAsBlC,OAAO,CAAC,uBAAuB;CAqBhC"}
1
+ {"version":3,"file":"card-tools.d.ts","sourceRoot":"","sources":["../../../src/server/tools/card-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAoCvE,OAAO,EAAE,eAAe,EAA8C,MAAM,gBAAgB,CAAC;AAE7F,qBAAa,eAAgB,YAAW,eAAe;IACrD,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI;IA+CxF,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,2BAA2B;IAuBnC,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,0BAA0B;IAuBlC,OAAO,CAAC,uBAAuB;IAuB/B,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,yBAAyB;IAqBjC,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,qBAAqB;IAoB7B,OAAO,CAAC,wBAAwB;IAuBhC,OAAO,CAAC,0BAA0B;IAuBlC,OAAO,CAAC,uBAAuB;IAyB/B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,qBAAqB;IAmB7B,OAAO,CAAC,qBAAqB;IAqB7B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,6BAA6B;IA0BrC,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,sBAAsB;IA0B9B,OAAO,CAAC,yBAAyB;CAsBlC"}
@@ -1,4 +1,4 @@
1
- import { addCardParentSchema, cardSizeSchema, createCardSchema, createCardSubtaskSchema, getCardChildrenSchema, getCardCommentSchema, getCardHistorySchema, getCardLinkedCardsSchema, getCardOutcomesSchema, getCardParentGraphSchema, getCardParentSchema, getCardParentsSchema, getCardSchema, getCardSubtaskSchema, getCardSubtasksSchema, getCardTypesSchema, listCardsSchema, moveCardSchema, removeCardParentSchema, updateCardSchema, } from '../../schemas/index.js';
1
+ import { addCardParentSchema, addPredecessorSchema, addStickerToCardSchema, addTagToCardSchema, blockCardSchema, cardSizeSchema, createCardSchema, createCardSubtaskSchema, createCommentSchema, createTagSchema, deleteCardSchema, deleteCommentSchema, getCardChildrenSchema, getCardCommentSchema, getCardHistorySchema, getCardLinkedCardsSchema, getCardOutcomesSchema, getCardParentGraphSchema, getCardParentSchema, getCardParentsSchema, getCardSchema, getCardSubtaskSchema, getCardSubtasksSchema, getCardTypesSchema, listCardsSchema, moveCardSchema, removeCardParentSchema, removePredecessorSchema, removeStickerFromCardSchema, removeTagFromCardSchema, unblockCardSchema, updateCardSchema, updateCommentSchema, } from '../../schemas/index.js';
2
2
  import { createErrorResponse, createSuccessResponse } from './base-tool.js';
3
3
  export class CardToolHandler {
4
4
  registerTools(server, client, readOnlyMode) {
@@ -23,9 +23,27 @@ export class CardToolHandler {
23
23
  this.registerMoveCard(server, client);
24
24
  this.registerUpdateCard(server, client);
25
25
  this.registerSetCardSize(server, client);
26
+ this.registerDeleteCard(server, client);
26
27
  this.registerCreateCardSubtask(server, client);
27
28
  this.registerAddCardParent(server, client);
28
29
  this.registerRemoveCardParent(server, client);
30
+ // Block / Unblock
31
+ this.registerBlockCard(server, client);
32
+ this.registerUnblockCard(server, client);
33
+ // Comments
34
+ this.registerCreateComment(server, client);
35
+ this.registerUpdateComment(server, client);
36
+ this.registerDeleteComment(server, client);
37
+ // Tags
38
+ this.registerCreateTag(server, client);
39
+ this.registerAddTagToCard(server, client);
40
+ this.registerRemoveTagFromCard(server, client);
41
+ // Stickers
42
+ this.registerAddStickerToCard(server, client);
43
+ this.registerRemoveStickerFromCard(server, client);
44
+ // Predecessors
45
+ this.registerAddPredecessor(server, client);
46
+ this.registerRemovePredecessor(server, client);
29
47
  }
30
48
  }
31
49
  registerListCards(server, client) {
@@ -33,6 +51,7 @@ export class CardToolHandler {
33
51
  title: 'List Cards',
34
52
  description: 'Get a list of cards from a board with optional filters',
35
53
  inputSchema: listCardsSchema.shape,
54
+ annotations: { readOnlyHint: true, idempotentHint: true },
36
55
  }, async (params) => {
37
56
  try {
38
57
  const { board_id, ...filters } = params;
@@ -49,6 +68,7 @@ export class CardToolHandler {
49
68
  title: 'Get Card',
50
69
  description: 'Get details of a specific card',
51
70
  inputSchema: getCardSchema.shape,
71
+ annotations: { readOnlyHint: true, idempotentHint: true },
52
72
  }, async ({ card_id }) => {
53
73
  try {
54
74
  const card = await client.getCard(card_id);
@@ -64,6 +84,7 @@ export class CardToolHandler {
64
84
  title: 'Get Card Size',
65
85
  description: 'Get the size/points of a specific card',
66
86
  inputSchema: getCardSchema.shape,
87
+ annotations: { readOnlyHint: true, idempotentHint: true },
67
88
  }, async ({ card_id }) => {
68
89
  try {
69
90
  const card = await client.getCard(card_id);
@@ -87,6 +108,7 @@ export class CardToolHandler {
87
108
  title: 'Create Card',
88
109
  description: 'Create a new card in a board',
89
110
  inputSchema: createCardSchema.shape,
111
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
90
112
  }, async (params) => {
91
113
  try {
92
114
  const card = await client.createCard(params);
@@ -102,6 +124,7 @@ export class CardToolHandler {
102
124
  title: 'Move Card',
103
125
  description: 'Move a card to a different column or lane',
104
126
  inputSchema: moveCardSchema.shape,
127
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
105
128
  }, async ({ card_id, column_id, lane_id, position }) => {
106
129
  try {
107
130
  const card = await client.moveCard(card_id, column_id, lane_id, position);
@@ -117,6 +140,7 @@ export class CardToolHandler {
117
140
  title: 'Update Card',
118
141
  description: "Update a card's properties",
119
142
  inputSchema: updateCardSchema.shape,
143
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
120
144
  }, async (params) => {
121
145
  try {
122
146
  const card = await client.updateCard(params);
@@ -132,6 +156,7 @@ export class CardToolHandler {
132
156
  title: 'Set Card Size',
133
157
  description: 'Set the size/points of a specific card',
134
158
  inputSchema: cardSizeSchema.shape,
159
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
135
160
  }, async ({ card_id, size }) => {
136
161
  try {
137
162
  const card = await client.updateCard({ card_id, size });
@@ -154,6 +179,7 @@ export class CardToolHandler {
154
179
  title: 'Get Card Comments',
155
180
  description: 'Get all comments for a specific card',
156
181
  inputSchema: getCardSchema.shape,
182
+ annotations: { readOnlyHint: true, idempotentHint: true },
157
183
  }, async ({ card_id }) => {
158
184
  try {
159
185
  const comments = await client.getCardComments(card_id);
@@ -172,6 +198,7 @@ export class CardToolHandler {
172
198
  title: 'Get Card Comment',
173
199
  description: 'Get details of a specific comment from a card',
174
200
  inputSchema: getCardCommentSchema.shape,
201
+ annotations: { readOnlyHint: true, idempotentHint: true },
175
202
  }, async ({ card_id, comment_id }) => {
176
203
  try {
177
204
  const comment = await client.getCardComment(card_id, comment_id);
@@ -187,6 +214,7 @@ export class CardToolHandler {
187
214
  title: 'Get Card Custom Fields',
188
215
  description: 'Get all custom fields for a specific card',
189
216
  inputSchema: getCardSchema.shape,
217
+ annotations: { readOnlyHint: true, idempotentHint: true },
190
218
  }, async ({ card_id }) => {
191
219
  try {
192
220
  const customFields = await client.getCardCustomFields(card_id);
@@ -205,6 +233,7 @@ export class CardToolHandler {
205
233
  title: 'Get Card Types',
206
234
  description: 'Get all available card types',
207
235
  inputSchema: getCardTypesSchema.shape,
236
+ annotations: { readOnlyHint: true, idempotentHint: true },
208
237
  }, async () => {
209
238
  try {
210
239
  const cardTypes = await client.getCardTypes();
@@ -223,6 +252,7 @@ export class CardToolHandler {
223
252
  title: 'Get Card History',
224
253
  description: 'Get the history of a specific card outcome',
225
254
  inputSchema: getCardHistorySchema.shape,
255
+ annotations: { readOnlyHint: true, idempotentHint: true },
226
256
  }, async ({ card_id, outcome_id }) => {
227
257
  try {
228
258
  const history = await client.getCardHistory(card_id, outcome_id);
@@ -241,6 +271,7 @@ export class CardToolHandler {
241
271
  title: 'Get Card Outcomes',
242
272
  description: 'Get all outcomes for a specific card',
243
273
  inputSchema: getCardOutcomesSchema.shape,
274
+ annotations: { readOnlyHint: true, idempotentHint: true },
244
275
  }, async ({ card_id }) => {
245
276
  try {
246
277
  const outcomes = await client.getCardOutcomes(card_id);
@@ -259,6 +290,7 @@ export class CardToolHandler {
259
290
  title: 'Get Card Linked Cards',
260
291
  description: 'Get all linked cards for a specific card',
261
292
  inputSchema: getCardLinkedCardsSchema.shape,
293
+ annotations: { readOnlyHint: true, idempotentHint: true },
262
294
  }, async ({ card_id }) => {
263
295
  try {
264
296
  const linkedCards = await client.getCardLinkedCards(card_id);
@@ -277,6 +309,7 @@ export class CardToolHandler {
277
309
  title: 'Get Card Subtasks',
278
310
  description: 'Get all subtasks for a specific card',
279
311
  inputSchema: getCardSubtasksSchema.shape,
312
+ annotations: { readOnlyHint: true, idempotentHint: true },
280
313
  }, async ({ card_id }) => {
281
314
  try {
282
315
  const subtasks = await client.getCardSubtasks(card_id);
@@ -295,6 +328,7 @@ export class CardToolHandler {
295
328
  title: 'Get Card Subtask',
296
329
  description: 'Get details of a specific subtask from a card',
297
330
  inputSchema: getCardSubtaskSchema.shape,
331
+ annotations: { readOnlyHint: true, idempotentHint: true },
298
332
  }, async ({ card_id, subtask_id }) => {
299
333
  try {
300
334
  const subtask = await client.getCardSubtask(card_id, subtask_id);
@@ -310,6 +344,7 @@ export class CardToolHandler {
310
344
  title: 'Create Card Subtask',
311
345
  description: 'Create a new subtask for a card',
312
346
  inputSchema: createCardSubtaskSchema.shape,
347
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
313
348
  }, async (params) => {
314
349
  try {
315
350
  const { card_id, ...subtaskData } = params;
@@ -326,6 +361,7 @@ export class CardToolHandler {
326
361
  title: 'Get Card Parents',
327
362
  description: 'Get a list of parent cards for a specific card',
328
363
  inputSchema: getCardParentsSchema.shape,
364
+ annotations: { readOnlyHint: true, idempotentHint: true },
329
365
  }, async ({ card_id }) => {
330
366
  try {
331
367
  const parents = await client.getCardParents(card_id);
@@ -344,6 +380,7 @@ export class CardToolHandler {
344
380
  title: 'Get Card Parent',
345
381
  description: 'Check if a card is a parent of a given card',
346
382
  inputSchema: getCardParentSchema.shape,
383
+ annotations: { readOnlyHint: true, idempotentHint: true },
347
384
  }, async ({ card_id, parent_card_id }) => {
348
385
  try {
349
386
  const parent = await client.getCardParent(card_id, parent_card_id);
@@ -359,6 +396,7 @@ export class CardToolHandler {
359
396
  title: 'Add Card Parent',
360
397
  description: 'Make a card a parent of a given card',
361
398
  inputSchema: addCardParentSchema.shape,
399
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false },
362
400
  }, async ({ card_id, parent_card_id }) => {
363
401
  try {
364
402
  const result = await client.addCardParent(card_id, parent_card_id);
@@ -374,6 +412,7 @@ export class CardToolHandler {
374
412
  title: 'Remove Card Parent',
375
413
  description: 'Remove the link between a child card and a parent card',
376
414
  inputSchema: removeCardParentSchema.shape,
415
+ annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false },
377
416
  }, async ({ card_id, parent_card_id }) => {
378
417
  try {
379
418
  await client.removeCardParent(card_id, parent_card_id);
@@ -389,6 +428,7 @@ export class CardToolHandler {
389
428
  title: 'Get Card Parent Graph',
390
429
  description: 'Get a list of parent cards including their parent cards too',
391
430
  inputSchema: getCardParentGraphSchema.shape,
431
+ annotations: { readOnlyHint: true, idempotentHint: true },
392
432
  }, async ({ card_id }) => {
393
433
  try {
394
434
  const parentGraph = await client.getCardParentGraph(card_id);
@@ -407,6 +447,7 @@ export class CardToolHandler {
407
447
  title: 'Get Card Children',
408
448
  description: 'Get a list of child cards of a specified parent card',
409
449
  inputSchema: getCardChildrenSchema.shape,
450
+ annotations: { readOnlyHint: true, idempotentHint: true },
410
451
  }, async ({ card_id }) => {
411
452
  try {
412
453
  const children = await client.getCardChildren(card_id);
@@ -420,5 +461,212 @@ export class CardToolHandler {
420
461
  }
421
462
  });
422
463
  }
464
+ // ─── Block / Unblock ────────────────────────────────────────────────────────
465
+ registerBlockCard(server, client) {
466
+ server.registerTool('block_card', {
467
+ title: 'Block Card',
468
+ description: 'Block a card and set a reason/comment explaining why it is blocked',
469
+ inputSchema: blockCardSchema.shape,
470
+ }, async ({ card_id, reason }) => {
471
+ try {
472
+ await client.blockCard(card_id, reason);
473
+ return createSuccessResponse({ card_id, reason }, 'Card blocked successfully:');
474
+ }
475
+ catch (error) {
476
+ return createErrorResponse(error, 'blocking card');
477
+ }
478
+ });
479
+ }
480
+ registerUnblockCard(server, client) {
481
+ server.registerTool('unblock_card', {
482
+ title: 'Unblock Card',
483
+ description: 'Unblock a card by removing its block reason',
484
+ inputSchema: unblockCardSchema.shape,
485
+ }, async ({ card_id }) => {
486
+ try {
487
+ await client.unblockCard(card_id);
488
+ return createSuccessResponse({ card_id }, 'Card unblocked successfully:');
489
+ }
490
+ catch (error) {
491
+ return createErrorResponse(error, 'unblocking card');
492
+ }
493
+ });
494
+ }
495
+ // ─── Comments ───────────────────────────────────────────────────────────────
496
+ registerCreateComment(server, client) {
497
+ server.registerTool('create_comment', {
498
+ title: 'Create Comment',
499
+ description: 'Add a new comment to a card',
500
+ inputSchema: createCommentSchema.shape,
501
+ }, async ({ card_id, text }) => {
502
+ try {
503
+ const comment = await client.createCardComment(card_id, { text });
504
+ return createSuccessResponse(comment, 'Comment created successfully:');
505
+ }
506
+ catch (error) {
507
+ return createErrorResponse(error, 'creating comment');
508
+ }
509
+ });
510
+ }
511
+ registerUpdateComment(server, client) {
512
+ server.registerTool('update_comment', {
513
+ title: 'Update Comment',
514
+ description: 'Update the text of an existing comment on a card',
515
+ inputSchema: updateCommentSchema.shape,
516
+ }, async ({ card_id, comment_id, text }) => {
517
+ try {
518
+ const comment = await client.updateCardComment(card_id, comment_id, { text });
519
+ return createSuccessResponse(comment, 'Comment updated successfully:');
520
+ }
521
+ catch (error) {
522
+ return createErrorResponse(error, 'updating comment');
523
+ }
524
+ });
525
+ }
526
+ registerDeleteComment(server, client) {
527
+ server.registerTool('delete_comment', {
528
+ title: 'Delete Comment',
529
+ description: 'Delete a comment from a card',
530
+ inputSchema: deleteCommentSchema.shape,
531
+ }, async ({ card_id, comment_id }) => {
532
+ try {
533
+ await client.deleteCardComment(card_id, comment_id);
534
+ return createSuccessResponse({ card_id, comment_id }, 'Comment deleted successfully:');
535
+ }
536
+ catch (error) {
537
+ return createErrorResponse(error, 'deleting comment');
538
+ }
539
+ });
540
+ }
541
+ // ─── Tags ────────────────────────────────────────────────────────────────────
542
+ registerCreateTag(server, client) {
543
+ server.registerTool('create_tag', {
544
+ title: 'Create Tag',
545
+ description: 'Create a new tag in the workspace',
546
+ inputSchema: createTagSchema.shape,
547
+ }, async ({ label, color }) => {
548
+ try {
549
+ const tag = await client.createTag({ label, color });
550
+ return createSuccessResponse(tag, 'Tag created successfully:');
551
+ }
552
+ catch (error) {
553
+ return createErrorResponse(error, 'creating tag');
554
+ }
555
+ });
556
+ }
557
+ registerAddTagToCard(server, client) {
558
+ server.registerTool('add_tag_to_card', {
559
+ title: 'Add Tag to Card',
560
+ description: 'Add an existing tag to a card',
561
+ inputSchema: addTagToCardSchema.shape,
562
+ }, async ({ card_id, tag_id }) => {
563
+ try {
564
+ await client.addTagToCard(card_id, tag_id);
565
+ return createSuccessResponse({ card_id, tag_id }, 'Tag added to card successfully:');
566
+ }
567
+ catch (error) {
568
+ return createErrorResponse(error, 'adding tag to card');
569
+ }
570
+ });
571
+ }
572
+ registerRemoveTagFromCard(server, client) {
573
+ server.registerTool('remove_tag_from_card', {
574
+ title: 'Remove Tag from Card',
575
+ description: 'Remove a tag from a card',
576
+ inputSchema: removeTagFromCardSchema.shape,
577
+ }, async ({ card_id, tag_id }) => {
578
+ try {
579
+ await client.removeTagFromCard(card_id, tag_id);
580
+ return createSuccessResponse({ card_id, tag_id }, 'Tag removed from card successfully:');
581
+ }
582
+ catch (error) {
583
+ return createErrorResponse(error, 'removing tag from card');
584
+ }
585
+ });
586
+ }
587
+ // ─── Stickers ───────────────────────────────────────────────────────────────
588
+ registerAddStickerToCard(server, client) {
589
+ server.registerTool('add_sticker_to_card', {
590
+ title: 'Add Sticker to Card',
591
+ description: 'Add a sticker to a card',
592
+ inputSchema: addStickerToCardSchema.shape,
593
+ }, async ({ card_id, sticker_id }) => {
594
+ try {
595
+ const result = await client.addStickerToCard(card_id, sticker_id);
596
+ return createSuccessResponse(result, 'Sticker added to card successfully:');
597
+ }
598
+ catch (error) {
599
+ return createErrorResponse(error, 'adding sticker to card');
600
+ }
601
+ });
602
+ }
603
+ registerRemoveStickerFromCard(server, client) {
604
+ server.registerTool('remove_sticker_from_card', {
605
+ title: 'Remove Sticker from Card',
606
+ description: 'Remove a sticker from a card using the sticker-card association ID ' +
607
+ '(the "id" field returned when listing or adding stickers to a card)',
608
+ inputSchema: removeStickerFromCardSchema.shape,
609
+ }, async ({ card_id, sticker_card_id }) => {
610
+ try {
611
+ await client.removeStickerFromCard(card_id, sticker_card_id);
612
+ return createSuccessResponse({ card_id, sticker_card_id }, 'Sticker removed from card successfully:');
613
+ }
614
+ catch (error) {
615
+ return createErrorResponse(error, 'removing sticker from card');
616
+ }
617
+ });
618
+ }
619
+ // ─── Delete Card ─────────────────────────────────────────────────────────────
620
+ registerDeleteCard(server, client) {
621
+ server.registerTool('delete_card', {
622
+ title: 'Delete Card',
623
+ description: 'Permanently delete a card. This action cannot be undone and the card cannot be recovered.',
624
+ inputSchema: deleteCardSchema.shape,
625
+ }, async ({ card_id }) => {
626
+ try {
627
+ await client.deleteCard(card_id);
628
+ return createSuccessResponse({ card_id }, 'Card deleted successfully:');
629
+ }
630
+ catch (error) {
631
+ return createErrorResponse(error, 'deleting card');
632
+ }
633
+ });
634
+ }
635
+ // ─── Predecessors ─────────────────────────────────────────────────────────────
636
+ registerAddPredecessor(server, client) {
637
+ server.registerTool('add_predecessor', {
638
+ title: 'Add Predecessor',
639
+ description: 'Establish or update a predecessor-successor relationship between two cards. The predecessor_card_id becomes a prerequisite that must be completed before the card.',
640
+ inputSchema: addPredecessorSchema.shape,
641
+ }, async ({ card_id, predecessor_card_id, linked_card_position, card_position }) => {
642
+ try {
643
+ const params = {};
644
+ if (linked_card_position !== undefined)
645
+ params['linked_card_position'] = linked_card_position;
646
+ if (card_position !== undefined)
647
+ params['card_position'] = card_position;
648
+ await client.addPredecessor(card_id, predecessor_card_id, params);
649
+ return createSuccessResponse({ card_id, predecessor_card_id }, 'Predecessor added successfully:');
650
+ }
651
+ catch (error) {
652
+ return createErrorResponse(error, 'adding predecessor');
653
+ }
654
+ });
655
+ }
656
+ registerRemovePredecessor(server, client) {
657
+ server.registerTool('remove_predecessor', {
658
+ title: 'Remove Predecessor',
659
+ description: 'Remove the predecessor-successor relationship between two cards.',
660
+ inputSchema: removePredecessorSchema.shape,
661
+ }, async ({ card_id, predecessor_card_id }) => {
662
+ try {
663
+ await client.removePredecessor(card_id, predecessor_card_id);
664
+ return createSuccessResponse({ card_id, predecessor_card_id }, 'Predecessor removed successfully:');
665
+ }
666
+ catch (error) {
667
+ return createErrorResponse(error, 'removing predecessor');
668
+ }
669
+ });
670
+ }
423
671
  }
424
672
  //# sourceMappingURL=card-tools.js.map