@crypto512/jicon-mcp 2.2.1 → 2.3.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/PROMPT.md +10 -28
  2. package/README.md +39 -6
  3. package/TOOL_LIST.md +542 -407
  4. package/dist/config/constants.d.ts +28 -0
  5. package/dist/config/constants.d.ts.map +1 -1
  6. package/dist/config/constants.js +34 -0
  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 +12 -2
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/types.d.ts +49 -6
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +18 -0
  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/formatters.d.ts +20 -0
  19. package/dist/confluence/formatters.d.ts.map +1 -1
  20. package/dist/confluence/formatters.js +74 -8
  21. package/dist/confluence/formatters.js.map +1 -1
  22. package/dist/confluence/tools.d.ts +16 -20
  23. package/dist/confluence/tools.d.ts.map +1 -1
  24. package/dist/confluence/tools.js +71 -68
  25. package/dist/confluence/tools.js.map +1 -1
  26. package/dist/credentials/extractor.d.ts +15 -5
  27. package/dist/credentials/extractor.d.ts.map +1 -1
  28. package/dist/credentials/extractor.js +99 -12
  29. package/dist/credentials/extractor.js.map +1 -1
  30. package/dist/credentials/index.d.ts +4 -3
  31. package/dist/credentials/index.d.ts.map +1 -1
  32. package/dist/credentials/index.js +3 -2
  33. package/dist/credentials/index.js.map +1 -1
  34. package/dist/credentials/types.d.ts +22 -0
  35. package/dist/credentials/types.d.ts.map +1 -1
  36. package/dist/credentials/types.js.map +1 -1
  37. package/dist/index.js +211 -176
  38. package/dist/index.js.map +1 -1
  39. package/dist/jira/activity-tools.d.ts +8 -15
  40. package/dist/jira/activity-tools.d.ts.map +1 -1
  41. package/dist/jira/activity-tools.js +131 -90
  42. package/dist/jira/activity-tools.js.map +1 -1
  43. package/dist/jira/client.d.ts +24 -0
  44. package/dist/jira/client.d.ts.map +1 -1
  45. package/dist/jira/client.js +65 -6
  46. package/dist/jira/client.js.map +1 -1
  47. package/dist/jira/formatters.d.ts +61 -0
  48. package/dist/jira/formatters.d.ts.map +1 -1
  49. package/dist/jira/formatters.js +83 -11
  50. package/dist/jira/formatters.js.map +1 -1
  51. package/dist/jira/tools.d.ts +78 -26
  52. package/dist/jira/tools.d.ts.map +1 -1
  53. package/dist/jira/tools.js +293 -130
  54. package/dist/jira/tools.js.map +1 -1
  55. package/dist/permissions/filter.d.ts.map +1 -1
  56. package/dist/permissions/filter.js +8 -4
  57. package/dist/permissions/filter.js.map +1 -1
  58. package/dist/permissions/tool-registry.d.ts +15 -13
  59. package/dist/permissions/tool-registry.d.ts.map +1 -1
  60. package/dist/permissions/tool-registry.js +19 -10
  61. package/dist/permissions/tool-registry.js.map +1 -1
  62. package/dist/session/context.d.ts +81 -0
  63. package/dist/session/context.d.ts.map +1 -0
  64. package/dist/session/context.js +107 -0
  65. package/dist/session/context.js.map +1 -0
  66. package/dist/session/index.d.ts +12 -0
  67. package/dist/session/index.d.ts.map +1 -0
  68. package/dist/session/index.js +22 -0
  69. package/dist/session/index.js.map +1 -0
  70. package/dist/session/manager.d.ts +186 -0
  71. package/dist/session/manager.d.ts.map +1 -0
  72. package/dist/session/manager.js +383 -0
  73. package/dist/session/manager.js.map +1 -0
  74. package/dist/tempo/client.d.ts +14 -0
  75. package/dist/tempo/client.d.ts.map +1 -1
  76. package/dist/tempo/client.js +57 -0
  77. package/dist/tempo/client.js.map +1 -1
  78. package/dist/tempo/formatters.d.ts +13 -0
  79. package/dist/tempo/formatters.d.ts.map +1 -1
  80. package/dist/tempo/formatters.js +106 -20
  81. package/dist/tempo/formatters.js.map +1 -1
  82. package/dist/tempo/tools.d.ts +14 -13
  83. package/dist/tempo/tools.d.ts.map +1 -1
  84. package/dist/tempo/tools.js +203 -33
  85. package/dist/tempo/tools.js.map +1 -1
  86. package/dist/tempo/types.d.ts +20 -6
  87. package/dist/tempo/types.d.ts.map +1 -1
  88. package/dist/transport/http.d.ts +21 -5
  89. package/dist/transport/http.d.ts.map +1 -1
  90. package/dist/transport/http.js +193 -22
  91. package/dist/transport/http.js.map +1 -1
  92. package/dist/transport/index.d.ts +7 -2
  93. package/dist/transport/index.d.ts.map +1 -1
  94. package/dist/transport/index.js +10 -4
  95. package/dist/transport/index.js.map +1 -1
  96. package/dist/utils/buffer-tools.d.ts +48 -724
  97. package/dist/utils/buffer-tools.d.ts.map +1 -1
  98. package/dist/utils/buffer-tools.js +337 -170
  99. package/dist/utils/buffer-tools.js.map +1 -1
  100. package/dist/utils/content-buffer.d.ts +10 -31
  101. package/dist/utils/content-buffer.d.ts.map +1 -1
  102. package/dist/utils/content-buffer.js +12 -86
  103. package/dist/utils/content-buffer.js.map +1 -1
  104. package/dist/utils/http-client.d.ts.map +1 -1
  105. package/dist/utils/http-client.js +99 -2
  106. package/dist/utils/http-client.js.map +1 -1
  107. package/dist/utils/jicon-help.d.ts +3 -3
  108. package/dist/utils/jicon-help.d.ts.map +1 -1
  109. package/dist/utils/jicon-help.js +164 -312
  110. package/dist/utils/jicon-help.js.map +1 -1
  111. package/dist/utils/logger.d.ts +43 -0
  112. package/dist/utils/logger.d.ts.map +1 -0
  113. package/dist/utils/logger.js +102 -0
  114. package/dist/utils/logger.js.map +1 -0
  115. package/dist/utils/plantuml/tools.d.ts.map +1 -1
  116. package/dist/utils/plantuml/tools.js +10 -9
  117. package/dist/utils/plantuml/tools.js.map +1 -1
  118. package/dist/utils/response-formatter.d.ts +20 -2
  119. package/dist/utils/response-formatter.d.ts.map +1 -1
  120. package/dist/utils/response-formatter.js +147 -17
  121. package/dist/utils/response-formatter.js.map +1 -1
  122. package/dist/utils/sandbox/formatters.d.ts +25 -0
  123. package/dist/utils/sandbox/formatters.d.ts.map +1 -0
  124. package/dist/utils/sandbox/formatters.js +690 -0
  125. package/dist/utils/sandbox/formatters.js.map +1 -0
  126. package/dist/utils/sandbox/helpers.d.ts +16 -0
  127. package/dist/utils/sandbox/helpers.d.ts.map +1 -0
  128. package/dist/utils/sandbox/helpers.js +252 -0
  129. package/dist/utils/sandbox/helpers.js.map +1 -0
  130. package/dist/utils/sandbox/index.d.ts +19 -0
  131. package/dist/utils/sandbox/index.d.ts.map +1 -0
  132. package/dist/utils/sandbox/index.js +269 -0
  133. package/dist/utils/sandbox/index.js.map +1 -0
  134. package/dist/utils/sandbox/schema.d.ts +55 -0
  135. package/dist/utils/sandbox/schema.d.ts.map +1 -0
  136. package/dist/utils/sandbox/schema.js +39 -0
  137. package/dist/utils/sandbox/schema.js.map +1 -0
  138. package/dist/utils/sandbox/types.d.ts +179 -0
  139. package/dist/utils/sandbox/types.d.ts.map +1 -0
  140. package/dist/utils/sandbox/types.js +8 -0
  141. package/dist/utils/sandbox/types.js.map +1 -0
  142. package/dist/utils/schemas/confluence.d.ts +41 -0
  143. package/dist/utils/schemas/confluence.d.ts.map +1 -0
  144. package/dist/utils/schemas/confluence.js +105 -0
  145. package/dist/utils/schemas/confluence.js.map +1 -0
  146. package/dist/utils/schemas/index.d.ts +77 -0
  147. package/dist/utils/schemas/index.d.ts.map +1 -0
  148. package/dist/utils/schemas/index.js +107 -0
  149. package/dist/utils/schemas/index.js.map +1 -0
  150. package/dist/utils/schemas/jira.d.ts +49 -0
  151. package/dist/utils/schemas/jira.d.ts.map +1 -0
  152. package/dist/utils/schemas/jira.js +153 -0
  153. package/dist/utils/schemas/jira.js.map +1 -0
  154. package/dist/utils/schemas/tempo.d.ts +29 -0
  155. package/dist/utils/schemas/tempo.d.ts.map +1 -0
  156. package/dist/utils/schemas/tempo.js +72 -0
  157. package/dist/utils/schemas/tempo.js.map +1 -0
  158. package/dist/utils/whoami-tools.d.ts +17 -0
  159. package/dist/utils/whoami-tools.d.ts.map +1 -0
  160. package/dist/utils/whoami-tools.js +90 -0
  161. package/dist/utils/whoami-tools.js.map +1 -0
  162. package/dist/utils/xhtml/error-locator.js +5 -5
  163. package/dist/utils/xhtml/error-locator.js.map +1 -1
  164. package/package.json +10 -9
  165. package/dist/credentials/client-factory.d.ts +0 -64
  166. package/dist/credentials/client-factory.d.ts.map +0 -1
  167. package/dist/credentials/client-factory.js +0 -110
  168. package/dist/credentials/client-factory.js.map +0 -1
  169. package/dist/credentials/context.d.ts +0 -25
  170. package/dist/credentials/context.d.ts.map +0 -1
  171. package/dist/credentials/context.js +0 -35
  172. package/dist/credentials/context.js.map +0 -1
  173. package/dist/utils/buffer-pipeline/index.d.ts +0 -30
  174. package/dist/utils/buffer-pipeline/index.d.ts.map +0 -1
  175. package/dist/utils/buffer-pipeline/index.js +0 -317
  176. package/dist/utils/buffer-pipeline/index.js.map +0 -1
  177. package/dist/utils/buffer-pipeline/output/csv.d.ts +0 -20
  178. package/dist/utils/buffer-pipeline/output/csv.d.ts.map +0 -1
  179. package/dist/utils/buffer-pipeline/output/csv.js +0 -117
  180. package/dist/utils/buffer-pipeline/output/csv.js.map +0 -1
  181. package/dist/utils/buffer-pipeline/output/json.d.ts +0 -16
  182. package/dist/utils/buffer-pipeline/output/json.d.ts.map +0 -1
  183. package/dist/utils/buffer-pipeline/output/json.js +0 -48
  184. package/dist/utils/buffer-pipeline/output/json.js.map +0 -1
  185. package/dist/utils/buffer-pipeline/output/markdown.d.ts +0 -15
  186. package/dist/utils/buffer-pipeline/output/markdown.d.ts.map +0 -1
  187. package/dist/utils/buffer-pipeline/output/markdown.js +0 -105
  188. package/dist/utils/buffer-pipeline/output/markdown.js.map +0 -1
  189. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts +0 -16
  190. package/dist/utils/buffer-pipeline/output/xhtml-list.d.ts.map +0 -1
  191. package/dist/utils/buffer-pipeline/output/xhtml-list.js +0 -81
  192. package/dist/utils/buffer-pipeline/output/xhtml-list.js.map +0 -1
  193. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts +0 -15
  194. package/dist/utils/buffer-pipeline/output/xhtml-table.d.ts.map +0 -1
  195. package/dist/utils/buffer-pipeline/output/xhtml-table.js +0 -176
  196. package/dist/utils/buffer-pipeline/output/xhtml-table.js.map +0 -1
  197. package/dist/utils/buffer-pipeline/schema.d.ts +0 -1878
  198. package/dist/utils/buffer-pipeline/schema.d.ts.map +0 -1
  199. package/dist/utils/buffer-pipeline/schema.js +0 -168
  200. package/dist/utils/buffer-pipeline/schema.js.map +0 -1
  201. package/dist/utils/buffer-pipeline/stages/filter.d.ts +0 -32
  202. package/dist/utils/buffer-pipeline/stages/filter.d.ts.map +0 -1
  203. package/dist/utils/buffer-pipeline/stages/filter.js +0 -208
  204. package/dist/utils/buffer-pipeline/stages/filter.js.map +0 -1
  205. package/dist/utils/buffer-pipeline/stages/format.d.ts +0 -45
  206. package/dist/utils/buffer-pipeline/stages/format.d.ts.map +0 -1
  207. package/dist/utils/buffer-pipeline/stages/format.js +0 -160
  208. package/dist/utils/buffer-pipeline/stages/format.js.map +0 -1
  209. package/dist/utils/buffer-pipeline/stages/group-by.d.ts +0 -25
  210. package/dist/utils/buffer-pipeline/stages/group-by.d.ts.map +0 -1
  211. package/dist/utils/buffer-pipeline/stages/group-by.js +0 -190
  212. package/dist/utils/buffer-pipeline/stages/group-by.js.map +0 -1
  213. package/dist/utils/buffer-pipeline/stages/select.d.ts +0 -54
  214. package/dist/utils/buffer-pipeline/stages/select.d.ts.map +0 -1
  215. package/dist/utils/buffer-pipeline/stages/select.js +0 -228
  216. package/dist/utils/buffer-pipeline/stages/select.js.map +0 -1
  217. package/dist/utils/buffer-pipeline/stages/sort.d.ts +0 -20
  218. package/dist/utils/buffer-pipeline/stages/sort.d.ts.map +0 -1
  219. package/dist/utils/buffer-pipeline/stages/sort.js +0 -96
  220. package/dist/utils/buffer-pipeline/stages/sort.js.map +0 -1
  221. package/dist/utils/buffer-pipeline/types.d.ts +0 -277
  222. package/dist/utils/buffer-pipeline/types.d.ts.map +0 -1
  223. package/dist/utils/buffer-pipeline/types.js +0 -8
  224. package/dist/utils/buffer-pipeline/types.js.map +0 -1
  225. package/dist/utils/plantuml/docker-manager.d.ts +0 -37
  226. package/dist/utils/plantuml/docker-manager.d.ts.map +0 -1
  227. package/dist/utils/plantuml/docker-manager.js +0 -284
  228. package/dist/utils/plantuml/docker-manager.js.map +0 -1
@@ -0,0 +1,383 @@
1
+ /**
2
+ * Session Manager for MCP Server
3
+ *
4
+ * Manages session lifecycle with per-session:
5
+ * - Content buffers (isolated from other sessions)
6
+ * - API clients (with their caches)
7
+ * - Write-home validators
8
+ *
9
+ * Sessions are created on first request with credentials and automatically
10
+ * cleaned up after 1 hour of inactivity.
11
+ */
12
+ import { ContentBuffer } from "../utils/content-buffer.js";
13
+ import { JiraClient } from "../jira/client.js";
14
+ import { ConfluenceClient } from "../confluence/client.js";
15
+ import { TempoClient } from "../tempo/client.js";
16
+ import { WriteHomeValidator } from "../permissions/write-home-validator.js";
17
+ import { log, error as logError } from "../utils/logger.js";
18
+ import { DEFAULT_SESSION_TIMEOUT_MS, DEFAULT_MAX_SESSIONS, DEFAULT_MAX_BUFFERS, } from "../config/constants.js";
19
+ /**
20
+ * Session Manager
21
+ *
22
+ * Manages per-session state including:
23
+ * - ContentBuffer instances (isolated per session)
24
+ * - API clients with their caches
25
+ * - WriteHomeValidator instances
26
+ *
27
+ * Sessions are cleaned up after a configurable timeout of inactivity (default: 1 hour).
28
+ * The timeout is reset on actual tool calls.
29
+ */
30
+ export class SessionManager {
31
+ sessions = new Map();
32
+ config;
33
+ maxSessions;
34
+ sessionTimeoutMs;
35
+ cleanupInterval = null;
36
+ onSessionDestroyed;
37
+ constructor(config) {
38
+ this.config = config;
39
+ this.maxSessions = config.maxSessions ?? DEFAULT_MAX_SESSIONS;
40
+ this.sessionTimeoutMs = config.sessionTimeoutMs ?? DEFAULT_SESSION_TIMEOUT_MS;
41
+ this.onSessionDestroyed = config.onSessionDestroyed;
42
+ // Start cleanup interval (check every minute for timed-out sessions)
43
+ this.startCleanupInterval();
44
+ }
45
+ /**
46
+ * Start the session cleanup interval
47
+ * Checks every minute for sessions that have exceeded the timeout
48
+ */
49
+ startCleanupInterval() {
50
+ // Check every minute for timed-out sessions
51
+ this.cleanupInterval = setInterval(() => {
52
+ this.cleanupTimedOutSessions();
53
+ }, 60 * 1000);
54
+ // Don't prevent process exit
55
+ this.cleanupInterval.unref();
56
+ }
57
+ /**
58
+ * Clean up sessions that have exceeded the inactivity timeout
59
+ */
60
+ cleanupTimedOutSessions() {
61
+ const now = Date.now();
62
+ const timeoutMs = this.sessionTimeoutMs;
63
+ for (const [sessionId, session] of this.sessions) {
64
+ const idleMs = now - session.lastActivity;
65
+ if (idleMs > timeoutMs) {
66
+ const idleMinutes = Math.round(idleMs / 60000);
67
+ log(`Session timeout: ${sessionId} (inactive ${idleMinutes}min)`);
68
+ this.destroySession(sessionId);
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * Create a new session with the given credentials
74
+ * @throws Error if maximum sessions limit reached (DoS protection)
75
+ */
76
+ createSession(sessionId, credentials) {
77
+ // DoS protection: limit concurrent sessions
78
+ if (this.sessions.size >= this.maxSessions) {
79
+ throw new Error(`Maximum sessions limit reached (${this.maxSessions}). ` +
80
+ "Try again later or contact administrator.");
81
+ }
82
+ const now = Date.now();
83
+ const maxBuffers = this.config.maxBuffersPerSession ?? DEFAULT_MAX_BUFFERS;
84
+ // Create per-session clients
85
+ // Use per-request credentials if available, else fall back to defaults
86
+ const jiraConfig = this.resolveJiraConfig(credentials);
87
+ const confluenceConfig = this.resolveConfluenceConfig(credentials);
88
+ const clients = {
89
+ jira: jiraConfig ? new JiraClient(jiraConfig) : null,
90
+ confluence: confluenceConfig ? new ConfluenceClient(confluenceConfig) : null,
91
+ tempo: jiraConfig ? new TempoClient(jiraConfig) : null, // Tempo uses Jira auth
92
+ };
93
+ // Create write-home validator if Confluence available and write-home mode enabled
94
+ const writeHomeValidator = clients.confluence && this.config.writeHomeEnabled
95
+ ? new WriteHomeValidator(clients.confluence)
96
+ : null;
97
+ const session = {
98
+ sessionId,
99
+ credentials,
100
+ buffer: new ContentBuffer({ maxBuffers }),
101
+ clients,
102
+ writeHomeValidator,
103
+ createdAt: now,
104
+ lastActivity: now,
105
+ };
106
+ this.sessions.set(sessionId, session);
107
+ const jiraUrl = jiraConfig?.url || "not configured";
108
+ const confluenceUrl = confluenceConfig?.url || "not configured";
109
+ log(`Session created: ${sessionId} (jira: ${jiraUrl}, confluence: ${confluenceUrl})`);
110
+ return session;
111
+ }
112
+ /**
113
+ * Get an existing session by ID
114
+ * Updates the lastActivity timestamp on access
115
+ */
116
+ getSession(sessionId) {
117
+ const session = this.sessions.get(sessionId);
118
+ if (session) {
119
+ session.lastActivity = Date.now();
120
+ }
121
+ return session;
122
+ }
123
+ /**
124
+ * Get or create a session
125
+ * If session exists, returns it (and updates lastActivity)
126
+ * If session doesn't exist, creates it with the given credentials
127
+ *
128
+ * If existing session has different credentials than the request,
129
+ * recreates the affected clients to use the new credentials.
130
+ * This ensures per-request credential isolation in multi-user scenarios.
131
+ */
132
+ getOrCreateSession(sessionId, credentials) {
133
+ const existing = this.getSession(sessionId);
134
+ if (existing) {
135
+ // Check if credentials have changed and we need to update/create clients
136
+ const jiraTokenChanged = !!(credentials.jira?.token &&
137
+ credentials.jira.token !== existing.credentials.jira?.token);
138
+ const confluenceTokenChanged = !!(credentials.confluence?.token &&
139
+ credentials.confluence.token !== existing.credentials.confluence?.token);
140
+ const hasNewJira = !!(credentials.jira && !existing.clients.jira);
141
+ const hasNewConfluence = !!(credentials.confluence && !existing.clients.confluence);
142
+ if (jiraTokenChanged || confluenceTokenChanged || hasNewJira || hasNewConfluence) {
143
+ // Update clients in-place (don't destroy session - that would close the transport!)
144
+ const changes = [];
145
+ if (jiraTokenChanged)
146
+ changes.push("jira token");
147
+ if (confluenceTokenChanged)
148
+ changes.push("confluence token");
149
+ if (hasNewJira)
150
+ changes.push("new jira");
151
+ if (hasNewConfluence)
152
+ changes.push("new confluence");
153
+ log(`Session ${sessionId}: credentials changed (${changes.join(", ")}), updating clients`);
154
+ this.updateSessionClients(existing, credentials, { jiraTokenChanged, confluenceTokenChanged });
155
+ }
156
+ return existing;
157
+ }
158
+ return this.createSession(sessionId, credentials);
159
+ }
160
+ /**
161
+ * Update session clients in-place when credentials change
162
+ * This preserves the session and its transport connection while updating API clients
163
+ *
164
+ * @param session - The existing session to update
165
+ * @param credentials - New credentials from the request
166
+ * @param options - Flags indicating which credentials changed
167
+ */
168
+ updateSessionClients(session, credentials, options = {}) {
169
+ // Update Jira client if token changed OR if we don't have one yet
170
+ if (options.jiraTokenChanged || !session.clients.jira) {
171
+ const jiraConfig = this.resolveJiraConfig(credentials);
172
+ if (jiraConfig) {
173
+ session.clients.jira = new JiraClient(jiraConfig);
174
+ session.clients.tempo = new TempoClient(jiraConfig); // Tempo uses Jira auth
175
+ const action = options.jiraTokenChanged ? "recreated" : "created";
176
+ log(`Session ${session.sessionId}: Jira client ${action} (${jiraConfig.url})`);
177
+ }
178
+ }
179
+ // Update Confluence client if token changed OR if we don't have one yet
180
+ if (options.confluenceTokenChanged || !session.clients.confluence) {
181
+ const confluenceConfig = this.resolveConfluenceConfig(credentials);
182
+ if (confluenceConfig) {
183
+ session.clients.confluence = new ConfluenceClient(confluenceConfig);
184
+ const action = options.confluenceTokenChanged ? "recreated" : "created";
185
+ log(`Session ${session.sessionId}: Confluence client ${action} (${confluenceConfig.url})`);
186
+ // Create/update write-home validator if write-home mode enabled
187
+ if (this.config.writeHomeEnabled) {
188
+ session.writeHomeValidator = new WriteHomeValidator(session.clients.confluence);
189
+ }
190
+ }
191
+ }
192
+ // Update stored credentials (per-request overrides existing)
193
+ session.credentials = {
194
+ jira: {
195
+ ...session.credentials.jira,
196
+ ...credentials.jira,
197
+ },
198
+ confluence: {
199
+ ...session.credentials.confluence,
200
+ ...credentials.confluence,
201
+ },
202
+ };
203
+ }
204
+ /**
205
+ * Destroy a session and clean up its resources
206
+ * Also triggers onSessionDestroyed callback for transport cleanup
207
+ */
208
+ destroySession(sessionId) {
209
+ const session = this.sessions.get(sessionId);
210
+ if (session) {
211
+ // Clean up the buffer (stops cleanup interval, clears all buffers)
212
+ session.buffer.destroy();
213
+ this.sessions.delete(sessionId);
214
+ log(`Session destroyed: ${sessionId}`);
215
+ // Notify transport layer for coordinated cleanup (fix: issue #7)
216
+ if (this.onSessionDestroyed) {
217
+ try {
218
+ this.onSessionDestroyed(sessionId);
219
+ }
220
+ catch (err) {
221
+ logError(`Error in onSessionDestroyed callback for ${sessionId}`, err);
222
+ }
223
+ }
224
+ }
225
+ }
226
+ /**
227
+ * Get the number of active sessions
228
+ */
229
+ getSessionCount() {
230
+ return this.sessions.size;
231
+ }
232
+ /**
233
+ * Get the maximum sessions limit
234
+ */
235
+ getMaxSessions() {
236
+ return this.maxSessions;
237
+ }
238
+ /**
239
+ * Check if a session exists without updating its activity timestamp
240
+ */
241
+ hasSession(sessionId) {
242
+ return this.sessions.has(sessionId);
243
+ }
244
+ /**
245
+ * Update session activity timestamp without returning full session data
246
+ * Used to extend session lifetime when real activity occurs (tool calls)
247
+ *
248
+ * @returns true if session was found, false otherwise
249
+ */
250
+ touchSession(sessionId) {
251
+ const session = this.sessions.get(sessionId);
252
+ if (session) {
253
+ session.lastActivity = Date.now();
254
+ return true;
255
+ }
256
+ return false;
257
+ }
258
+ /**
259
+ * Set the callback for when a session is destroyed
260
+ * Used by HTTP transport for coordinated transport cleanup
261
+ */
262
+ setSessionDestroyedCallback(callback) {
263
+ this.onSessionDestroyed = callback;
264
+ }
265
+ /**
266
+ * Shutdown the session manager
267
+ * Destroys all sessions and stops the cleanup interval
268
+ */
269
+ shutdown() {
270
+ // Stop cleanup interval
271
+ if (this.cleanupInterval) {
272
+ clearInterval(this.cleanupInterval);
273
+ this.cleanupInterval = null;
274
+ }
275
+ // Destroy all sessions
276
+ for (const sessionId of this.sessions.keys()) {
277
+ this.destroySession(sessionId);
278
+ }
279
+ log("Session manager shutdown complete");
280
+ }
281
+ /**
282
+ * Get the session timeout in milliseconds
283
+ */
284
+ getSessionTimeoutMs() {
285
+ return this.sessionTimeoutMs;
286
+ }
287
+ /**
288
+ * Resolve Jira configuration by merging partial per-request credentials with defaults
289
+ *
290
+ * Priority: per-request > environment defaults
291
+ * - URL from header OR URL from env
292
+ * - Token from header OR token from env
293
+ * - Both must be present for a valid config
294
+ */
295
+ resolveJiraConfig(credentials) {
296
+ const defaultConfig = this.config.defaultJiraConfig;
297
+ const perRequest = credentials.jira;
298
+ // No per-request and no default → null
299
+ if (!perRequest && !defaultConfig) {
300
+ return null;
301
+ }
302
+ // Merge: per-request values override defaults
303
+ const url = perRequest?.url || defaultConfig?.url;
304
+ const token = perRequest?.token || defaultConfig?.token;
305
+ // Need both URL and token to make API calls
306
+ if (!url || !token) {
307
+ return null;
308
+ }
309
+ return {
310
+ url,
311
+ token,
312
+ // Use bearer auth if token came from per-request header, otherwise preserve default authType
313
+ authType: perRequest?.token ? "bearer" : defaultConfig?.authType,
314
+ // Preserve username from defaults for basic auth scenarios
315
+ username: perRequest?.token ? undefined : defaultConfig?.username,
316
+ };
317
+ }
318
+ /**
319
+ * Resolve Confluence configuration by merging partial per-request credentials with defaults
320
+ *
321
+ * Priority: per-request > environment defaults
322
+ * - URL from header OR URL from env
323
+ * - Token from header OR token from env
324
+ * - Both must be present for a valid config
325
+ */
326
+ resolveConfluenceConfig(credentials) {
327
+ const defaultConfig = this.config.defaultConfluenceConfig;
328
+ const perRequest = credentials.confluence;
329
+ // No per-request and no default → null
330
+ if (!perRequest && !defaultConfig) {
331
+ return null;
332
+ }
333
+ // Merge: per-request values override defaults
334
+ const url = perRequest?.url || defaultConfig?.url;
335
+ const token = perRequest?.token || defaultConfig?.token;
336
+ // Need both URL and token to make API calls
337
+ if (!url || !token) {
338
+ return null;
339
+ }
340
+ return {
341
+ url,
342
+ token,
343
+ // Use bearer auth if token came from per-request header, otherwise preserve default authType
344
+ authType: perRequest?.token ? "bearer" : defaultConfig?.authType,
345
+ // Preserve username from defaults for basic auth scenarios
346
+ username: perRequest?.token ? undefined : defaultConfig?.username,
347
+ };
348
+ }
349
+ }
350
+ // Singleton instance - initialized by the main entry point
351
+ let sessionManagerInstance = null;
352
+ /**
353
+ * Initialize the session manager singleton
354
+ * Must be called once during server startup
355
+ */
356
+ export function initializeSessionManager(config) {
357
+ if (sessionManagerInstance) {
358
+ log("Warning: Session manager already initialized, reinitializing...");
359
+ sessionManagerInstance.shutdown();
360
+ }
361
+ sessionManagerInstance = new SessionManager(config);
362
+ return sessionManagerInstance;
363
+ }
364
+ /**
365
+ * Get the session manager singleton
366
+ * Throws if not initialized
367
+ */
368
+ export function getSessionManager() {
369
+ if (!sessionManagerInstance) {
370
+ throw new Error("Session manager not initialized. Call initializeSessionManager() first.");
371
+ }
372
+ return sessionManagerInstance;
373
+ }
374
+ /**
375
+ * Shutdown the session manager singleton
376
+ */
377
+ export function shutdownSessionManager() {
378
+ if (sessionManagerInstance) {
379
+ sessionManagerInstance.shutdown();
380
+ sessionManagerInstance = null;
381
+ }
382
+ }
383
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/session/manager.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import type { TempoWorklog, TempoWorklogInput, TempoWorklogSearchResult, TempoAc
10
10
  export declare class TempoClient {
11
11
  private http;
12
12
  private cachedCurrentUser;
13
+ private userDisplayNameCache;
13
14
  constructor(config: ApiConfig);
14
15
  private resolveIssueId;
15
16
  private resolveProjectId;
@@ -41,5 +42,18 @@ export declare class TempoClient {
41
42
  * Convenience method for tools that need just the workerKey
42
43
  */
43
44
  getMyWorkerKey(): Promise<string>;
45
+ /**
46
+ * Resolve workerKey to displayName using Jira Data Center API
47
+ * Tempo DC v4 only returns workerKey, not displayName
48
+ * Results are cached to avoid repeated API calls
49
+ * @param workerKey - The worker key from Tempo (username or JIRAUSER key)
50
+ * @returns displayName if found, or workerKey as fallback
51
+ */
52
+ resolveUserDisplayName(workerKey: string): Promise<string>;
53
+ /**
54
+ * Resolve multiple workerKeys to displayNames in parallel
55
+ * Uses persistent cache to avoid repeated API calls
56
+ */
57
+ resolveUserDisplayNames(workerKeys: string[]): Promise<Map<string, string>>;
44
58
  }
45
59
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/tempo/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EACZ,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,iBAAiB,CAKT;gBAEJ,MAAM,EAAE,SAAS;YAKf,cAAc;YAKd,gBAAgB;IAMxB,WAAW,CACf,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,wBAAwB,CAAC;IA6E9B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAMpD,OAAO,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAiC9D,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACtC,OAAO,CAAC,YAAY,CAAC;IAgClB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAQtC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAMrD,aAAa,CAAC,WAAW,EAAE;QAC/B,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;KAC5B,GAAG,OAAO,CAAC,YAAY,CAAC;IAQnB,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAQhC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAI3C,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,CAAC;IA4B9B,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,CAAC;IAqD9B,cAAc,IAAI,OAAO,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAiBF;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;CAIxC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/tempo/client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,wBAAwB,EACxB,YAAY,EACZ,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,iBAAiB,CAKT;IAEhB,OAAO,CAAC,oBAAoB,CAAkC;gBAElD,MAAM,EAAE,SAAS;YAKf,cAAc;YAKd,gBAAgB;IAMxB,WAAW,CACf,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,wBAAwB,CAAC;IA6E9B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAMpD,OAAO,CAAC,WAAW,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC;IAiC9D,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,OAAO,CAAC,iBAAiB,CAAC,GACtC,OAAO,CAAC,YAAY,CAAC;IAgClB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAQtC,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAMrD,aAAa,CAAC,WAAW,EAAE;QAC/B,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;KAC5B,GAAG,OAAO,CAAC,YAAY,CAAC;IAQnB,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAQhC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAI3C,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,wBAAwB,CAAC;IA4B9B,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,CAAC;IAqD9B,cAAc,IAAI,OAAO,CAAC;QAC9B,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAiBF;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvC;;;;;;OAMG;IACG,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAgChE;;;OAGG;IACG,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAqBlF"}
@@ -6,9 +6,12 @@
6
6
  * This client automatically converts user-friendly keys to numeric IDs.
7
7
  */
8
8
  import { HttpClient } from "../utils/http-client.js";
9
+ import { debug } from "../utils/logger.js";
9
10
  export class TempoClient {
10
11
  http;
11
12
  cachedCurrentUser = null;
13
+ // Cache for resolved user display names (workerKey -> displayName)
14
+ userDisplayNameCache = new Map();
12
15
  constructor(config) {
13
16
  this.http = new HttpClient(config);
14
17
  }
@@ -251,5 +254,59 @@ export class TempoClient {
251
254
  const user = await this.getCurrentUser();
252
255
  return user.key;
253
256
  }
257
+ /**
258
+ * Resolve workerKey to displayName using Jira Data Center API
259
+ * Tempo DC v4 only returns workerKey, not displayName
260
+ * Results are cached to avoid repeated API calls
261
+ * @param workerKey - The worker key from Tempo (username or JIRAUSER key)
262
+ * @returns displayName if found, or workerKey as fallback
263
+ */
264
+ async resolveUserDisplayName(workerKey) {
265
+ // Check cache first
266
+ if (this.userDisplayNameCache.has(workerKey)) {
267
+ return this.userDisplayNameCache.get(workerKey);
268
+ }
269
+ let displayName = workerKey; // Default fallback
270
+ try {
271
+ // Jira DC API: try with username parameter first (most common case)
272
+ const user = await this.http.get(`/rest/api/2/user?username=${encodeURIComponent(workerKey)}`);
273
+ displayName = user.displayName || user.name || workerKey;
274
+ }
275
+ catch {
276
+ // If username lookup fails, try with key parameter (for JIRAUSER format)
277
+ try {
278
+ const user = await this.http.get(`/rest/api/2/user?key=${encodeURIComponent(workerKey)}`);
279
+ displayName = user.displayName || user.name || workerKey;
280
+ }
281
+ catch {
282
+ // User not found - use workerKey as fallback
283
+ debug(`User lookup failed for workerKey: ${workerKey}, using as-is`);
284
+ }
285
+ }
286
+ // Cache the result
287
+ this.userDisplayNameCache.set(workerKey, displayName);
288
+ return displayName;
289
+ }
290
+ /**
291
+ * Resolve multiple workerKeys to displayNames in parallel
292
+ * Uses persistent cache to avoid repeated API calls
293
+ */
294
+ async resolveUserDisplayNames(workerKeys) {
295
+ const uniqueKeys = [...new Set(workerKeys.filter(Boolean))];
296
+ const result = new Map();
297
+ // Identify keys that need resolution (not in cache)
298
+ const uncachedKeys = uniqueKeys.filter(key => !this.userDisplayNameCache.has(key));
299
+ // Resolve uncached keys in parallel batches (5 at a time to avoid rate limiting)
300
+ const batchSize = 5;
301
+ for (let i = 0; i < uncachedKeys.length; i += batchSize) {
302
+ const batch = uncachedKeys.slice(i, i + batchSize);
303
+ await Promise.all(batch.map(key => this.resolveUserDisplayName(key)));
304
+ }
305
+ // Build result map from cache
306
+ for (const key of uniqueKeys) {
307
+ result.set(key, this.userDisplayNameCache.get(key) || key);
308
+ }
309
+ return result;
310
+ }
254
311
  }
255
312
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/tempo/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/tempo/client.ts"],"names":[],"mappings":"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"}
@@ -31,4 +31,17 @@ export declare function formatTeam(team: TempoTeam): string;
31
31
  * Format list of teams
32
32
  */
33
33
  export declare function formatTeams(teams: TempoTeam[]): string;
34
+ /**
35
+ * Extract worklog metadata for buffered responses (matches tempo_worklog schema)
36
+ * Accepts enriched worklogs with optional workerKey (from mapping)
37
+ */
38
+ export declare function formatWorklogMetadata(worklog: Record<string, unknown>): Record<string, unknown>;
39
+ /**
40
+ * Extract account metadata for buffered responses (matches tempo_account schema)
41
+ */
42
+ export declare function formatAccountMetadata(account: TempoAccount): Record<string, unknown>;
43
+ /**
44
+ * Extract team metadata for buffered responses (matches tempo_team schema)
45
+ */
46
+ export declare function formatTeamMetadata(team: TempoTeam): Record<string, unknown>;
34
47
  //# sourceMappingURL=formatters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/tempo/formatters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,wBAAwB,EACxB,YAAY,EACZ,SAAS,EACV,MAAM,YAAY,CAAC;AAGpB;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6BrG;AAGD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CA2C3D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,wBAAwB,GAC/B,MAAM,CAyER;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAwB3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAqB/D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAoClD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAoBtD"}
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/tempo/formatters.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,wBAAwB,EACxB,YAAY,EACZ,SAAS,EACV,MAAM,YAAY,CAAC;AAWpB;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA6BrG;AAmBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAsD3D;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,wBAAwB,GAC/B,MAAM,CA0ER;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAwB3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,MAAM,CAqB/D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAoClD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,CAoBtD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkB/F;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUpF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAY3E"}