@chykalophia/clickup-mcp-server 3.2.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 (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +467 -0
  3. package/bin/clickup-mcp-server-ai.js +9 -0
  4. package/bin/clickup-mcp-server-basic.js +9 -0
  5. package/bin/clickup-mcp-server-efficiency.js +9 -0
  6. package/bin/clickup-mcp-server-enhanced.js +9 -0
  7. package/build/app.d.ts +1 -0
  8. package/build/app.js +2 -0
  9. package/build/app.js.map +1 -0
  10. package/build/clickup-client/attachments-enhanced.d.ts +128 -0
  11. package/build/clickup-client/attachments-enhanced.js +212 -0
  12. package/build/clickup-client/attachments-enhanced.js.map +1 -0
  13. package/build/clickup-client/auth.d.ts +254 -0
  14. package/build/clickup-client/auth.js +105 -0
  15. package/build/clickup-client/auth.js.map +1 -0
  16. package/build/clickup-client/chat-enhanced.d.ts +141 -0
  17. package/build/clickup-client/chat-enhanced.js +196 -0
  18. package/build/clickup-client/chat-enhanced.js.map +1 -0
  19. package/build/clickup-client/checklists.d.ts +87 -0
  20. package/build/clickup-client/checklists.js +63 -0
  21. package/build/clickup-client/checklists.js.map +1 -0
  22. package/build/clickup-client/comments-enhanced.d.ts +176 -0
  23. package/build/clickup-client/comments-enhanced.js +230 -0
  24. package/build/clickup-client/comments-enhanced.js.map +1 -0
  25. package/build/clickup-client/comments.d.ts +173 -0
  26. package/build/clickup-client/comments.js +312 -0
  27. package/build/clickup-client/comments.js.map +1 -0
  28. package/build/clickup-client/custom-fields-enhanced.d.ts +286 -0
  29. package/build/clickup-client/custom-fields-enhanced.js +416 -0
  30. package/build/clickup-client/custom-fields-enhanced.js.map +1 -0
  31. package/build/clickup-client/dependencies-enhanced.d.ts +144 -0
  32. package/build/clickup-client/dependencies-enhanced.js +142 -0
  33. package/build/clickup-client/dependencies-enhanced.js.map +1 -0
  34. package/build/clickup-client/docs-enhanced.d.ts +176 -0
  35. package/build/clickup-client/docs-enhanced.js +374 -0
  36. package/build/clickup-client/docs-enhanced.js.map +1 -0
  37. package/build/clickup-client/docs.d.ts +84 -0
  38. package/build/clickup-client/docs.js +156 -0
  39. package/build/clickup-client/docs.js.map +1 -0
  40. package/build/clickup-client/folders.d.ts +62 -0
  41. package/build/clickup-client/folders.js +53 -0
  42. package/build/clickup-client/folders.js.map +1 -0
  43. package/build/clickup-client/goals-enhanced.d.ts +163 -0
  44. package/build/clickup-client/goals-enhanced.js +309 -0
  45. package/build/clickup-client/goals-enhanced.js.map +1 -0
  46. package/build/clickup-client/index.d.ts +16 -0
  47. package/build/clickup-client/index.js +61 -0
  48. package/build/clickup-client/index.js.map +1 -0
  49. package/build/clickup-client/lists.d.ts +105 -0
  50. package/build/clickup-client/lists.js +108 -0
  51. package/build/clickup-client/lists.js.map +1 -0
  52. package/build/clickup-client/secure-client.d.ts +88 -0
  53. package/build/clickup-client/secure-client.js +275 -0
  54. package/build/clickup-client/secure-client.js.map +1 -0
  55. package/build/clickup-client/spaces.d.ts +58 -0
  56. package/build/clickup-client/spaces.js +28 -0
  57. package/build/clickup-client/spaces.js.map +1 -0
  58. package/build/clickup-client/tasks.d.ts +161 -0
  59. package/build/clickup-client/tasks.js +99 -0
  60. package/build/clickup-client/tasks.js.map +1 -0
  61. package/build/clickup-client/time-tracking-enhanced.d.ts +153 -0
  62. package/build/clickup-client/time-tracking-enhanced.js +292 -0
  63. package/build/clickup-client/time-tracking-enhanced.js.map +1 -0
  64. package/build/clickup-client/views-enhanced.d.ts +149 -0
  65. package/build/clickup-client/views-enhanced.js +210 -0
  66. package/build/clickup-client/views-enhanced.js.map +1 -0
  67. package/build/clickup-client/webhooks-enhanced.d.ts +119 -0
  68. package/build/clickup-client/webhooks-enhanced.js +169 -0
  69. package/build/clickup-client/webhooks-enhanced.js.map +1 -0
  70. package/build/controllers/lists.controller.d.ts +1 -0
  71. package/build/controllers/lists.controller.js +2 -0
  72. package/build/controllers/lists.controller.js.map +1 -0
  73. package/build/index-efficiency-simple.d.ts +2 -0
  74. package/build/index-efficiency-simple.js +379 -0
  75. package/build/index-efficiency-simple.js.map +1 -0
  76. package/build/index-enhanced-efficiency.d.ts +2 -0
  77. package/build/index-enhanced-efficiency.js +275 -0
  78. package/build/index-enhanced-efficiency.js.map +1 -0
  79. package/build/index-enhanced.d.ts +2 -0
  80. package/build/index-enhanced.js +74 -0
  81. package/build/index-enhanced.js.map +1 -0
  82. package/build/index.d.ts +2 -0
  83. package/build/index.js +77 -0
  84. package/build/index.js.map +1 -0
  85. package/build/resources/checklist-resources.d.ts +2 -0
  86. package/build/resources/checklist-resources.js +102 -0
  87. package/build/resources/checklist-resources.js.map +1 -0
  88. package/build/resources/comment-resources.d.ts +2 -0
  89. package/build/resources/comment-resources.js +152 -0
  90. package/build/resources/comment-resources.js.map +1 -0
  91. package/build/resources/doc-resources.d.ts +2 -0
  92. package/build/resources/doc-resources.js +77 -0
  93. package/build/resources/doc-resources.js.map +1 -0
  94. package/build/resources/folder-resources.d.ts +2 -0
  95. package/build/resources/folder-resources.js +160 -0
  96. package/build/resources/folder-resources.js.map +1 -0
  97. package/build/resources/list-resources.d.ts +2 -0
  98. package/build/resources/list-resources.js +104 -0
  99. package/build/resources/list-resources.js.map +1 -0
  100. package/build/resources/space-resources.d.ts +2 -0
  101. package/build/resources/space-resources.js +104 -0
  102. package/build/resources/space-resources.js.map +1 -0
  103. package/build/resources/task-resources.d.ts +2 -0
  104. package/build/resources/task-resources.js +57 -0
  105. package/build/resources/task-resources.js.map +1 -0
  106. package/build/routes/lists.routes.d.ts +1 -0
  107. package/build/routes/lists.routes.js +2 -0
  108. package/build/routes/lists.routes.js.map +1 -0
  109. package/build/schemas/attachments-schemas.d.ts +201 -0
  110. package/build/schemas/attachments-schemas.js +250 -0
  111. package/build/schemas/attachments-schemas.js.map +1 -0
  112. package/build/schemas/chat-schemas.d.ts +478 -0
  113. package/build/schemas/chat-schemas.js +173 -0
  114. package/build/schemas/chat-schemas.js.map +1 -0
  115. package/build/schemas/custom-field-schemas.d.ts +1617 -0
  116. package/build/schemas/custom-field-schemas.js +384 -0
  117. package/build/schemas/custom-field-schemas.js.map +1 -0
  118. package/build/schemas/dependencies-schemas.d.ts +274 -0
  119. package/build/schemas/dependencies-schemas.js +176 -0
  120. package/build/schemas/dependencies-schemas.js.map +1 -0
  121. package/build/schemas/document-schemas.d.ts +433 -0
  122. package/build/schemas/document-schemas.js +168 -0
  123. package/build/schemas/document-schemas.js.map +1 -0
  124. package/build/schemas/goals-schemas.d.ts +961 -0
  125. package/build/schemas/goals-schemas.js +293 -0
  126. package/build/schemas/goals-schemas.js.map +1 -0
  127. package/build/schemas/time-tracking-schemas.d.ts +741 -0
  128. package/build/schemas/time-tracking-schemas.js +234 -0
  129. package/build/schemas/time-tracking-schemas.js.map +1 -0
  130. package/build/schemas/views-schemas.d.ts +1168 -0
  131. package/build/schemas/views-schemas.js +221 -0
  132. package/build/schemas/views-schemas.js.map +1 -0
  133. package/build/schemas/webhook-schemas.d.ts +1127 -0
  134. package/build/schemas/webhook-schemas.js +137 -0
  135. package/build/schemas/webhook-schemas.js.map +1 -0
  136. package/build/services/lists.service.d.ts +1 -0
  137. package/build/services/lists.service.js +2 -0
  138. package/build/services/lists.service.js.map +1 -0
  139. package/build/tools/attachments-tools-setup.d.ts +2 -0
  140. package/build/tools/attachments-tools-setup.js +387 -0
  141. package/build/tools/attachments-tools-setup.js.map +1 -0
  142. package/build/tools/chat-tools-enhanced.d.ts +5 -0
  143. package/build/tools/chat-tools-enhanced.js +396 -0
  144. package/build/tools/chat-tools-enhanced.js.map +1 -0
  145. package/build/tools/chat-tools.d.ts +2 -0
  146. package/build/tools/chat-tools.js +614 -0
  147. package/build/tools/chat-tools.js.map +1 -0
  148. package/build/tools/checklist-tools.d.ts +2 -0
  149. package/build/tools/checklist-tools.js +139 -0
  150. package/build/tools/checklist-tools.js.map +1 -0
  151. package/build/tools/comment-tools.d.ts +2 -0
  152. package/build/tools/comment-tools.js +295 -0
  153. package/build/tools/comment-tools.js.map +1 -0
  154. package/build/tools/custom-field-tools.d.ts +2 -0
  155. package/build/tools/custom-field-tools.js +578 -0
  156. package/build/tools/custom-field-tools.js.map +1 -0
  157. package/build/tools/dependencies-tools-setup.d.ts +2 -0
  158. package/build/tools/dependencies-tools-setup.js +319 -0
  159. package/build/tools/dependencies-tools-setup.js.map +1 -0
  160. package/build/tools/doc-tools-enhanced.d.ts +2 -0
  161. package/build/tools/doc-tools-enhanced.js +417 -0
  162. package/build/tools/doc-tools-enhanced.js.map +1 -0
  163. package/build/tools/doc-tools.d.ts +2 -0
  164. package/build/tools/doc-tools.js +109 -0
  165. package/build/tools/doc-tools.js.map +1 -0
  166. package/build/tools/goals-tools.d.ts +2 -0
  167. package/build/tools/goals-tools.js +422 -0
  168. package/build/tools/goals-tools.js.map +1 -0
  169. package/build/tools/helper-tools.d.ts +2 -0
  170. package/build/tools/helper-tools.js +363 -0
  171. package/build/tools/helper-tools.js.map +1 -0
  172. package/build/tools/space-tools.d.ts +2 -0
  173. package/build/tools/space-tools.js +45 -0
  174. package/build/tools/space-tools.js.map +1 -0
  175. package/build/tools/task-tools.d.ts +2 -0
  176. package/build/tools/task-tools.js +415 -0
  177. package/build/tools/task-tools.js.map +1 -0
  178. package/build/tools/time-tracking-tools.d.ts +2 -0
  179. package/build/tools/time-tracking-tools.js +329 -0
  180. package/build/tools/time-tracking-tools.js.map +1 -0
  181. package/build/tools/views-tools-setup.d.ts +2 -0
  182. package/build/tools/views-tools-setup.js +358 -0
  183. package/build/tools/views-tools-setup.js.map +1 -0
  184. package/build/tools/webhook-tools-setup.d.ts +2 -0
  185. package/build/tools/webhook-tools-setup.js +304 -0
  186. package/build/tools/webhook-tools-setup.js.map +1 -0
  187. package/build/tools/webhook-tools.d.ts +4 -0
  188. package/build/tools/webhook-tools.js +345 -0
  189. package/build/tools/webhook-tools.js.map +1 -0
  190. package/build/utils/clickup-comment-formatter.d.ts +124 -0
  191. package/build/utils/clickup-comment-formatter.js +504 -0
  192. package/build/utils/clickup-comment-formatter.js.map +1 -0
  193. package/build/utils/context-aware-suggestions.d.ts +45 -0
  194. package/build/utils/context-aware-suggestions.js +360 -0
  195. package/build/utils/context-aware-suggestions.js.map +1 -0
  196. package/build/utils/error-handling.d.ts +140 -0
  197. package/build/utils/error-handling.js +392 -0
  198. package/build/utils/error-handling.js.map +1 -0
  199. package/build/utils/markdown-styling.d.ts +40 -0
  200. package/build/utils/markdown-styling.js +344 -0
  201. package/build/utils/markdown-styling.js.map +1 -0
  202. package/build/utils/markdown.d.ts +54 -0
  203. package/build/utils/markdown.js +243 -0
  204. package/build/utils/markdown.js.map +1 -0
  205. package/build/utils/security.d.ts +79 -0
  206. package/build/utils/security.js +303 -0
  207. package/build/utils/security.js.map +1 -0
  208. package/build/utils/tool-efficiency.d.ts +59 -0
  209. package/build/utils/tool-efficiency.js +247 -0
  210. package/build/utils/tool-efficiency.js.map +1 -0
  211. package/package.json +130 -0
@@ -0,0 +1,344 @@
1
+ /**
2
+ * Simple Markdown Styling Processor
3
+ * Provides enhanced display formatting for markdown content with visual styling
4
+ */
5
+ const DEFAULT_OPTIONS = {
6
+ useColors: true,
7
+ useEmojis: true,
8
+ indentSize: 2,
9
+ maxWidth: 80
10
+ };
11
+ // ANSI color codes for terminal styling
12
+ const COLORS = {
13
+ reset: '\x1b[0m',
14
+ bright: '\x1b[1m',
15
+ dim: '\x1b[2m',
16
+ italic: '\x1b[3m',
17
+ underline: '\x1b[4m',
18
+ // Text colors
19
+ black: '\x1b[30m',
20
+ red: '\x1b[31m',
21
+ green: '\x1b[32m',
22
+ yellow: '\x1b[33m',
23
+ blue: '\x1b[34m',
24
+ magenta: '\x1b[35m',
25
+ cyan: '\x1b[36m',
26
+ white: '\x1b[37m',
27
+ // Background colors
28
+ bgBlack: '\x1b[40m',
29
+ bgRed: '\x1b[41m',
30
+ bgGreen: '\x1b[42m',
31
+ bgYellow: '\x1b[43m',
32
+ bgBlue: '\x1b[44m',
33
+ bgMagenta: '\x1b[45m',
34
+ bgCyan: '\x1b[46m',
35
+ bgWhite: '\x1b[47m'
36
+ };
37
+ // Emoji mappings for enhanced visual display
38
+ const EMOJI_MAP = {
39
+ h1: '🔥',
40
+ h2: '⚡',
41
+ h3: '💫',
42
+ h4: '✨',
43
+ h5: '🌟',
44
+ h6: '⭐',
45
+ bold: '💪',
46
+ italic: '✨',
47
+ code: '💻',
48
+ link: '🔗',
49
+ image: '🖼️',
50
+ list: '📋',
51
+ quote: '💬',
52
+ check: '✅',
53
+ uncheck: '☐',
54
+ warning: '⚠️',
55
+ info: '💡',
56
+ success: '🎉',
57
+ error: '❌'
58
+ };
59
+ /**
60
+ * Apply color styling to text
61
+ */
62
+ function colorize(text, color, options) {
63
+ if (!options.useColors)
64
+ return text;
65
+ return `${color}${text}${COLORS.reset}`;
66
+ }
67
+ /**
68
+ * Add emoji prefix to text
69
+ */
70
+ function addEmoji(text, emoji, options) {
71
+ if (!options.useEmojis)
72
+ return text;
73
+ return `${emoji} ${text}`;
74
+ }
75
+ /**
76
+ * Process headers with styling
77
+ */
78
+ function processHeaders(content, options) {
79
+ return content.replace(/^(#{1,6})\s+(.+)$/gm, (match, hashes, text) => {
80
+ const level = hashes.length;
81
+ const emoji = EMOJI_MAP[`h${level}`];
82
+ let styled = text;
83
+ switch (level) {
84
+ case 1:
85
+ styled = colorize(text.toUpperCase(), COLORS.bright + COLORS.red, options);
86
+ break;
87
+ case 2:
88
+ styled = colorize(text, COLORS.bright + COLORS.blue, options);
89
+ break;
90
+ case 3:
91
+ styled = colorize(text, COLORS.bright + COLORS.green, options);
92
+ break;
93
+ case 4:
94
+ styled = colorize(text, COLORS.bright + COLORS.yellow, options);
95
+ break;
96
+ case 5:
97
+ styled = colorize(text, COLORS.bright + COLORS.magenta, options);
98
+ break;
99
+ case 6:
100
+ styled = colorize(text, COLORS.bright + COLORS.cyan, options);
101
+ break;
102
+ }
103
+ const result = addEmoji(styled, emoji, options);
104
+ return `\n${result}\n${'='.repeat(Math.min(text.length, options.maxWidth || 80))}\n`;
105
+ });
106
+ }
107
+ /**
108
+ * Process bold and italic text
109
+ */
110
+ function processEmphasis(content, options) {
111
+ // Bold text
112
+ content = content.replace(/\*\*([^*]+)\*\*/g, (match, text) => {
113
+ const styled = colorize(text, COLORS.bright, options);
114
+ return options.useEmojis ? `💪 ${styled}` : styled;
115
+ });
116
+ // Italic text
117
+ content = content.replace(/\*([^*]+)\*/g, (match, text) => {
118
+ const styled = colorize(text, COLORS.italic, options);
119
+ return options.useEmojis ? `✨ ${styled}` : styled;
120
+ });
121
+ return content;
122
+ }
123
+ /**
124
+ * Process code blocks and inline code
125
+ */
126
+ function processCode(content, options) {
127
+ // Code blocks
128
+ content = content.replace(/```(\w+)?\n([\s\S]*?)```/g, (match, lang, code) => {
129
+ const langLabel = lang ? ` (${lang})` : '';
130
+ const header = colorize(`CODE${langLabel}`, COLORS.bgBlue + COLORS.white, options);
131
+ const styledCode = colorize(code.trim(), COLORS.dim + COLORS.cyan, options);
132
+ const border = '─'.repeat(Math.min(60, options.maxWidth || 80));
133
+ return `\n${addEmoji(header, EMOJI_MAP.code, options)}\n${border}\n${styledCode}\n${border}\n`;
134
+ });
135
+ // Inline code
136
+ content = content.replace(/`([^`]+)`/g, (match, code) => {
137
+ const styled = colorize(code, COLORS.bgBlack + COLORS.yellow, options);
138
+ return options.useEmojis ? `💻 ${styled}` : styled;
139
+ });
140
+ return content;
141
+ }
142
+ /**
143
+ * Process lists
144
+ */
145
+ function processLists(content, options) {
146
+ // const indent = ' '.repeat(options.indentSize || 2);
147
+ // Unordered lists
148
+ content = content.replace(/^(\s*)[-*+]\s+(.+)$/gm, (match, spaces, text) => {
149
+ const bullet = options.useEmojis ? '📋' : '•';
150
+ const styled = colorize(text, COLORS.white, options);
151
+ return `${spaces}${bullet} ${styled}`;
152
+ });
153
+ // Ordered lists
154
+ content = content.replace(/^(\s*)(\d+)\.\s+(.+)$/gm, (match, spaces, num, text) => {
155
+ const bullet = options.useEmojis ? `${num}️⃣` : `${num}.`;
156
+ const styled = colorize(text, COLORS.white, options);
157
+ return `${spaces}${bullet} ${styled}`;
158
+ });
159
+ // Checkboxes
160
+ content = content.replace(/^(\s*)- \[([x ])\]\s+(.+)$/gm, (match, spaces, check, text) => {
161
+ const checkbox = check === 'x' ? EMOJI_MAP.check : EMOJI_MAP.uncheck;
162
+ const styled = check === 'x'
163
+ ? colorize(text, COLORS.dim + COLORS.green, options)
164
+ : colorize(text, COLORS.white, options);
165
+ return `${spaces}${checkbox} ${styled}`;
166
+ });
167
+ return content;
168
+ }
169
+ /**
170
+ * Process blockquotes
171
+ */
172
+ function processBlockquotes(content, options) {
173
+ return content.replace(/^>\s+(.+)$/gm, (match, text) => {
174
+ const styled = colorize(text, COLORS.italic + COLORS.cyan, options);
175
+ const quote = addEmoji(styled, EMOJI_MAP.quote, options);
176
+ return `│ ${quote}`;
177
+ });
178
+ }
179
+ /**
180
+ * Process links and images
181
+ */
182
+ function processLinks(content, options) {
183
+ // Images
184
+ content = content.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, (match, alt, url) => {
185
+ const styled = colorize(`[${alt || 'Image'}]`, COLORS.bright + COLORS.magenta, options);
186
+ return addEmoji(`${styled} (${url})`, EMOJI_MAP.image, options);
187
+ });
188
+ // Links
189
+ content = content.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (match, text, url) => {
190
+ const styled = colorize(text, COLORS.underline + COLORS.blue, options);
191
+ return addEmoji(`${styled} (${url})`, EMOJI_MAP.link, options);
192
+ });
193
+ return content;
194
+ }
195
+ /**
196
+ * Process horizontal rules
197
+ */
198
+ function processHorizontalRules(content, options) {
199
+ return content.replace(/^---+$/gm, () => {
200
+ const rule = '═'.repeat(Math.min(60, options.maxWidth || 80));
201
+ return colorize(rule, COLORS.dim + COLORS.white, options);
202
+ });
203
+ }
204
+ /**
205
+ * Add visual separators and spacing
206
+ */
207
+ function addVisualEnhancements(content, _options) {
208
+ // Add spacing around sections
209
+ content = content.replace(/\n(#{1,6})/g, '\n\n$1');
210
+ content = content.replace(/(#{1,6}[^\n]+)\n/g, '$1\n\n');
211
+ // Clean up excessive newlines
212
+ content = content.replace(/\n{3,}/g, '\n\n');
213
+ return content.trim();
214
+ }
215
+ /**
216
+ * Main function to apply simple markdown styling
217
+ * @param markdown The markdown content to style
218
+ * @param options Styling options
219
+ * @returns Styled markdown content with visual enhancements
220
+ */
221
+ export function applyMarkdownStyling(markdown, options = {}) {
222
+ if (!markdown || typeof markdown !== 'string') {
223
+ return '';
224
+ }
225
+ const opts = { ...DEFAULT_OPTIONS, ...options };
226
+ let styled = markdown;
227
+ // Apply styling in order
228
+ styled = processHeaders(styled, opts);
229
+ styled = processCode(styled, opts);
230
+ styled = processEmphasis(styled, opts);
231
+ styled = processLists(styled, opts);
232
+ styled = processBlockquotes(styled, opts);
233
+ styled = processLinks(styled, opts);
234
+ styled = processHorizontalRules(styled, opts);
235
+ styled = addVisualEnhancements(styled, opts);
236
+ return styled;
237
+ }
238
+ /**
239
+ * Create a styled preview of markdown content
240
+ * @param markdown The markdown content
241
+ * @param title Optional title for the preview
242
+ * @param options Styling options
243
+ * @returns Formatted preview with title and borders
244
+ */
245
+ export function createMarkdownPreview(markdown, title, options = {}) {
246
+ const opts = { ...DEFAULT_OPTIONS, ...options };
247
+ const styled = applyMarkdownStyling(markdown, opts);
248
+ if (!title) {
249
+ return styled;
250
+ }
251
+ const border = '═'.repeat(Math.min(title.length + 4, opts.maxWidth || 80));
252
+ const styledTitle = colorize(title.toUpperCase(), COLORS.bright + COLORS.white, opts);
253
+ const titleWithEmoji = addEmoji(styledTitle, '📄', opts);
254
+ return `${border}\n ${titleWithEmoji}\n${border}\n\n${styled}\n\n${border}`;
255
+ }
256
+ /**
257
+ * Extract and style markdown sections
258
+ * @param markdown The markdown content
259
+ * @param sectionType The type of section to extract ('headers', 'code', 'lists', etc.)
260
+ * @param options Styling options
261
+ * @returns Styled sections
262
+ */
263
+ export function extractStyledSections(markdown, sectionType, options = {}) {
264
+ if (!markdown)
265
+ return [];
266
+ const opts = { ...DEFAULT_OPTIONS, ...options };
267
+ const sections = [];
268
+ switch (sectionType) {
269
+ case 'headers': {
270
+ const headerMatches = markdown.match(/^#{1,6}\s+.+$/gm);
271
+ if (headerMatches) {
272
+ sections.push(...headerMatches.map(h => processHeaders(h, opts)));
273
+ }
274
+ break;
275
+ }
276
+ case 'code': {
277
+ const codeMatches = markdown.match(/```[\s\S]*?```|`[^`]+`/g);
278
+ if (codeMatches) {
279
+ sections.push(...codeMatches.map(c => processCode(c, opts)));
280
+ }
281
+ break;
282
+ }
283
+ case 'lists': {
284
+ const listMatches = markdown.match(/^(\s*)[-*+]\s+.+$|^(\s*)\d+\.\s+.+$/gm);
285
+ if (listMatches) {
286
+ sections.push(...listMatches.map(l => processLists(l, opts)));
287
+ }
288
+ break;
289
+ }
290
+ case 'quotes': {
291
+ const quoteMatches = markdown.match(/^>\s+.+$/gm);
292
+ if (quoteMatches) {
293
+ sections.push(...quoteMatches.map(q => processBlockquotes(q, opts)));
294
+ }
295
+ break;
296
+ }
297
+ case 'links': {
298
+ const linkMatches = markdown.match(/\[([^\]]+)\]\(([^)]+)\)|!\[([^\]]*)\]\(([^)]+)\)/g);
299
+ if (linkMatches) {
300
+ sections.push(...linkMatches.map(l => processLinks(l, opts)));
301
+ }
302
+ break;
303
+ }
304
+ }
305
+ return sections;
306
+ }
307
+ /**
308
+ * Create a markdown summary with key information highlighted
309
+ * @param markdown The markdown content
310
+ * @param options Styling options
311
+ * @returns Styled summary
312
+ */
313
+ export function createMarkdownSummary(markdown, options = {}) {
314
+ if (!markdown)
315
+ return '';
316
+ const opts = { ...DEFAULT_OPTIONS, ...options };
317
+ const summary = [];
318
+ // Extract headers
319
+ const headers = extractStyledSections(markdown, 'headers', opts);
320
+ if (headers.length > 0) {
321
+ summary.push(colorize('📋 SECTIONS:', COLORS.bright + COLORS.blue, opts));
322
+ summary.push(...headers.slice(0, 5)); // Limit to first 5 headers
323
+ }
324
+ // Extract code blocks
325
+ const codeBlocks = extractStyledSections(markdown, 'code', opts);
326
+ if (codeBlocks.length > 0) {
327
+ summary.push(colorize('💻 CODE BLOCKS:', COLORS.bright + COLORS.green, opts));
328
+ summary.push(`${codeBlocks.length} code block(s) found`);
329
+ }
330
+ // Extract lists
331
+ const lists = extractStyledSections(markdown, 'lists', opts);
332
+ if (lists.length > 0) {
333
+ summary.push(colorize('📝 LISTS:', COLORS.bright + COLORS.yellow, opts));
334
+ summary.push(`${lists.length} list item(s) found`);
335
+ }
336
+ // Extract links
337
+ const links = extractStyledSections(markdown, 'links', opts);
338
+ if (links.length > 0) {
339
+ summary.push(colorize('🔗 LINKS:', COLORS.bright + COLORS.cyan, opts));
340
+ summary.push(`${links.length} link(s) found`);
341
+ }
342
+ return summary.join('\n');
343
+ }
344
+ //# sourceMappingURL=markdown-styling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-styling.js","sourceRoot":"","sources":["../../src/utils/markdown-styling.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Convert markdown to HTML for ClickUp API submission
3
+ * @param markdown The markdown content to convert
4
+ * @returns HTML string suitable for ClickUp API
5
+ */
6
+ export declare function markdownToHtml(markdown: string): string;
7
+ /**
8
+ * Convert HTML to markdown for display/editing
9
+ * @param html The HTML content to convert
10
+ * @returns Markdown string
11
+ */
12
+ export declare function htmlToMarkdown(html: string): string;
13
+ /**
14
+ * Convert markdown to plain text by stripping formatting
15
+ * @param markdown The markdown content to convert
16
+ * @returns Plain text string
17
+ */
18
+ export declare function markdownToPlainText(markdown: string): string;
19
+ /**
20
+ * Detect if content contains markdown formatting
21
+ * @param content The content to check
22
+ * @returns True if content appears to contain markdown
23
+ */
24
+ export declare function isMarkdown(content: string): boolean;
25
+ /**
26
+ * Detect if content contains HTML formatting
27
+ * @param content The content to check
28
+ * @returns True if content appears to contain HTML
29
+ */
30
+ export declare function isHtml(content: string): boolean;
31
+ /**
32
+ * Smart content formatter that detects format and converts appropriately
33
+ * @param content The content to format
34
+ * @param targetFormat The desired output format
35
+ * @returns Formatted content
36
+ */
37
+ export declare function formatContent(content: string, targetFormat: 'html' | 'markdown' | 'plain'): string;
38
+ /**
39
+ * Prepare content for ClickUp API submission
40
+ * Converts markdown to HTML and provides both formats
41
+ * @param content The content to prepare (markdown or plain text)
42
+ * @returns Object with both HTML and plain text versions
43
+ */
44
+ export declare function prepareContentForClickUp(content: string): {
45
+ description: string;
46
+ text_content?: string;
47
+ };
48
+ /**
49
+ * Process ClickUp response content for display
50
+ * Converts HTML to markdown for better readability
51
+ * @param response ClickUp API response with description/text_content
52
+ * @returns Processed content with markdown formatting
53
+ */
54
+ export declare function processClickUpResponse(response: any): any;
@@ -0,0 +1,243 @@
1
+ import { marked } from 'marked';
2
+ import TurndownService from 'turndown';
3
+ /**
4
+ * Markdown processing utilities for ClickUp content
5
+ * Handles conversion between markdown, HTML, and plain text formats
6
+ */
7
+ // Configure marked for ClickUp-compatible HTML output
8
+ marked.setOptions({
9
+ gfm: true, // GitHub Flavored Markdown
10
+ breaks: true // Convert line breaks to <br>
11
+ });
12
+ // Configure Turndown for ClickUp HTML to markdown conversion
13
+ const turndownService = new TurndownService({
14
+ headingStyle: 'atx', // Use # for headers
15
+ codeBlockStyle: 'fenced', // Use ``` for code blocks
16
+ fence: '```', // Use ``` for code fences
17
+ emDelimiter: '*', // Use * for emphasis
18
+ strongDelimiter: '**', // Use ** for strong
19
+ linkStyle: 'inlined', // Use [text](url) for links
20
+ linkReferenceStyle: 'full' // Use full reference links
21
+ });
22
+ // Add custom rules for ClickUp-specific elements
23
+ turndownService.addRule('strikethrough', {
24
+ filter: ['del', 's'],
25
+ replacement: (content) => `~~${content}~~`
26
+ });
27
+ turndownService.addRule('underline', {
28
+ filter: 'u',
29
+ replacement: (content) => `<u>${content}</u>` // Keep underline as HTML since markdown doesn't support it
30
+ });
31
+ turndownService.addRule('highlight', {
32
+ filter: 'mark',
33
+ replacement: (content) => `==${content}==` // Use highlight syntax
34
+ });
35
+ /**
36
+ * Convert markdown to HTML for ClickUp API submission
37
+ * @param markdown The markdown content to convert
38
+ * @returns HTML string suitable for ClickUp API
39
+ */
40
+ export function markdownToHtml(markdown) {
41
+ if (!markdown || typeof markdown !== 'string') {
42
+ return '';
43
+ }
44
+ try {
45
+ const result = marked.parse(markdown);
46
+ return typeof result === 'string' ? result : '';
47
+ }
48
+ catch (error) {
49
+ console.warn('Failed to parse markdown, returning as plain text:', error);
50
+ return markdown;
51
+ }
52
+ }
53
+ /**
54
+ * Convert HTML to markdown for display/editing
55
+ * @param html The HTML content to convert
56
+ * @returns Markdown string
57
+ */
58
+ export function htmlToMarkdown(html) {
59
+ if (!html || typeof html !== 'string') {
60
+ return '';
61
+ }
62
+ try {
63
+ return turndownService.turndown(html);
64
+ }
65
+ catch (error) {
66
+ console.warn('Failed to convert HTML to markdown, returning as plain text:', error);
67
+ // Strip HTML tags as fallback
68
+ return html.replace(/<[^>]*>/g, '');
69
+ }
70
+ }
71
+ /**
72
+ * Convert markdown to plain text by stripping formatting
73
+ * @param markdown The markdown content to convert
74
+ * @returns Plain text string
75
+ */
76
+ export function markdownToPlainText(markdown) {
77
+ if (!markdown || typeof markdown !== 'string') {
78
+ return '';
79
+ }
80
+ try {
81
+ // First convert to HTML, then strip tags
82
+ const htmlResult = marked.parse(markdown);
83
+ const html = typeof htmlResult === 'string' ? htmlResult : '';
84
+ return html.replace(/<[^>]*>/g, '').replace(/\n\s*\n/g, '\n').trim();
85
+ }
86
+ catch (error) {
87
+ console.warn('Failed to convert markdown to plain text:', error);
88
+ // Fallback: basic markdown stripping
89
+ return markdown
90
+ .replace(/#{1,6}\s+/g, '') // Remove headers
91
+ .replace(/\*\*(.*?)\*\*/g, '$1') // Remove bold
92
+ .replace(/\*(.*?)\*/g, '$1') // Remove italic
93
+ .replace(/`(.*?)`/g, '$1') // Remove inline code
94
+ .replace(/```[\s\S]*?```/g, '') // Remove code blocks
95
+ .replace(/\[([^\]]+)\]\([^)]+\)/g, '$1') // Convert links to text
96
+ .replace(/!\[([^\]]*)\]\([^)]+\)/g, '$1') // Convert images to alt text
97
+ .trim();
98
+ }
99
+ }
100
+ /**
101
+ * Detect if content contains markdown formatting
102
+ * @param content The content to check
103
+ * @returns True if content appears to contain markdown
104
+ */
105
+ export function isMarkdown(content) {
106
+ if (!content || typeof content !== 'string') {
107
+ return false;
108
+ }
109
+ // Check for common markdown patterns
110
+ const markdownPatterns = [
111
+ /#{1,6}\s+/, // Headers
112
+ /\*\*.*?\*\*/, // Bold
113
+ /\*.*?\*/, // Italic
114
+ /`.*?`/, // Inline code
115
+ /```[\s\S]*?```/, // Code blocks
116
+ /\[.*?\]\(.*?\)/, // Links
117
+ /!\[.*?\]\(.*?\)/, // Images
118
+ /^\s*[-*+]\s+/m, // Unordered lists
119
+ /^\s*\d+\.\s+/m, // Ordered lists
120
+ /^\s*>\s+/m, // Blockquotes
121
+ /~~.*?~~/, // Strikethrough
122
+ /==[^=]+==/ // Highlight
123
+ ];
124
+ return markdownPatterns.some(pattern => pattern.test(content));
125
+ }
126
+ /**
127
+ * Detect if content contains HTML formatting
128
+ * @param content The content to check
129
+ * @returns True if content appears to contain HTML
130
+ */
131
+ export function isHtml(content) {
132
+ if (!content || typeof content !== 'string') {
133
+ return false;
134
+ }
135
+ // Check for HTML tags
136
+ return /<[^>]+>/g.test(content);
137
+ }
138
+ /**
139
+ * Smart content formatter that detects format and converts appropriately
140
+ * @param content The content to format
141
+ * @param targetFormat The desired output format
142
+ * @returns Formatted content
143
+ */
144
+ export function formatContent(content, targetFormat) {
145
+ if (!content || typeof content !== 'string') {
146
+ return '';
147
+ }
148
+ // Detect current format
149
+ const isCurrentlyHtml = isHtml(content);
150
+ const isCurrentlyMarkdown = !isCurrentlyHtml && isMarkdown(content);
151
+ switch (targetFormat) {
152
+ case 'html':
153
+ if (isCurrentlyHtml)
154
+ return content;
155
+ if (isCurrentlyMarkdown)
156
+ return markdownToHtml(content);
157
+ return content; // Plain text, return as-is
158
+ case 'markdown':
159
+ if (isCurrentlyMarkdown)
160
+ return content;
161
+ if (isCurrentlyHtml)
162
+ return htmlToMarkdown(content);
163
+ return content; // Plain text, return as-is
164
+ case 'plain':
165
+ if (isCurrentlyMarkdown)
166
+ return markdownToPlainText(content);
167
+ if (isCurrentlyHtml)
168
+ return htmlToMarkdown(content).replace(/[*_`#[\]()]/g, '');
169
+ return content; // Already plain text
170
+ default:
171
+ return content;
172
+ }
173
+ }
174
+ /**
175
+ * Prepare content for ClickUp API submission
176
+ * Converts markdown to HTML and provides both formats
177
+ * @param content The content to prepare (markdown or plain text)
178
+ * @returns Object with both HTML and plain text versions
179
+ */
180
+ export function prepareContentForClickUp(content) {
181
+ if (!content || typeof content !== 'string') {
182
+ return { description: '' };
183
+ }
184
+ // If content looks like markdown, convert to HTML
185
+ if (isMarkdown(content)) {
186
+ const html = markdownToHtml(content);
187
+ const plainText = markdownToPlainText(content);
188
+ return {
189
+ description: html,
190
+ text_content: plainText
191
+ };
192
+ }
193
+ // If content is already HTML, use as-is
194
+ if (isHtml(content)) {
195
+ const plainText = htmlToMarkdown(content);
196
+ return {
197
+ description: content,
198
+ text_content: markdownToPlainText(plainText)
199
+ };
200
+ }
201
+ // Plain text content
202
+ return {
203
+ description: content,
204
+ text_content: content
205
+ };
206
+ }
207
+ /**
208
+ * Process ClickUp response content for display
209
+ * Converts HTML to markdown for better readability
210
+ * @param response ClickUp API response with description/text_content
211
+ * @returns Processed content with markdown formatting
212
+ */
213
+ export function processClickUpResponse(response) {
214
+ if (!response || typeof response !== 'object') {
215
+ return response;
216
+ }
217
+ const processed = { ...response };
218
+ // Process description field
219
+ if (processed.description && isHtml(processed.description)) {
220
+ processed.description_markdown = htmlToMarkdown(processed.description);
221
+ }
222
+ // Process comment fields
223
+ if (processed.comment_text && processed.comment && Array.isArray(processed.comment)) {
224
+ // ClickUp comments come as rich text blocks, try to convert to markdown
225
+ try {
226
+ const htmlContent = processed.comment.map((block) => {
227
+ if (typeof block === 'string')
228
+ return block;
229
+ if (block.text)
230
+ return block.text;
231
+ return '';
232
+ }).join('');
233
+ if (htmlContent && isHtml(htmlContent)) {
234
+ processed.comment_markdown = htmlToMarkdown(htmlContent);
235
+ }
236
+ }
237
+ catch (error) {
238
+ console.warn('Failed to process comment blocks:', error);
239
+ }
240
+ }
241
+ return processed;
242
+ }
243
+ //# sourceMappingURL=markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/utils/markdown.ts"],"names":[],"mappings":"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"}