@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.
Files changed (181) hide show
  1. package/PROMPT.md +10 -28
  2. package/README.md +35 -7
  3. package/TOOL_LIST.md +206 -136
  4. package/dist/config/constants.d.ts +17 -4
  5. package/dist/config/constants.d.ts.map +1 -1
  6. package/dist/config/constants.js +20 -5
  7. package/dist/config/constants.js.map +1 -1
  8. package/dist/config/loader.d.ts.map +1 -1
  9. package/dist/config/loader.js +6 -2
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/types.d.ts +19 -8
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +10 -8
  14. package/dist/config/types.js.map +1 -1
  15. package/dist/confluence/client.d.ts.map +1 -1
  16. package/dist/confluence/client.js +7 -2
  17. package/dist/confluence/client.js.map +1 -1
  18. package/dist/confluence/tools.d.ts +8 -13
  19. package/dist/confluence/tools.d.ts.map +1 -1
  20. package/dist/confluence/tools.js +19 -37
  21. package/dist/confluence/tools.js.map +1 -1
  22. package/dist/credentials/extractor.d.ts +14 -3
  23. package/dist/credentials/extractor.d.ts.map +1 -1
  24. package/dist/credentials/extractor.js +83 -13
  25. package/dist/credentials/extractor.js.map +1 -1
  26. package/dist/credentials/index.d.ts +1 -1
  27. package/dist/credentials/index.d.ts.map +1 -1
  28. package/dist/credentials/index.js.map +1 -1
  29. package/dist/credentials/types.d.ts +22 -0
  30. package/dist/credentials/types.d.ts.map +1 -1
  31. package/dist/credentials/types.js.map +1 -1
  32. package/dist/index.js +196 -184
  33. package/dist/index.js.map +1 -1
  34. package/dist/jira/activity-tools.d.ts +0 -4
  35. package/dist/jira/activity-tools.d.ts.map +1 -1
  36. package/dist/jira/activity-tools.js +42 -65
  37. package/dist/jira/activity-tools.js.map +1 -1
  38. package/dist/jira/client.d.ts +12 -0
  39. package/dist/jira/client.d.ts.map +1 -1
  40. package/dist/jira/client.js +30 -6
  41. package/dist/jira/client.js.map +1 -1
  42. package/dist/jira/formatters.d.ts +4 -1
  43. package/dist/jira/formatters.d.ts.map +1 -1
  44. package/dist/jira/formatters.js +9 -6
  45. package/dist/jira/formatters.js.map +1 -1
  46. package/dist/jira/tools.d.ts +48 -14
  47. package/dist/jira/tools.d.ts.map +1 -1
  48. package/dist/jira/tools.js +174 -101
  49. package/dist/jira/tools.js.map +1 -1
  50. package/dist/permissions/filter.d.ts.map +1 -1
  51. package/dist/permissions/filter.js +8 -4
  52. package/dist/permissions/filter.js.map +1 -1
  53. package/dist/permissions/tool-registry.d.ts +15 -13
  54. package/dist/permissions/tool-registry.d.ts.map +1 -1
  55. package/dist/permissions/tool-registry.js +16 -8
  56. package/dist/permissions/tool-registry.js.map +1 -1
  57. package/dist/session/context.d.ts +3 -3
  58. package/dist/session/context.d.ts.map +1 -1
  59. package/dist/session/manager.d.ts +58 -27
  60. package/dist/session/manager.d.ts.map +1 -1
  61. package/dist/session/manager.js +177 -79
  62. package/dist/session/manager.js.map +1 -1
  63. package/dist/tempo/client.d.ts.map +1 -1
  64. package/dist/tempo/client.js +3 -1
  65. package/dist/tempo/client.js.map +1 -1
  66. package/dist/tempo/tools.d.ts +4 -4
  67. package/dist/tempo/tools.d.ts.map +1 -1
  68. package/dist/tempo/tools.js +15 -0
  69. package/dist/tempo/tools.js.map +1 -1
  70. package/dist/transport/http.d.ts +17 -18
  71. package/dist/transport/http.d.ts.map +1 -1
  72. package/dist/transport/http.js +135 -120
  73. package/dist/transport/http.js.map +1 -1
  74. package/dist/transport/index.d.ts +7 -2
  75. package/dist/transport/index.d.ts.map +1 -1
  76. package/dist/transport/index.js +10 -4
  77. package/dist/transport/index.js.map +1 -1
  78. package/dist/transport/types.d.ts +0 -2
  79. package/dist/transport/types.d.ts.map +1 -1
  80. package/dist/transport/types.js.map +1 -1
  81. package/dist/utils/buffer-tools.d.ts +2 -2
  82. package/dist/utils/buffer-tools.d.ts.map +1 -1
  83. package/dist/utils/buffer-tools.js +41 -19
  84. package/dist/utils/buffer-tools.js.map +1 -1
  85. package/dist/utils/http-client.d.ts.map +1 -1
  86. package/dist/utils/http-client.js +99 -2
  87. package/dist/utils/http-client.js.map +1 -1
  88. package/dist/utils/jicon-help.d.ts +1 -1
  89. package/dist/utils/jicon-help.d.ts.map +1 -1
  90. package/dist/utils/jicon-help.js +126 -336
  91. package/dist/utils/jicon-help.js.map +1 -1
  92. package/dist/utils/logger.d.ts +43 -0
  93. package/dist/utils/logger.d.ts.map +1 -0
  94. package/dist/utils/logger.js +102 -0
  95. package/dist/utils/logger.js.map +1 -0
  96. package/dist/utils/plantuml/tools.js +2 -2
  97. package/dist/utils/plantuml/tools.js.map +1 -1
  98. package/dist/utils/response-formatter.d.ts +8 -0
  99. package/dist/utils/response-formatter.d.ts.map +1 -1
  100. package/dist/utils/response-formatter.js +65 -7
  101. package/dist/utils/response-formatter.js.map +1 -1
  102. package/dist/utils/schemas/confluence.js +11 -11
  103. package/dist/utils/schemas/confluence.js.map +1 -1
  104. package/dist/utils/schemas/index.d.ts +11 -0
  105. package/dist/utils/schemas/index.d.ts.map +1 -1
  106. package/dist/utils/schemas/index.js.map +1 -1
  107. package/dist/utils/schemas/jira.d.ts +1 -1
  108. package/dist/utils/schemas/jira.d.ts.map +1 -1
  109. package/dist/utils/schemas/jira.js +37 -35
  110. package/dist/utils/schemas/jira.js.map +1 -1
  111. package/dist/utils/schemas/tempo.js +13 -13
  112. package/dist/utils/schemas/tempo.js.map +1 -1
  113. package/dist/utils/whoami-tools.d.ts +17 -0
  114. package/dist/utils/whoami-tools.d.ts.map +1 -0
  115. package/dist/utils/whoami-tools.js +90 -0
  116. package/dist/utils/whoami-tools.js.map +1 -0
  117. package/package.json +3 -3
  118. package/dist/credentials/client-factory.d.ts +0 -64
  119. package/dist/credentials/client-factory.d.ts.map +0 -1
  120. package/dist/credentials/client-factory.js +0 -110
  121. package/dist/credentials/client-factory.js.map +0 -1
  122. package/dist/credentials/context.d.ts +0 -25
  123. package/dist/credentials/context.d.ts.map +0 -1
  124. package/dist/credentials/context.js +0 -35
  125. package/dist/credentials/context.js.map +0 -1
  126. package/dist/utils/buffer-pipeline/index.d.ts +0 -30
  127. package/dist/utils/buffer-pipeline/index.d.ts.map +0 -1
  128. package/dist/utils/buffer-pipeline/index.js +0 -317
  129. package/dist/utils/buffer-pipeline/index.js.map +0 -1
  130. package/dist/utils/buffer-pipeline/output/csv.d.ts +0 -20
  131. package/dist/utils/buffer-pipeline/output/csv.d.ts.map +0 -1
  132. package/dist/utils/buffer-pipeline/output/csv.js +0 -117
  133. package/dist/utils/buffer-pipeline/output/csv.js.map +0 -1
  134. package/dist/utils/buffer-pipeline/output/json.d.ts +0 -16
  135. package/dist/utils/buffer-pipeline/output/json.d.ts.map +0 -1
  136. package/dist/utils/buffer-pipeline/output/json.js +0 -48
  137. package/dist/utils/buffer-pipeline/output/json.js.map +0 -1
  138. package/dist/utils/buffer-pipeline/output/markdown.d.ts +0 -15
  139. package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +0 -1
  140. package/dist/utils/buffer-pipeline/output/markdown.js +0 -105
  141. package/dist/utils/buffer-pipeline/output/markdown.js.map +0 -1
  142. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +0 -16
  143. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +0 -1
  144. package/dist/utils/buffer-pipeline/output/xhtml-list.js +0 -81
  145. package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +0 -1
  146. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +0 -15
  147. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +0 -1
  148. package/dist/utils/buffer-pipeline/output/xhtml-table.js +0 -176
  149. package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +0 -1
  150. package/dist/utils/buffer-pipeline/schema.d.ts +0 -1878
  151. package/dist/utils/buffer-pipeline/schema.d.ts.map +0 -1
  152. package/dist/utils/buffer-pipeline/schema.js +0 -168
  153. package/dist/utils/buffer-pipeline/schema.js.map +0 -1
  154. package/dist/utils/buffer-pipeline/stages/filter.d.ts +0 -32
  155. package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +0 -1
  156. package/dist/utils/buffer-pipeline/stages/filter.js +0 -208
  157. package/dist/utils/buffer-pipeline/stages/filter.js.map +0 -1
  158. package/dist/utils/buffer-pipeline/stages/format.d.ts +0 -45
  159. package/dist/utils/buffer-pipeline/stages/format.d.ts.map +0 -1
  160. package/dist/utils/buffer-pipeline/stages/format.js +0 -160
  161. package/dist/utils/buffer-pipeline/stages/format.js.map +0 -1
  162. package/dist/utils/buffer-pipeline/stages/group-by.d.ts +0 -25
  163. package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +0 -1
  164. package/dist/utils/buffer-pipeline/stages/group-by.js +0 -190
  165. package/dist/utils/buffer-pipeline/stages/group-by.js.map +0 -1
  166. package/dist/utils/buffer-pipeline/stages/select.d.ts +0 -54
  167. package/dist/utils/buffer-pipeline/stages/select.d.ts.map +0 -1
  168. package/dist/utils/buffer-pipeline/stages/select.js +0 -228
  169. package/dist/utils/buffer-pipeline/stages/select.js.map +0 -1
  170. package/dist/utils/buffer-pipeline/stages/sort.d.ts +0 -20
  171. package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +0 -1
  172. package/dist/utils/buffer-pipeline/stages/sort.js +0 -96
  173. package/dist/utils/buffer-pipeline/stages/sort.js.map +0 -1
  174. package/dist/utils/buffer-pipeline/types.d.ts +0 -277
  175. package/dist/utils/buffer-pipeline/types.d.ts.map +0 -1
  176. package/dist/utils/buffer-pipeline/types.js +0 -8
  177. package/dist/utils/buffer-pipeline/types.js.map +0 -1
  178. package/dist/utils/plantuml/docker-manager.d.ts +0 -37
  179. package/dist/utils/plantuml/docker-manager.d.ts.map +0 -1
  180. package/dist/utils/plantuml/docker-manager.js +0 -284
  181. package/dist/utils/plantuml/docker-manager.js.map +0 -1
@@ -2,6 +2,30 @@
2
2
  * HTTP client utility for API requests
3
3
  */
4
4
  import axios from "axios";
5
+ import { debug, isDebugEnabled } from "./logger.js";
6
+ /** Maximum response body length to log (characters) */
7
+ const DEBUG_MAX_BODY_LENGTH = 5000;
8
+ /**
9
+ * Sanitize headers for debug logging (mask Authorization tokens)
10
+ */
11
+ function sanitizeHeaders(headers) {
12
+ const sanitized = { ...headers };
13
+ if (sanitized.Authorization && typeof sanitized.Authorization === "string") {
14
+ // Show first 2 chars of token: "Bearer ab***" or "Basic ab***"
15
+ const parts = sanitized.Authorization.split(" ");
16
+ if (parts.length === 2 && parts[1].length > 2) {
17
+ sanitized.Authorization = `${parts[0]} ${parts[1].substring(0, 2)}***`;
18
+ }
19
+ }
20
+ // Also sanitize lowercase version (axios normalizes to lowercase in some cases)
21
+ if (sanitized.authorization && typeof sanitized.authorization === "string") {
22
+ const parts = sanitized.authorization.split(" ");
23
+ if (parts.length === 2 && parts[1].length > 2) {
24
+ sanitized.authorization = `${parts[0]} ${parts[1].substring(0, 2)}***`;
25
+ }
26
+ }
27
+ return sanitized;
28
+ }
5
29
  export class HttpClient {
6
30
  client;
7
31
  constructor(config) {
@@ -33,8 +57,69 @@ export class HttpClient {
33
57
  };
34
58
  }
35
59
  this.client = axios.create(axiosConfig);
36
- // Add response interceptor for error handling
37
- this.client.interceptors.response.use((response) => response, (error) => {
60
+ // Add debug request interceptor (only when debug level enabled)
61
+ this.client.interceptors.request.use((request) => {
62
+ if (isDebugEnabled()) {
63
+ const method = request.method?.toUpperCase() || "?";
64
+ const url = request.url || "?";
65
+ debug(`→ ${method} ${url}`);
66
+ debug(`→ Headers: ${JSON.stringify(sanitizeHeaders(request.headers))}`);
67
+ if (request.data) {
68
+ debug(`→ Body: ${JSON.stringify(request.data)}`);
69
+ }
70
+ }
71
+ return request;
72
+ }, (error) => {
73
+ if (isDebugEnabled()) {
74
+ debug(`→ Request Error: ${error.message}`);
75
+ }
76
+ return Promise.reject(error);
77
+ });
78
+ // Add response interceptor for error handling (and debug logging)
79
+ this.client.interceptors.response.use((response) => {
80
+ if (isDebugEnabled()) {
81
+ const status = response.status;
82
+ const statusText = response.statusText || "";
83
+ debug(`← ${status} ${statusText}`);
84
+ debug(`← Headers: ${JSON.stringify(response.headers)}`);
85
+ const body = JSON.stringify(response.data);
86
+ if (body.length > DEBUG_MAX_BODY_LENGTH) {
87
+ debug(`← Body: ${body.substring(0, DEBUG_MAX_BODY_LENGTH)}... [truncated, ${body.length} chars total]`);
88
+ }
89
+ else {
90
+ debug(`← Body: ${body}`);
91
+ }
92
+ }
93
+ // Check for anonymous user on success responses (token invalid but query allowed)
94
+ const ausername = response.headers["x-ausername"];
95
+ if (ausername === "anonymous") {
96
+ const authError = {
97
+ error: true,
98
+ message: "Authentication failed: Invalid or expired API token",
99
+ statusCode: 401,
100
+ };
101
+ throw authError;
102
+ }
103
+ return response;
104
+ }, (error) => {
105
+ if (isDebugEnabled()) {
106
+ if (error.response) {
107
+ const status = error.response.status;
108
+ const statusText = error.response.statusText || "";
109
+ debug(`← ${status} ${statusText} (ERROR)`);
110
+ debug(`← Headers: ${JSON.stringify(error.response.headers)}`);
111
+ const body = JSON.stringify(error.response.data);
112
+ if (body.length > DEBUG_MAX_BODY_LENGTH) {
113
+ debug(`← Body: ${body.substring(0, DEBUG_MAX_BODY_LENGTH)}... [truncated, ${body.length} chars total]`);
114
+ }
115
+ else {
116
+ debug(`← Body: ${body}`);
117
+ }
118
+ }
119
+ else {
120
+ debug(`← Error: ${error.message}`);
121
+ }
122
+ }
38
123
  throw this.handleError(error);
39
124
  });
40
125
  }
@@ -66,6 +151,9 @@ export class HttpClient {
66
151
  // Server responded with error status
67
152
  const statusCode = error.response.status;
68
153
  const contentType = error.response.headers["content-type"] || "";
154
+ // Check for anonymous user indicator (common in Atlassian products for auth failures)
155
+ const ausername = error.response.headers["x-ausername"];
156
+ const isAnonymous = ausername === "anonymous";
69
157
  // Handle HTML error responses (common for 401, 403, etc.)
70
158
  if (contentType.includes("text/html")) {
71
159
  return {
@@ -74,9 +162,18 @@ export class HttpClient {
74
162
  statusCode,
75
163
  details: {
76
164
  hint: this.getAuthenticationHint(statusCode),
165
+ ...(isAnonymous && { authHint: "Request treated as anonymous - verify your API token is valid" }),
77
166
  },
78
167
  };
79
168
  }
169
+ // If user is anonymous, return auth error immediately (token invalid/expired)
170
+ if (isAnonymous) {
171
+ return {
172
+ error: true,
173
+ message: "Authentication failed: Invalid or expired API token",
174
+ statusCode: 401,
175
+ };
176
+ }
80
177
  // Handle JSON error responses
81
178
  const errorMessage = error.response.data
82
179
  ?.errorMessages?.[0] ||
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/utils/http-client.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@ import { z } from "zod";
8
8
  import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
9
9
  declare const TOPICS: readonly ["jql", "cql", "storage", "plantuml", "buffers", "analysis"];
10
10
  type Topic = (typeof TOPICS)[number];
11
- declare const WORKFLOW_GUIDE = "# Jicon Quick Reference\n\nTOOLS: jira(26) confluence(21) tempo(13) buffer(12) plantuml(3) url(2) date(1) help(1)\n\n## Decision Tree - Which Topic?\n\n| Task | First Step |\n|------|------------|\n| **What happened on project X?** | `jira_get_activity_digest(projectKey, since=\"7d\")` \u2190 **AI analysis** |\n| **Analyze Epic progress (deep)** | `jira_analyze_epic(issueKey)` \u2190 time metrics, comments, Confluence links |\n| **Analyze Sprint progress** | `jira_analyze_sprint(sprintId)` \u2190 progress, risks, team distribution |\n| **Quick Epic status** | `jira_epic_summary(issueKey)` \u2190 lightweight hierarchy + status |\n| **List Epic children** | `jira_list_epic_children(parentKey)` \u2190 no JQL needed |\n| **Top issues by workload** | `tempo_get_top_worklogs(since=\"last_week\")` \u2190 **AI analysis** |\n| Edit Confluence page | `confluence_edit(input)` \u2190 accepts URL, pageId, or SPACE/Title |\n| Create NEW page | `buffer_create(content, contentType=\"xhtml\")` then `confluence_draft_create` |\n| Create page with diagram | `help(topic=\"plantuml\")` |\n| XHTML syntax needed | `help(topic=\"storage\")` \u2190 **READ THIS for HTML vs XHTML** |\n| Search Confluence | `help(topic=\"cql\")` |\n| Search Jira | `jira_get_issue_types()` then `help(topic=\"jql\")` |\n| Non-English Jira fields | `jira_get_fields(search=\"epic\")` \u2192 use cf[ID] syntax |\n| Log/get time | `tempo_get_user_info()` first |\n| **Create table for Confluence** | `buffer_transform(..., code=\"return toTable(issues,{columns:[...]})\")` \u2192 XHTML |\n| **Create table to show user** | `buffer_transform(..., code=\"return toMarkdownTable(issues,{columns:[...]})\")` \u2192 Markdown |\n| **Iterate items for AI analysis** | `buffer_get_items(bufferId, start=0, count=50)` |\n| **Large dataset + AI columns** | Batch workflow - see `help(topic=\"buffers\")` |\n| **LLM analysis tools guide** | `help(topic=\"analysis\")` |\n\n---\n\n## Core Workflows\n\n### Edit Confluence Page (Review Workflow)\n```\n1. confluence_edit(input)\n - Accepts: URL, pageId, \"draft:ID\", or \"SPACE/Title\"\n \u2192 Returns: bufferId, structure (element IDs), pageId\n2. buffer_edit(bufferId, after=ID, content/plantuml/fromBufferId)\n \u2192 Use content=\"<p>text</p>\" for XHTML (use <br/> not <br>!)\n \u2192 Use plantuml=\"@startuml...\" for diagrams\n \u2192 Use fromBufferId=\"buf_xxx\" to merge another buffer\n3. buffer_validate_xhtml(bufferId) \u2192 check for errors before saving\n4. confluence_draft_create(pageId=..., bufferId=...)\n \u2192 Creates \"[jicon-mcp REVIEW] Title\" draft linked to original\n \u2192 Returns: reviewDraftId, draft URL for user review\n5. User reviews in Confluence UI (can share draft with team)\n6. confluence_review_publish(reviewDraftId) \u2192 applies changes to original\n OR confluence_review_discard(reviewDraftId) \u2192 cancels without changes\n```\n\n**Review Workflow Tools:**\n- `confluence_review_publish(reviewDraftId)` - Apply changes to original page\n- `confluence_review_discard(reviewDraftId)` - Discard without changes\n- `confluence_review_list()` - Find all review drafts for cleanup\n\n**Draft Management Tools:**\n- `confluence_draft_list()` - List all drafts in your personal space\n- `confluence_draft_open(draftId)` - Reopen a draft for editing\n- `confluence_draft_delete(draftId)` - Delete a draft\n\n### Create NEW Confluence Page (Buffer-First)\n```\n1. buffer_create(content=\"<h1>Title</h1><p>Content</p>\", contentType=\"xhtml\")\n \u2192 Returns: bufferId, structure (element IDs)\n2. buffer_validate_xhtml(bufferId)\n \u2192 If errors: use buffer_edit(bufferId, replace=elementId, ...) to fix\n3. confluence_draft_create(spaceKey, title, bufferId)\n \u2192 Returns: draftId, draft URL for user review\n4. User reviews and publishes via Confluence UI\n```\n\n**Why buffer-first?** Enables validation and surgical error fixing with element IDs.\n\n### Insert PlantUML Diagram\n```\n1. plantuml_validate(code=\"@startuml...\") \u2190 Validate FIRST\n2. buffer_edit(bufferId, after=ID, plantuml=\"@startuml...\")\n \u2192 Auto-wraps in Confluence macro\n```\n**Multiple diagrams?** See `help(topic=\"plantuml\")` for direct macro embedding (fewer tool calls).\n\n### Search\n```\nConfluence: confluence_search_content(cql=\"space=KEY AND text~\\\"term\\\"\")\nJira: jira_search_issues(jql=\"project=KEY AND type=Bug\")\n```\n\n### Tempo Time\n```\ntempo_get_user_info() \u2192 workerKey\ntempo_get_worklogs(dateFrom, dateTo, workerKey=workerKey)\ntempo_log_work(issueKey, hours, date)\n```\n\n---\n\n## Element ID System (Key Concept)\n\nEvery XHTML element gets a stable ID. Use IDs for precise positioning:\n\n```\nstructure: [{id:1, type:\"h1\"}, {id:2, type:\"p\"}, {id:3, type:\"ul\"}]\n\nbuffer_edit(bufferId, after=1, content=\"<p>New</p>\") \u2192 Insert after h1\nbuffer_edit(bufferId, replace=2, content=\"<p>Updated</p>\") \u2192 Replace p\nbuffer_edit(bufferId, remove=3) \u2192 Delete ul\nbuffer_edit(bufferId, append=true, plantuml=\"@startuml...\") \u2192 Add at end\n```\n\n**IDs are STABLE** - never change when content is inserted/deleted.\nSee `help(topic=\"buffers\")` for full details.\n";
11
+ declare const WORKFLOW_GUIDE = "# Jicon Quick Reference\n\nTOOLS: jira, confluence, tempo, buffer, workload, plantuml, url, date, help, whoami\n\n## Decision Tree - Which Topic?\n\n| Task | First Step |\n|------|------------|\n| **What happened on project X?** | `jira_get_activity_digest(projectKey, since=\"7d\")` \u2190 **AI analysis** |\n| **Analyze Epic progress (deep)** | `jira_analyze_epic(issueKey)` \u2190 time metrics, comments, Confluence links |\n| **Analyze Sprint progress** | `jira_analyze_sprint(sprintId)` \u2190 progress, risks, team distribution |\n| **Quick Epic status** | `jira_epic_summary(issueKey)` \u2190 lightweight hierarchy + status |\n| **List Epic children** | `jira_list_epic_children(parentKey)` \u2190 no JQL needed |\n| **Top issues by workload** | `tempo_get_top_worklogs(since=\"last_week\")` \u2190 **AI analysis** |\n| Edit Confluence page | `confluence_edit(input)` \u2190 accepts URL, pageId, or SPACE/Title |\n| Create NEW page | `buffer_create(content, contentType=\"xhtml\")` then `confluence_draft_create` |\n| Create page with diagram | `help(topic=\"plantuml\")` |\n| XHTML syntax needed | `help(topic=\"storage\")` \u2190 **READ THIS for HTML vs XHTML** |\n| Search Confluence | `help(topic=\"cql\")` |\n| Search Jira | `jira_get_issue_types()` then `help(topic=\"jql\")` |\n| Non-English Jira fields | `jira_get_fields(search=\"epic\")` \u2192 use cf[ID] syntax |\n| **Find user for JQL query** | `jira_search_users(query=\"name\")` \u2192 get username for assignee/reporter JQL |\n| **Issues worked on in period** | `tempo_get_worklogs(workerKey, dateFrom, dateTo)` \u2190 NOT JQL created/updated |\n| Log/get time | `tempo_get_user_info()` first |\n| **Create table for Confluence** | `buffer_transform(..., code=\"return toTable(issues,{columns:[...]})\")` \u2192 XHTML |\n| **Create table to show user** | `buffer_transform(..., code=\"return toMarkdownTable(issues,{columns:[...]})\")` \u2192 Markdown |\n| **Iterate items for AI analysis** | `buffer_get_items(bufferId, start=0, count=50)` |\n| **Large dataset + AI columns** | Batch workflow - see `help(topic=\"buffers\")` |\n| **LLM analysis tools guide** | `help(topic=\"analysis\")` |\n\n---\n\n## Core Workflows\n\n### Edit Confluence Page (Review Workflow)\n```\n1. confluence_edit(input)\n - Accepts: URL, pageId, \"draft:ID\", or \"SPACE/Title\"\n \u2192 Returns: bufferId, structure (element IDs), pageId\n2. buffer_edit(bufferId, after=ID, content/plantuml/fromBufferId)\n \u2192 Use content=\"<p>text</p>\" for XHTML (use <br/> not <br>!)\n \u2192 Use plantuml=\"@startuml...\" for diagrams\n \u2192 Use fromBufferId=\"buf_xxx\" to merge another buffer\n3. buffer_validate_xhtml(bufferId) \u2192 check for errors before saving\n4. confluence_draft_create(pageId=..., bufferId=...)\n \u2192 Creates \"[jicon-mcp REVIEW] Title\" draft linked to original\n \u2192 Returns: reviewDraftId, draft URL for user review\n5. User reviews in Confluence UI (can share draft with team)\n6. confluence_review_publish(reviewDraftId) \u2192 applies changes to original\n OR confluence_review_discard(reviewDraftId) \u2192 cancels without changes\n```\n\n**Review Workflow Tools:**\n- `confluence_review_publish(reviewDraftId)` - Apply changes to original page\n- `confluence_review_discard(reviewDraftId)` - Discard without changes\n- `confluence_review_list()` - Find all review drafts for cleanup\n\n**Draft Management Tools:**\n- `confluence_draft_list()` - List all drafts in your personal space\n- `confluence_draft_open(draftId)` - Reopen a draft for editing\n- `confluence_draft_delete(draftId)` - Delete a draft\n\n### Create NEW Confluence Page (Buffer-First)\n```\n1. buffer_create(content=\"<h1>Title</h1><p>Content</p>\", contentType=\"xhtml\")\n \u2192 Returns: bufferId, structure (element IDs)\n2. buffer_validate_xhtml(bufferId)\n \u2192 If errors: use buffer_edit(bufferId, replace=elementId, ...) to fix\n3. confluence_draft_create(spaceKey, title, bufferId)\n \u2192 Returns: draftId, draft URL for user review\n4. User reviews and publishes via Confluence UI\n```\n\n**Why buffer-first?** Enables validation and surgical error fixing with element IDs.\n\n### Insert PlantUML Diagram\n```\n1. plantuml_validate(code=\"@startuml...\") \u2190 Validate FIRST\n2. buffer_edit(bufferId, after=ID, plantuml=\"@startuml...\")\n \u2192 Auto-wraps in Confluence macro\n```\n**Multiple diagrams?** See `help(topic=\"plantuml\")` for direct macro embedding (fewer tool calls).\n\n### Search\n```\nConfluence: confluence_search_content(cql=\"space=KEY AND text~\\\"term\\\"\")\nJira: jira_search_issues(jql=\"project=KEY AND type=Bug\")\n```\n\n### Tempo Time\n```\ntempo_get_user_info() \u2192 workerKey\ntempo_get_worklogs(dateFrom, dateTo, workerKey=workerKey)\ntempo_log_work(issueKey, hours, date)\n```\n\n---\n\n## Element ID System (Key Concept)\n\nEvery XHTML element gets a stable ID. Use IDs for precise positioning:\n\n```\nstructure: [{id:1, type:\"h1\"}, {id:2, type:\"p\"}, {id:3, type:\"ul\"}]\n\nbuffer_edit(bufferId, after=1, content=\"<p>New</p>\") \u2192 Insert after h1\nbuffer_edit(bufferId, replace=2, content=\"<p>Updated</p>\") \u2192 Replace p\nbuffer_edit(bufferId, remove=3) \u2192 Delete ul\nbuffer_edit(bufferId, append=true, plantuml=\"@startuml...\") \u2192 Add at end\n```\n\n**IDs are STABLE** - never change when content is inserted/deleted.\nSee `help(topic=\"buffers\")` for full details.\n";
12
12
  export declare function createJiconHelpTools(): {
13
13
  help: {
14
14
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"jicon-help.d.ts","sourceRoot":"","sources":["../../src/utils/jicon-help.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIzE,QAAA,MAAM,MAAM,uEAAwE,CAAC;AACrF,KAAK,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAGrC,QAAA,MAAM,cAAc,mlKA+GnB,CAAC;AA6jCF,wBAAgB,oBAAoB;;;;;;;;;;wBA4BR;YAAE,KAAK,CAAC,EAAE,KAAK,CAAA;SAAE,KAAG,OAAO,CAAC,cAAc,CAAC;;EA2BtE;AAGD,eAAO,MAAM,gBAAgB,mBAAoB,CAAC;AAGlD,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"jicon-help.d.ts","sourceRoot":"","sources":["../../src/utils/jicon-help.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIzE,QAAA,MAAM,MAAM,uEAAwE,CAAC;AACrF,KAAK,KAAK,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;AAGrC,QAAA,MAAM,cAAc,4zKAiHnB,CAAC;AAy2BF,wBAAgB,oBAAoB;;;;;;;;;;wBA4BR;YAAE,KAAK,CAAC,EAAE,KAAK,CAAA;SAAE,KAAG,OAAO,CAAC,cAAc,CAAC;;EA2BtE;AAGD,eAAO,MAAM,gBAAgB,mBAAoB,CAAC;AAGlD,OAAO,EAAE,cAAc,EAAE,CAAC"}