@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
@@ -1,37 +0,0 @@
1
- /**
2
- * PlantUML Docker Container Manager
3
- *
4
- * Manages the lifecycle of PlantUML server Docker containers.
5
- * - Lazy initialization on first use
6
- * - Dynamic port allocation
7
- * - Graceful shutdown on process exit
8
- * - Multi-instance support (each MCP gets unique container)
9
- */
10
- import type { ContainerState, PlantUmlConfig } from "./types.js";
11
- /**
12
- * Start a new PlantUML container
13
- */
14
- export declare function startContainer(config?: PlantUmlConfig): Promise<ContainerState>;
15
- /**
16
- * Get current container state (if running)
17
- */
18
- export declare function getContainerState(): ContainerState | null;
19
- /**
20
- * Check if container is running and healthy
21
- */
22
- export declare function isContainerHealthy(): Promise<boolean>;
23
- /**
24
- * Stop and remove the container
25
- */
26
- export declare function stopContainer(): Promise<void>;
27
- /**
28
- * Ensure container is running.
29
- * Does NOT auto-restart if container died - throws error instead.
30
- * Container should be started once at MCP startup via startContainer().
31
- */
32
- export declare function ensureContainer(config?: PlantUmlConfig): Promise<ContainerState>;
33
- /**
34
- * Clean up any orphaned Jicon PlantUML containers from previous runs
35
- */
36
- export declare function cleanupOrphanedContainers(): Promise<number>;
37
- //# sourceMappingURL=docker-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docker-manager.d.ts","sourceRoot":"","sources":["../../../src/utils/plantuml/docker-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAmHjE;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,GAAE,cAAmB,GAC1B,OAAO,CAAC,cAAc,CAAC,CAoFzB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,IAAI,CAEzD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAc3D;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAenD;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC,CAezB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC,CAiCjE"}
@@ -1,284 +0,0 @@
1
- /**
2
- * PlantUML Docker Container Manager
3
- *
4
- * Manages the lifecycle of PlantUML server Docker containers.
5
- * - Lazy initialization on first use
6
- * - Dynamic port allocation
7
- * - Graceful shutdown on process exit
8
- * - Multi-instance support (each MCP gets unique container)
9
- */
10
- import Docker from "dockerode";
11
- import getPort from "get-port";
12
- import { DEFAULT_PLANTUML_CONFIG } from "./types.js";
13
- const docker = new Docker();
14
- /**
15
- * Container manager instance - singleton per process
16
- */
17
- let containerState = null;
18
- let startupPromise = null;
19
- let shutdownRegistered = false;
20
- /**
21
- * Generate unique container name for this MCP instance
22
- */
23
- function generateContainerName() {
24
- return `jicon-plantuml-${process.pid}-${Date.now()}`;
25
- }
26
- /**
27
- * Wait for container to be healthy (PlantUML server responding)
28
- */
29
- async function waitForHealthy(baseUrl, timeoutMs) {
30
- const startTime = Date.now();
31
- const checkInterval = 500;
32
- while (Date.now() - startTime < timeoutMs) {
33
- try {
34
- const response = await fetch(baseUrl, {
35
- method: "GET",
36
- signal: AbortSignal.timeout(2000),
37
- });
38
- if (response.ok) {
39
- return true;
40
- }
41
- }
42
- catch {
43
- // Server not ready yet, continue polling
44
- }
45
- await new Promise((resolve) => setTimeout(resolve, checkInterval));
46
- }
47
- return false;
48
- }
49
- /**
50
- * Register shutdown handlers to clean up container on process exit
51
- */
52
- function registerShutdownHandlers() {
53
- if (shutdownRegistered)
54
- return;
55
- shutdownRegistered = true;
56
- const cleanup = async () => {
57
- if (containerState) {
58
- try {
59
- const container = docker.getContainer(containerState.containerId);
60
- await container.stop({ t: 5 });
61
- await container.remove({ force: true });
62
- }
63
- catch {
64
- // Container may already be stopped/removed
65
- }
66
- containerState = null;
67
- }
68
- };
69
- // Handle graceful shutdown
70
- process.on("SIGINT", async () => {
71
- await cleanup();
72
- process.exit(0);
73
- });
74
- process.on("SIGTERM", async () => {
75
- await cleanup();
76
- process.exit(0);
77
- });
78
- // Handle unexpected exits
79
- process.on("beforeExit", async () => {
80
- await cleanup();
81
- });
82
- // Handle uncaught exceptions - try to cleanup
83
- process.on("uncaughtException", async (err) => {
84
- console.error("Uncaught exception, cleaning up PlantUML container:", err);
85
- await cleanup();
86
- process.exit(1);
87
- });
88
- }
89
- /**
90
- * Pull Docker image if not present
91
- */
92
- async function ensureImage(imageName) {
93
- try {
94
- await docker.getImage(imageName).inspect();
95
- }
96
- catch {
97
- // Image not found, pull it
98
- console.error(`Pulling PlantUML image: ${imageName}...`);
99
- await new Promise((resolve, reject) => {
100
- docker.pull(imageName, (err, stream) => {
101
- if (err) {
102
- reject(err);
103
- return;
104
- }
105
- docker.modem.followProgress(stream, (err) => {
106
- if (err)
107
- reject(err);
108
- else
109
- resolve();
110
- });
111
- });
112
- });
113
- }
114
- }
115
- /**
116
- * Start a new PlantUML container
117
- */
118
- export async function startContainer(config = {}) {
119
- // If already started or starting, return existing/pending state
120
- if (containerState?.ready) {
121
- return containerState;
122
- }
123
- if (startupPromise) {
124
- return startupPromise;
125
- }
126
- const mergedConfig = { ...DEFAULT_PLANTUML_CONFIG, ...config };
127
- startupPromise = (async () => {
128
- try {
129
- // Register cleanup handlers
130
- registerShutdownHandlers();
131
- // Ensure image is available
132
- await ensureImage(mergedConfig.image);
133
- // Find available port
134
- const port = await getPort({
135
- port: Array.from({ length: mergedConfig.portRangeEnd - mergedConfig.portRangeStart }, (_, i) => mergedConfig.portRangeStart + i),
136
- });
137
- const containerName = generateContainerName();
138
- const baseUrl = `http://localhost:${port}`;
139
- // Create and start container
140
- const container = await docker.createContainer({
141
- name: containerName,
142
- Image: mergedConfig.image,
143
- ExposedPorts: {
144
- "8080/tcp": {},
145
- },
146
- HostConfig: {
147
- PortBindings: {
148
- "8080/tcp": [{ HostPort: port.toString() }],
149
- },
150
- AutoRemove: true,
151
- },
152
- Labels: {
153
- "jicon.managed": "true",
154
- "jicon.pid": process.pid.toString(),
155
- },
156
- });
157
- await container.start();
158
- // Wait for PlantUML server to be ready
159
- const healthy = await waitForHealthy(baseUrl, mergedConfig.startupTimeout);
160
- if (!healthy) {
161
- // Cleanup failed container
162
- try {
163
- await container.stop({ t: 1 });
164
- await container.remove({ force: true });
165
- }
166
- catch {
167
- // Ignore cleanup errors
168
- }
169
- throw new Error(`PlantUML container failed to become healthy within ${mergedConfig.startupTimeout}ms`);
170
- }
171
- containerState = {
172
- containerId: container.id,
173
- containerName,
174
- port,
175
- baseUrl,
176
- ready: true,
177
- };
178
- return containerState;
179
- }
180
- catch (error) {
181
- startupPromise = null;
182
- throw error;
183
- }
184
- })();
185
- return startupPromise;
186
- }
187
- /**
188
- * Get current container state (if running)
189
- */
190
- export function getContainerState() {
191
- return containerState;
192
- }
193
- /**
194
- * Check if container is running and healthy
195
- */
196
- export async function isContainerHealthy() {
197
- if (!containerState?.ready) {
198
- return false;
199
- }
200
- try {
201
- const response = await fetch(containerState.baseUrl, {
202
- method: "GET",
203
- signal: AbortSignal.timeout(2000),
204
- });
205
- return response.ok;
206
- }
207
- catch {
208
- return false;
209
- }
210
- }
211
- /**
212
- * Stop and remove the container
213
- */
214
- export async function stopContainer() {
215
- if (!containerState) {
216
- return;
217
- }
218
- try {
219
- const container = docker.getContainer(containerState.containerId);
220
- await container.stop({ t: 5 });
221
- // AutoRemove is set, so container will be removed automatically
222
- }
223
- catch {
224
- // Container may already be stopped
225
- }
226
- containerState = null;
227
- startupPromise = null;
228
- }
229
- /**
230
- * Ensure container is running.
231
- * Does NOT auto-restart if container died - throws error instead.
232
- * Container should be started once at MCP startup via startContainer().
233
- */
234
- export async function ensureContainer(config) {
235
- // Check if existing container is healthy
236
- if (containerState?.ready) {
237
- const healthy = await isContainerHealthy();
238
- if (healthy) {
239
- return containerState;
240
- }
241
- // Container died - do NOT restart, throw error
242
- containerState = null;
243
- startupPromise = null;
244
- throw new Error("PlantUML container has stopped. Restart the MCP server to retry.");
245
- }
246
- // Only start if never started before
247
- return startContainer(config);
248
- }
249
- /**
250
- * Clean up any orphaned Jicon PlantUML containers from previous runs
251
- */
252
- export async function cleanupOrphanedContainers() {
253
- let cleaned = 0;
254
- try {
255
- const containers = await docker.listContainers({
256
- all: true,
257
- filters: {
258
- label: ["jicon.managed=true"],
259
- },
260
- });
261
- for (const containerInfo of containers) {
262
- // Don't remove our own container
263
- if (containerState && containerInfo.Id === containerState.containerId) {
264
- continue;
265
- }
266
- try {
267
- const container = docker.getContainer(containerInfo.Id);
268
- if (containerInfo.State === "running") {
269
- await container.stop({ t: 1 });
270
- }
271
- await container.remove({ force: true });
272
- cleaned++;
273
- }
274
- catch {
275
- // Ignore errors for individual containers
276
- }
277
- }
278
- }
279
- catch {
280
- // Docker may not be available
281
- }
282
- return cleaned;
283
- }
284
- //# sourceMappingURL=docker-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"docker-manager.js","sourceRoot":"","sources":["../../../src/utils/plantuml/docker-manager.ts"],"names":[],"mappings":"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"}