@omnicoreos/planka-mcp 0.2.0 → 0.3.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 (195) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/.claude-plugin/marketplace.json +26 -0
  3. package/.claude-plugin/plugin.json +45 -0
  4. package/.codex-plugin/mcp.json +16 -0
  5. package/.codex-plugin/plugin.json +27 -0
  6. package/.mcp.json +17 -0
  7. package/CHANGELOG.md +510 -0
  8. package/README.es.md +294 -55
  9. package/README.md +293 -55
  10. package/dist/cli/init.d.ts +101 -0
  11. package/dist/cli/init.d.ts.map +1 -0
  12. package/dist/cli/init.js +481 -0
  13. package/dist/cli/init.js.map +1 -0
  14. package/dist/client.d.ts +32 -4
  15. package/dist/client.d.ts.map +1 -1
  16. package/dist/client.js +106 -32
  17. package/dist/client.js.map +1 -1
  18. package/dist/config/policy.d.ts +82 -0
  19. package/dist/config/policy.d.ts.map +1 -0
  20. package/dist/config/policy.js +226 -0
  21. package/dist/config/policy.js.map +1 -0
  22. package/dist/errors.d.ts +5 -1
  23. package/dist/errors.d.ts.map +1 -1
  24. package/dist/errors.js +62 -5
  25. package/dist/errors.js.map +1 -1
  26. package/dist/identity.generated.d.ts +2 -1
  27. package/dist/identity.generated.d.ts.map +1 -1
  28. package/dist/identity.generated.js +2 -1
  29. package/dist/identity.generated.js.map +1 -1
  30. package/dist/index.js +85 -10
  31. package/dist/index.js.map +1 -1
  32. package/dist/instructions.d.ts +21 -0
  33. package/dist/instructions.d.ts.map +1 -0
  34. package/dist/instructions.js +37 -0
  35. package/dist/instructions.js.map +1 -0
  36. package/dist/operations/actions.d.ts +654 -0
  37. package/dist/operations/actions.d.ts.map +1 -0
  38. package/dist/operations/actions.js +154 -0
  39. package/dist/operations/actions.js.map +1 -0
  40. package/dist/operations/archive.d.ts +28 -0
  41. package/dist/operations/archive.d.ts.map +1 -0
  42. package/dist/operations/archive.js +74 -0
  43. package/dist/operations/archive.js.map +1 -0
  44. package/dist/operations/attachments.d.ts +1 -1
  45. package/dist/operations/attachments.d.ts.map +1 -1
  46. package/dist/operations/attachments.js +3 -1
  47. package/dist/operations/attachments.js.map +1 -1
  48. package/dist/operations/board-id.d.ts +1 -1
  49. package/dist/operations/board-id.d.ts.map +1 -1
  50. package/dist/operations/board-id.js +13 -7
  51. package/dist/operations/board-id.js.map +1 -1
  52. package/dist/operations/boards.d.ts +96 -19
  53. package/dist/operations/boards.d.ts.map +1 -1
  54. package/dist/operations/boards.js +377 -93
  55. package/dist/operations/boards.js.map +1 -1
  56. package/dist/operations/card-brief.d.ts +91 -0
  57. package/dist/operations/card-brief.d.ts.map +1 -0
  58. package/dist/operations/card-brief.js +79 -0
  59. package/dist/operations/card-brief.js.map +1 -0
  60. package/dist/operations/cards.d.ts +34 -9
  61. package/dist/operations/cards.d.ts.map +1 -1
  62. package/dist/operations/cards.js +60 -14
  63. package/dist/operations/cards.js.map +1 -1
  64. package/dist/operations/comments.d.ts +61 -4
  65. package/dist/operations/comments.d.ts.map +1 -1
  66. package/dist/operations/comments.js +91 -8
  67. package/dist/operations/comments.js.map +1 -1
  68. package/dist/operations/duplicate.d.ts +16 -0
  69. package/dist/operations/duplicate.d.ts.map +1 -0
  70. package/dist/operations/duplicate.js +43 -0
  71. package/dist/operations/duplicate.js.map +1 -0
  72. package/dist/operations/labels.d.ts +1 -1
  73. package/dist/operations/labels.d.ts.map +1 -1
  74. package/dist/operations/labels.js +7 -4
  75. package/dist/operations/labels.js.map +1 -1
  76. package/dist/operations/lists.d.ts +63 -1
  77. package/dist/operations/lists.d.ts.map +1 -1
  78. package/dist/operations/lists.js +97 -2
  79. package/dist/operations/lists.js.map +1 -1
  80. package/dist/operations/members.d.ts +39 -0
  81. package/dist/operations/members.d.ts.map +1 -0
  82. package/dist/operations/members.js +107 -0
  83. package/dist/operations/members.js.map +1 -0
  84. package/dist/operations/projects.d.ts +16 -0
  85. package/dist/operations/projects.d.ts.map +1 -1
  86. package/dist/operations/projects.js +54 -9
  87. package/dist/operations/projects.js.map +1 -1
  88. package/dist/operations/tasks.d.ts +1 -1
  89. package/dist/operations/tasks.d.ts.map +1 -1
  90. package/dist/operations/tasks.js +5 -3
  91. package/dist/operations/tasks.js.map +1 -1
  92. package/dist/operations/users.d.ts +123 -0
  93. package/dist/operations/users.d.ts.map +1 -0
  94. package/dist/operations/users.js +180 -0
  95. package/dist/operations/users.js.map +1 -0
  96. package/dist/operations/verify.d.ts +84 -0
  97. package/dist/operations/verify.d.ts.map +1 -0
  98. package/dist/operations/verify.js +124 -0
  99. package/dist/operations/verify.js.map +1 -0
  100. package/dist/prompts.d.ts +48 -0
  101. package/dist/prompts.d.ts.map +1 -0
  102. package/dist/prompts.js +155 -0
  103. package/dist/prompts.js.map +1 -0
  104. package/dist/resources.d.ts +38 -0
  105. package/dist/resources.d.ts.map +1 -0
  106. package/dist/resources.js +127 -0
  107. package/dist/resources.js.map +1 -0
  108. package/dist/schemas/entities.d.ts +115 -24
  109. package/dist/schemas/entities.d.ts.map +1 -1
  110. package/dist/schemas/entities.js +48 -0
  111. package/dist/schemas/entities.js.map +1 -1
  112. package/dist/schemas/requests.d.ts +121 -46
  113. package/dist/schemas/requests.d.ts.map +1 -1
  114. package/dist/schemas/requests.js +57 -12
  115. package/dist/schemas/requests.js.map +1 -1
  116. package/dist/schemas/responses.d.ts +541 -186
  117. package/dist/schemas/responses.d.ts.map +1 -1
  118. package/dist/schemas/responses.js +13 -2
  119. package/dist/schemas/responses.js.map +1 -1
  120. package/dist/tools/activity.d.ts +150 -0
  121. package/dist/tools/activity.d.ts.map +1 -0
  122. package/dist/tools/activity.js +198 -0
  123. package/dist/tools/activity.js.map +1 -0
  124. package/dist/tools/annotations.d.ts +52 -0
  125. package/dist/tools/annotations.d.ts.map +1 -0
  126. package/dist/tools/annotations.js +214 -0
  127. package/dist/tools/annotations.js.map +1 -0
  128. package/dist/tools/attachments.d.ts +28 -4
  129. package/dist/tools/attachments.d.ts.map +1 -1
  130. package/dist/tools/attachments.js +53 -34
  131. package/dist/tools/attachments.js.map +1 -1
  132. package/dist/tools/card-ops.d.ts +232 -0
  133. package/dist/tools/card-ops.d.ts.map +1 -0
  134. package/dist/tools/card-ops.js +333 -0
  135. package/dist/tools/card-ops.js.map +1 -0
  136. package/dist/tools/cards.d.ts +90 -8
  137. package/dist/tools/cards.d.ts.map +1 -1
  138. package/dist/tools/cards.js +411 -128
  139. package/dist/tools/cards.js.map +1 -1
  140. package/dist/tools/comments.d.ts +226 -22
  141. package/dist/tools/comments.d.ts.map +1 -1
  142. package/dist/tools/comments.js +163 -134
  143. package/dist/tools/comments.js.map +1 -1
  144. package/dist/tools/dispatch.d.ts +47 -0
  145. package/dist/tools/dispatch.d.ts.map +1 -0
  146. package/dist/tools/dispatch.js +63 -0
  147. package/dist/tools/dispatch.js.map +1 -0
  148. package/dist/tools/guard.d.ts +9 -0
  149. package/dist/tools/guard.d.ts.map +1 -0
  150. package/dist/tools/guard.js +20 -0
  151. package/dist/tools/guard.js.map +1 -0
  152. package/dist/tools/index.d.ts +748 -450
  153. package/dist/tools/index.d.ts.map +1 -1
  154. package/dist/tools/index.js +136 -17
  155. package/dist/tools/index.js.map +1 -1
  156. package/dist/tools/labels.d.ts +213 -18
  157. package/dist/tools/labels.d.ts.map +1 -1
  158. package/dist/tools/labels.js +218 -203
  159. package/dist/tools/labels.js.map +1 -1
  160. package/dist/tools/lists.d.ts +222 -15
  161. package/dist/tools/lists.d.ts.map +1 -1
  162. package/dist/tools/lists.js +175 -156
  163. package/dist/tools/lists.js.map +1 -1
  164. package/dist/tools/members.d.ts +128 -0
  165. package/dist/tools/members.d.ts.map +1 -0
  166. package/dist/tools/members.js +150 -0
  167. package/dist/tools/members.js.map +1 -0
  168. package/dist/tools/navigation.d.ts +22 -2
  169. package/dist/tools/navigation.d.ts.map +1 -1
  170. package/dist/tools/navigation.js +60 -15
  171. package/dist/tools/navigation.js.map +1 -1
  172. package/dist/tools/queries.d.ts +196 -166
  173. package/dist/tools/queries.d.ts.map +1 -1
  174. package/dist/tools/queries.js +125 -155
  175. package/dist/tools/queries.js.map +1 -1
  176. package/dist/tools/tasks.d.ts +26 -6
  177. package/dist/tools/tasks.d.ts.map +1 -1
  178. package/dist/tools/tasks.js +110 -55
  179. package/dist/tools/tasks.js.map +1 -1
  180. package/dist/tools/users.d.ts +130 -0
  181. package/dist/tools/users.d.ts.map +1 -0
  182. package/dist/tools/users.js +165 -0
  183. package/dist/tools/users.js.map +1 -0
  184. package/docs/planka-2x-gotchas.md +121 -5
  185. package/docs/tools.md +771 -187
  186. package/docs/troubleshooting.md +137 -5
  187. package/hooks/hooks.json +15 -0
  188. package/hooks/preflight.mjs +100 -0
  189. package/package.json +6 -1
  190. package/scripts/setup.sh +8 -26
  191. package/scripts/sync-identity.mjs +55 -1
  192. package/server.json +87 -6
  193. package/tests/smoke/planka-smoke.mjs +512 -72
  194. package/workflow/skills/planka-close-card/SKILL.md +18 -5
  195. package/workflow/skills/planka-orchestrator/SKILL.md +36 -7
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Tool: planka_set_card_members
3
+ *
4
+ * The shape mirrors planka_set_card_labels on purpose: same argument names,
5
+ * same report of added/removed/alreadyPresent/notPresent/failed, same rule that
6
+ * the final state is read back rather than assumed.
7
+ */
8
+ export declare const setCardMembersTool: {
9
+ name: string;
10
+ description: string;
11
+ inputSchema: {
12
+ type: "object";
13
+ properties: {
14
+ cardId: {
15
+ type: string;
16
+ description: string;
17
+ };
18
+ add: {
19
+ type: string;
20
+ items: {
21
+ type: string;
22
+ };
23
+ description: string;
24
+ };
25
+ remove: {
26
+ type: string;
27
+ items: {
28
+ type: string;
29
+ };
30
+ description: string;
31
+ };
32
+ addUserNames: {
33
+ type: string;
34
+ items: {
35
+ type: string;
36
+ };
37
+ description: string;
38
+ };
39
+ removeUserNames: {
40
+ type: string;
41
+ items: {
42
+ type: string;
43
+ };
44
+ description: string;
45
+ };
46
+ boardId: {
47
+ type: string;
48
+ description: string;
49
+ };
50
+ };
51
+ required: string[];
52
+ };
53
+ handler: (params: {
54
+ cardId: string;
55
+ add?: string[];
56
+ remove?: string[];
57
+ addUserNames?: string[];
58
+ removeUserNames?: string[];
59
+ boardId?: string;
60
+ }) => Promise<{
61
+ isError?: true | undefined;
62
+ content: {
63
+ type: "text";
64
+ text: string;
65
+ }[];
66
+ }>;
67
+ };
68
+ export declare const memberTools: {
69
+ name: string;
70
+ description: string;
71
+ inputSchema: {
72
+ type: "object";
73
+ properties: {
74
+ cardId: {
75
+ type: string;
76
+ description: string;
77
+ };
78
+ add: {
79
+ type: string;
80
+ items: {
81
+ type: string;
82
+ };
83
+ description: string;
84
+ };
85
+ remove: {
86
+ type: string;
87
+ items: {
88
+ type: string;
89
+ };
90
+ description: string;
91
+ };
92
+ addUserNames: {
93
+ type: string;
94
+ items: {
95
+ type: string;
96
+ };
97
+ description: string;
98
+ };
99
+ removeUserNames: {
100
+ type: string;
101
+ items: {
102
+ type: string;
103
+ };
104
+ description: string;
105
+ };
106
+ boardId: {
107
+ type: string;
108
+ description: string;
109
+ };
110
+ };
111
+ required: string[];
112
+ };
113
+ handler: (params: {
114
+ cardId: string;
115
+ add?: string[];
116
+ remove?: string[];
117
+ addUserNames?: string[];
118
+ removeUserNames?: string[];
119
+ boardId?: string;
120
+ }) => Promise<{
121
+ isError?: true | undefined;
122
+ content: {
123
+ type: "text";
124
+ text: string;
125
+ }[];
126
+ }>;
127
+ }[];
128
+ //# sourceMappingURL=members.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../src/tools/members.ts"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAsCL;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;;;;;;;CA+GF,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAxHE;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB;;;;;;;GAiH4C,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Card membership tool — who is assigned to a card.
3
+ */
4
+ import { setCardMembers } from "../operations/members.js";
5
+ import { listUsers, resolveUserNames } from "../operations/users.js";
6
+ import { PlankaError } from "../errors.js";
7
+ import { writeResult } from "../operations/verify.js";
8
+ /**
9
+ * Tool: planka_set_card_members
10
+ *
11
+ * The shape mirrors planka_set_card_labels on purpose: same argument names,
12
+ * same report of added/removed/alreadyPresent/notPresent/failed, same rule that
13
+ * the final state is read back rather than assumed.
14
+ */
15
+ export const setCardMembersTool = {
16
+ name: "planka_set_card_members",
17
+ description: "Assign or unassign people on a card, by user ID (names are accepted and resolved). " +
18
+ "Re-reads the card and reports finalMemberIds — never the request.",
19
+ inputSchema: {
20
+ type: "object",
21
+ properties: {
22
+ cardId: { type: "string", description: "The card ID" },
23
+ add: {
24
+ type: "array",
25
+ items: { type: "string" },
26
+ description: "User IDs to assign. IDs come from planka_list_users.",
27
+ },
28
+ remove: {
29
+ type: "array",
30
+ items: { type: "string" },
31
+ description: "User IDs to unassign",
32
+ },
33
+ addUserNames: {
34
+ type: "array",
35
+ items: { type: "string" },
36
+ description: "Names or usernames to assign, resolved exactly and case-insensitively. An ambiguous name fails instead of guessing.",
37
+ },
38
+ removeUserNames: {
39
+ type: "array",
40
+ items: { type: "string" },
41
+ description: "Names or usernames to unassign",
42
+ },
43
+ boardId: {
44
+ type: "string",
45
+ description: "Board used to resolve names when this account cannot read the instance roster",
46
+ },
47
+ },
48
+ required: ["cardId"],
49
+ },
50
+ handler: async (params) => {
51
+ try {
52
+ const add = [...(params.add ?? [])];
53
+ const remove = [...(params.remove ?? [])];
54
+ const addNames = params.addUserNames ?? [];
55
+ const removeNames = params.removeUserNames ?? [];
56
+ if (add.length === 0 &&
57
+ remove.length === 0 &&
58
+ addNames.length === 0 &&
59
+ removeNames.length === 0) {
60
+ return {
61
+ content: [
62
+ {
63
+ type: "text",
64
+ text: "Error: nothing to do — pass add and/or remove (user IDs), or addUserNames/removeUserNames. " +
65
+ "User IDs come from planka_list_users.",
66
+ },
67
+ ],
68
+ isError: true,
69
+ };
70
+ }
71
+ const unresolved = [];
72
+ if (addNames.length > 0 || removeNames.length > 0) {
73
+ // Resolving a NAME is what needs the roster, and the roster may need a
74
+ // board. Say that, instead of letting a bare "boardId is required"
75
+ // surface from three layers down with no mention of the names.
76
+ let roster;
77
+ try {
78
+ roster = await listUsers({ boardId: params.boardId });
79
+ }
80
+ catch (error) {
81
+ if (error instanceof PlankaError &&
82
+ error.code === "MISSING_BOARD_ID") {
83
+ return {
84
+ content: [
85
+ {
86
+ type: "text",
87
+ text: `Error: cannot resolve the user name(s) ${[...addNames, ...removeNames].join(", ")}: ` +
88
+ "this account cannot read the instance roster, so the names have to be looked up on a board. " +
89
+ "Pass boardId to this call (or set PLANKA_DEFAULT_BOARD_ID), or pass user IDs in add/remove — " +
90
+ "planka_list_users with a boardId returns them.",
91
+ },
92
+ ],
93
+ isError: true,
94
+ };
95
+ }
96
+ throw error;
97
+ }
98
+ const resolvedAdd = resolveUserNames(addNames, roster.users);
99
+ const resolvedRemove = resolveUserNames(removeNames, roster.users);
100
+ add.push(...resolvedAdd.ids);
101
+ remove.push(...resolvedRemove.ids);
102
+ for (const failure of [...resolvedAdd.failed, ...resolvedRemove.failed]) {
103
+ unresolved.push({ userId: failure.userName, reason: failure.reason });
104
+ }
105
+ }
106
+ // Every name failed to resolve and there was nothing else to do: say so
107
+ // instead of reporting a no-op success.
108
+ if (add.length === 0 && remove.length === 0) {
109
+ return {
110
+ content: [
111
+ {
112
+ type: "text",
113
+ text: `Error: no user could be resolved. ${unresolved
114
+ .map((f) => `${f.userId}: ${f.reason}`)
115
+ .join(" · ")}`,
116
+ },
117
+ ],
118
+ isError: true,
119
+ };
120
+ }
121
+ const result = await setCardMembers({ cardId: params.cardId, add, remove });
122
+ const failed = [...unresolved, ...result.failed];
123
+ // `failed` comes from setCardMembers' re-read of the card, so this IS
124
+ // the verification — no hand-written `verified: true`.
125
+ const ok = failed.length === 0;
126
+ return writeResult({
127
+ cardId: params.cardId,
128
+ membersAdded: result.added.length,
129
+ membersRemoved: result.removed.length,
130
+ added: result.added,
131
+ removed: result.removed,
132
+ alreadyPresent: result.alreadyPresent,
133
+ notPresent: result.notPresent,
134
+ failed,
135
+ finalMemberIds: result.finalMemberIds,
136
+ }, { verified: ok });
137
+ }
138
+ catch (error) {
139
+ if (error instanceof PlankaError) {
140
+ return {
141
+ content: [{ type: "text", text: `Error: ${error.message}` }],
142
+ isError: true,
143
+ };
144
+ }
145
+ throw error;
146
+ }
147
+ },
148
+ };
149
+ export const memberTools = [setCardMembersTool];
150
+ //# sourceMappingURL=members.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/tools/members.ts"],"names":[],"mappings":"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"}
@@ -12,10 +12,15 @@ export declare const getStructureTool: {
12
12
  type: string;
13
13
  description: string;
14
14
  };
15
+ withLists: {
16
+ type: string;
17
+ description: string;
18
+ };
15
19
  };
16
20
  };
17
21
  handler: (params: {
18
22
  projectId?: string;
23
+ withLists?: boolean;
19
24
  }) => Promise<{
20
25
  content: {
21
26
  type: "text";
@@ -42,12 +47,17 @@ export declare const getBoardTool: {
42
47
  description: string;
43
48
  default: boolean;
44
49
  };
50
+ limit: {
51
+ type: string;
52
+ description: string;
53
+ };
45
54
  };
46
55
  required: string[];
47
56
  };
48
57
  handler: (params: {
49
- boardId: string;
58
+ boardId?: string;
50
59
  includeTaskCounts?: boolean;
60
+ limit?: number;
51
61
  }) => Promise<{
52
62
  content: {
53
63
  type: "text";
@@ -65,10 +75,15 @@ export declare const navigationTools: ({
65
75
  type: string;
66
76
  description: string;
67
77
  };
78
+ withLists: {
79
+ type: string;
80
+ description: string;
81
+ };
68
82
  };
69
83
  };
70
84
  handler: (params: {
71
85
  projectId?: string;
86
+ withLists?: boolean;
72
87
  }) => Promise<{
73
88
  content: {
74
89
  type: "text";
@@ -90,12 +105,17 @@ export declare const navigationTools: ({
90
105
  description: string;
91
106
  default: boolean;
92
107
  };
108
+ limit: {
109
+ type: string;
110
+ description: string;
111
+ };
93
112
  };
94
113
  required: string[];
95
114
  };
96
115
  handler: (params: {
97
- boardId: string;
116
+ boardId?: string;
98
117
  includeTaskCounts?: boolean;
118
+ limit?: number;
99
119
  }) => Promise<{
100
120
  content: {
101
121
  type: "text";
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;sBAaH;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;CA8B/C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;sBAmBC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE;;;;;;CAyFzE,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;sBAlJF;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;sBAuDtB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE;;;;;;IA2FX,CAAC"}
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;sBAmBH;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;;;;;;CAqCpE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;sBA4BC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;;;;;;CAuHF,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;sBApMF;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAuE3C;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;;;;;;IAyH4D,CAAC"}
@@ -3,13 +3,16 @@
3
3
  */
4
4
  import { getStructure } from "../operations/projects.js";
5
5
  import { getBoardWithTaskCounts } from "../operations/boards.js";
6
+ import { parseInput } from "../errors.js";
7
+ import { GetBoardSchema } from "../schemas/requests.js";
6
8
  /**
7
9
  * Tool: planka_get_structure
8
10
  * Get the full project/board/list hierarchy.
9
11
  */
10
12
  export const getStructureTool = {
11
13
  name: "planka_get_structure",
12
- description: "Get the full project/board/list structure. Use this to understand what projects and boards exist before working with cards.",
14
+ description: "Projects, boards and lists with their IDs. The source of the IDs every other tool needs. " +
15
+ "Columns cost one board read per board: pass withLists: false for the projects and boards alone, in a single request.",
13
16
  inputSchema: {
14
17
  type: "object",
15
18
  properties: {
@@ -17,10 +20,17 @@ export const getStructureTool = {
17
20
  type: "string",
18
21
  description: "Optional: Get structure for a specific project only",
19
22
  },
23
+ withLists: {
24
+ type: "boolean",
25
+ description: "Include each board's columns. Default true; false answers projects and boards in one request (planka_board_summary also lists the columns, with their counts).",
26
+ },
20
27
  },
21
28
  },
22
29
  handler: async (params) => {
23
- const structure = await getStructure({ projectId: params.projectId });
30
+ const structure = await getStructure({
31
+ projectId: params.projectId,
32
+ withLists: params.withLists,
33
+ });
24
34
  // Format for readability
25
35
  const formatted = structure.map((project) => ({
26
36
  project: {
@@ -30,19 +40,23 @@ export const getStructureTool = {
30
40
  boards: project.boards.map((b) => ({
31
41
  id: b.board.id,
32
42
  name: b.board.name,
33
- lists: b.lists
34
- .filter((l) => l.name !== null) // Filter out archive/trash
35
- .map((l) => ({
36
- id: l.id,
37
- name: l.name,
38
- })),
43
+ ...(params.withLists === false
44
+ ? {}
45
+ : {
46
+ lists: b.lists
47
+ .filter((l) => l.name !== null) // Filter out archive/trash
48
+ .map((l) => ({
49
+ id: l.id,
50
+ name: l.name,
51
+ })),
52
+ }),
39
53
  })),
40
54
  }));
41
55
  return {
42
56
  content: [
43
57
  {
44
58
  type: "text",
45
- text: JSON.stringify(formatted, null, 2),
59
+ text: JSON.stringify(formatted),
46
60
  },
47
61
  ],
48
62
  };
@@ -54,24 +68,32 @@ export const getStructureTool = {
54
68
  */
55
69
  export const getBoardTool = {
56
70
  name: "planka_get_board",
57
- description: "Get a board with all its lists, cards, and labels. Use this to see everything on a board.",
71
+ description: "DEPRECATED: use planka_board_summary + planka_find_cards. " +
72
+ "Whole board in one payload: every list, card and label — the most expensive read of the set, and it grows with the board. " +
73
+ "It returns at most `limit` cards (50 by default) and reports total/truncated when it clips. " +
74
+ "Archive and trash columns are never included (excludesArchived).",
58
75
  inputSchema: {
59
76
  type: "object",
60
77
  properties: {
61
78
  boardId: {
62
79
  type: "string",
63
- description: "The board ID",
80
+ description: "The board ID. Optional when the server has PLANKA_DEFAULT_BOARD_ID.",
64
81
  },
65
82
  includeTaskCounts: {
66
83
  type: "boolean",
67
84
  description: "Include task completion counts for each card",
68
85
  default: true,
69
86
  },
87
+ limit: {
88
+ type: "number",
89
+ description: "Max cards across the whole board. Default 50, max 200. Beyond it the response carries truncated: true.",
90
+ },
70
91
  },
71
92
  required: ["boardId"],
72
93
  },
73
94
  handler: async (params) => {
74
- const details = await getBoardWithTaskCounts({ boardId: params.boardId });
95
+ const { boardId, includeTaskCounts, limit } = parseInput(GetBoardSchema, params);
96
+ const details = await getBoardWithTaskCounts({ boardId });
75
97
  // Group cards by list for readability
76
98
  const cardsByList = new Map();
77
99
  for (const card of details.cards) {
@@ -91,11 +113,18 @@ export const getBoardTool = {
91
113
  }
92
114
  labelsByCard.set(cl.cardId, labels);
93
115
  }
116
+ // Cards are handed out in board order until `limit` runs out; the rest is
117
+ // reported, never dropped in silence.
118
+ let budget = limit;
119
+ const totalCards = details.cards.length;
94
120
  const formatted = {
95
121
  board: {
96
122
  id: details.board.id,
97
123
  name: details.board.name,
98
124
  },
125
+ deprecated: "planka_get_board is deprecated: use planka_board_summary for the shape of the board and planka_find_cards for its cards.",
126
+ excludesArchived: true,
127
+ totalCards,
99
128
  labels: details.labels.map((l) => ({
100
129
  id: l.id,
101
130
  name: l.name,
@@ -104,10 +133,16 @@ export const getBoardTool = {
104
133
  lists: details.lists
105
134
  .filter((l) => l.name !== null) // Filter archive/trash
106
135
  .map((list) => {
107
- const listCards = (cardsByList.get(list.id) || []).sort((a, b) => a.position - b.position);
136
+ const allListCards = (cardsByList.get(list.id) || []).sort((a, b) => a.position - b.position);
137
+ const listCards = allListCards.slice(0, Math.max(budget, 0));
138
+ budget -= listCards.length;
108
139
  return {
109
140
  id: list.id,
110
141
  name: list.name,
142
+ cardCount: allListCards.length,
143
+ ...(listCards.length < allListCards.length
144
+ ? { returned: listCards.length }
145
+ : {}),
111
146
  cards: listCards.map((card) => {
112
147
  const cardData = {
113
148
  id: card.id,
@@ -129,7 +164,7 @@ export const getBoardTool = {
129
164
  if (cardLabels && cardLabels.length > 0) {
130
165
  cardData.labels = cardLabels;
131
166
  }
132
- if (params.includeTaskCounts !== false && card.taskCount > 0) {
167
+ if (includeTaskCounts !== false && card.taskCount > 0) {
133
168
  cardData.tasks = `${card.completedTaskCount}/${card.taskCount}`;
134
169
  }
135
170
  return cardData;
@@ -137,11 +172,21 @@ export const getBoardTool = {
137
172
  };
138
173
  }),
139
174
  };
175
+ const returnedCards = limit - budget;
140
176
  return {
141
177
  content: [
142
178
  {
143
179
  type: "text",
144
- text: JSON.stringify(formatted, null, 2),
180
+ text: JSON.stringify({
181
+ ...formatted,
182
+ returnedCards,
183
+ ...(returnedCards < totalCards
184
+ ? {
185
+ truncated: true,
186
+ note: `Only ${returnedCards} of ${totalCards} cards are in this response. Raise limit, or read one column with planka_find_cards({listId}).`,
187
+ }
188
+ : {}),
189
+ }),
145
190
  },
146
191
  ],
147
192
  };
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"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"}