@crypto512/jicon-mcp 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/README.md +73 -67
  2. package/TOOL_LIST.md +785 -133
  3. package/dist/config/constants.d.ts +18 -7
  4. package/dist/config/constants.d.ts.map +1 -1
  5. package/dist/config/constants.js +21 -8
  6. package/dist/config/constants.js.map +1 -1
  7. package/dist/config/loader.d.ts +11 -11
  8. package/dist/config/loader.d.ts.map +1 -1
  9. package/dist/config/loader.js +53 -93
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/types.d.ts +3 -6
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +2 -4
  14. package/dist/config/types.js.map +1 -1
  15. package/dist/confluence/formatters.js +1 -1
  16. package/dist/confluence/formatters.js.map +1 -1
  17. package/dist/confluence/tools.d.ts +8 -12
  18. package/dist/confluence/tools.d.ts.map +1 -1
  19. package/dist/confluence/tools.js +285 -233
  20. package/dist/confluence/tools.js.map +1 -1
  21. package/dist/index.js +17 -26
  22. package/dist/index.js.map +1 -1
  23. package/dist/jira/formatters.d.ts +1 -0
  24. package/dist/jira/formatters.d.ts.map +1 -1
  25. package/dist/jira/formatters.js +13 -12
  26. package/dist/jira/formatters.js.map +1 -1
  27. package/dist/jira/tools.d.ts +4 -0
  28. package/dist/jira/tools.d.ts.map +1 -1
  29. package/dist/jira/tools.js +234 -44
  30. package/dist/jira/tools.js.map +1 -1
  31. package/dist/permissions/tool-registry.d.ts +2 -2
  32. package/dist/permissions/tool-registry.d.ts.map +1 -1
  33. package/dist/permissions/tool-registry.js +4 -2
  34. package/dist/permissions/tool-registry.js.map +1 -1
  35. package/dist/permissions/write-home-validator.d.ts.map +1 -1
  36. package/dist/permissions/write-home-validator.js +13 -3
  37. package/dist/permissions/write-home-validator.js.map +1 -1
  38. package/dist/tempo/defaults.d.ts +17 -0
  39. package/dist/tempo/defaults.d.ts.map +1 -0
  40. package/dist/tempo/defaults.js +26 -0
  41. package/dist/tempo/defaults.js.map +1 -0
  42. package/dist/tempo/tools.d.ts +5 -0
  43. package/dist/tempo/tools.d.ts.map +1 -1
  44. package/dist/tempo/tools.js +161 -35
  45. package/dist/tempo/tools.js.map +1 -1
  46. package/dist/utils/buffer-pipeline/index.d.ts +30 -0
  47. package/dist/utils/buffer-pipeline/index.d.ts.map +1 -0
  48. package/dist/utils/buffer-pipeline/index.js +317 -0
  49. package/dist/utils/buffer-pipeline/index.js.map +1 -0
  50. package/dist/utils/buffer-pipeline/output/csv.d.ts +20 -0
  51. package/dist/utils/buffer-pipeline/output/csv.d.ts.map +1 -0
  52. package/dist/utils/buffer-pipeline/output/csv.js +117 -0
  53. package/dist/utils/buffer-pipeline/output/csv.js.map +1 -0
  54. package/dist/utils/buffer-pipeline/output/json.d.ts +16 -0
  55. package/dist/utils/buffer-pipeline/output/json.d.ts.map +1 -0
  56. package/dist/utils/buffer-pipeline/output/json.js +48 -0
  57. package/dist/utils/buffer-pipeline/output/json.js.map +1 -0
  58. package/dist/utils/buffer-pipeline/output/markdown.d.ts +15 -0
  59. package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +1 -0
  60. package/dist/utils/buffer-pipeline/output/markdown.js +105 -0
  61. package/dist/utils/buffer-pipeline/output/markdown.js.map +1 -0
  62. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +16 -0
  63. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +1 -0
  64. package/dist/utils/buffer-pipeline/output/xhtml-list.js +81 -0
  65. package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +1 -0
  66. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +15 -0
  67. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +1 -0
  68. package/dist/utils/buffer-pipeline/output/xhtml-table.js +176 -0
  69. package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +1 -0
  70. package/dist/utils/buffer-pipeline/schema.d.ts +1878 -0
  71. package/dist/utils/buffer-pipeline/schema.d.ts.map +1 -0
  72. package/dist/utils/buffer-pipeline/schema.js +168 -0
  73. package/dist/utils/buffer-pipeline/schema.js.map +1 -0
  74. package/dist/utils/buffer-pipeline/stages/filter.d.ts +32 -0
  75. package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +1 -0
  76. package/dist/utils/buffer-pipeline/stages/filter.js +208 -0
  77. package/dist/utils/buffer-pipeline/stages/filter.js.map +1 -0
  78. package/dist/utils/buffer-pipeline/stages/format.d.ts +45 -0
  79. package/dist/utils/buffer-pipeline/stages/format.d.ts.map +1 -0
  80. package/dist/utils/buffer-pipeline/stages/format.js +160 -0
  81. package/dist/utils/buffer-pipeline/stages/format.js.map +1 -0
  82. package/dist/utils/buffer-pipeline/stages/group-by.d.ts +25 -0
  83. package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +1 -0
  84. package/dist/utils/buffer-pipeline/stages/group-by.js +190 -0
  85. package/dist/utils/buffer-pipeline/stages/group-by.js.map +1 -0
  86. package/dist/utils/buffer-pipeline/stages/select.d.ts +54 -0
  87. package/dist/utils/buffer-pipeline/stages/select.d.ts.map +1 -0
  88. package/dist/utils/buffer-pipeline/stages/select.js +228 -0
  89. package/dist/utils/buffer-pipeline/stages/select.js.map +1 -0
  90. package/dist/utils/buffer-pipeline/stages/sort.d.ts +20 -0
  91. package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +1 -0
  92. package/dist/utils/buffer-pipeline/stages/sort.js +96 -0
  93. package/dist/utils/buffer-pipeline/stages/sort.js.map +1 -0
  94. package/dist/utils/buffer-pipeline/types.d.ts +277 -0
  95. package/dist/utils/buffer-pipeline/types.d.ts.map +1 -0
  96. package/dist/utils/buffer-pipeline/types.js +8 -0
  97. package/dist/utils/buffer-pipeline/types.js.map +1 -0
  98. package/dist/utils/buffer-tools.d.ts +749 -19
  99. package/dist/utils/buffer-tools.d.ts.map +1 -1
  100. package/dist/utils/buffer-tools.js +738 -491
  101. package/dist/utils/buffer-tools.js.map +1 -1
  102. package/dist/utils/content-buffer.d.ts +55 -4
  103. package/dist/utils/content-buffer.d.ts.map +1 -1
  104. package/dist/utils/content-buffer.js +107 -9
  105. package/dist/utils/content-buffer.js.map +1 -1
  106. package/dist/utils/jicon-help.d.ts +1 -1
  107. package/dist/utils/jicon-help.d.ts.map +1 -1
  108. package/dist/utils/jicon-help.js +345 -99
  109. package/dist/utils/jicon-help.js.map +1 -1
  110. package/dist/utils/json-structure.d.ts +121 -0
  111. package/dist/utils/json-structure.d.ts.map +1 -0
  112. package/dist/utils/json-structure.js +637 -0
  113. package/dist/utils/json-structure.js.map +1 -0
  114. package/dist/utils/plantuml/include-expander.d.ts +31 -30
  115. package/dist/utils/plantuml/include-expander.d.ts.map +1 -1
  116. package/dist/utils/plantuml/include-expander.js +167 -133
  117. package/dist/utils/plantuml/include-expander.js.map +1 -1
  118. package/dist/utils/plantuml/index.d.ts +3 -3
  119. package/dist/utils/plantuml/index.d.ts.map +1 -1
  120. package/dist/utils/plantuml/index.js +4 -4
  121. package/dist/utils/plantuml/index.js.map +1 -1
  122. package/dist/utils/plantuml/service.d.ts +13 -24
  123. package/dist/utils/plantuml/service.d.ts.map +1 -1
  124. package/dist/utils/plantuml/service.js +49 -99
  125. package/dist/utils/plantuml/service.js.map +1 -1
  126. package/dist/utils/plantuml/tools.d.ts.map +1 -1
  127. package/dist/utils/plantuml/tools.js +33 -72
  128. package/dist/utils/plantuml/tools.js.map +1 -1
  129. package/dist/utils/plantuml/types.d.ts +1 -35
  130. package/dist/utils/plantuml/types.d.ts.map +1 -1
  131. package/dist/utils/plantuml/types.js +1 -11
  132. package/dist/utils/plantuml/types.js.map +1 -1
  133. package/dist/utils/plantuml/validation-helper.d.ts +1 -1
  134. package/dist/utils/plantuml/validation-helper.js +12 -12
  135. package/dist/utils/plantuml/validation-helper.js.map +1 -1
  136. package/dist/utils/response-formatter.d.ts +68 -0
  137. package/dist/utils/response-formatter.d.ts.map +1 -1
  138. package/dist/utils/response-formatter.js +186 -78
  139. package/dist/utils/response-formatter.js.map +1 -1
  140. package/dist/utils/url-tools.d.ts.map +1 -1
  141. package/dist/utils/url-tools.js +22 -0
  142. package/dist/utils/url-tools.js.map +1 -1
  143. package/dist/utils/xhtml/error-locator.js +2 -2
  144. package/dist/utils/xhtml/error-locator.js.map +1 -1
  145. package/dist/utils/xhtml/index.d.ts +1 -1
  146. package/dist/utils/xhtml/index.d.ts.map +1 -1
  147. package/dist/utils/xhtml/index.js +1 -1
  148. package/dist/utils/xhtml/index.js.map +1 -1
  149. package/dist/utils/xhtml/parser.d.ts +34 -5
  150. package/dist/utils/xhtml/parser.d.ts.map +1 -1
  151. package/dist/utils/xhtml/parser.js +66 -11
  152. package/dist/utils/xhtml/parser.js.map +1 -1
  153. package/dist/utils/xhtml/plantuml.d.ts.map +1 -1
  154. package/dist/utils/xhtml/plantuml.js +5 -3
  155. package/dist/utils/xhtml/plantuml.js.map +1 -1
  156. package/dist/utils/xhtml/serializer.d.ts.map +1 -1
  157. package/dist/utils/xhtml/serializer.js +12 -15
  158. package/dist/utils/xhtml/serializer.js.map +1 -1
  159. package/dist/utils/xhtml/types.d.ts +1 -0
  160. package/dist/utils/xhtml/types.d.ts.map +1 -1
  161. package/package.json +12 -4
@@ -6,23 +6,27 @@
6
6
  */
7
7
  import { z } from "zod";
8
8
  import { formatSuccess, formatError } from "./response-formatter.js";
9
- import { ALLOWED_INCLUDE_URLS } from "./plantuml/index.js";
10
9
  // Available topics
11
10
  const TOPICS = ["jql", "cql", "storage", "plantuml", "buffers"];
12
11
  // Default workflow guide (shown when no topic specified)
13
12
  const WORKFLOW_GUIDE = `# Jicon Quick Reference
14
13
 
14
+ TOOLS: jira(16) confluence(18) tempo(11) buffer(14) plantuml(3) url(2) help(1)
15
+
15
16
  ## Decision Tree - Which Topic?
16
17
 
17
18
  | Task | First Step |
18
19
  |------|------------|
19
20
  | Edit Confluence page | \`confluence_edit(input)\` ← accepts URL, pageId, or SPACE/Title |
20
- | Create NEW page | \`confluence_draft_create(spaceKey, title, content)\` |
21
+ | Create NEW page | \`buffer_create(content, contentType="xhtml")\` then \`confluence_draft_create\` |
21
22
  | Create page with diagram | \`help(topic="plantuml")\` |
22
- | XHTML syntax needed | \`help(topic="storage")\` |
23
+ | XHTML syntax needed | \`help(topic="storage")\` ← **READ THIS for HTML vs XHTML** |
23
24
  | Search Confluence | \`help(topic="cql")\` |
24
25
  | Search Jira | \`jira_get_issue_types()\` then \`help(topic="jql")\` |
25
26
  | Log/get time | \`tempo_get_user_info()\` first |
27
+ | **Create table from Jira data** | \`buffer_pipeline(bufferId, pipeline={output:{type:"xhtml_table"}})\` |
28
+ | **Iterate items for AI analysis** | \`buffer_get_items(bufferId, start=0, count=50)\` |
29
+ | **Large dataset + AI columns** | Batch workflow - see \`help(topic="buffers")\` |
26
30
 
27
31
  ---
28
32
 
@@ -34,16 +38,16 @@ const WORKFLOW_GUIDE = `# Jicon Quick Reference
34
38
  - Accepts: URL, pageId, "draft:ID", or "SPACE/Title"
35
39
  → Returns: bufferId, structure (element IDs), pageId
36
40
  2. buffer_edit(bufferId, after=ID, content/plantuml/fromBufferId)
37
- → Use content="<p>text</p>" for XHTML
41
+ → Use content="<p>text</p>" for XHTML (use <br/> not <br>!)
38
42
  → Use plantuml="@startuml..." for diagrams
39
43
  → Use fromBufferId="buf_xxx" to merge another buffer
40
- 3. confluence_draft_create(pageId=..., bufferId=...)
44
+ 3. buffer_validate_xhtml(bufferId) → check for errors before saving
45
+ 4. confluence_draft_create(pageId=..., bufferId=...)
41
46
  → Creates "[jicon-mcp REVIEW] Title" draft linked to original
42
47
  → Returns: reviewDraftId, draft URL for user review
43
- 4. User reviews in Confluence UI (can share draft with team)
44
- 5. confluence_review_publish(reviewDraftId) → applies changes to original
48
+ 5. User reviews in Confluence UI (can share draft with team)
49
+ 6. confluence_review_publish(reviewDraftId) → applies changes to original
45
50
  OR confluence_review_discard(reviewDraftId) → cancels without changes
46
- 6. For more edits: confluence_edit(same URL or "SPACE/Title")
47
51
  \`\`\`
48
52
 
49
53
  **Review Workflow Tools:**
@@ -51,14 +55,24 @@ const WORKFLOW_GUIDE = `# Jicon Quick Reference
51
55
  - \`confluence_review_discard(reviewDraftId)\` - Discard without changes
52
56
  - \`confluence_review_list()\` - Find all review drafts for cleanup
53
57
 
54
- ### Create NEW Confluence Page
58
+ **Draft Management Tools:**
59
+ - \`confluence_draft_list()\` - List all drafts in your personal space
60
+ - \`confluence_draft_open(draftId)\` - Reopen a draft for editing
61
+ - \`confluence_draft_delete(draftId)\` - Delete a draft
62
+
63
+ ### Create NEW Confluence Page (Buffer-First)
55
64
  \`\`\`
56
- 1. confluence_draft_create(spaceKey, title, content)
57
- → Returns: draftId, bufferId, draft URL
58
- 2. User reviews and publishes via Confluence UI
59
- 3. For edits after publish: confluence_edit("SPACE/Title")
65
+ 1. buffer_create(content="<h1>Title</h1><p>Content</p>", contentType="xhtml")
66
+ → Returns: bufferId, structure (element IDs)
67
+ 2. buffer_validate_xhtml(bufferId)
68
+ If errors: use buffer_edit(bufferId, replace=elementId, ...) to fix
69
+ 3. confluence_draft_create(spaceKey, title, bufferId)
70
+ → Returns: draftId, draft URL for user review
71
+ 4. User reviews and publishes via Confluence UI
60
72
  \`\`\`
61
73
 
74
+ **Why buffer-first?** Enables validation and surgical error fixing with element IDs.
75
+
62
76
  ### Insert PlantUML Diagram
63
77
  \`\`\`
64
78
  1. plantuml_validate(code="@startuml...") ← Validate FIRST
@@ -143,7 +157,18 @@ const JQL_HELP = `# JQL Syntax Guide
143
157
  - Date functions: startOfDay(), startOfWeek(), startOfMonth(), now()
144
158
  - Relative dates: startOfDay(-7) = 7 days ago
145
159
  - Always quote field values that contain spaces
146
- - Issue type names may be localized (e.g., "Epopee" instead of "Epic")`;
160
+ - Issue type names may be localized (e.g., "Epopee" instead of "Epic")
161
+
162
+ ## Response Fields (jira_search_issues)
163
+ - returnedItems: Items available in buffer (max 5000) - USE THIS
164
+ - jiraTotalMatching: Total Jira found (may exceed returnedItems)
165
+ - apiLimit: Maximum per search (5000)
166
+ - If jiraTotalMatching > returnedItems, refine JQL to narrow results
167
+
168
+ ## Date Handling Tips
169
+ - "Last week" in business context = previous Mon-Fri (e.g., Dec 8-12)
170
+ - "Rolling 7 days" = use startOfDay(-7)
171
+ - For exact date ranges, use explicit dates: updated >= "2025-12-08" AND updated <= "2025-12-12"`;
147
172
  // CQL syntax guide
148
173
  const CQL_HELP = `# CQL Syntax Guide
149
174
 
@@ -196,25 +221,48 @@ OK: (text~"term1" OR text~"term2") - Each term needs its own text~ operator
196
221
  - Use space KEY (e.g., 'DOCS') not space name (e.g., 'Documentation')
197
222
  - Date functions: now(), startOfDay(), startOfWeek(), startOfMonth()
198
223
  - Relative dates: now("-7d") = 7 days ago
199
- - Results are auto-fetched (up to 5000) and buffered for large responses`;
224
+ - Results are always buffered - use buffer_get_chunk to read, buffer_grep to search`;
200
225
  // Confluence storage format (XHTML syntax only)
201
226
  const STORAGE_FORMAT_HELP = `# Confluence Storage Format (XHTML)
202
227
 
203
- All tags must be closed (XML rules). For editing workflow, see \`help(topic="buffers")\`.
228
+ Confluence uses **XHTML** (strict XML), NOT loose HTML5. This matters!
204
229
 
205
- ## CRITICAL: CDATA Usage
230
+ ## CRITICAL: HTML vs XHTML Differences
206
231
 
207
- **NEVER wrap content in \`<![CDATA[...]]>\`**
232
+ | HTML (loose) | XHTML (strict) | Why |
233
+ |--------------|----------------|-----|
234
+ | \`<br>\` | \`<br/>\` | Self-closing required |
235
+ | \`<hr>\` | \`<hr/>\` | Self-closing required |
236
+ | \`<img src="x">\` | \`<img src="x"/>\` | Self-closing required |
237
+ | \`<p>text\` | \`<p>text</p>\` | All tags must close |
238
+ | \`<li>item\` | \`<li>item</li>\` | All tags must close |
239
+ | \`&\` in URLs | \`&amp;\` | Must escape special chars |
240
+ | \`<LI>\` | \`<li>\` | Tags are lowercase |
208
241
 
209
- CDATA is ONLY used inside \`<ac:plain-text-body>\` elements (code blocks, PlantUML):
210
- \`\`\`xml
211
- <!-- CORRECT: CDATA inside ac:plain-text-body -->
212
- <ac:structured-macro ac:name="code">
213
- <ac:plain-text-body><![CDATA[code here]]></ac:plain-text-body>
214
- </ac:structured-macro>
242
+ ## Common Mistakes to AVOID
243
+
244
+ | Wrong | Correct | Error |
245
+ |----------|-----------|-------|
246
+ | \`<br>\` | \`<br/>\` | Parser expects \`</br>\` |
247
+ | \`li>item</li>\` | \`<li>item</li>\` | Missing \`<\` before tag |
248
+ | \`h2. Title\` | \`<h2>Title</h2>\` | Wiki syntax not allowed |
249
+ | \`**bold**\` | \`<strong>bold</strong>\` | Markdown not allowed |
250
+ | \`<![CDATA[<p>...</p>]]>\` | \`<p>...</p>\` | CDATA only in macros |
251
+
252
+ ## Workflow: Buffer-First Approach
215
253
 
216
- <!-- WRONG: CDATA wrapping content -->
217
- <![CDATA[<h1>Title</h1>]]>
254
+ \`\`\`
255
+ 1. buffer_create(content="<h1>Title</h1><p>Text</p>", contentType="xhtml")
256
+ → bufferId, structure (element IDs)
257
+
258
+ 2. buffer_validate_xhtml(bufferId)
259
+ → If errors: shows elementId to fix
260
+
261
+ 3. buffer_edit(bufferId, replace=elementId, content="<p>Fixed</p>")
262
+ → Surgical fix using element ID
263
+
264
+ 4. confluence_draft_create(spaceKey, title, bufferId)
265
+ → Creates draft for user review
218
266
  \`\`\`
219
267
 
220
268
  ## Basic Elements
@@ -222,11 +270,41 @@ CDATA is ONLY used inside \`<ac:plain-text-body>\` elements (code blocks, PlantU
222
270
  | Element | Syntax |
223
271
  |---------|--------|
224
272
  | Paragraph | \`<p>text</p>\` |
225
- | Headings | \`<h1>\`...\`<h6>\` |
226
- | Bold/Italic | \`<strong>\`, \`<em>\` |
273
+ | Headings | \`<h1>...</h1>\` to \`<h6>...</h6>\` |
274
+ | Bold/Italic | \`<strong>text</strong>\`, \`<em>text</em>\` |
275
+ | Line break | \`<br/>\` (self-closing!) |
276
+ | Horizontal rule | \`<hr/>\` (self-closing!) |
227
277
  | Code inline | \`<code>text</code>\` |
228
- | Link | \`<a href="url">text</a>\` |
229
- | List | \`<ul><li>item</li></ul>\` or \`<ol>\` |
278
+ | List | \`<ul><li>item</li></ul>\` or \`<ol><li>...</li></ol>\` |
279
+
280
+ ## Links (IMPORTANT: Two Types!)
281
+
282
+ ### External Links (Jira, Web URLs)
283
+ For links to external sites including Jira issues, use standard HTML anchor tags:
284
+ \`\`\`xml
285
+ <a href="https://jira.example.com/browse/PROJ-123">PROJ-123</a>
286
+ <a href="https://example.com">Example Site</a>
287
+ \`\`\`
288
+
289
+ **Example: Jira links in a table:**
290
+ \`\`\`xml
291
+ <table><tbody>
292
+ <tr><th>Issue</th><th>Summary</th></tr>
293
+ <tr>
294
+ <td><a href="https://jira.example.com/browse/FR-1301">FR-1301</a></td>
295
+ <td>Fix login bug</td>
296
+ </tr>
297
+ </tbody></table>
298
+ \`\`\`
299
+
300
+ ### Confluence Page Links (Internal)
301
+ For links to other Confluence pages, use the ac:link macro:
302
+ \`\`\`xml
303
+ <ac:link><ri:page ri:content-title="Page Title"/>
304
+ <ac:plain-text-link-body><![CDATA[Link Text]]></ac:plain-text-link-body>
305
+ </ac:link>
306
+ \`\`\`
307
+ Cross-space: add \`ri:space-key="KEY"\` to ri:page
230
308
 
231
309
  ## Tables
232
310
  \`\`\`xml
@@ -248,14 +326,6 @@ Merge cells: \`colspan="2"\`, \`rowspan="2"\`
248
326
  \`\`\`
249
327
  Types: \`single\`, \`two_equal\`, \`two_left_sidebar\`, \`two_right_sidebar\`, \`three_equal\`
250
328
 
251
- ## Page Links
252
- \`\`\`xml
253
- <ac:link><ri:page ri:content-title="Page Title"/>
254
- <ac:plain-text-link-body><![CDATA[Link Text]]></ac:plain-text-link-body>
255
- </ac:link>
256
- \`\`\`
257
- Cross-space: add \`ri:space-key="KEY"\` to ri:page
258
-
259
329
  ## Images
260
330
  \`\`\`xml
261
331
  <ac:image ac:width="300"><ri:attachment ri:filename="image.png"/></ac:image>
@@ -269,10 +339,14 @@ Cross-space: add \`ri:space-key="KEY"\` to ri:page
269
339
  </ac:task-list>
270
340
  \`\`\`
271
341
 
272
- ## Emoticons
342
+ ## Status Indicators (use emoticons)
273
343
  \`\`\`xml
274
- <ac:emoticon ac:name="tick"/> <!-- tick, cross, warning, information -->
275
- <ac:emoticon ac:name="thumbs-up"/> <!-- thumbs-up/down, plus, minus -->
344
+ <ac:emoticon ac:name="tick"/> <!-- green checkmark -->
345
+ <ac:emoticon ac:name="cross"/> <!-- red X -->
346
+ <ac:emoticon ac:name="warning"/> <!-- ⚠ yellow warning -->
347
+ <ac:emoticon ac:name="information"/> <!-- ℹ blue info -->
348
+ <ac:emoticon ac:name="plus"/> <!-- + green plus -->
349
+ <ac:emoticon ac:name="minus"/> <!-- - red minus -->
276
350
  \`\`\`
277
351
 
278
352
  ## Code Block Macro
@@ -291,18 +365,31 @@ Cross-space: add \`ri:space-key="KEY"\` to ri:page
291
365
  \`\`\`
292
366
  Types: \`info\`, \`note\`, \`warning\`, \`tip\`
293
367
 
294
- ## Macro Rules
368
+ ## CDATA Rules
369
+
370
+ **CDATA is ONLY used inside \`<ac:plain-text-body>\`** (code blocks, PlantUML):
371
+ \`\`\`xml
372
+ <!-- CORRECT: CDATA inside ac:plain-text-body -->
373
+ <ac:structured-macro ac:name="code">
374
+ <ac:plain-text-body><![CDATA[code here]]></ac:plain-text-body>
375
+ </ac:structured-macro>
376
+
377
+ <!-- WRONG: CDATA wrapping regular content -->
378
+ <![CDATA[<h1>Title</h1>]]>
379
+ \`\`\`
380
+
381
+ ## Macro Content Rules
295
382
 
296
383
  | Element | Content Allowed |
297
384
  |---------|-----------------|
298
385
  | \`ac:parameter\` | Plain text only (no child elements) |
299
- | \`ac:plain-text-body\` | Raw text, wrap in \`<![CDATA[...]]>\` |
300
- | \`ac:rich-text-body\` | XHTML for info/warning panels |
386
+ | \`ac:plain-text-body\` | Raw text wrapped in \`<![CDATA[...]]>\` |
387
+ | \`ac:rich-text-body\` | XHTML (for info/warning panels) |
301
388
 
302
389
  ---
303
390
 
304
- For element ID editing workflow, see \`help(topic="buffers")\`.
305
- For PlantUML diagrams, see \`help(topic="plantuml")\`.`;
391
+ For element ID editing: \`help(topic="buffers")\`
392
+ For PlantUML diagrams: \`help(topic="plantuml")\``;
306
393
  // PlantUML syntax guide (Confluence-specific only - LLMs know PlantUML syntax)
307
394
  const PLANTUML_HELP = `# PlantUML in Confluence
308
395
 
@@ -322,18 +409,6 @@ const PLANTUML_HELP = `# PlantUML in Confluence
322
409
  | \`plantuml_render(code, format)\` | Preview: ascii, svg, png, eps |
323
410
  | \`plantuml_status()\` | Check Docker container status |
324
411
 
325
- ## Confluence Macro Structure (auto-generated by buffer_edit)
326
- \`\`\`xml
327
- <ac:structured-macro ac:name="plantuml" ac:schema-version="1" ac:macro-id="uuid">
328
- <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
329
- <ac:plain-text-body><![CDATA[
330
- @startuml
331
- ' diagram code
332
- @enduml
333
- ]]></ac:plain-text-body>
334
- </ac:structured-macro>
335
- \`\`\`
336
-
337
412
  ## Critical Rules (MANDATORY)
338
413
 
339
414
  1. **Always use \`plantuml\` parameter**: \`buffer_edit(..., plantuml="...")\` is REQUIRED
@@ -351,27 +426,28 @@ const PLANTUML_HELP = `# PlantUML in Confluence
351
426
 
352
427
  ## Stdlib Includes (C4, AWS, Azure)
353
428
 
354
- C4-PlantUML, AWS icons, and Azure diagrams are supported via \`!include\`:
429
+ C4-PlantUML, AWS icons, Azure, and Kubernetes diagrams use PlantUML's built-in standard library.
430
+ GitHub URLs are automatically converted to stdlib syntax:
431
+
432
+ | GitHub URL | Converted to |
433
+ |------------|--------------|
434
+ | \`https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/.../C4_Context.puml\` | \`!include <C4/C4_Context>\` |
435
+ | \`https://raw.githubusercontent.com/awslabs/aws-icons-for-plantuml/.../dist/AWSCommon.puml\` | \`!include <awslib/AWSCommon>\` |
436
+ | \`https://raw.githubusercontent.com/plantuml-stdlib/Azure-PlantUML/.../AzureCommon.puml\` | \`!include <azure/AzureCommon>\` |
437
+ | \`https://raw.githubusercontent.com/plantuml-stdlib/plantuml-kubernetes-sprites/...\` | \`!include <kubernetes/...>\` |
355
438
 
439
+ **Example (either syntax works):**
356
440
  \`\`\`
357
441
  @startuml
358
- !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
442
+ !include <C4/C4_Context>
359
443
  Person(user, "User")
360
444
  System(sys, "My System")
361
445
  Rel(user, sys, "Uses")
362
446
  @enduml
363
447
  \`\`\`
364
448
 
365
- **Requires \`plantumlInclude: true\`** (enabled by default in .jicon.json)
366
-
367
- When enabled, \`!include\` from whitelisted URLs are authorized and expanded client-side
368
- before validation and Confluence upload. Expanded includes are automatically collapsed
369
- back to \`!include\` directives when reading pages.
370
-
371
- **Whitelisted URL prefixes:**
372
- ${ALLOWED_INCLUDE_URLS.map((url) => `- \`${url}\``).join("\n")}
373
-
374
- Non-whitelisted URLs are left unchanged (PlantUML server may reject them due to SSRF restrictions).
449
+ GitHub URLs in diagrams are converted to stdlib syntax before validation and rendering.
450
+ Non-convertible URLs are left unchanged and may fail if the PlantUML server can't fetch them.
375
451
 
376
452
  ## Quick Examples
377
453
 
@@ -395,7 +471,7 @@ User --> Order
395
471
  **C4 Context Diagram:**
396
472
  \`\`\`
397
473
  @startuml
398
- !include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml
474
+ !include <C4/C4_Context>
399
475
  Person(user, "Customer", "Uses the system")
400
476
  System(sys, "E-Commerce", "Online store")
401
477
  System_Ext(pay, "Payment Gateway", "Processes payments")
@@ -434,34 +510,19 @@ Rel(sys, pay, "Pays via")
434
510
  | "Element not found" | Check \`buffer_get_structure\` for valid IDs |
435
511
  | "XHTML invalid" | Create fresh buffer, insert diagram |
436
512
 
437
- ## Advanced: Direct Macro Embedding
438
-
439
- For pages with **multiple diagrams**, reduce tool calls by embedding macros directly:
440
-
441
- \`\`\`
442
- 1. plantuml_validate(code) × N ← Validate ALL diagrams first (parallel)
443
- 2. buffer_create with embedded macros:
444
- \`\`\`
513
+ ## Multiple Diagrams
445
514
 
446
- \`\`\`xml
447
- <h2>Architecture</h2>
448
- <ac:structured-macro ac:name="plantuml" ac:schema-version="1" ac:macro-id="diag-1">
449
- <ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
450
- <ac:plain-text-body><![CDATA[@startuml
451
- ...validated code...
452
- @enduml]]></ac:plain-text-body>
453
- </ac:structured-macro>
454
- <h2>Sequence Flow</h2>
455
- <ac:structured-macro ac:name="plantuml" ac:schema-version="1" ac:macro-id="diag-2">
456
- ...second diagram...
457
- </ac:structured-macro>
458
- \`\`\`
515
+ For pages with multiple diagrams, call \`buffer_edit\` multiple times:
459
516
 
460
517
  \`\`\`
461
- 3. confluence_draft_create(bufferId=...)
518
+ 1. plantuml_validate(code1) ← Validate first diagram
519
+ 2. plantuml_validate(code2) ← Validate second diagram (parallel)
520
+ 3. buffer_edit(bufferId, after=5, plantuml=code1)
521
+ 4. buffer_edit(bufferId, after=6, plantuml=code2)
522
+ 5. confluence_draft_create(bufferId=...)
462
523
  \`\`\`
463
524
 
464
- **Benefit**: 3 diagrams = 5 calls (vs 8 with buffer_edit per diagram)
525
+ Each \`plantuml\` parameter = one diagram. The macro wrapping is automatic.
465
526
 
466
527
  For element ID editing: \`help(topic="buffers")\``;
467
528
  // Buffers help guide (canonical element ID reference)
@@ -555,9 +616,10 @@ When editing existing pages, you can create content in a separate buffer and mer
555
616
 
556
617
  | Tool | Use |
557
618
  |------|-----|
558
- | \`buffer_get_structure(bufferId)\` | View current element IDs |
619
+ | \`buffer_get_structure(bufferId)\` | View current element IDs (XHTML) |
559
620
  | \`buffer_get_element(bufferId, elementId)\` | Get raw XHTML of specific element |
560
- | \`buffer_get_chunk(bufferId, offset, limit)\` | Read content in chunks |
621
+ | \`buffer_get_items(bufferId, start, count)\` | Get complete JSON items (not truncated) |
622
+ | \`buffer_get_chunk(bufferId, offset, limit)\` | Read raw content in character chunks |
561
623
  | \`buffer_grep(bufferId, pattern, "-C"=2)\` | Search with context |
562
624
  | \`buffer_validate_xhtml(bufferId)\` | Check XHTML validity |
563
625
  | \`buffer_list()\` | See all active buffers |
@@ -565,16 +627,200 @@ When editing existing pages, you can create content in a separate buffer and mer
565
627
 
566
628
  ## Plain/JSON Editing (non-XHTML)
567
629
 
630
+ **String replacement:**
568
631
  \`\`\`
569
632
  buffer_edit(bufferId, old_string="foo", new_string="bar", replace_all=true)
570
633
  \`\`\`
571
634
 
635
+ **Append content:**
636
+ \`\`\`
637
+ buffer_edit(bufferId, append=true, content="text to add at end")
638
+ \`\`\`
639
+
640
+ ## JSON Pipeline (buffer_pipeline) - RECOMMENDED
641
+
642
+ Transform JSON buffers with a declarative pipeline: filter, group, sort, format, output.
643
+
644
+ **98% token reduction** for data transformations - no need to iterate through items!
645
+
646
+ **Basic workflow:**
647
+ \`\`\`
648
+ 1. jira_search_issues(jql="...") → { bufferId, structure: { itemCount: 578 } }
649
+
650
+ 2. buffer_pipeline(bufferId, pipeline={
651
+ filter: [{ field: "status.name", operator: "ne", value: "Done" }],
652
+ sort: [{ field: "priority.name", direction: "asc" }],
653
+ output: {
654
+ type: "xhtml_table",
655
+ table: {
656
+ title: "Open Issues",
657
+ columns: [
658
+ { field: "key", header: "Issue", link: { type: "jira" } },
659
+ { field: "summary", header: "Summary" },
660
+ { field: "priority.name", header: "Priority" }
661
+ ]
662
+ }
663
+ }
664
+ })
665
+ → { bufferId: "buf_new", outputItems: 45, preview: "..." }
666
+
667
+ 3. Insert into Confluence page or use directly
668
+ \`\`\`
669
+
670
+ **Pipeline stages (all optional except output):**
671
+ - \`select\`: Extract and rename fields
672
+ - \`filter\`: Filter items (eq, ne, contains, in, regex, etc.)
673
+ - \`groupBy\`: Group and aggregate (count, sum, avg, list, etc.)
674
+ - \`sort\`: Sort by fields
675
+ - \`limit\`: Limit results
676
+ - \`format\`: Conditional styling (colors, bold, icons)
677
+ - \`output\`: Generate output (xhtml_table, xhtml_list, json, csv, markdown)
678
+
679
+ **Schema Quick Reference:**
680
+ \`\`\`
681
+ pipeline: {
682
+ select?: { fields: [{from: "path", as: "name", transform?: "..."}] },
683
+ filter?: [{ field, operator, value }],
684
+ groupBy?: { field, aggregations: [{function, field?, as}] },
685
+ sort?: [{ field, direction: "asc"|"desc" }], // NOT "sortBy"!
686
+ limit?: number,
687
+ format?: [...],
688
+ output: { type: "xhtml_table"|"json"|"csv"|..., table?: {...} }
689
+ }
690
+ \`\`\`
691
+
692
+ **Common Mistakes:**
693
+ | Wrong | Correct |
694
+ |-------|---------|
695
+ | sortBy: [...] | sort: [...] |
696
+ | transform: "map" | transform: "date" (or uppercase, lowercase, number, boolean, string) |
697
+ | No output | output: {...} (REQUIRED) |
698
+ | pipeline: "{...}" | pipeline: {...} (object, not string) |
699
+
700
+ **After select renames fields, use NEW names in subsequent stages:**
701
+ - select: {from: "issueType", as: "Type"}
702
+ - sort: [{field: "Type"}] ✓ (not "issueType")
703
+
704
+ **Filter operators:** eq, ne, gt, lt, gte, lte, contains, startsWith, endsWith, in, notIn, exists, notExists, regex, empty, notEmpty
705
+
706
+ **Aggregations:** count, sum, avg, min, max, first, last, list, unique
707
+
708
+ **Example - Statistics by assignee:**
709
+ \`\`\`
710
+ buffer_pipeline(bufferId, pipeline={
711
+ filter: [{ field: "status.name", operator: "ne", value: "Done" }],
712
+ groupBy: {
713
+ field: "assignee.displayName",
714
+ aggregations: [
715
+ { function: "count", as: "total" },
716
+ { function: "list", field: "key", as: "issues" }
717
+ ]
718
+ },
719
+ sort: [{ field: "total", direction: "desc" }],
720
+ output: {
721
+ type: "xhtml_table",
722
+ table: {
723
+ title: "Work Distribution",
724
+ columns: [
725
+ { field: "displayName", header: "Assignee" },
726
+ { field: "total", header: "Open Issues" },
727
+ { field: "issues", header: "Issue Keys" }
728
+ ]
729
+ }
730
+ }
731
+ })
732
+ \`\`\`
733
+
734
+ **When to use buffer_pipeline:**
735
+ - Generating tables/lists for Confluence
736
+ - Creating CSV/Markdown exports
737
+ - Aggregating statistics
738
+ - Filtering and sorting large result sets server-side
739
+
740
+ **When NOT to use buffer_pipeline:**
741
+ - When you need LLM judgment on each item
742
+ - When decisions require analyzing content (use buffer_get_items instead)
743
+
744
+ ## Decision Forks (Choose Your Path)
745
+
746
+ After jira_search_issues/tempo_get_worklogs returns a bufferId, you have OPTIONS:
747
+
748
+ | What You Need | Tool to Use | Result |
749
+ |---------------|-------------|--------|
750
+ | READ/ANALYZE items with AI | buffer_get_items(start=0, count=50) | Get items for analysis |
751
+ | SEARCH within results | buffer_grep(pattern) | Find matching items |
752
+ | FORMAT for Confluence | buffer_pipeline → xhtml_table | TERMINAL: publish-ready |
753
+ | TRANSFORM and keep flexible | buffer_pipeline → json | Can process again |
754
+ | EXPORT to file | buffer_pipeline → csv/markdown | TERMINAL: file-ready |
755
+
756
+ **⚠️ OUTPUT TYPE CONSEQUENCES:**
757
+ | Type | Can Iterate Items? | Can Edit? | Next Steps |
758
+ |------|-------------------|-----------|------------|
759
+ | json | ✓ buffer_get_items | ✓ buffer_pipeline | Further processing, re-transform |
760
+ | xhtml_* | ✗ (not iterable) | ✓ buffer_edit | confluence_draft_create |
761
+ | csv/md | ✗ (not iterable) | ✓ buffer_edit | buffer_get_chunk |
762
+
763
+ **Choose json** if you need to iterate items for AI analysis (buffer_get_items).
764
+ **Choose xhtml_*** when ready to publish - you can still edit elements, but can't iterate.
765
+
766
+ ---
767
+
768
+ ## Large Dataset Patterns
769
+
770
+ ### Simple table (no AI analysis)
771
+ Use \`buffer_pipeline\` - generates complete table in **ONE tool call**:
772
+ \`\`\`
773
+ jira_search_issues(jql="...") → bufferId (500+ items)
774
+ buffer_pipeline(bufferId, pipeline={output:{type:"xhtml_table",...}}) → complete table!
775
+ \`\`\`
776
+
777
+ ### Table with AI-enhanced columns (complexity, impact)
778
+ Use **batch accumulation workflow** - analyze items in batches, compose results:
779
+
780
+ \`\`\`
781
+ 1. jira_search_issues(jql="...") → sourceBufferId (578 items)
782
+
783
+ 2. buffer_create(content="<table><thead>...</thead><tbody></tbody></table>", contentType="xhtml")
784
+ → accumulatorBufferId, structure (note tbody element ID)
785
+
786
+ 3. For each batch of 50 items:
787
+ buffer_get_items(sourceBufferId, start=X, count=50) → items[]
788
+ // AI analyzes items, builds XHTML rows with AI columns
789
+ buffer_create(content=rowsXHTML, contentType="xhtml") → batchBufferId
790
+ buffer_edit(accumulatorBufferId, after=lastRowId, fromBufferId=batchBufferId)
791
+
792
+ 4. buffer_edit(pageBufferId, after=ID, fromBufferId=accumulatorBufferId)
793
+ confluence_draft_create(pageId, pageBufferId) → draft for review
794
+ \`\`\`
795
+
796
+ ---
797
+
798
+ ## Reading JSON Data (buffer_get_items, buffer_grep)
799
+
800
+ For cases where you need to read and analyze the data (not just transform it):
801
+
802
+ \`\`\`
803
+ 1. jira_search_issues(jql="...")
804
+ → { bufferId, structure: { itemCount: 519 } }
805
+
806
+ 2. buffer_get_items(bufferId, start=0, count=50)
807
+ → Get 50 complete items for analysis (not truncated)
808
+
809
+ 3. buffer_grep(bufferId, pattern="urgent")
810
+ → Search within buffer
811
+ \`\`\`
812
+
813
+ Use these when:
814
+ - You need to understand the content to make decisions
815
+ - You're writing custom analysis that can't be expressed as a pipeline
816
+ - You're building tables with AI-enhanced columns (batch workflow)
817
+
572
818
  ## Common Errors & Recovery
573
819
 
574
820
  | Error | Fix |
575
821
  |-------|-----|
576
822
  | "Element not found: N" | Check \`buffer_get_structure\` for valid IDs |
577
- | "Buffer expired" | Re-fetch content, buffers expire in 10 min |
823
+ | "Buffer expired" | Re-fetch content, buffers expire in 1 hour |
578
824
  | Multiple occurrences | Use \`replace_all=true\` for string edit |
579
825
  | XHTML parsing error | Check \`suggestedActions\` in error response |
580
826
 
@@ -587,7 +833,7 @@ buffer_edit(bufferId, old_string="foo", new_string="bar", replace_all=true)
587
833
 
588
834
  - IDs are **stable**: insert between 2 and 3 → new element gets id=5, element 3 unchanged
589
835
  - Use \`buffer_get_structure\` after edits to see updated structure
590
- - Buffers expire in 10 min (24h if modified)
836
+ - Buffers expire in 1 hour (24h if modified)
591
837
  - XHTML syntax: \`help(topic="storage")\`
592
838
  - PlantUML: \`help(topic="plantuml")\``;
593
839
  // Topic content map
@@ -611,7 +857,7 @@ Available topics:
611
857
  - cql: CQL (Confluence Query Language) syntax
612
858
  - storage: Confluence storage format + structure editing (element IDs)
613
859
  - plantuml: PlantUML diagram syntax for Confluence
614
- - buffers: Buffer management and large response handling
860
+ - buffers: Buffer management and element ID editing
615
861
 
616
862
  Examples:
617
863
  help() -> Workflow guide
@@ -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;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,mBAAmB;AACnB,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAU,CAAC;AAGzE,yDAAyD;AACzD,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuFtB,CAAC;AAEF,mBAAmB;AACnB,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uEA4CsD,CAAC;AAExE,mBAAmB;AACnB,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yEAmDwD,CAAC;AAE1E,gDAAgD;AAChD,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAwG2B,CAAC;AAExD,+EAA+E;AAC/E,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEpB,oBAAoB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDA8FZ,CAAC;AAEnD,sDAAsD;AACtD,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCA4HkB,CAAC;AAExC,oBAAoB;AACpB,MAAM,aAAa,GAA0B;IAC3C,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,OAAO,EAAE,mBAAmB;IAC5B,QAAQ,EAAE,aAAa;IACvB,OAAO,EAAE,YAAY;CACtB,CAAC;AAEF,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,IAAI,EAAE;YACJ,WAAW,EAAE;;;;;;;;;;;;;;;mDAegC;YAC7C,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACpB,KAAK,EAAE,CAAC;qBACL,IAAI,CAAC,MAAM,CAAC;qBACZ,QAAQ,EAAE;qBACV,QAAQ,CACP,yEAAyE,CAC1E;aACJ,CAAC;YACF,OAAO,EAAE,KAAK,EAAE,IAAuB,EAA2B,EAAE;gBAClE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;gBAEvB,kCAAkC;gBAClC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,OAAO,aAAa,CAAC;wBACnB,KAAK,EAAE,cAAc;qBACtB,CAAC,CAAC;gBACL,CAAC;gBAED,qCAAqC;gBACrC,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC;oBAC3B,OAAO,aAAa,CAAC;wBACnB,KAAK;wBACL,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC;qBAC5B,CAAC,CAAC;gBACL,CAAC;gBAED,yEAAyE;gBACzE,OAAO,WAAW,CAAC;oBACjB,KAAK,EAAE,IAAI;oBACX,OAAO,EAAE,mBAAmB,KAAK,wBAAwB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC5E,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;YACL,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,0BAA0B;AAC1B,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAU,CAAC;AAElD,uCAAuC;AACvC,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"jicon-help.js","sourceRoot":"","sources":["../../src/utils/jicon-help.ts"],"names":[],"mappings":"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"}