@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.
- package/PROMPT.md +10 -28
- package/README.md +39 -6
- package/TOOL_LIST.md +542 -407
- package/dist/config/constants.d.ts +28 -0
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +34 -0
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +12 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +49 -6
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +18 -0
- package/dist/config/types.js.map +1 -1
- package/dist/confluence/client.d.ts.map +1 -1
- package/dist/confluence/client.js +7 -2
- package/dist/confluence/client.js.map +1 -1
- package/dist/confluence/formatters.d.ts +20 -0
- package/dist/confluence/formatters.d.ts.map +1 -1
- package/dist/confluence/formatters.js +74 -8
- package/dist/confluence/formatters.js.map +1 -1
- package/dist/confluence/tools.d.ts +16 -20
- package/dist/confluence/tools.d.ts.map +1 -1
- package/dist/confluence/tools.js +71 -68
- package/dist/confluence/tools.js.map +1 -1
- package/dist/credentials/extractor.d.ts +15 -5
- package/dist/credentials/extractor.d.ts.map +1 -1
- package/dist/credentials/extractor.js +99 -12
- package/dist/credentials/extractor.js.map +1 -1
- package/dist/credentials/index.d.ts +4 -3
- package/dist/credentials/index.d.ts.map +1 -1
- package/dist/credentials/index.js +3 -2
- package/dist/credentials/index.js.map +1 -1
- package/dist/credentials/types.d.ts +22 -0
- package/dist/credentials/types.d.ts.map +1 -1
- package/dist/credentials/types.js.map +1 -1
- package/dist/index.js +211 -176
- package/dist/index.js.map +1 -1
- package/dist/jira/activity-tools.d.ts +8 -15
- package/dist/jira/activity-tools.d.ts.map +1 -1
- package/dist/jira/activity-tools.js +131 -90
- package/dist/jira/activity-tools.js.map +1 -1
- package/dist/jira/client.d.ts +24 -0
- package/dist/jira/client.d.ts.map +1 -1
- package/dist/jira/client.js +65 -6
- package/dist/jira/client.js.map +1 -1
- package/dist/jira/formatters.d.ts +61 -0
- package/dist/jira/formatters.d.ts.map +1 -1
- package/dist/jira/formatters.js +83 -11
- package/dist/jira/formatters.js.map +1 -1
- package/dist/jira/tools.d.ts +78 -26
- package/dist/jira/tools.d.ts.map +1 -1
- package/dist/jira/tools.js +293 -130
- package/dist/jira/tools.js.map +1 -1
- package/dist/permissions/filter.d.ts.map +1 -1
- package/dist/permissions/filter.js +8 -4
- package/dist/permissions/filter.js.map +1 -1
- package/dist/permissions/tool-registry.d.ts +15 -13
- package/dist/permissions/tool-registry.d.ts.map +1 -1
- package/dist/permissions/tool-registry.js +19 -10
- package/dist/permissions/tool-registry.js.map +1 -1
- package/dist/session/context.d.ts +81 -0
- package/dist/session/context.d.ts.map +1 -0
- package/dist/session/context.js +107 -0
- package/dist/session/context.js.map +1 -0
- package/dist/session/index.d.ts +12 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +22 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +186 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +383 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/tempo/client.d.ts +14 -0
- package/dist/tempo/client.d.ts.map +1 -1
- package/dist/tempo/client.js +57 -0
- package/dist/tempo/client.js.map +1 -1
- package/dist/tempo/formatters.d.ts +13 -0
- package/dist/tempo/formatters.d.ts.map +1 -1
- package/dist/tempo/formatters.js +106 -20
- package/dist/tempo/formatters.js.map +1 -1
- package/dist/tempo/tools.d.ts +14 -13
- package/dist/tempo/tools.d.ts.map +1 -1
- package/dist/tempo/tools.js +203 -33
- package/dist/tempo/tools.js.map +1 -1
- package/dist/tempo/types.d.ts +20 -6
- package/dist/tempo/types.d.ts.map +1 -1
- package/dist/transport/http.d.ts +21 -5
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +193 -22
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/index.d.ts +7 -2
- package/dist/transport/index.d.ts.map +1 -1
- package/dist/transport/index.js +10 -4
- package/dist/transport/index.js.map +1 -1
- package/dist/utils/buffer-tools.d.ts +48 -724
- package/dist/utils/buffer-tools.d.ts.map +1 -1
- package/dist/utils/buffer-tools.js +337 -170
- package/dist/utils/buffer-tools.js.map +1 -1
- package/dist/utils/content-buffer.d.ts +10 -31
- package/dist/utils/content-buffer.d.ts.map +1 -1
- package/dist/utils/content-buffer.js +12 -86
- package/dist/utils/content-buffer.js.map +1 -1
- package/dist/utils/http-client.d.ts.map +1 -1
- package/dist/utils/http-client.js +99 -2
- package/dist/utils/http-client.js.map +1 -1
- package/dist/utils/jicon-help.d.ts +3 -3
- package/dist/utils/jicon-help.d.ts.map +1 -1
- package/dist/utils/jicon-help.js +164 -312
- package/dist/utils/jicon-help.js.map +1 -1
- package/dist/utils/logger.d.ts +43 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +102 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/plantuml/tools.d.ts.map +1 -1
- package/dist/utils/plantuml/tools.js +10 -9
- package/dist/utils/plantuml/tools.js.map +1 -1
- package/dist/utils/response-formatter.d.ts +20 -2
- package/dist/utils/response-formatter.d.ts.map +1 -1
- package/dist/utils/response-formatter.js +147 -17
- package/dist/utils/response-formatter.js.map +1 -1
- package/dist/utils/sandbox/formatters.d.ts +25 -0
- package/dist/utils/sandbox/formatters.d.ts.map +1 -0
- package/dist/utils/sandbox/formatters.js +690 -0
- package/dist/utils/sandbox/formatters.js.map +1 -0
- package/dist/utils/sandbox/helpers.d.ts +16 -0
- package/dist/utils/sandbox/helpers.d.ts.map +1 -0
- package/dist/utils/sandbox/helpers.js +252 -0
- package/dist/utils/sandbox/helpers.js.map +1 -0
- package/dist/utils/sandbox/index.d.ts +19 -0
- package/dist/utils/sandbox/index.d.ts.map +1 -0
- package/dist/utils/sandbox/index.js +269 -0
- package/dist/utils/sandbox/index.js.map +1 -0
- package/dist/utils/sandbox/schema.d.ts +55 -0
- package/dist/utils/sandbox/schema.d.ts.map +1 -0
- package/dist/utils/sandbox/schema.js +39 -0
- package/dist/utils/sandbox/schema.js.map +1 -0
- package/dist/utils/sandbox/types.d.ts +179 -0
- package/dist/utils/sandbox/types.d.ts.map +1 -0
- package/dist/utils/sandbox/types.js +8 -0
- package/dist/utils/sandbox/types.js.map +1 -0
- package/dist/utils/schemas/confluence.d.ts +41 -0
- package/dist/utils/schemas/confluence.d.ts.map +1 -0
- package/dist/utils/schemas/confluence.js +105 -0
- package/dist/utils/schemas/confluence.js.map +1 -0
- package/dist/utils/schemas/index.d.ts +77 -0
- package/dist/utils/schemas/index.d.ts.map +1 -0
- package/dist/utils/schemas/index.js +107 -0
- package/dist/utils/schemas/index.js.map +1 -0
- package/dist/utils/schemas/jira.d.ts +49 -0
- package/dist/utils/schemas/jira.d.ts.map +1 -0
- package/dist/utils/schemas/jira.js +153 -0
- package/dist/utils/schemas/jira.js.map +1 -0
- package/dist/utils/schemas/tempo.d.ts +29 -0
- package/dist/utils/schemas/tempo.d.ts.map +1 -0
- package/dist/utils/schemas/tempo.js +72 -0
- package/dist/utils/schemas/tempo.js.map +1 -0
- package/dist/utils/whoami-tools.d.ts +17 -0
- package/dist/utils/whoami-tools.d.ts.map +1 -0
- package/dist/utils/whoami-tools.js +90 -0
- package/dist/utils/whoami-tools.js.map +1 -0
- package/dist/utils/xhtml/error-locator.js +5 -5
- package/dist/utils/xhtml/error-locator.js.map +1 -1
- package/package.json +10 -9
- package/dist/credentials/client-factory.d.ts +0 -64
- package/dist/credentials/client-factory.d.ts.map +0 -1
- package/dist/credentials/client-factory.js +0 -110
- package/dist/credentials/client-factory.js.map +0 -1
- package/dist/credentials/context.d.ts +0 -25
- package/dist/credentials/context.d.ts.map +0 -1
- package/dist/credentials/context.js +0 -35
- package/dist/credentials/context.js.map +0 -1
- package/dist/utils/buffer-pipeline/index.d.ts +0 -30
- package/dist/utils/buffer-pipeline/index.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/index.js +0 -317
- package/dist/utils/buffer-pipeline/index.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/csv.d.ts +0 -20
- package/dist/utils/buffer-pipeline/output/csv.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/csv.js +0 -117
- package/dist/utils/buffer-pipeline/output/csv.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/json.d.ts +0 -16
- package/dist/utils/buffer-pipeline/output/json.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/json.js +0 -48
- package/dist/utils/buffer-pipeline/output/json.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/markdown.d.ts +0 -15
- package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/markdown.js +0 -105
- package/dist/utils/buffer-pipeline/output/markdown.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +0 -16
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-list.js +0 -81
- package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +0 -15
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/output/xhtml-table.js +0 -176
- package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +0 -1
- package/dist/utils/buffer-pipeline/schema.d.ts +0 -1878
- package/dist/utils/buffer-pipeline/schema.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/schema.js +0 -168
- package/dist/utils/buffer-pipeline/schema.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/filter.d.ts +0 -32
- package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/filter.js +0 -208
- package/dist/utils/buffer-pipeline/stages/filter.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/format.d.ts +0 -45
- package/dist/utils/buffer-pipeline/stages/format.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/format.js +0 -160
- package/dist/utils/buffer-pipeline/stages/format.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts +0 -25
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/group-by.js +0 -190
- package/dist/utils/buffer-pipeline/stages/group-by.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/select.d.ts +0 -54
- package/dist/utils/buffer-pipeline/stages/select.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/select.js +0 -228
- package/dist/utils/buffer-pipeline/stages/select.js.map +0 -1
- package/dist/utils/buffer-pipeline/stages/sort.d.ts +0 -20
- package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/stages/sort.js +0 -96
- package/dist/utils/buffer-pipeline/stages/sort.js.map +0 -1
- package/dist/utils/buffer-pipeline/types.d.ts +0 -277
- package/dist/utils/buffer-pipeline/types.d.ts.map +0 -1
- package/dist/utils/buffer-pipeline/types.js +0 -8
- package/dist/utils/buffer-pipeline/types.js.map +0 -1
- package/dist/utils/plantuml/docker-manager.d.ts +0 -37
- package/dist/utils/plantuml/docker-manager.d.ts.map +0 -1
- package/dist/utils/plantuml/docker-manager.js +0 -284
- package/dist/utils/plantuml/docker-manager.js.map +0 -1
package/dist/utils/jicon-help.js
CHANGED
|
@@ -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
|
|
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
|
|
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.
|
|
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
|
-
|
|
171
|
+
8. Date range:
|
|
165
172
|
created >= "2025-01-01" AND created <= "2025-01-31"
|
|
166
173
|
|
|
167
|
-
|
|
174
|
+
9. Multiple projects:
|
|
168
175
|
project IN (PROJ1, PROJ2, PROJ3)
|
|
169
176
|
|
|
170
|
-
|
|
171
|
-
|
|
177
|
+
10. Exclude resolved (language-independent):
|
|
178
|
+
statusCategory != Done
|
|
172
179
|
|
|
173
|
-
|
|
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
|
|
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
|
-
|
|
286
|
+
5. Pages in space modified recently:
|
|
249
287
|
space=DOCS AND lastmodified >= now("-30d") ORDER BY lastmodified DESC
|
|
250
288
|
|
|
251
|
-
|
|
289
|
+
6. Text search in a space:
|
|
252
290
|
text~"API" AND space=DOCS AND type=page
|
|
253
291
|
|
|
254
|
-
|
|
292
|
+
7. Date range:
|
|
255
293
|
lastmodified >= "2025-01-01" AND lastmodified <= "2025-01-31"
|
|
256
294
|
|
|
257
|
-
|
|
295
|
+
8. Multiple spaces:
|
|
258
296
|
space IN (DOCS, PROJ, WIKI)
|
|
259
297
|
|
|
260
|
-
|
|
298
|
+
9. Pages by title pattern:
|
|
261
299
|
type=page AND title~"Sprint Review" ORDER BY created DESC
|
|
262
300
|
|
|
263
|
-
|
|
264
|
-
|
|
301
|
+
10. Find by creator name:
|
|
302
|
+
creator.fullname~"Alex Morgan"
|
|
265
303
|
|
|
266
|
-
|
|
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
|
-
##
|
|
690
|
-
|
|
691
|
-
Transform JSON buffers with a declarative pipeline: filter, group, sort, format, output.
|
|
741
|
+
## JavaScript Sandbox (buffer_transform)
|
|
692
742
|
|
|
693
|
-
|
|
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
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
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
|
-
**
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
|
746
|
-
|
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
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:
|
|
775
|
-
{ field:
|
|
776
|
-
{ field:
|
|
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
|
|
784
|
-
- Generating tables/lists for Confluence
|
|
785
|
-
-
|
|
786
|
-
- Aggregating statistics
|
|
787
|
-
|
|
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
|
-
**
|
|
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 |
|
|
802
|
-
|
|
|
803
|
-
|
|
|
800
|
+
| FORMAT for Confluence | buffer_transform → toTable/toList | XHTML → confluence_draft_create |
|
|
801
|
+
| FORMAT to show user | buffer_transform → toMarkdownTable/toMarkdownList | Markdown → display directly |
|
|
802
|
+
| TRANSFORM and keep flexible | buffer_transform → return 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 | ✓
|
|
809
|
-
|
|
|
810
|
-
|
|
|
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
|
|
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 \`
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
##
|
|
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
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
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
|
-
##
|
|
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 | \`
|
|
1110
|
-
| Export to CSV/JSON | \`
|
|
1111
|
-
| Filter/sort/aggregate data | \`
|
|
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
|
|
969
|
+
**Buffer transform** is for data transformation:
|
|
1119
970
|
- "Create a table of open issues"
|
|
1120
971
|
- "Group by assignee and count"
|
|
1121
|
-
- "
|
|
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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAErE,mBAAmB;AACnB,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAU,CAAC;AAGrF,yDAAyD;AACzD,MAAM,cAAc,GAAG
|
|
1
|
+
{"version":3,"file":"jicon-help.js","sourceRoot":"","sources":["../../src/utils/jicon-help.ts"],"names":[],"mappings":"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"}
|