@crypto512/jicon-mcp 1.3.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.
- package/README.md +68 -85
- package/TOOL_LIST.md +704 -87
- package/dist/config/constants.d.ts +18 -7
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +21 -8
- package/dist/config/constants.js.map +1 -1
- package/dist/config/loader.d.ts +11 -11
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +53 -93
- package/dist/config/loader.js.map +1 -1
- package/dist/config/types.d.ts +3 -6
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +2 -4
- package/dist/config/types.js.map +1 -1
- package/dist/confluence/formatters.js +1 -1
- package/dist/confluence/formatters.js.map +1 -1
- package/dist/confluence/tools.d.ts +4 -0
- package/dist/confluence/tools.d.ts.map +1 -1
- package/dist/confluence/tools.js +180 -125
- package/dist/confluence/tools.js.map +1 -1
- package/dist/index.js +17 -26
- package/dist/index.js.map +1 -1
- package/dist/jira/formatters.d.ts +1 -0
- package/dist/jira/formatters.d.ts.map +1 -1
- package/dist/jira/formatters.js +13 -12
- package/dist/jira/formatters.js.map +1 -1
- package/dist/jira/tools.d.ts +4 -0
- package/dist/jira/tools.d.ts.map +1 -1
- package/dist/jira/tools.js +189 -50
- package/dist/jira/tools.js.map +1 -1
- package/dist/permissions/tool-registry.d.ts +2 -2
- package/dist/permissions/tool-registry.d.ts.map +1 -1
- package/dist/permissions/tool-registry.js +4 -2
- package/dist/permissions/tool-registry.js.map +1 -1
- package/dist/permissions/write-home-validator.d.ts.map +1 -1
- package/dist/permissions/write-home-validator.js +13 -3
- package/dist/permissions/write-home-validator.js.map +1 -1
- package/dist/tempo/defaults.d.ts +17 -0
- package/dist/tempo/defaults.d.ts.map +1 -0
- package/dist/tempo/defaults.js +26 -0
- package/dist/tempo/defaults.js.map +1 -0
- package/dist/tempo/tools.d.ts +5 -0
- package/dist/tempo/tools.d.ts.map +1 -1
- package/dist/tempo/tools.js +108 -34
- package/dist/tempo/tools.js.map +1 -1
- package/dist/utils/buffer-pipeline/index.d.ts +30 -0
- package/dist/utils/buffer-pipeline/index.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/index.js +317 -0
- package/dist/utils/buffer-pipeline/index.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/csv.d.ts +20 -0
- package/dist/utils/buffer-pipeline/output/csv.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/csv.js +117 -0
- package/dist/utils/buffer-pipeline/output/csv.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/json.d.ts +16 -0
- package/dist/utils/buffer-pipeline/output/json.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/json.js +48 -0
- package/dist/utils/buffer-pipeline/output/json.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/markdown.d.ts +15 -0
- package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/markdown.js +105 -0
- package/dist/utils/buffer-pipeline/output/markdown.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +16 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.js +81 -0
- package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +15 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.js +176 -0
- package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +1 -0
- package/dist/utils/buffer-pipeline/schema.d.ts +1878 -0
- package/dist/utils/buffer-pipeline/schema.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/schema.js +168 -0
- package/dist/utils/buffer-pipeline/schema.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/filter.d.ts +32 -0
- package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/filter.js +208 -0
- package/dist/utils/buffer-pipeline/stages/filter.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/format.d.ts +45 -0
- package/dist/utils/buffer-pipeline/stages/format.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/format.js +160 -0
- package/dist/utils/buffer-pipeline/stages/format.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts +25 -0
- package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/group-by.js +190 -0
- package/dist/utils/buffer-pipeline/stages/group-by.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/select.d.ts +54 -0
- package/dist/utils/buffer-pipeline/stages/select.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/select.js +228 -0
- package/dist/utils/buffer-pipeline/stages/select.js.map +1 -0
- package/dist/utils/buffer-pipeline/stages/sort.d.ts +20 -0
- package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/stages/sort.js +96 -0
- package/dist/utils/buffer-pipeline/stages/sort.js.map +1 -0
- package/dist/utils/buffer-pipeline/types.d.ts +277 -0
- package/dist/utils/buffer-pipeline/types.d.ts.map +1 -0
- package/dist/utils/buffer-pipeline/types.js +8 -0
- package/dist/utils/buffer-pipeline/types.js.map +1 -0
- package/dist/utils/buffer-tools.d.ts +749 -19
- package/dist/utils/buffer-tools.d.ts.map +1 -1
- package/dist/utils/buffer-tools.js +738 -491
- package/dist/utils/buffer-tools.js.map +1 -1
- package/dist/utils/content-buffer.d.ts +55 -4
- package/dist/utils/content-buffer.d.ts.map +1 -1
- package/dist/utils/content-buffer.js +107 -9
- package/dist/utils/content-buffer.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 +253 -28
- package/dist/utils/jicon-help.js.map +1 -1
- package/dist/utils/json-structure.d.ts +121 -0
- package/dist/utils/json-structure.d.ts.map +1 -0
- package/dist/utils/json-structure.js +637 -0
- package/dist/utils/json-structure.js.map +1 -0
- package/dist/utils/plantuml/include-expander.d.ts +31 -30
- package/dist/utils/plantuml/include-expander.d.ts.map +1 -1
- package/dist/utils/plantuml/include-expander.js +167 -133
- package/dist/utils/plantuml/include-expander.js.map +1 -1
- package/dist/utils/plantuml/index.d.ts +3 -3
- package/dist/utils/plantuml/index.d.ts.map +1 -1
- package/dist/utils/plantuml/index.js +4 -4
- package/dist/utils/plantuml/index.js.map +1 -1
- package/dist/utils/plantuml/service.d.ts +13 -24
- package/dist/utils/plantuml/service.d.ts.map +1 -1
- package/dist/utils/plantuml/service.js +49 -99
- package/dist/utils/plantuml/service.js.map +1 -1
- package/dist/utils/plantuml/tools.d.ts.map +1 -1
- package/dist/utils/plantuml/tools.js +33 -72
- package/dist/utils/plantuml/tools.js.map +1 -1
- package/dist/utils/plantuml/types.d.ts +1 -35
- package/dist/utils/plantuml/types.d.ts.map +1 -1
- package/dist/utils/plantuml/types.js +1 -11
- package/dist/utils/plantuml/types.js.map +1 -1
- package/dist/utils/plantuml/validation-helper.d.ts +1 -1
- package/dist/utils/plantuml/validation-helper.js +12 -12
- package/dist/utils/plantuml/validation-helper.js.map +1 -1
- package/dist/utils/response-formatter.d.ts +61 -6
- package/dist/utils/response-formatter.d.ts.map +1 -1
- package/dist/utils/response-formatter.js +174 -91
- package/dist/utils/response-formatter.js.map +1 -1
- package/dist/utils/url-tools.d.ts.map +1 -1
- package/dist/utils/url-tools.js +22 -0
- package/dist/utils/url-tools.js.map +1 -1
- package/dist/utils/xhtml/error-locator.js +2 -2
- package/dist/utils/xhtml/error-locator.js.map +1 -1
- package/dist/utils/xhtml/index.d.ts +1 -1
- package/dist/utils/xhtml/index.d.ts.map +1 -1
- package/dist/utils/xhtml/index.js +1 -1
- package/dist/utils/xhtml/index.js.map +1 -1
- package/dist/utils/xhtml/parser.d.ts +34 -5
- package/dist/utils/xhtml/parser.d.ts.map +1 -1
- package/dist/utils/xhtml/parser.js +66 -11
- package/dist/utils/xhtml/parser.js.map +1 -1
- package/dist/utils/xhtml/plantuml.d.ts.map +1 -1
- package/dist/utils/xhtml/plantuml.js +5 -3
- package/dist/utils/xhtml/plantuml.js.map +1 -1
- package/dist/utils/xhtml/serializer.d.ts.map +1 -1
- package/dist/utils/xhtml/serializer.js +12 -15
- package/dist/utils/xhtml/serializer.js.map +1 -1
- package/package.json +12 -4
- package/crypto512-jicon-mcp-1.3.0.tgz +0 -0
package/dist/utils/jicon-help.js
CHANGED
|
@@ -6,12 +6,13 @@
|
|
|
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 |
|
|
@@ -23,6 +24,9 @@ const WORKFLOW_GUIDE = `# Jicon Quick Reference
|
|
|
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
|
|
|
@@ -51,6 +55,11 @@ 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
|
|
|
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
|
+
|
|
54
63
|
### Create NEW Confluence Page (Buffer-First)
|
|
55
64
|
\`\`\`
|
|
56
65
|
1. buffer_create(content="<h1>Title</h1><p>Content</p>", contentType="xhtml")
|
|
@@ -149,7 +158,17 @@ const JQL_HELP = `# JQL Syntax Guide
|
|
|
149
158
|
- Relative dates: startOfDay(-7) = 7 days ago
|
|
150
159
|
- Always quote field values that contain spaces
|
|
151
160
|
- Issue type names may be localized (e.g., "Epopee" instead of "Epic")
|
|
152
|
-
|
|
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"`;
|
|
153
172
|
// CQL syntax guide
|
|
154
173
|
const CQL_HELP = `# CQL Syntax Guide
|
|
155
174
|
|
|
@@ -256,9 +275,37 @@ Confluence uses **XHTML** (strict XML), NOT loose HTML5. This matters!
|
|
|
256
275
|
| Line break | \`<br/>\` (self-closing!) |
|
|
257
276
|
| Horizontal rule | \`<hr/>\` (self-closing!) |
|
|
258
277
|
| Code inline | \`<code>text</code>\` |
|
|
259
|
-
| Link | \`<a href="url">text</a>\` |
|
|
260
278
|
| List | \`<ul><li>item</li></ul>\` or \`<ol><li>...</li></ol>\` |
|
|
261
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
|
|
308
|
+
|
|
262
309
|
## Tables
|
|
263
310
|
\`\`\`xml
|
|
264
311
|
<table><tbody>
|
|
@@ -279,14 +326,6 @@ Merge cells: \`colspan="2"\`, \`rowspan="2"\`
|
|
|
279
326
|
\`\`\`
|
|
280
327
|
Types: \`single\`, \`two_equal\`, \`two_left_sidebar\`, \`two_right_sidebar\`, \`three_equal\`
|
|
281
328
|
|
|
282
|
-
## Page Links
|
|
283
|
-
\`\`\`xml
|
|
284
|
-
<ac:link><ri:page ri:content-title="Page Title"/>
|
|
285
|
-
<ac:plain-text-link-body><![CDATA[Link Text]]></ac:plain-text-link-body>
|
|
286
|
-
</ac:link>
|
|
287
|
-
\`\`\`
|
|
288
|
-
Cross-space: add \`ri:space-key="KEY"\` to ri:page
|
|
289
|
-
|
|
290
329
|
## Images
|
|
291
330
|
\`\`\`xml
|
|
292
331
|
<ac:image ac:width="300"><ri:attachment ri:filename="image.png"/></ac:image>
|
|
@@ -387,27 +426,28 @@ const PLANTUML_HELP = `# PlantUML in Confluence
|
|
|
387
426
|
|
|
388
427
|
## Stdlib Includes (C4, AWS, Azure)
|
|
389
428
|
|
|
390
|
-
C4-PlantUML, AWS icons, and
|
|
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/...>\` |
|
|
391
438
|
|
|
439
|
+
**Example (either syntax works):**
|
|
392
440
|
\`\`\`
|
|
393
441
|
@startuml
|
|
394
|
-
!include
|
|
442
|
+
!include <C4/C4_Context>
|
|
395
443
|
Person(user, "User")
|
|
396
444
|
System(sys, "My System")
|
|
397
445
|
Rel(user, sys, "Uses")
|
|
398
446
|
@enduml
|
|
399
447
|
\`\`\`
|
|
400
448
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
When enabled, \`!include\` from whitelisted URLs are authorized and expanded client-side
|
|
404
|
-
before validation and Confluence upload. Expanded includes are automatically collapsed
|
|
405
|
-
back to \`!include\` directives when reading pages.
|
|
406
|
-
|
|
407
|
-
**Whitelisted URL prefixes:**
|
|
408
|
-
${ALLOWED_INCLUDE_URLS.map((url) => `- \`${url}\``).join("\n")}
|
|
409
|
-
|
|
410
|
-
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.
|
|
411
451
|
|
|
412
452
|
## Quick Examples
|
|
413
453
|
|
|
@@ -431,7 +471,7 @@ User --> Order
|
|
|
431
471
|
**C4 Context Diagram:**
|
|
432
472
|
\`\`\`
|
|
433
473
|
@startuml
|
|
434
|
-
!include
|
|
474
|
+
!include <C4/C4_Context>
|
|
435
475
|
Person(user, "Customer", "Uses the system")
|
|
436
476
|
System(sys, "E-Commerce", "Online store")
|
|
437
477
|
System_Ext(pay, "Payment Gateway", "Processes payments")
|
|
@@ -576,9 +616,10 @@ When editing existing pages, you can create content in a separate buffer and mer
|
|
|
576
616
|
|
|
577
617
|
| Tool | Use |
|
|
578
618
|
|------|-----|
|
|
579
|
-
| \`buffer_get_structure(bufferId)\` | View current element IDs |
|
|
619
|
+
| \`buffer_get_structure(bufferId)\` | View current element IDs (XHTML) |
|
|
580
620
|
| \`buffer_get_element(bufferId, elementId)\` | Get raw XHTML of specific element |
|
|
581
|
-
| \`
|
|
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 |
|
|
582
623
|
| \`buffer_grep(bufferId, pattern, "-C"=2)\` | Search with context |
|
|
583
624
|
| \`buffer_validate_xhtml(bufferId)\` | Check XHTML validity |
|
|
584
625
|
| \`buffer_list()\` | See all active buffers |
|
|
@@ -586,16 +627,200 @@ When editing existing pages, you can create content in a separate buffer and mer
|
|
|
586
627
|
|
|
587
628
|
## Plain/JSON Editing (non-XHTML)
|
|
588
629
|
|
|
630
|
+
**String replacement:**
|
|
589
631
|
\`\`\`
|
|
590
632
|
buffer_edit(bufferId, old_string="foo", new_string="bar", replace_all=true)
|
|
591
633
|
\`\`\`
|
|
592
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
|
+
|
|
593
818
|
## Common Errors & Recovery
|
|
594
819
|
|
|
595
820
|
| Error | Fix |
|
|
596
821
|
|-------|-----|
|
|
597
822
|
| "Element not found: N" | Check \`buffer_get_structure\` for valid IDs |
|
|
598
|
-
| "Buffer expired" | Re-fetch content, buffers expire in
|
|
823
|
+
| "Buffer expired" | Re-fetch content, buffers expire in 1 hour |
|
|
599
824
|
| Multiple occurrences | Use \`replace_all=true\` for string edit |
|
|
600
825
|
| XHTML parsing error | Check \`suggestedActions\` in error response |
|
|
601
826
|
|
|
@@ -608,7 +833,7 @@ buffer_edit(bufferId, old_string="foo", new_string="bar", replace_all=true)
|
|
|
608
833
|
|
|
609
834
|
- IDs are **stable**: insert between 2 and 3 → new element gets id=5, element 3 unchanged
|
|
610
835
|
- Use \`buffer_get_structure\` after edits to see updated structure
|
|
611
|
-
- Buffers expire in
|
|
836
|
+
- Buffers expire in 1 hour (24h if modified)
|
|
612
837
|
- XHTML syntax: \`help(topic="storage")\`
|
|
613
838
|
- PlantUML: \`help(topic="plantuml")\``;
|
|
614
839
|
// Topic content map
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"jicon-help.js","sourceRoot":"","sources":["../../src/utils/jicon-help.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON Structure Operations
|
|
3
|
+
*
|
|
4
|
+
* Provides unified structured access for JSON data (arrays and objects).
|
|
5
|
+
* Similar to XHTML buffer operations but for JSON data.
|
|
6
|
+
*
|
|
7
|
+
* Key design for ARRAYS:
|
|
8
|
+
* - Items get stable numeric IDs (stored in __jicon_id field)
|
|
9
|
+
* - IDs persist through insertions/deletions
|
|
10
|
+
* - Enables ID-based operations: append, insert, replace, remove
|
|
11
|
+
*
|
|
12
|
+
* Key design for OBJECTS:
|
|
13
|
+
* - Key-based access to top-level properties
|
|
14
|
+
* - No IDs needed - keys are the natural identifiers
|
|
15
|
+
*/
|
|
16
|
+
import type { JsonStructure } from "./content-buffer.js";
|
|
17
|
+
/**
|
|
18
|
+
* Parse JSON string and build structure with IDs for array items
|
|
19
|
+
* If the JSON is an array, each item gets an ID.
|
|
20
|
+
* If it's an object with array fields, those arrays can be targeted by path.
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseJsonStructure(jsonString: string): {
|
|
23
|
+
data: unknown;
|
|
24
|
+
structure: JsonStructure;
|
|
25
|
+
error?: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Create a new JSON buffer with structure tracking.
|
|
29
|
+
* Handles both arrays and objects:
|
|
30
|
+
* - Arrays: items get stable IDs for ID-based access
|
|
31
|
+
* - Objects: keys are extracted for key-based access
|
|
32
|
+
*
|
|
33
|
+
* @param data - Array or object to create structure for
|
|
34
|
+
* @returns content string and structure
|
|
35
|
+
*/
|
|
36
|
+
export declare function createJsonStructure(data: unknown): {
|
|
37
|
+
content: string;
|
|
38
|
+
structure: JsonStructure;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Append an item to a JSON array buffer
|
|
42
|
+
*/
|
|
43
|
+
export declare function appendToJsonArray(currentContent: string, currentStructure: JsonStructure, newItem: unknown): {
|
|
44
|
+
content: string;
|
|
45
|
+
structure: JsonStructure;
|
|
46
|
+
insertedId: number;
|
|
47
|
+
error?: string;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Insert an item into a JSON array relative to an existing item
|
|
51
|
+
*/
|
|
52
|
+
export declare function insertIntoJsonArray(currentContent: string, currentStructure: JsonStructure, newItem: unknown, targetId: number, position: "before" | "after"): {
|
|
53
|
+
content: string;
|
|
54
|
+
structure: JsonStructure;
|
|
55
|
+
insertedId: number;
|
|
56
|
+
error?: string;
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Replace an item in a JSON array by ID
|
|
60
|
+
*/
|
|
61
|
+
export declare function replaceInJsonArray(currentContent: string, currentStructure: JsonStructure, targetId: number, newValue: unknown): {
|
|
62
|
+
content: string;
|
|
63
|
+
structure: JsonStructure;
|
|
64
|
+
error?: string;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Remove an item from a JSON array by ID
|
|
68
|
+
*/
|
|
69
|
+
export declare function removeFromJsonArray(currentContent: string, currentStructure: JsonStructure, targetId: number): {
|
|
70
|
+
content: string;
|
|
71
|
+
structure: JsonStructure;
|
|
72
|
+
error?: string;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Get an item from a JSON array by ID (without the internal ID field)
|
|
76
|
+
*/
|
|
77
|
+
export declare function getItemById(currentContent: string, currentStructure: JsonStructure, targetId: number): {
|
|
78
|
+
item: unknown;
|
|
79
|
+
error?: string;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Get all items from a JSON array buffer (without internal ID fields)
|
|
83
|
+
* For export/serialization
|
|
84
|
+
*/
|
|
85
|
+
export declare function getCleanItems(currentContent: string): {
|
|
86
|
+
items: unknown[];
|
|
87
|
+
error?: string;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Rebuild structure from content (for recovery/validation)
|
|
91
|
+
*/
|
|
92
|
+
export declare function rebuildStructure(currentContent: string): {
|
|
93
|
+
structure: JsonStructure;
|
|
94
|
+
error?: string;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Get a value from a JSON object by key
|
|
98
|
+
*/
|
|
99
|
+
export declare function getByKey(currentContent: string, currentStructure: JsonStructure, key: string): {
|
|
100
|
+
value: unknown;
|
|
101
|
+
error?: string;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Get items from a JSON array by index range (batch access)
|
|
105
|
+
* Returns items without internal __jicon_id fields
|
|
106
|
+
*/
|
|
107
|
+
export declare function getItemsByRange(currentContent: string, currentStructure: JsonStructure, start: number, count: number): {
|
|
108
|
+
items: Array<{
|
|
109
|
+
id: number;
|
|
110
|
+
item: unknown;
|
|
111
|
+
}>;
|
|
112
|
+
progress: {
|
|
113
|
+
start: number;
|
|
114
|
+
count: number;
|
|
115
|
+
total: number;
|
|
116
|
+
hasMore: boolean;
|
|
117
|
+
nextStart?: number;
|
|
118
|
+
};
|
|
119
|
+
error?: string;
|
|
120
|
+
};
|
|
121
|
+
//# sourceMappingURL=json-structure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-structure.d.ts","sourceRoot":"","sources":["../../src/utils/json-structure.ts"],"names":[],"mappings":"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"}
|