@crypto512/jicon-mcp 2.3.0 → 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 +35 -7
- package/TOOL_LIST.md +206 -136
- package/dist/config/constants.d.ts +17 -4
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +20 -5
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +6 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +19 -8
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +10 -8
- 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/tools.d.ts +8 -13
- package/dist/confluence/tools.d.ts.map +1 -1
- package/dist/confluence/tools.js +19 -37
- package/dist/confluence/tools.js.map +1 -1
- package/dist/credentials/extractor.d.ts +14 -3
- package/dist/credentials/extractor.d.ts.map +1 -1
- package/dist/credentials/extractor.js +83 -13
- package/dist/credentials/extractor.js.map +1 -1
- package/dist/credentials/index.d.ts +1 -1
- package/dist/credentials/index.d.ts.map +1 -1
- 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 +196 -184
- package/dist/index.js.map +1 -1
- package/dist/jira/activity-tools.d.ts +0 -4
- package/dist/jira/activity-tools.d.ts.map +1 -1
- package/dist/jira/activity-tools.js +42 -65
- package/dist/jira/activity-tools.js.map +1 -1
- package/dist/jira/client.d.ts +12 -0
- package/dist/jira/client.d.ts.map +1 -1
- package/dist/jira/client.js +30 -6
- package/dist/jira/client.js.map +1 -1
- package/dist/jira/formatters.d.ts +4 -1
- package/dist/jira/formatters.d.ts.map +1 -1
- package/dist/jira/formatters.js +9 -6
- package/dist/jira/formatters.js.map +1 -1
- package/dist/jira/tools.d.ts +48 -14
- package/dist/jira/tools.d.ts.map +1 -1
- package/dist/jira/tools.js +174 -101
- 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 +16 -8
- package/dist/permissions/tool-registry.js.map +1 -1
- package/dist/session/context.d.ts +3 -3
- package/dist/session/context.d.ts.map +1 -1
- package/dist/session/manager.d.ts +58 -27
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +177 -79
- package/dist/session/manager.js.map +1 -1
- package/dist/tempo/client.d.ts.map +1 -1
- package/dist/tempo/client.js +3 -1
- package/dist/tempo/client.js.map +1 -1
- package/dist/tempo/tools.d.ts +4 -4
- package/dist/tempo/tools.d.ts.map +1 -1
- package/dist/tempo/tools.js +15 -0
- package/dist/tempo/tools.js.map +1 -1
- package/dist/transport/http.d.ts +17 -18
- package/dist/transport/http.d.ts.map +1 -1
- package/dist/transport/http.js +135 -120
- 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/transport/types.d.ts +0 -2
- package/dist/transport/types.d.ts.map +1 -1
- package/dist/transport/types.js.map +1 -1
- package/dist/utils/buffer-tools.d.ts +2 -2
- package/dist/utils/buffer-tools.d.ts.map +1 -1
- package/dist/utils/buffer-tools.js +41 -19
- package/dist/utils/buffer-tools.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 +1 -1
- package/dist/utils/jicon-help.d.ts.map +1 -1
- package/dist/utils/jicon-help.js +126 -336
- 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.js +2 -2
- package/dist/utils/plantuml/tools.js.map +1 -1
- package/dist/utils/response-formatter.d.ts +8 -0
- package/dist/utils/response-formatter.d.ts.map +1 -1
- package/dist/utils/response-formatter.js +65 -7
- package/dist/utils/response-formatter.js.map +1 -1
- package/dist/utils/schemas/confluence.js +11 -11
- package/dist/utils/schemas/confluence.js.map +1 -1
- package/dist/utils/schemas/index.d.ts +11 -0
- package/dist/utils/schemas/index.d.ts.map +1 -1
- package/dist/utils/schemas/index.js.map +1 -1
- package/dist/utils/schemas/jira.d.ts +1 -1
- package/dist/utils/schemas/jira.d.ts.map +1 -1
- package/dist/utils/schemas/jira.js +37 -35
- package/dist/utils/schemas/jira.js.map +1 -1
- package/dist/utils/schemas/tempo.js +13 -13
- package/dist/utils/schemas/tempo.js.map +1 -1
- 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/package.json +3 -3
- 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,6 +30,8 @@ TOOLS: jira(26) confluence(21) tempo(13) buffer(12) 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
36
|
| **Create table for Confluence** | \`buffer_transform(..., code="return toTable(issues,{columns:[...]})")\` → XHTML |
|
|
35
37
|
| **Create table to show user** | \`buffer_transform(..., code="return toMarkdownTable(issues,{columns:[...]})")\` → Markdown |
|
|
@@ -130,7 +132,7 @@ const JQL_HELP = `# JQL Syntax Guide
|
|
|
130
132
|
|
|
131
133
|
Before writing JQL with type/status names:
|
|
132
134
|
1. Use \`jira_get_issue_types()\` to discover actual type names (e.g., "Epic" vs "Épopée")
|
|
133
|
-
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")
|
|
134
136
|
3. Use \`cf[ID]\` syntax for language-independent field queries
|
|
135
137
|
|
|
136
138
|
The examples below use English names. Replace with your instance's actual values.
|
|
@@ -156,27 +158,32 @@ The examples below use English names. Replace with your instance's actual values
|
|
|
156
158
|
4. Recently updated issues (last 7 days):
|
|
157
159
|
updated >= startOfDay(-7)
|
|
158
160
|
|
|
159
|
-
5. Issues by assignee:
|
|
161
|
+
5. Issues by assignee (current user):
|
|
160
162
|
assignee = currentUser()
|
|
161
163
|
|
|
162
|
-
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:
|
|
163
169
|
summary~"login" OR description~"login"
|
|
164
170
|
|
|
165
|
-
|
|
171
|
+
8. Date range:
|
|
166
172
|
created >= "2025-01-01" AND created <= "2025-01-31"
|
|
167
173
|
|
|
168
|
-
|
|
174
|
+
9. Multiple projects:
|
|
169
175
|
project IN (PROJ1, PROJ2, PROJ3)
|
|
170
176
|
|
|
171
|
-
|
|
172
|
-
|
|
177
|
+
10. Exclude resolved (language-independent):
|
|
178
|
+
statusCategory != Done
|
|
173
179
|
|
|
174
|
-
|
|
180
|
+
11. Issues with specific label:
|
|
175
181
|
labels = "urgent" AND status != Done
|
|
176
182
|
|
|
177
183
|
## Tips
|
|
178
184
|
- Use jira_get_issue_types first to discover type names for your instance
|
|
179
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
|
|
180
187
|
- Date functions: startOfDay(), startOfWeek(), startOfMonth(), now()
|
|
181
188
|
- Relative dates: startOfDay(-7) = 7 days ago
|
|
182
189
|
- Always quote field values that contain spaces
|
|
@@ -212,7 +219,32 @@ The \`clauseNames\` array shows all valid JQL names for a field.
|
|
|
212
219
|
## Date Handling Tips
|
|
213
220
|
- "Last week" in business context = previous Mon-Fri (e.g., Dec 8-12)
|
|
214
221
|
- "Rolling 7 days" = use startOfDay(-7)
|
|
215
|
-
- 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)`;
|
|
216
248
|
// CQL syntax guide
|
|
217
249
|
const CQL_HELP = `# CQL Syntax Guide
|
|
218
250
|
|
|
@@ -233,6 +265,8 @@ CQL is largely language-independent:
|
|
|
233
265
|
## Critical Warnings
|
|
234
266
|
WARNING: Do NOT use 'content~' or 'body~' - they're invalid! Use 'text~' instead.
|
|
235
267
|
|
|
268
|
+
WARNING: Do NOT use 'lastmodifiedby' or 'lastmodifier' - they don't exist! Use 'contributor=' instead.
|
|
269
|
+
|
|
236
270
|
WARNING: WRONG: text~("term1" OR "term2") - Cannot use OR inside the operator
|
|
237
271
|
OK: (text~"term1" OR text~"term2") - Each term needs its own text~ operator
|
|
238
272
|
|
|
@@ -243,35 +277,51 @@ OK: (text~"term1" OR text~"term2") - Each term needs its own text~ operator
|
|
|
243
277
|
2. Pages created by a person:
|
|
244
278
|
type=page AND creator="username"
|
|
245
279
|
|
|
246
|
-
3. Pages
|
|
280
|
+
3. Pages I created OR edited:
|
|
281
|
+
contributor=currentUser() ORDER BY lastmodified DESC
|
|
282
|
+
|
|
283
|
+
4. Pages with specific label:
|
|
247
284
|
type=page AND label="meeting-notes"
|
|
248
285
|
|
|
249
|
-
|
|
286
|
+
5. Pages in space modified recently:
|
|
250
287
|
space=DOCS AND lastmodified >= now("-30d") ORDER BY lastmodified DESC
|
|
251
288
|
|
|
252
|
-
|
|
289
|
+
6. Text search in a space:
|
|
253
290
|
text~"API" AND space=DOCS AND type=page
|
|
254
291
|
|
|
255
|
-
|
|
292
|
+
7. Date range:
|
|
256
293
|
lastmodified >= "2025-01-01" AND lastmodified <= "2025-01-31"
|
|
257
294
|
|
|
258
|
-
|
|
295
|
+
8. Multiple spaces:
|
|
259
296
|
space IN (DOCS, PROJ, WIKI)
|
|
260
297
|
|
|
261
|
-
|
|
298
|
+
9. Pages by title pattern:
|
|
262
299
|
type=page AND title~"Sprint Review" ORDER BY created DESC
|
|
263
300
|
|
|
264
|
-
|
|
265
|
-
|
|
301
|
+
10. Find by creator name:
|
|
302
|
+
creator.fullname~"Alex Morgan"
|
|
266
303
|
|
|
267
|
-
|
|
304
|
+
11. Pages created this week:
|
|
268
305
|
type=page AND created >= startOfWeek()
|
|
269
306
|
|
|
270
307
|
## Tips
|
|
271
308
|
- Use space KEY (e.g., 'DOCS') not space name (e.g., 'Documentation')
|
|
272
309
|
- Date functions: now(), startOfDay(), startOfWeek(), startOfMonth()
|
|
273
310
|
- Relative dates: now("-7d") = 7 days ago
|
|
274
|
-
- 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~`;
|
|
275
325
|
// Confluence storage format (XHTML syntax only)
|
|
276
326
|
const STORAGE_FORMAT_HELP = `# Confluence Storage Format (XHTML)
|
|
277
327
|
|
|
@@ -688,152 +738,40 @@ buffer_edit(bufferId, old_string="foo", new_string="bar", replace_all=true)
|
|
|
688
738
|
buffer_edit(bufferId, append=true, content="text to add at end")
|
|
689
739
|
\`\`\`
|
|
690
740
|
|
|
691
|
-
## JavaScript Sandbox (buffer_transform)
|
|
741
|
+
## JavaScript Sandbox (buffer_transform)
|
|
692
742
|
|
|
693
|
-
Transform JSON buffers with JavaScript code in a secure sandbox.
|
|
694
|
-
|
|
695
|
-
**Benefits:**
|
|
696
|
-
- Full JavaScript expressiveness (filter, map, reduce, etc.)
|
|
697
|
-
- Multiple input buffers in single transformation
|
|
698
|
-
- Built-in helpers for common operations
|
|
699
|
-
- XHTML table/list generation with auto-linking and styling
|
|
700
|
-
|
|
701
|
-
**Schema Types:**
|
|
702
|
-
All JSON buffers from API tools have a schemaType (e.g., "jira_issue", "tempo_worklog").
|
|
703
|
-
Fields are flattened for easy access. Use \`buffer_get_schema(bufferId)\` to see available fields with samples.
|
|
743
|
+
Transform JSON buffers with JavaScript code in a secure sandbox.
|
|
704
744
|
|
|
705
745
|
**Basic workflow:**
|
|
706
746
|
\`\`\`
|
|
707
|
-
1. jira_search_issues(jql="...")
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
→ { fields: { key: {..., sample: "PROJ-1"}, status: {..., sample: "Open"} } }
|
|
712
|
-
|
|
713
|
-
3. buffer_transform(
|
|
714
|
-
inputs: { issues: bufferId },
|
|
715
|
-
code: \`
|
|
716
|
-
const open = issues.filter(i => i.status !== 'Done');
|
|
717
|
-
return toTable(open, {
|
|
718
|
-
title: 'Open Issues',
|
|
719
|
-
columns: [
|
|
720
|
-
{ field: 'key', header: 'Issue', link: { type: 'jira' } },
|
|
721
|
-
{ field: 'summary', header: 'Summary' },
|
|
722
|
-
{ field: 'priority', header: 'Priority' }
|
|
723
|
-
]
|
|
724
|
-
});
|
|
725
|
-
\`
|
|
726
|
-
)
|
|
727
|
-
→ { bufferId: "buf_new", contentType: "xhtml" }
|
|
728
|
-
|
|
729
|
-
4. Insert into Confluence page or use directly
|
|
730
|
-
\`\`\`
|
|
731
|
-
|
|
732
|
-
**Built-in helpers (available as globals in sandbox):**
|
|
733
|
-
\`\`\`javascript
|
|
734
|
-
// Aggregation
|
|
735
|
-
groupBy(array, keyOrFn) // → { key: items[] }
|
|
736
|
-
sum(array, field?) // → number
|
|
737
|
-
avg(array, field?) // → number
|
|
738
|
-
min(array, field?) // → value
|
|
739
|
-
max(array, field?) // → value
|
|
740
|
-
count(array) // → number
|
|
741
|
-
unique(array, field?) // → unique values[]
|
|
742
|
-
|
|
743
|
-
// Object access
|
|
744
|
-
get(obj, 'path.to.field') // → value (dot notation)
|
|
745
|
-
pick(obj, ['a', 'b']) // → subset object
|
|
746
|
-
omit(obj, ['a']) // → object without keys
|
|
747
|
-
|
|
748
|
-
// Date utilities
|
|
749
|
-
parseDate(string) // → timestamp (ms)
|
|
750
|
-
formatDate(ts, fmt?) // → string (fmt: 'date', 'time', 'datetime', 'iso')
|
|
751
|
-
daysBetween(d1, d2) // → number
|
|
752
|
-
|
|
753
|
-
// Context (for link generation)
|
|
754
|
-
JIRA_URL // → string | undefined
|
|
755
|
-
CONFLUENCE_URL // → string | undefined
|
|
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
|
|
756
751
|
\`\`\`
|
|
757
752
|
|
|
758
|
-
**OUTPUT FORMAT - CHOOSE
|
|
753
|
+
**OUTPUT FORMAT - CHOOSE BY DESTINATION:**
|
|
759
754
|
|
|
760
|
-
| Destination | Formatters | Result |
|
|
761
|
-
|
|
762
|
-
| **Confluence page** | toTable(), toList() | XHTML
|
|
763
|
-
| **Display to user** | toMarkdownTable(), toMarkdownList() | Markdown
|
|
755
|
+
| Destination | Formatters | Result |
|
|
756
|
+
|-------------|-----------|--------|
|
|
757
|
+
| **Confluence page** | toTable(), toList() | XHTML |
|
|
758
|
+
| **Display to user** | toMarkdownTable(), toMarkdownList() | Markdown |
|
|
764
759
|
|
|
765
|
-
⚠️ **Common mistake**: Using toTable() when you want to display
|
|
760
|
+
⚠️ **Common mistake**: Using toTable() when you want to display to user. Use toMarkdownTable() instead!
|
|
766
761
|
|
|
767
|
-
**
|
|
768
|
-
\`\`\`javascript
|
|
769
|
-
// For Confluence page:
|
|
770
|
-
toTable(array, config)
|
|
771
|
-
|
|
772
|
-
// For user display (same config!):
|
|
773
|
-
toMarkdownTable(array, config)
|
|
774
|
-
|
|
775
|
-
// Config options:
|
|
776
|
-
{
|
|
777
|
-
title: 'Table Title', // Optional title above table
|
|
778
|
-
showRowNumbers: true, // Add # column
|
|
779
|
-
tableClass: 'confluenceTable',// CSS class (XHTML only)
|
|
780
|
-
columns: [
|
|
781
|
-
{ field: 'key', header: 'Issue', link: { type: 'jira' } },
|
|
782
|
-
{ field: 'summary', header: 'Summary', width: '40%' },
|
|
783
|
-
{ field: 'priority', header: 'Priority', align: 'center' } // Flat field!
|
|
784
|
-
],
|
|
785
|
-
format: [ // Conditional styling
|
|
786
|
-
{
|
|
787
|
-
condition: { field: 'priority', operator: 'eq', value: 'Blocker' },
|
|
788
|
-
style: { color: '#d04437', bold: true, icon: '🔴' },
|
|
789
|
-
fields: ['priority'] // Apply to specific fields (or omit for row)
|
|
790
|
-
}
|
|
791
|
-
]
|
|
792
|
-
}
|
|
793
|
-
\`\`\`
|
|
762
|
+
**Built-in helpers:** groupBy, sum, avg, min, max, count, unique, get, pick, omit, parseDate, formatDate, daysBetween, JIRA_URL, CONFLUENCE_URL
|
|
794
763
|
|
|
795
|
-
**
|
|
796
|
-
\`\`\`javascript
|
|
797
|
-
// For Confluence page:
|
|
798
|
-
toList(array, config)
|
|
799
|
-
|
|
800
|
-
// For user display (same config!):
|
|
801
|
-
toMarkdownList(array, config)
|
|
802
|
-
|
|
803
|
-
// Config options:
|
|
804
|
-
{
|
|
805
|
-
title: 'List Title',
|
|
806
|
-
style: 'bullet', // 'bullet', 'numbered', 'none' (or 'task' for Markdown)
|
|
807
|
-
template: '{{key}}: {{summary}} ({{assignee.displayName}})'
|
|
808
|
-
}
|
|
809
|
-
\`\`\`
|
|
810
|
-
|
|
811
|
-
**Link types:** jira (auto-links to issue), confluence (to page ID), custom (template with {{field}})
|
|
812
|
-
|
|
813
|
-
**Format condition operators:** eq, ne, gt, lt, gte, lte, contains, startsWith, endsWith, in, notIn, exists, notExists, regex, empty, notEmpty
|
|
814
|
-
|
|
815
|
-
**Example - Statistics by assignee:**
|
|
764
|
+
**Example - Table for user display:**
|
|
816
765
|
\`\`\`javascript
|
|
817
766
|
buffer_transform(
|
|
818
767
|
inputs: { issues: bufferId },
|
|
819
768
|
code: \`
|
|
820
|
-
const open = issues.filter(i => i.status
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
const stats = Object.entries(byAssignee).map(([name, items]) => ({
|
|
824
|
-
assignee: name,
|
|
825
|
-
total: items.length,
|
|
826
|
-
issues: items.map(i => i.key).join(', ')
|
|
827
|
-
}));
|
|
828
|
-
|
|
829
|
-
stats.sort((a, b) => b.total - a.total);
|
|
830
|
-
|
|
831
|
-
return toTable(stats, {
|
|
832
|
-
title: 'Work Distribution',
|
|
769
|
+
const open = issues.filter(i => i.status !== 'Done');
|
|
770
|
+
return toMarkdownTable(open, {
|
|
833
771
|
columns: [
|
|
834
|
-
{ field: '
|
|
835
|
-
{ field: '
|
|
836
|
-
{ field: '
|
|
772
|
+
{ field: 'key', header: 'Issue', link: { type: 'jira' } },
|
|
773
|
+
{ field: 'summary', header: 'Summary' },
|
|
774
|
+
{ field: 'assignee', header: 'Assignee' }
|
|
837
775
|
]
|
|
838
776
|
});
|
|
839
777
|
\`
|
|
@@ -841,16 +779,16 @@ buffer_transform(
|
|
|
841
779
|
\`\`\`
|
|
842
780
|
|
|
843
781
|
**When to use buffer_transform:**
|
|
844
|
-
- Generating tables/lists for Confluence
|
|
845
|
-
- Generating tables/lists to show user → use toMarkdownTable(), toMarkdownList()
|
|
782
|
+
- Generating tables/lists for Confluence or user display
|
|
846
783
|
- Custom filtering and transformation logic
|
|
847
784
|
- Aggregating statistics across multiple buffers
|
|
848
|
-
- Complex data manipulation (joins, pivots, etc.)
|
|
849
785
|
|
|
850
786
|
**When NOT to use buffer_transform:**
|
|
851
787
|
- When you need LLM judgment on each item (use buffer_get_items)
|
|
852
788
|
- When decisions require analyzing content semantically
|
|
853
789
|
|
|
790
|
+
**For formatter details:** See TOOL_LIST.md or tool description for toTable/toList config options.
|
|
791
|
+
|
|
854
792
|
## Decision Forks (Choose Your Path)
|
|
855
793
|
|
|
856
794
|
After jira_search_issues/tempo_get_worklogs returns a bufferId, you have OPTIONS:
|
|
@@ -958,188 +896,18 @@ These **intelligent entry points** return pre-processed data **directly to the L
|
|
|
958
896
|
- **Regular tools** → Buffer data → Use buffer_transform for transformation → Token-efficient
|
|
959
897
|
- **Analysis tools** → Return markdown directly to LLM → Enable AI insight and synthesis
|
|
960
898
|
|
|
961
|
-
##
|
|
962
|
-
|
|
963
|
-
| Task | Tool | Example Query |
|
|
964
|
-
|------|------|---------------|
|
|
965
|
-
| What happened on project X? | \`jira_get_activity_digest\` | "What happened on PROJ this week?" |
|
|
966
|
-
| Any blockers in discussions? | \`jira_get_recent_comments\` | "Are there blockers mentioned in recent comments?" |
|
|
967
|
-
| Track field changes | \`jira_get_changelog\` | "What issues had priority escalations?" |
|
|
968
|
-
| Deep Epic analysis | \`jira_analyze_epic\` | "Analyze Epic PROJ-100 for risks and progress" |
|
|
969
|
-
| Sprint progress & risks | \`jira_analyze_sprint\` | "How is Sprint 42 progressing?" |
|
|
970
|
-
| Quick Epic status | \`jira_epic_summary\` | "Quick status of Epic PROJ-100" |
|
|
971
|
-
| List Epic children | \`jira_list_epic_children\` | "List open Stories in PROJ-100" |
|
|
972
|
-
| Top issues by workload | \`tempo_get_top_worklogs\` | "Which issues had most work last week?" |
|
|
973
|
-
|
|
974
|
-
## Tool Details
|
|
975
|
-
|
|
976
|
-
### jira_get_activity_digest
|
|
977
|
-
Fetches comments, status/priority/assignee changes across issues.
|
|
978
|
-
|
|
979
|
-
\`\`\`
|
|
980
|
-
jira_get_activity_digest(
|
|
981
|
-
projectKey="ACME", // or jql="..." or issueKeys=[...]
|
|
982
|
-
since="7d", // "1d", "7d", "30d", or ISO date
|
|
983
|
-
includeComments=true,
|
|
984
|
-
includeStatusChanges=true,
|
|
985
|
-
includePriorityChanges=true,
|
|
986
|
-
includeAssigneeChanges=true
|
|
987
|
-
)
|
|
988
|
-
\`\`\`
|
|
989
|
-
|
|
990
|
-
**Returns**: Markdown with activities grouped by issue + summary statistics:
|
|
991
|
-
- Issues with activity count
|
|
992
|
-
- Status changes (with "to Done" breakdown)
|
|
993
|
-
- Priority escalations
|
|
994
|
-
- New comments count
|
|
995
|
-
|
|
996
|
-
### jira_get_recent_comments
|
|
997
|
-
Aggregates comments across multiple issues for discussion analysis.
|
|
998
|
-
|
|
999
|
-
\`\`\`
|
|
1000
|
-
jira_get_recent_comments(
|
|
1001
|
-
projectKey="ACME",
|
|
1002
|
-
since="7d",
|
|
1003
|
-
authorKey="john", // optional: filter by author
|
|
1004
|
-
maxComments=30
|
|
1005
|
-
)
|
|
1006
|
-
\`\`\`
|
|
1007
|
-
|
|
1008
|
-
**Returns**: Markdown with comments grouped by issue + context (status).
|
|
1009
|
-
|
|
1010
|
-
### jira_get_changelog
|
|
1011
|
-
Tracks field changes across issues.
|
|
1012
|
-
|
|
1013
|
-
\`\`\`
|
|
1014
|
-
jira_get_changelog(
|
|
1015
|
-
projectKey="ACME",
|
|
1016
|
-
since="7d",
|
|
1017
|
-
fields=["status", "priority", "assignee", "resolution"],
|
|
1018
|
-
maxChanges=50
|
|
1019
|
-
)
|
|
1020
|
-
\`\`\`
|
|
1021
|
-
|
|
1022
|
-
**Returns**: Markdown with changes grouped by issue + field breakdown.
|
|
1023
|
-
|
|
1024
|
-
### jira_analyze_epic
|
|
1025
|
-
Comprehensive Epic/Feature analysis for deep insights.
|
|
1026
|
-
|
|
1027
|
-
\`\`\`
|
|
1028
|
-
jira_analyze_epic(
|
|
1029
|
-
issueKey="PROJ-100",
|
|
1030
|
-
includeComments=true,
|
|
1031
|
-
commentDays=14,
|
|
1032
|
-
maxComments=5
|
|
1033
|
-
)
|
|
1034
|
-
\`\`\`
|
|
1035
|
-
|
|
1036
|
-
**Returns**: Comprehensive markdown analysis including:
|
|
1037
|
-
- **Hierarchy**: Epic → Stories → Subtasks with completion %
|
|
1038
|
-
- **Time Metrics**: Spent vs estimated, burn rate, overrun warnings
|
|
1039
|
-
- **Progress Indicators**: Velocity, in-flight issues
|
|
1040
|
-
- **Architecture Context**: Components, labels
|
|
1041
|
-
- **Linked Resources**: Confluence pages, related issues
|
|
1042
|
-
- **Recent Discussions**: Technical comments for context
|
|
1043
|
-
|
|
1044
|
-
**Example output snippet:**
|
|
1045
|
-
\`\`\`markdown
|
|
1046
|
-
## Issue Hierarchy
|
|
1047
|
-
| Type | Total | Done | In Progress | To Do | Completion |
|
|
1048
|
-
|------|-------|------|-------------|-------|------------|
|
|
1049
|
-
| Story | 5 | 3 | 1 | 1 | 60% |
|
|
1050
|
-
| Sub-task | 12 | 8 | 2 | 2 | 67% |
|
|
1051
|
-
|
|
1052
|
-
## Time Metrics
|
|
1053
|
-
- Time Spent: 2w 3d
|
|
1054
|
-
- Original Estimate: 3w
|
|
1055
|
-
- Burn Rate: 77% of estimate consumed
|
|
1056
|
-
- ⚠️ Overrun: 2d over estimate
|
|
1057
|
-
|
|
1058
|
-
## Analysis Summary
|
|
1059
|
-
This Epic contains **17 issues** with **65% completion**.
|
|
1060
|
-
⚠️ **77% of time used but only 65% complete** - at risk of overrun.
|
|
1061
|
-
\`\`\`
|
|
1062
|
-
|
|
1063
|
-
### jira_analyze_sprint
|
|
1064
|
-
Comprehensive Sprint analysis for progress, risks, and team distribution.
|
|
1065
|
-
|
|
1066
|
-
\`\`\`
|
|
1067
|
-
jira_analyze_sprint(
|
|
1068
|
-
sprintId=123, // from jira_get_sprints(boardId)
|
|
1069
|
-
includeComments=true,
|
|
1070
|
-
commentDays=7,
|
|
1071
|
-
includeRisks=true
|
|
1072
|
-
)
|
|
1073
|
-
\`\`\`
|
|
1074
|
-
|
|
1075
|
-
**How to find sprintId**: Call \`jira_get_sprints(boardId)\` first. BoardId can be found in Jira URLs like \`/secure/RapidBoard.jspa?rapidView=123\`.
|
|
1076
|
-
|
|
1077
|
-
**Returns**: Comprehensive markdown analysis including:
|
|
1078
|
-
- **Sprint Metadata**: Dates, duration, days remaining
|
|
1079
|
-
- **Progress**: Completion %, status breakdown (Done/In Progress/To Do)
|
|
1080
|
-
- **Issue Breakdown**: By type and status
|
|
1081
|
-
- **Time Metrics**: Estimated vs spent vs remaining, burn rate
|
|
1082
|
-
- **Team Distribution**: Who's working on what
|
|
1083
|
-
- **Risk Indicators**: Stale issues, blocked, high-priority unstarted
|
|
1084
|
-
- **Recent Discussions**: Comments from team
|
|
1085
|
-
|
|
1086
|
-
**Example output snippet:**
|
|
1087
|
-
\`\`\`markdown
|
|
1088
|
-
# Sprint Analysis: Sprint 42
|
|
1089
|
-
|
|
1090
|
-
**State**: Active
|
|
1091
|
-
**Period**: Jan 20 - Feb 3 (14 days)
|
|
1092
|
-
**Progress**: Day 10 of 14 (4 days remaining)
|
|
899
|
+
## Tool Quick Reference
|
|
1093
900
|
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
Lightweight Epic status - no time metrics, no comments, no Confluence links.
|
|
1105
|
-
|
|
1106
|
-
\`\`\`
|
|
1107
|
-
jira_epic_summary(
|
|
1108
|
-
issueKey="PROJ-100",
|
|
1109
|
-
includeLinks=true, // cross-project dependencies
|
|
1110
|
-
maxDepth=3 // hierarchy depth
|
|
1111
|
-
)
|
|
1112
|
-
\`\`\`
|
|
1113
|
-
|
|
1114
|
-
**Returns**: Quick markdown with hierarchy list, status breakdown, cross-project dependencies.
|
|
1115
|
-
|
|
1116
|
-
### jira_list_epic_children
|
|
1117
|
-
List Epic children without needing JQL. Auto-detects Epic Link and Parent Link fields.
|
|
1118
|
-
|
|
1119
|
-
\`\`\`
|
|
1120
|
-
jira_list_epic_children(
|
|
1121
|
-
parentKey="PROJ-100",
|
|
1122
|
-
type="Story", // optional: filter by type
|
|
1123
|
-
status="open", // "open", "closed", "all"
|
|
1124
|
-
recursive=false // true for nested children
|
|
1125
|
-
)
|
|
1126
|
-
\`\`\`
|
|
1127
|
-
|
|
1128
|
-
**Returns**: Buffered results (same format as jira_search_issues).
|
|
1129
|
-
|
|
1130
|
-
### tempo_get_top_worklogs
|
|
1131
|
-
Top issues or users by workload. Returns directly to LLM.
|
|
1132
|
-
|
|
1133
|
-
\`\`\`
|
|
1134
|
-
tempo_get_top_worklogs(
|
|
1135
|
-
since="last_week", // date expression
|
|
1136
|
-
projectKey="PROJ", // optional filter
|
|
1137
|
-
groupBy="issue", // "issue" or "user"
|
|
1138
|
-
limit=10
|
|
1139
|
-
)
|
|
1140
|
-
\`\`\`
|
|
1141
|
-
|
|
1142
|
-
**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?" |
|
|
1143
911
|
|
|
1144
912
|
## Scoping Parameters
|
|
1145
913
|
|
|
@@ -1163,6 +931,27 @@ Use \`date_resolve(expression)\` to preview date ranges:
|
|
|
1163
931
|
date_resolve("this_week") → { dateFrom: "2025-01-27", dateTo: "2025-01-31", businessDays: 5 }
|
|
1164
932
|
\`\`\`
|
|
1165
933
|
|
|
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
|
+
|
|
1166
955
|
## vs Buffer Transform
|
|
1167
956
|
|
|
1168
957
|
| Need | Use |
|
|
@@ -1187,7 +976,8 @@ date_resolve("this_week") → { dateFrom: "2025-01-27", dateTo: "2025-01-31", bu
|
|
|
1187
976
|
- Use \`date_resolve\` to understand date ranges before querying
|
|
1188
977
|
- Start with smaller \`maxActivities\`/\`maxComments\` for faster responses
|
|
1189
978
|
- Combine with \`jira_search_issues\` to narrow scope first if needed
|
|
1190
|
-
- 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`;
|
|
1191
981
|
// Topic content map
|
|
1192
982
|
const TOPIC_CONTENT = {
|
|
1193
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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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger utility with timestamp and log level support
|
|
3
|
+
*
|
|
4
|
+
* All MCP server logs go to stderr (stdout is reserved for MCP protocol)
|
|
5
|
+
*
|
|
6
|
+
* Log levels (JICON_LOG_LEVEL):
|
|
7
|
+
* - error: Only errors
|
|
8
|
+
* - warn: Errors and warnings
|
|
9
|
+
* - info: Errors, warnings, and info messages (default)
|
|
10
|
+
* - debug: All messages including debug output
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Log a message with timestamp prefix (info level)
|
|
14
|
+
* @param args - Arguments to log (same as console.error)
|
|
15
|
+
*/
|
|
16
|
+
export declare function log(...args: unknown[]): void;
|
|
17
|
+
/**
|
|
18
|
+
* Log a debug message (only when JICON_LOG_LEVEL=debug)
|
|
19
|
+
* @param args - Arguments to log
|
|
20
|
+
*/
|
|
21
|
+
export declare function debug(...args: unknown[]): void;
|
|
22
|
+
/**
|
|
23
|
+
* Log an info message
|
|
24
|
+
* @param message - Message to log
|
|
25
|
+
*/
|
|
26
|
+
export declare function info(message: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Log a warning message
|
|
29
|
+
* @param message - Warning message
|
|
30
|
+
*/
|
|
31
|
+
export declare function warn(message: string): void;
|
|
32
|
+
/**
|
|
33
|
+
* Log an error message
|
|
34
|
+
* @param message - Error message
|
|
35
|
+
* @param err - Optional error object
|
|
36
|
+
*/
|
|
37
|
+
export declare function error(message: string, err?: unknown): void;
|
|
38
|
+
/**
|
|
39
|
+
* Check if debug logging is enabled
|
|
40
|
+
* Use this to avoid expensive string formatting when debug is disabled
|
|
41
|
+
*/
|
|
42
|
+
export declare function isDebugEnabled(): boolean;
|
|
43
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAyCH;;;GAGG;AACH,wBAAgB,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI5C;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAI9C;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI1C;AAED;;;GAGG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAI1C;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAQ1D;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC"}
|