@crypto512/jicon-mcp 2.2.1 → 2.3.19

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 (228) hide show
  1. package/PROMPT.md +10 -28
  2. package/README.md +39 -6
  3. package/TOOL_LIST.md +542 -407
  4. package/dist/config/constants.d.ts +28 -0
  5. package/dist/config/constants.d.ts.map +1 -1
  6. package/dist/config/constants.js +34 -0
  7. package/dist/config/constants.js.map +1 -1
  8. package/dist/config/loader.d.ts.map +1 -1
  9. package/dist/config/loader.js +12 -2
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/types.d.ts +49 -6
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +18 -0
  14. package/dist/config/types.js.map +1 -1
  15. package/dist/confluence/client.d.ts.map +1 -1
  16. package/dist/confluence/client.js +7 -2
  17. package/dist/confluence/client.js.map +1 -1
  18. package/dist/confluence/formatters.d.ts +20 -0
  19. package/dist/confluence/formatters.d.ts.map +1 -1
  20. package/dist/confluence/formatters.js +74 -8
  21. package/dist/confluence/formatters.js.map +1 -1
  22. package/dist/confluence/tools.d.ts +16 -20
  23. package/dist/confluence/tools.d.ts.map +1 -1
  24. package/dist/confluence/tools.js +71 -68
  25. package/dist/confluence/tools.js.map +1 -1
  26. package/dist/credentials/extractor.d.ts +15 -5
  27. package/dist/credentials/extractor.d.ts.map +1 -1
  28. package/dist/credentials/extractor.js +99 -12
  29. package/dist/credentials/extractor.js.map +1 -1
  30. package/dist/credentials/index.d.ts +4 -3
  31. package/dist/credentials/index.d.ts.map +1 -1
  32. package/dist/credentials/index.js +3 -2
  33. package/dist/credentials/index.js.map +1 -1
  34. package/dist/credentials/types.d.ts +22 -0
  35. package/dist/credentials/types.d.ts.map +1 -1
  36. package/dist/credentials/types.js.map +1 -1
  37. package/dist/index.js +211 -176
  38. package/dist/index.js.map +1 -1
  39. package/dist/jira/activity-tools.d.ts +8 -15
  40. package/dist/jira/activity-tools.d.ts.map +1 -1
  41. package/dist/jira/activity-tools.js +131 -90
  42. package/dist/jira/activity-tools.js.map +1 -1
  43. package/dist/jira/client.d.ts +24 -0
  44. package/dist/jira/client.d.ts.map +1 -1
  45. package/dist/jira/client.js +65 -6
  46. package/dist/jira/client.js.map +1 -1
  47. package/dist/jira/formatters.d.ts +61 -0
  48. package/dist/jira/formatters.d.ts.map +1 -1
  49. package/dist/jira/formatters.js +83 -11
  50. package/dist/jira/formatters.js.map +1 -1
  51. package/dist/jira/tools.d.ts +78 -26
  52. package/dist/jira/tools.d.ts.map +1 -1
  53. package/dist/jira/tools.js +293 -130
  54. package/dist/jira/tools.js.map +1 -1
  55. package/dist/permissions/filter.d.ts.map +1 -1
  56. package/dist/permissions/filter.js +8 -4
  57. package/dist/permissions/filter.js.map +1 -1
  58. package/dist/permissions/tool-registry.d.ts +15 -13
  59. package/dist/permissions/tool-registry.d.ts.map +1 -1
  60. package/dist/permissions/tool-registry.js +19 -10
  61. package/dist/permissions/tool-registry.js.map +1 -1
  62. package/dist/session/context.d.ts +81 -0
  63. package/dist/session/context.d.ts.map +1 -0
  64. package/dist/session/context.js +107 -0
  65. package/dist/session/context.js.map +1 -0
  66. package/dist/session/index.d.ts +12 -0
  67. package/dist/session/index.d.ts.map +1 -0
  68. package/dist/session/index.js +22 -0
  69. package/dist/session/index.js.map +1 -0
  70. package/dist/session/manager.d.ts +186 -0
  71. package/dist/session/manager.d.ts.map +1 -0
  72. package/dist/session/manager.js +383 -0
  73. package/dist/session/manager.js.map +1 -0
  74. package/dist/tempo/client.d.ts +14 -0
  75. package/dist/tempo/client.d.ts.map +1 -1
  76. package/dist/tempo/client.js +57 -0
  77. package/dist/tempo/client.js.map +1 -1
  78. package/dist/tempo/formatters.d.ts +13 -0
  79. package/dist/tempo/formatters.d.ts.map +1 -1
  80. package/dist/tempo/formatters.js +106 -20
  81. package/dist/tempo/formatters.js.map +1 -1
  82. package/dist/tempo/tools.d.ts +14 -13
  83. package/dist/tempo/tools.d.ts.map +1 -1
  84. package/dist/tempo/tools.js +203 -33
  85. package/dist/tempo/tools.js.map +1 -1
  86. package/dist/tempo/types.d.ts +20 -6
  87. package/dist/tempo/types.d.ts.map +1 -1
  88. package/dist/transport/http.d.ts +21 -5
  89. package/dist/transport/http.d.ts.map +1 -1
  90. package/dist/transport/http.js +193 -22
  91. package/dist/transport/http.js.map +1 -1
  92. package/dist/transport/index.d.ts +7 -2
  93. package/dist/transport/index.d.ts.map +1 -1
  94. package/dist/transport/index.js +10 -4
  95. package/dist/transport/index.js.map +1 -1
  96. package/dist/utils/buffer-tools.d.ts +48 -724
  97. package/dist/utils/buffer-tools.d.ts.map +1 -1
  98. package/dist/utils/buffer-tools.js +337 -170
  99. package/dist/utils/buffer-tools.js.map +1 -1
  100. package/dist/utils/content-buffer.d.ts +10 -31
  101. package/dist/utils/content-buffer.d.ts.map +1 -1
  102. package/dist/utils/content-buffer.js +12 -86
  103. package/dist/utils/content-buffer.js.map +1 -1
  104. package/dist/utils/http-client.d.ts.map +1 -1
  105. package/dist/utils/http-client.js +99 -2
  106. package/dist/utils/http-client.js.map +1 -1
  107. package/dist/utils/jicon-help.d.ts +3 -3
  108. package/dist/utils/jicon-help.d.ts.map +1 -1
  109. package/dist/utils/jicon-help.js +164 -312
  110. package/dist/utils/jicon-help.js.map +1 -1
  111. package/dist/utils/logger.d.ts +43 -0
  112. package/dist/utils/logger.d.ts.map +1 -0
  113. package/dist/utils/logger.js +102 -0
  114. package/dist/utils/logger.js.map +1 -0
  115. package/dist/utils/plantuml/tools.d.ts.map +1 -1
  116. package/dist/utils/plantuml/tools.js +10 -9
  117. package/dist/utils/plantuml/tools.js.map +1 -1
  118. package/dist/utils/response-formatter.d.ts +20 -2
  119. package/dist/utils/response-formatter.d.ts.map +1 -1
  120. package/dist/utils/response-formatter.js +147 -17
  121. package/dist/utils/response-formatter.js.map +1 -1
  122. package/dist/utils/sandbox/formatters.d.ts +25 -0
  123. package/dist/utils/sandbox/formatters.d.ts.map +1 -0
  124. package/dist/utils/sandbox/formatters.js +690 -0
  125. package/dist/utils/sandbox/formatters.js.map +1 -0
  126. package/dist/utils/sandbox/helpers.d.ts +16 -0
  127. package/dist/utils/sandbox/helpers.d.ts.map +1 -0
  128. package/dist/utils/sandbox/helpers.js +252 -0
  129. package/dist/utils/sandbox/helpers.js.map +1 -0
  130. package/dist/utils/sandbox/index.d.ts +19 -0
  131. package/dist/utils/sandbox/index.d.ts.map +1 -0
  132. package/dist/utils/sandbox/index.js +269 -0
  133. package/dist/utils/sandbox/index.js.map +1 -0
  134. package/dist/utils/sandbox/schema.d.ts +55 -0
  135. package/dist/utils/sandbox/schema.d.ts.map +1 -0
  136. package/dist/utils/sandbox/schema.js +39 -0
  137. package/dist/utils/sandbox/schema.js.map +1 -0
  138. package/dist/utils/sandbox/types.d.ts +179 -0
  139. package/dist/utils/sandbox/types.d.ts.map +1 -0
  140. package/dist/utils/sandbox/types.js +8 -0
  141. package/dist/utils/sandbox/types.js.map +1 -0
  142. package/dist/utils/schemas/confluence.d.ts +41 -0
  143. package/dist/utils/schemas/confluence.d.ts.map +1 -0
  144. package/dist/utils/schemas/confluence.js +105 -0
  145. package/dist/utils/schemas/confluence.js.map +1 -0
  146. package/dist/utils/schemas/index.d.ts +77 -0
  147. package/dist/utils/schemas/index.d.ts.map +1 -0
  148. package/dist/utils/schemas/index.js +107 -0
  149. package/dist/utils/schemas/index.js.map +1 -0
  150. package/dist/utils/schemas/jira.d.ts +49 -0
  151. package/dist/utils/schemas/jira.d.ts.map +1 -0
  152. package/dist/utils/schemas/jira.js +153 -0
  153. package/dist/utils/schemas/jira.js.map +1 -0
  154. package/dist/utils/schemas/tempo.d.ts +29 -0
  155. package/dist/utils/schemas/tempo.d.ts.map +1 -0
  156. package/dist/utils/schemas/tempo.js +72 -0
  157. package/dist/utils/schemas/tempo.js.map +1 -0
  158. package/dist/utils/whoami-tools.d.ts +17 -0
  159. package/dist/utils/whoami-tools.d.ts.map +1 -0
  160. package/dist/utils/whoami-tools.js +90 -0
  161. package/dist/utils/whoami-tools.js.map +1 -0
  162. package/dist/utils/xhtml/error-locator.js +5 -5
  163. package/dist/utils/xhtml/error-locator.js.map +1 -1
  164. package/package.json +10 -9
  165. package/dist/credentials/client-factory.d.ts +0 -64
  166. package/dist/credentials/client-factory.d.ts.map +0 -1
  167. package/dist/credentials/client-factory.js +0 -110
  168. package/dist/credentials/client-factory.js.map +0 -1
  169. package/dist/credentials/context.d.ts +0 -25
  170. package/dist/credentials/context.d.ts.map +0 -1
  171. package/dist/credentials/context.js +0 -35
  172. package/dist/credentials/context.js.map +0 -1
  173. package/dist/utils/buffer-pipeline/index.d.ts +0 -30
  174. package/dist/utils/buffer-pipeline/index.d.ts.map +0 -1
  175. package/dist/utils/buffer-pipeline/index.js +0 -317
  176. package/dist/utils/buffer-pipeline/index.js.map +0 -1
  177. package/dist/utils/buffer-pipeline/output/csv.d.ts +0 -20
  178. package/dist/utils/buffer-pipeline/output/csv.d.ts.map +0 -1
  179. package/dist/utils/buffer-pipeline/output/csv.js +0 -117
  180. package/dist/utils/buffer-pipeline/output/csv.js.map +0 -1
  181. package/dist/utils/buffer-pipeline/output/json.d.ts +0 -16
  182. package/dist/utils/buffer-pipeline/output/json.d.ts.map +0 -1
  183. package/dist/utils/buffer-pipeline/output/json.js +0 -48
  184. package/dist/utils/buffer-pipeline/output/json.js.map +0 -1
  185. package/dist/utils/buffer-pipeline/output/markdown.d.ts +0 -15
  186. package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +0 -1
  187. package/dist/utils/buffer-pipeline/output/markdown.js +0 -105
  188. package/dist/utils/buffer-pipeline/output/markdown.js.map +0 -1
  189. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +0 -16
  190. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +0 -1
  191. package/dist/utils/buffer-pipeline/output/xhtml-list.js +0 -81
  192. package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +0 -1
  193. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +0 -15
  194. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +0 -1
  195. package/dist/utils/buffer-pipeline/output/xhtml-table.js +0 -176
  196. package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +0 -1
  197. package/dist/utils/buffer-pipeline/schema.d.ts +0 -1878
  198. package/dist/utils/buffer-pipeline/schema.d.ts.map +0 -1
  199. package/dist/utils/buffer-pipeline/schema.js +0 -168
  200. package/dist/utils/buffer-pipeline/schema.js.map +0 -1
  201. package/dist/utils/buffer-pipeline/stages/filter.d.ts +0 -32
  202. package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +0 -1
  203. package/dist/utils/buffer-pipeline/stages/filter.js +0 -208
  204. package/dist/utils/buffer-pipeline/stages/filter.js.map +0 -1
  205. package/dist/utils/buffer-pipeline/stages/format.d.ts +0 -45
  206. package/dist/utils/buffer-pipeline/stages/format.d.ts.map +0 -1
  207. package/dist/utils/buffer-pipeline/stages/format.js +0 -160
  208. package/dist/utils/buffer-pipeline/stages/format.js.map +0 -1
  209. package/dist/utils/buffer-pipeline/stages/group-by.d.ts +0 -25
  210. package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +0 -1
  211. package/dist/utils/buffer-pipeline/stages/group-by.js +0 -190
  212. package/dist/utils/buffer-pipeline/stages/group-by.js.map +0 -1
  213. package/dist/utils/buffer-pipeline/stages/select.d.ts +0 -54
  214. package/dist/utils/buffer-pipeline/stages/select.d.ts.map +0 -1
  215. package/dist/utils/buffer-pipeline/stages/select.js +0 -228
  216. package/dist/utils/buffer-pipeline/stages/select.js.map +0 -1
  217. package/dist/utils/buffer-pipeline/stages/sort.d.ts +0 -20
  218. package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +0 -1
  219. package/dist/utils/buffer-pipeline/stages/sort.js +0 -96
  220. package/dist/utils/buffer-pipeline/stages/sort.js.map +0 -1
  221. package/dist/utils/buffer-pipeline/types.d.ts +0 -277
  222. package/dist/utils/buffer-pipeline/types.d.ts.map +0 -1
  223. package/dist/utils/buffer-pipeline/types.js +0 -8
  224. package/dist/utils/buffer-pipeline/types.js.map +0 -1
  225. package/dist/utils/plantuml/docker-manager.d.ts +0 -37
  226. package/dist/utils/plantuml/docker-manager.d.ts.map +0 -1
  227. package/dist/utils/plantuml/docker-manager.js +0 -284
  228. package/dist/utils/plantuml/docker-manager.js.map +0 -1
@@ -11,7 +11,7 @@ const TOPICS = ["jql", "cql", "storage", "plantuml", "buffers", "analysis"];
11
11
  // Default workflow guide (shown when no topic specified)
12
12
  const WORKFLOW_GUIDE = `# Jicon Quick Reference
13
13
 
14
- TOOLS: jira(26) confluence(21) tempo(13) buffer(11) plantuml(3) url(2) date(1) help(1)
14
+ TOOLS: jira, confluence, tempo, buffer, workload, plantuml, url, date, help, whoami
15
15
 
16
16
  ## Decision Tree - Which Topic?
17
17
 
@@ -30,8 +30,11 @@ TOOLS: jira(26) confluence(21) tempo(13) buffer(11) plantuml(3) url(2) date(1) h
30
30
  | Search Confluence | \`help(topic="cql")\` |
31
31
  | Search Jira | \`jira_get_issue_types()\` then \`help(topic="jql")\` |
32
32
  | Non-English Jira fields | \`jira_get_fields(search="epic")\` → use cf[ID] syntax |
33
+ | **Find user for JQL query** | \`jira_search_users(query="name")\` → get username for assignee/reporter JQL |
34
+ | **Issues worked on in period** | \`tempo_get_worklogs(workerKey, dateFrom, dateTo)\` ← NOT JQL created/updated |
33
35
  | Log/get time | \`tempo_get_user_info()\` first |
34
- | **Create table from Jira data** | \`buffer_pipeline(bufferId, pipeline={output:{type:"xhtml_table"}})\` |
36
+ | **Create table for Confluence** | \`buffer_transform(..., code="return toTable(issues,{columns:[...]})")\` → XHTML |
37
+ | **Create table to show user** | \`buffer_transform(..., code="return toMarkdownTable(issues,{columns:[...]})")\` → Markdown |
35
38
  | **Iterate items for AI analysis** | \`buffer_get_items(bufferId, start=0, count=50)\` |
36
39
  | **Large dataset + AI columns** | Batch workflow - see \`help(topic="buffers")\` |
37
40
  | **LLM analysis tools guide** | \`help(topic="analysis")\` |
@@ -129,7 +132,7 @@ const JQL_HELP = `# JQL Syntax Guide
129
132
 
130
133
  Before writing JQL with type/status names:
131
134
  1. Use \`jira_get_issue_types()\` to discover actual type names (e.g., "Epic" vs "Épopée")
132
- 2. Use \`jira_get_fields()\` to discover field names (e.g., "Epic Link" vs "Lien d'épopée")
135
+ 2. Use \`jira_get_fields(search="epic")\` to discover field names (e.g., "Epic Link" vs "Lien d'épopée")
133
136
  3. Use \`cf[ID]\` syntax for language-independent field queries
134
137
 
135
138
  The examples below use English names. Replace with your instance's actual values.
@@ -155,27 +158,32 @@ The examples below use English names. Replace with your instance's actual values
155
158
  4. Recently updated issues (last 7 days):
156
159
  updated >= startOfDay(-7)
157
160
 
158
- 5. Issues by assignee:
161
+ 5. Issues by assignee (current user):
159
162
  assignee = currentUser()
160
163
 
161
- 6. Text search in summary/description:
164
+ 6. Issues by a specific person (find their username first):
165
+ jira_search_users(query="Fabien") → returns username (e.g., "fthuillier")
166
+ assignee = "fthuillier"
167
+
168
+ 7. Text search in summary/description:
162
169
  summary~"login" OR description~"login"
163
170
 
164
- 7. Date range:
171
+ 8. Date range:
165
172
  created >= "2025-01-01" AND created <= "2025-01-31"
166
173
 
167
- 8. Multiple projects:
174
+ 9. Multiple projects:
168
175
  project IN (PROJ1, PROJ2, PROJ3)
169
176
 
170
- 9. Exclude resolved:
171
- resolution = Unresolved
177
+ 10. Exclude resolved (language-independent):
178
+ statusCategory != Done
172
179
 
173
- 10. Issues with specific label:
180
+ 11. Issues with specific label:
174
181
  labels = "urgent" AND status != Done
175
182
 
176
183
  ## Tips
177
184
  - Use jira_get_issue_types first to discover type names for your instance
178
185
  - Use jira_get_fields to discover field names in your language
186
+ - Use jira_search_users to find a person's username for assignee/reporter queries
179
187
  - Date functions: startOfDay(), startOfWeek(), startOfMonth(), now()
180
188
  - Relative dates: startOfDay(-7) = 7 days ago
181
189
  - Always quote field values that contain spaces
@@ -211,7 +219,32 @@ The \`clauseNames\` array shows all valid JQL names for a field.
211
219
  ## Date Handling Tips
212
220
  - "Last week" in business context = previous Mon-Fri (e.g., Dec 8-12)
213
221
  - "Rolling 7 days" = use startOfDay(-7)
214
- - For exact date ranges, use explicit dates: updated >= "2025-12-08" AND updated <= "2025-12-12"`;
222
+ - For exact date ranges, use explicit dates: updated >= "2025-12-08" AND updated <= "2025-12-12"
223
+
224
+ ## Language-Independent Best Practices
225
+
226
+ **Always use these approaches for reliable JQL across all Jira instances:**
227
+ - Use \`statusCategory != Done\` instead of \`resolution = Unresolved\`
228
+ - Use \`cf[ID]\` syntax for custom fields instead of localized names
229
+ - Tools like \`jira_list_epic_children\` automatically try multiple patterns
230
+
231
+ ## Troubleshooting Common JQL Errors
232
+
233
+ ### "Le champ 'X' n'existe pas" / "Field 'X' does not exist"
234
+ **Cause**: Field name is localized or doesn't exist on this instance
235
+ **Solution**:
236
+ 1. Run \`jira_get_fields(search="part_of_name")\` to find the field
237
+ 2. Use the \`clauseNames\` value or \`cf[ID]\` syntax
238
+
239
+ ### Query returns 0 results but issues exist
240
+ **Cause**: Type name mismatch (e.g., searching for "Epic" when locale uses "Épopée")
241
+ **Solution**:
242
+ 1. Run \`jira_get_issue_types()\` to see actual type names
243
+ 2. Use the exact name from the response
244
+
245
+ ### "resolution = Unresolved" not working in non-English instance
246
+ **Cause**: "Unresolved" may not work consistently across all locales
247
+ **Solution**: Use \`statusCategory != Done\` (works in any language)`;
215
248
  // CQL syntax guide
216
249
  const CQL_HELP = `# CQL Syntax Guide
217
250
 
@@ -232,6 +265,8 @@ CQL is largely language-independent:
232
265
  ## Critical Warnings
233
266
  WARNING: Do NOT use 'content~' or 'body~' - they're invalid! Use 'text~' instead.
234
267
 
268
+ WARNING: Do NOT use 'lastmodifiedby' or 'lastmodifier' - they don't exist! Use 'contributor=' instead.
269
+
235
270
  WARNING: WRONG: text~("term1" OR "term2") - Cannot use OR inside the operator
236
271
  OK: (text~"term1" OR text~"term2") - Each term needs its own text~ operator
237
272
 
@@ -242,35 +277,51 @@ OK: (text~"term1" OR text~"term2") - Each term needs its own text~ operator
242
277
  2. Pages created by a person:
243
278
  type=page AND creator="username"
244
279
 
245
- 3. Pages with specific label:
280
+ 3. Pages I created OR edited:
281
+ contributor=currentUser() ORDER BY lastmodified DESC
282
+
283
+ 4. Pages with specific label:
246
284
  type=page AND label="meeting-notes"
247
285
 
248
- 4. Pages in space modified recently:
286
+ 5. Pages in space modified recently:
249
287
  space=DOCS AND lastmodified >= now("-30d") ORDER BY lastmodified DESC
250
288
 
251
- 5. Text search in a space:
289
+ 6. Text search in a space:
252
290
  text~"API" AND space=DOCS AND type=page
253
291
 
254
- 6. Date range:
292
+ 7. Date range:
255
293
  lastmodified >= "2025-01-01" AND lastmodified <= "2025-01-31"
256
294
 
257
- 7. Multiple spaces:
295
+ 8. Multiple spaces:
258
296
  space IN (DOCS, PROJ, WIKI)
259
297
 
260
- 8. Pages by title pattern:
298
+ 9. Pages by title pattern:
261
299
  type=page AND title~"Sprint Review" ORDER BY created DESC
262
300
 
263
- 9. Find by creator name:
264
- creator.fullname~"Alex Morgan"
301
+ 10. Find by creator name:
302
+ creator.fullname~"Alex Morgan"
265
303
 
266
- 10. Pages created this week:
304
+ 11. Pages created this week:
267
305
  type=page AND created >= startOfWeek()
268
306
 
269
307
  ## Tips
270
308
  - Use space KEY (e.g., 'DOCS') not space name (e.g., 'Documentation')
271
309
  - Date functions: now(), startOfDay(), startOfWeek(), startOfMonth()
272
310
  - Relative dates: now("-7d") = 7 days ago
273
- - Results are always buffered - use buffer_get_items to read, buffer_grep to search`;
311
+ - Results are always buffered - use buffer_get_items to read, buffer_grep to search
312
+
313
+ ## User Fields
314
+
315
+ | Field | Meaning |
316
+ |-------|---------|
317
+ | creator | Original author only |
318
+ | contributor | Created OR edited |
319
+
320
+ ## Invalid Fields
321
+
322
+ These do NOT exist in CQL:
323
+ - lastmodifiedby, lastmodifier → use contributor=
324
+ - content~, body~ → use text~`;
274
325
  // Confluence storage format (XHTML syntax only)
275
326
  const STORAGE_FORMAT_HELP = `# Confluence Storage Format (XHTML)
276
327
 
@@ -669,6 +720,7 @@ When editing existing pages, you can create content in a separate buffer and mer
669
720
  | \`buffer_get_element(bufferId, elementId)\` | Get raw XHTML of specific element |
670
721
  | \`buffer_get_items(bufferId, start, count)\` | Get JSON items by index (arrays) or key (objects) |
671
722
  | \`buffer_set_items(bufferId, itemId?, append?, data)\` | Update/append JSON items by ID (arrays) or merge keys (objects) |
723
+ | \`buffer_get_schema(bufferId)\` | Get schema with field types and samples (JSON) |
672
724
  | \`buffer_grep(bufferId, pattern, "-C"=2)\` | Search with context |
673
725
  | \`buffer_validate_xhtml(bufferId)\` | Check XHTML validity |
674
726
  | \`buffer_list()\` | See all active buffers |
@@ -686,109 +738,56 @@ buffer_edit(bufferId, old_string="foo", new_string="bar", replace_all=true)
686
738
  buffer_edit(bufferId, append=true, content="text to add at end")
687
739
  \`\`\`
688
740
 
689
- ## JSON Pipeline (buffer_pipeline) - RECOMMENDED
690
-
691
- Transform JSON buffers with a declarative pipeline: filter, group, sort, format, output.
741
+ ## JavaScript Sandbox (buffer_transform)
692
742
 
693
- **98% token reduction** for data transformations - no need to iterate through items!
743
+ Transform JSON buffers with JavaScript code in a secure sandbox.
694
744
 
695
745
  **Basic workflow:**
696
746
  \`\`\`
697
- 1. jira_search_issues(jql="...") → { bufferId, structure: { itemCount: 578 } }
698
-
699
- 2. buffer_pipeline(bufferId, pipeline={
700
- filter: [{ field: "status.name", operator: "ne", value: "Done" }],
701
- sort: [{ field: "priority.name", direction: "asc" }],
702
- output: {
703
- type: "xhtml_table",
704
- table: {
705
- title: "Open Issues",
706
- columns: [
707
- { field: "key", header: "Issue", link: { type: "jira" } },
708
- { field: "summary", header: "Summary" },
709
- { field: "priority.name", header: "Priority" }
710
- ]
711
- }
712
- }
713
- })
714
- → { bufferId: "buf_new", outputItems: 45, preview: "..." }
715
-
716
- 3. Insert into Confluence page or use directly
717
- \`\`\`
718
-
719
- **Pipeline stages (all optional except output):**
720
- - \`select\`: Extract and rename fields
721
- - \`filter\`: Filter items (eq, ne, contains, in, regex, etc.)
722
- - \`groupBy\`: Group and aggregate (count, sum, avg, list, etc.)
723
- - \`sort\`: Sort by fields
724
- - \`limit\`: Limit results
725
- - \`format\`: Conditional styling (colors, bold, icons)
726
- - \`output\`: Generate output (xhtml_table, xhtml_list, json, csv, markdown)
727
-
728
- **Schema Quick Reference:**
729
- \`\`\`
730
- pipeline: {
731
- select?: { fields: [{from: "path", as: "name", transform?: "..."}] },
732
- filter?: [{ field, operator, value }],
733
- groupBy?: { field, aggregations: [{function, field?, as}] },
734
- sort?: [{ field, direction: "asc"|"desc" }], // NOT "sortBy"!
735
- limit?: number,
736
- format?: [...],
737
- output: { type: "xhtml_table"|"json"|"csv"|..., table?: {...} }
738
- }
747
+ 1. jira_search_issues(jql="...") → { bufferId }
748
+ 2. buffer_get_schema(bufferId) # See available fields with samples
749
+ 3. buffer_transform(inputs: { issues: bufferId }, code: "return toTable(...)")
750
+ 4. confluence_draft_create(bufferId) or display to user
739
751
  \`\`\`
740
752
 
741
- **Common Mistakes:**
742
- | Wrong | Correct |
743
- |-------|---------|
744
- | sortBy: [...] | sort: [...] |
745
- | transform: "map" | transform: "date" (or uppercase, lowercase, number, boolean, string) |
746
- | No output | output: {...} (REQUIRED) |
747
- | pipeline: "{...}" | pipeline: {...} (object, not string) |
748
-
749
- **After select renames fields, use NEW names in subsequent stages:**
750
- - select: {from: "issueType", as: "Type"}
751
- - sort: [{field: "Type"}] ✓ (not "issueType")
752
-
753
- **Filter operators:** eq, ne, gt, lt, gte, lte, contains, startsWith, endsWith, in, notIn, exists, notExists, regex, empty, notEmpty
754
-
755
- **Aggregations:** count, sum, avg, min, max, first, last, list, unique
756
-
757
- **Example - Statistics by assignee:**
758
- \`\`\`
759
- buffer_pipeline(bufferId, pipeline={
760
- filter: [{ field: "status.name", operator: "ne", value: "Done" }],
761
- groupBy: {
762
- field: "assignee.displayName",
763
- aggregations: [
764
- { function: "count", as: "total" },
765
- { function: "list", field: "key", as: "issues" }
766
- ]
767
- },
768
- sort: [{ field: "total", direction: "desc" }],
769
- output: {
770
- type: "xhtml_table",
771
- table: {
772
- title: "Work Distribution",
753
+ **OUTPUT FORMAT - CHOOSE BY DESTINATION:**
754
+
755
+ | Destination | Formatters | Result |
756
+ |-------------|-----------|--------|
757
+ | **Confluence page** | toTable(), toList() | XHTML |
758
+ | **Display to user** | toMarkdownTable(), toMarkdownList() | Markdown |
759
+
760
+ ⚠️ **Common mistake**: Using toTable() when you want to display to user. Use toMarkdownTable() instead!
761
+
762
+ **Built-in helpers:** groupBy, sum, avg, min, max, count, unique, get, pick, omit, parseDate, formatDate, daysBetween, JIRA_URL, CONFLUENCE_URL
763
+
764
+ **Example - Table for user display:**
765
+ \`\`\`javascript
766
+ buffer_transform(
767
+ inputs: { issues: bufferId },
768
+ code: \`
769
+ const open = issues.filter(i => i.status !== 'Done');
770
+ return toMarkdownTable(open, {
773
771
  columns: [
774
- { field: "displayName", header: "Assignee" },
775
- { field: "total", header: "Open Issues" },
776
- { field: "issues", header: "Issue Keys" }
772
+ { field: 'key', header: 'Issue', link: { type: 'jira' } },
773
+ { field: 'summary', header: 'Summary' },
774
+ { field: 'assignee', header: 'Assignee' }
777
775
  ]
778
- }
779
- }
780
- })
776
+ });
777
+ \`
778
+ )
781
779
  \`\`\`
782
780
 
783
- **When to use buffer_pipeline:**
784
- - Generating tables/lists for Confluence
785
- - Creating CSV/Markdown exports
786
- - Aggregating statistics
787
- - Filtering and sorting large result sets server-side
781
+ **When to use buffer_transform:**
782
+ - Generating tables/lists for Confluence or user display
783
+ - Custom filtering and transformation logic
784
+ - Aggregating statistics across multiple buffers
785
+
786
+ **When NOT to use buffer_transform:**
787
+ - When you need LLM judgment on each item (use buffer_get_items)
788
+ - When decisions require analyzing content semantically
788
789
 
789
- **When NOT to use buffer_pipeline:**
790
- - When you need LLM judgment on each item
791
- - When decisions require analyzing content (use buffer_get_items instead)
790
+ **For formatter details:** See TOOL_LIST.md or tool description for toTable/toList config options.
792
791
 
793
792
  ## Decision Forks (Choose Your Path)
794
793
 
@@ -798,29 +797,30 @@ After jira_search_issues/tempo_get_worklogs returns a bufferId, you have OPTIONS
798
797
  |---------------|-------------|--------|
799
798
  | READ/ANALYZE items with AI | buffer_get_items(start=0, count=50) | Get items for analysis |
800
799
  | SEARCH within results | buffer_grep(pattern) | Find matching items |
801
- | FORMAT for Confluence | buffer_pipelinexhtml_table | TERMINAL: publish-ready |
802
- | TRANSFORM and keep flexible | buffer_pipelinejson | Can process again |
803
- | EXPORT to file | buffer_pipelinecsv/markdown | TERMINAL: file-ready |
800
+ | FORMAT for Confluence | buffer_transformtoTable/toList | XHTML confluence_draft_create |
801
+ | FORMAT to show user | buffer_transformtoMarkdownTable/toMarkdownList | Markdown display directly |
802
+ | TRANSFORM and keep flexible | buffer_transformreturn array | JSON can process again |
804
803
 
805
804
  **⚠️ OUTPUT TYPE CONSEQUENCES:**
806
805
  | Type | Can Iterate Items? | Can Edit? | Next Steps |
807
806
  |------|-------------------|-----------|------------|
808
- | json | ✓ buffer_get_items | ✓ buffer_pipeline | Further processing, re-transform |
809
- | xhtml_* | ✗ (not iterable) | ✓ buffer_edit | confluence_draft_create |
810
- | csv/md | ✗ (not iterable) | ✓ buffer_edit | buffer_grep |
807
+ | json | ✓ buffer_get_items | ✓ buffer_transform | Further processing, re-transform |
808
+ | xhtml | ✗ (not iterable) | ✓ buffer_edit | confluence_draft_create |
809
+ | markdown | ✗ (not iterable) | ✓ buffer_edit | Display to user |
811
810
 
812
811
  **Choose json** if you need to iterate items for AI analysis (buffer_get_items).
813
- **Choose xhtml_*** when ready to publish - you can still edit elements, but can't iterate.
812
+ **Choose xhtml (toTable/toList)** when publishing to Confluence.
813
+ **Choose markdown (toMarkdownTable/toMarkdownList)** when displaying results to user.
814
814
 
815
815
  ---
816
816
 
817
817
  ## Large Dataset Patterns
818
818
 
819
819
  ### Simple table (no AI analysis)
820
- Use \`buffer_pipeline\` - generates complete table in **ONE tool call**:
820
+ Use \`buffer_transform\` with \`toTable\` - generates complete table in **ONE tool call**:
821
821
  \`\`\`
822
822
  jira_search_issues(jql="...") → bufferId (500+ items)
823
- buffer_pipeline(bufferId, pipeline={output:{type:"xhtml_table",...}}) → complete table!
823
+ buffer_transform(inputs:{issues:bufferId}, code:"return toTable(issues,{columns:[...]})") → complete table!
824
824
  \`\`\`
825
825
 
826
826
  ### Table with AI-enhanced columns (complexity, impact)
@@ -861,7 +861,7 @@ For cases where you need to read and analyze the data (not just transform it):
861
861
 
862
862
  Use these when:
863
863
  - You need to understand the content to make decisions
864
- - You're writing custom analysis that can't be expressed as a pipeline
864
+ - You're writing custom analysis that requires LLM reasoning on content
865
865
  - You're building tables with AI-enhanced columns (batch workflow)
866
866
 
867
867
  ## Common Errors & Recovery
@@ -893,191 +893,21 @@ const ANALYSIS_HELP = `# LLM-Powered Analysis Tools
893
893
  These **intelligent entry points** return pre-processed data **directly to the LLM** (not buffered) for analysis and insight generation. Unlike regular tools that buffer data for transformation, these tools are designed for AI synthesis.
894
894
 
895
895
  **Key Difference:**
896
- - **Regular tools** → Buffer data → Use buffer_pipeline for transformation → Token-efficient
896
+ - **Regular tools** → Buffer data → Use buffer_transform for transformation → Token-efficient
897
897
  - **Analysis tools** → Return markdown directly to LLM → Enable AI insight and synthesis
898
898
 
899
- ## When to Use Analysis Tools
900
-
901
- | Task | Tool | Example Query |
902
- |------|------|---------------|
903
- | What happened on project X? | \`jira_get_activity_digest\` | "What happened on PROJ this week?" |
904
- | Any blockers in discussions? | \`jira_get_recent_comments\` | "Are there blockers mentioned in recent comments?" |
905
- | Track field changes | \`jira_get_changelog\` | "What issues had priority escalations?" |
906
- | Deep Epic analysis | \`jira_analyze_epic\` | "Analyze Epic PROJ-100 for risks and progress" |
907
- | Sprint progress & risks | \`jira_analyze_sprint\` | "How is Sprint 42 progressing?" |
908
- | Quick Epic status | \`jira_epic_summary\` | "Quick status of Epic PROJ-100" |
909
- | List Epic children | \`jira_list_epic_children\` | "List open Stories in PROJ-100" |
910
- | Top issues by workload | \`tempo_get_top_worklogs\` | "Which issues had most work last week?" |
911
-
912
- ## Tool Details
913
-
914
- ### jira_get_activity_digest
915
- Fetches comments, status/priority/assignee changes across issues.
916
-
917
- \`\`\`
918
- jira_get_activity_digest(
919
- projectKey="ACME", // or jql="..." or issueKeys=[...]
920
- since="7d", // "1d", "7d", "30d", or ISO date
921
- includeComments=true,
922
- includeStatusChanges=true,
923
- includePriorityChanges=true,
924
- includeAssigneeChanges=true
925
- )
926
- \`\`\`
927
-
928
- **Returns**: Markdown with activities grouped by issue + summary statistics:
929
- - Issues with activity count
930
- - Status changes (with "to Done" breakdown)
931
- - Priority escalations
932
- - New comments count
933
-
934
- ### jira_get_recent_comments
935
- Aggregates comments across multiple issues for discussion analysis.
936
-
937
- \`\`\`
938
- jira_get_recent_comments(
939
- projectKey="ACME",
940
- since="7d",
941
- authorKey="john", // optional: filter by author
942
- maxComments=30
943
- )
944
- \`\`\`
945
-
946
- **Returns**: Markdown with comments grouped by issue + context (status).
947
-
948
- ### jira_get_changelog
949
- Tracks field changes across issues.
950
-
951
- \`\`\`
952
- jira_get_changelog(
953
- projectKey="ACME",
954
- since="7d",
955
- fields=["status", "priority", "assignee", "resolution"],
956
- maxChanges=50
957
- )
958
- \`\`\`
959
-
960
- **Returns**: Markdown with changes grouped by issue + field breakdown.
899
+ ## Tool Quick Reference
961
900
 
962
- ### jira_analyze_epic
963
- Comprehensive Epic/Feature analysis for deep insights.
964
-
965
- \`\`\`
966
- jira_analyze_epic(
967
- issueKey="PROJ-100",
968
- includeComments=true,
969
- commentDays=14,
970
- maxComments=5
971
- )
972
- \`\`\`
973
-
974
- **Returns**: Comprehensive markdown analysis including:
975
- - **Hierarchy**: Epic → Stories → Subtasks with completion %
976
- - **Time Metrics**: Spent vs estimated, burn rate, overrun warnings
977
- - **Progress Indicators**: Velocity, in-flight issues
978
- - **Architecture Context**: Components, labels
979
- - **Linked Resources**: Confluence pages, related issues
980
- - **Recent Discussions**: Technical comments for context
981
-
982
- **Example output snippet:**
983
- \`\`\`markdown
984
- ## Issue Hierarchy
985
- | Type | Total | Done | In Progress | To Do | Completion |
986
- |------|-------|------|-------------|-------|------------|
987
- | Story | 5 | 3 | 1 | 1 | 60% |
988
- | Sub-task | 12 | 8 | 2 | 2 | 67% |
989
-
990
- ## Time Metrics
991
- - Time Spent: 2w 3d
992
- - Original Estimate: 3w
993
- - Burn Rate: 77% of estimate consumed
994
- - ⚠️ Overrun: 2d over estimate
995
-
996
- ## Analysis Summary
997
- This Epic contains **17 issues** with **65% completion**.
998
- ⚠️ **77% of time used but only 65% complete** - at risk of overrun.
999
- \`\`\`
1000
-
1001
- ### jira_analyze_sprint
1002
- Comprehensive Sprint analysis for progress, risks, and team distribution.
1003
-
1004
- \`\`\`
1005
- jira_analyze_sprint(
1006
- sprintId=123, // from jira_get_sprints(boardId)
1007
- includeComments=true,
1008
- commentDays=7,
1009
- includeRisks=true
1010
- )
1011
- \`\`\`
1012
-
1013
- **How to find sprintId**: Call \`jira_get_sprints(boardId)\` first. BoardId can be found in Jira URLs like \`/secure/RapidBoard.jspa?rapidView=123\`.
1014
-
1015
- **Returns**: Comprehensive markdown analysis including:
1016
- - **Sprint Metadata**: Dates, duration, days remaining
1017
- - **Progress**: Completion %, status breakdown (Done/In Progress/To Do)
1018
- - **Issue Breakdown**: By type and status
1019
- - **Time Metrics**: Estimated vs spent vs remaining, burn rate
1020
- - **Team Distribution**: Who's working on what
1021
- - **Risk Indicators**: Stale issues, blocked, high-priority unstarted
1022
- - **Recent Discussions**: Comments from team
1023
-
1024
- **Example output snippet:**
1025
- \`\`\`markdown
1026
- # Sprint Analysis: Sprint 42
1027
-
1028
- **State**: Active
1029
- **Period**: Jan 20 - Feb 3 (14 days)
1030
- **Progress**: Day 10 of 14 (4 days remaining)
1031
-
1032
- ## Sprint Progress
1033
- **Completion**: 65% (13 of 20 issues done)
1034
-
1035
- ## Risk Indicators
1036
- ⚠️ **3 issues at risk:**
1037
- - PROJ-456: In Progress for 5 days without update
1038
- - PROJ-789: High priority, still To Do
1039
- \`\`\`
1040
-
1041
- ### jira_epic_summary
1042
- Lightweight Epic status - no time metrics, no comments, no Confluence links.
1043
-
1044
- \`\`\`
1045
- jira_epic_summary(
1046
- issueKey="PROJ-100",
1047
- includeLinks=true, // cross-project dependencies
1048
- maxDepth=3 // hierarchy depth
1049
- )
1050
- \`\`\`
1051
-
1052
- **Returns**: Quick markdown with hierarchy list, status breakdown, cross-project dependencies.
1053
-
1054
- ### jira_list_epic_children
1055
- List Epic children without needing JQL. Auto-detects Epic Link and Parent Link fields.
1056
-
1057
- \`\`\`
1058
- jira_list_epic_children(
1059
- parentKey="PROJ-100",
1060
- type="Story", // optional: filter by type
1061
- status="open", // "open", "closed", "all"
1062
- recursive=false // true for nested children
1063
- )
1064
- \`\`\`
1065
-
1066
- **Returns**: Buffered results (same format as jira_search_issues).
1067
-
1068
- ### tempo_get_top_worklogs
1069
- Top issues or users by workload. Returns directly to LLM.
1070
-
1071
- \`\`\`
1072
- tempo_get_top_worklogs(
1073
- since="last_week", // date expression
1074
- projectKey="PROJ", // optional filter
1075
- groupBy="issue", // "issue" or "user"
1076
- limit=10
1077
- )
1078
- \`\`\`
1079
-
1080
- **Returns**: Markdown table with ranked results + totals.
901
+ | Tool | Purpose | Best For |
902
+ |------|---------|----------|
903
+ | \`jira_get_activity_digest\` | Recent activity across issues | "What happened on PROJ this week?" |
904
+ | \`jira_get_recent_comments\` | Discussion analysis | "Any blockers in recent discussions?" |
905
+ | \`jira_get_changelog\` | Track field changes | "What issues had priority escalations?" |
906
+ | \`jira_analyze_epic\` | Deep Epic analysis | "Analyze Epic PROJ-100 for risks" |
907
+ | \`jira_analyze_sprint\` | Sprint progress & risks | "How is Sprint 42 progressing?" |
908
+ | \`jira_epic_summary\` | Quick Epic status | "Quick status of Epic PROJ-100" |
909
+ | \`jira_list_epic_children\` | List Epic children | "List open Stories in PROJ-100" |
910
+ | \`tempo_get_top_worklogs\` | Top issues by workload | "Which issues had most work?" |
1081
911
 
1082
912
  ## Scoping Parameters
1083
913
 
@@ -1101,31 +931,53 @@ Use \`date_resolve(expression)\` to preview date ranges:
1101
931
  date_resolve("this_week") → { dateFrom: "2025-01-27", dateTo: "2025-01-31", businessDays: 5 }
1102
932
  \`\`\`
1103
933
 
1104
- ## vs Buffer Pipeline
934
+ ## Choosing the Right Tool
935
+
936
+ ### Activity & Discussions
937
+ - **What happened?** → \`jira_get_activity_digest(projectKey, since="7d")\`
938
+ - **What are people saying?** → \`jira_get_recent_comments(projectKey, since="7d")\`
939
+ - **What changed?** → \`jira_get_changelog(projectKey, fields=["status","priority"])\`
940
+
941
+ ### Epic Analysis
942
+ - **Full Epic analysis** (time, comments, links) → \`jira_analyze_epic(issueKey)\`
943
+ - **Quick Epic status** (no time metrics) → \`jira_epic_summary(issueKey)\`
944
+ - **List Epic children** (buffered for transform) → \`jira_list_epic_children(parentKey)\`
945
+
946
+ ### Sprint Analysis
947
+ - **Sprint health check** → \`jira_analyze_sprint(sprintId)\`
948
+ - Find sprintId: \`jira_get_sprints(boardId)\`
949
+ - Find boardId: \`jira_list_boards()\` or from URL \`/rapidView=123\`
950
+
951
+ ### Time Tracking
952
+ - **Top issues by workload** → \`tempo_get_top_worklogs(since, groupBy="issue")\`
953
+ - **Top contributors** → \`tempo_get_top_worklogs(since, groupBy="user")\`
954
+
955
+ ## vs Buffer Transform
1105
956
 
1106
957
  | Need | Use |
1107
958
  |------|-----|
1108
959
  | AI analysis and insights | **Analysis tools** (direct to LLM) |
1109
- | Generate Confluence table | \`buffer_pipeline\` (token efficient) |
1110
- | Export to CSV/JSON | \`buffer_pipeline\` (server-side transform) |
1111
- | Filter/sort/aggregate data | \`buffer_pipeline\` (declarative) |
960
+ | Generate Confluence table | \`buffer_transform\` (sandbox transform) |
961
+ | Export to CSV/JSON | \`buffer_transform\` (sandbox transform) |
962
+ | Filter/sort/aggregate data | \`buffer_transform\` (JavaScript code) |
1112
963
 
1113
964
  **Analysis tools** are for questions requiring AI judgment:
1114
965
  - "What are the risks?"
1115
966
  - "Summarize the discussions"
1116
967
  - "What needs attention?"
1117
968
 
1118
- **Buffer pipeline** is for data transformation:
969
+ **Buffer transform** is for data transformation:
1119
970
  - "Create a table of open issues"
1120
971
  - "Group by assignee and count"
1121
- - "Export to CSV"
972
+ - "Filter and format data for Confluence"
1122
973
 
1123
974
  ## Tips
1124
975
 
1125
976
  - Use \`date_resolve\` to understand date ranges before querying
1126
977
  - Start with smaller \`maxActivities\`/\`maxComments\` for faster responses
1127
978
  - Combine with \`jira_search_issues\` to narrow scope first if needed
1128
- - Analysis tools return markdown directly - no buffering needed`;
979
+ - Analysis tools return markdown directly - no buffering needed
980
+ - For parameter details, see tool descriptions or TOOL_LIST.md`;
1129
981
  // Topic content map
1130
982
  const TOPIC_CONTENT = {
1131
983
  jql: JQL_HELP,
@@ -1 +1 @@
1
- {"version":3,"file":"jicon-help.js","sourceRoot":"","sources":["../../src/utils/jicon-help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jicon-help.js","sourceRoot":"","sources":["../../src/utils/jicon-help.ts"],"names":[],"mappings":"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"}