@crypto512/jicon-mcp 0.7.1 → 1.0.1

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 (129) hide show
  1. package/README.md +128 -395
  2. package/TOOL_LIST.md +810 -120
  3. package/dist/config/constants.d.ts +1 -0
  4. package/dist/config/constants.d.ts.map +1 -1
  5. package/dist/config/constants.js +1 -0
  6. package/dist/config/constants.js.map +1 -1
  7. package/dist/config/loader.d.ts +1 -0
  8. package/dist/config/loader.d.ts.map +1 -1
  9. package/dist/config/loader.js +27 -1
  10. package/dist/config/loader.js.map +1 -1
  11. package/dist/config/types.d.ts +8 -0
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/config/types.js +2 -0
  14. package/dist/config/types.js.map +1 -1
  15. package/dist/confluence/client.d.ts +38 -0
  16. package/dist/confluence/client.d.ts.map +1 -1
  17. package/dist/confluence/client.js +117 -0
  18. package/dist/confluence/client.js.map +1 -1
  19. package/dist/confluence/tools.d.ts +102 -75
  20. package/dist/confluence/tools.d.ts.map +1 -1
  21. package/dist/confluence/tools.js +510 -151
  22. package/dist/confluence/tools.js.map +1 -1
  23. package/dist/confluence/types.d.ts +55 -1
  24. package/dist/confluence/types.d.ts.map +1 -1
  25. package/dist/index.js +88 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/jira/tools.d.ts +0 -5
  28. package/dist/jira/tools.d.ts.map +1 -1
  29. package/dist/jira/tools.js +40 -87
  30. package/dist/jira/tools.js.map +1 -1
  31. package/dist/permissions/filter.d.ts +5 -0
  32. package/dist/permissions/filter.d.ts.map +1 -1
  33. package/dist/permissions/filter.js +29 -12
  34. package/dist/permissions/filter.js.map +1 -1
  35. package/dist/permissions/tool-registry.d.ts +23 -25
  36. package/dist/permissions/tool-registry.d.ts.map +1 -1
  37. package/dist/permissions/tool-registry.js +41 -45
  38. package/dist/permissions/tool-registry.js.map +1 -1
  39. package/dist/permissions/write-home-validator.d.ts +35 -0
  40. package/dist/permissions/write-home-validator.d.ts.map +1 -0
  41. package/dist/permissions/write-home-validator.js +140 -0
  42. package/dist/permissions/write-home-validator.js.map +1 -0
  43. package/dist/tempo/tools.d.ts.map +1 -1
  44. package/dist/tempo/tools.js +43 -44
  45. package/dist/tempo/tools.js.map +1 -1
  46. package/dist/utils/buffer-tools.d.ts +119 -1
  47. package/dist/utils/buffer-tools.d.ts.map +1 -1
  48. package/dist/utils/buffer-tools.js +610 -3
  49. package/dist/utils/buffer-tools.js.map +1 -1
  50. package/dist/utils/content-buffer.d.ts +34 -0
  51. package/dist/utils/content-buffer.d.ts.map +1 -1
  52. package/dist/utils/content-buffer.js +79 -0
  53. package/dist/utils/content-buffer.js.map +1 -1
  54. package/dist/utils/http-client.d.ts.map +1 -1
  55. package/dist/utils/http-client.js +4 -4
  56. package/dist/utils/http-client.js.map +1 -1
  57. package/dist/utils/jicon-help.d.ts +29 -0
  58. package/dist/utils/jicon-help.d.ts.map +1 -0
  59. package/dist/utils/jicon-help.js +873 -0
  60. package/dist/utils/jicon-help.js.map +1 -0
  61. package/dist/utils/plantuml/client.d.ts +40 -0
  62. package/dist/utils/plantuml/client.d.ts.map +1 -0
  63. package/dist/utils/plantuml/client.js +306 -0
  64. package/dist/utils/plantuml/client.js.map +1 -0
  65. package/dist/utils/plantuml/docker-manager.d.ts +35 -0
  66. package/dist/utils/plantuml/docker-manager.d.ts.map +1 -0
  67. package/dist/utils/plantuml/docker-manager.js +280 -0
  68. package/dist/utils/plantuml/docker-manager.js.map +1 -0
  69. package/dist/utils/plantuml/index.d.ts +11 -0
  70. package/dist/utils/plantuml/index.d.ts.map +1 -0
  71. package/dist/utils/plantuml/index.js +16 -0
  72. package/dist/utils/plantuml/index.js.map +1 -0
  73. package/dist/utils/plantuml/service.d.ts +46 -0
  74. package/dist/utils/plantuml/service.d.ts.map +1 -0
  75. package/dist/utils/plantuml/service.js +96 -0
  76. package/dist/utils/plantuml/service.js.map +1 -0
  77. package/dist/utils/plantuml/tools.d.ts +65 -0
  78. package/dist/utils/plantuml/tools.d.ts.map +1 -0
  79. package/dist/utils/plantuml/tools.js +272 -0
  80. package/dist/utils/plantuml/tools.js.map +1 -0
  81. package/dist/utils/plantuml/types.d.ts +130 -0
  82. package/dist/utils/plantuml/types.d.ts.map +1 -0
  83. package/dist/utils/plantuml/types.js +66 -0
  84. package/dist/utils/plantuml/types.js.map +1 -0
  85. package/dist/utils/response-formatter.d.ts +14 -0
  86. package/dist/utils/response-formatter.d.ts.map +1 -1
  87. package/dist/utils/response-formatter.js +84 -1
  88. package/dist/utils/response-formatter.js.map +1 -1
  89. package/dist/utils/url-tools.d.ts +49 -0
  90. package/dist/utils/url-tools.d.ts.map +1 -0
  91. package/dist/utils/url-tools.js +141 -0
  92. package/dist/utils/url-tools.js.map +1 -0
  93. package/dist/utils/xhtml/confluence-schema.d.ts +55 -0
  94. package/dist/utils/xhtml/confluence-schema.d.ts.map +1 -0
  95. package/dist/utils/xhtml/confluence-schema.js +215 -0
  96. package/dist/utils/xhtml/confluence-schema.js.map +1 -0
  97. package/dist/utils/xhtml/index.d.ts +17 -0
  98. package/dist/utils/xhtml/index.d.ts.map +1 -0
  99. package/dist/utils/xhtml/index.js +21 -0
  100. package/dist/utils/xhtml/index.js.map +1 -0
  101. package/dist/utils/xhtml/operations.d.ts +100 -0
  102. package/dist/utils/xhtml/operations.d.ts.map +1 -0
  103. package/dist/utils/xhtml/operations.js +596 -0
  104. package/dist/utils/xhtml/operations.js.map +1 -0
  105. package/dist/utils/xhtml/parser.d.ts +64 -0
  106. package/dist/utils/xhtml/parser.d.ts.map +1 -0
  107. package/dist/utils/xhtml/parser.js +180 -0
  108. package/dist/utils/xhtml/parser.js.map +1 -0
  109. package/dist/utils/xhtml/plantuml.d.ts +112 -0
  110. package/dist/utils/xhtml/plantuml.d.ts.map +1 -0
  111. package/dist/utils/xhtml/plantuml.js +251 -0
  112. package/dist/utils/xhtml/plantuml.js.map +1 -0
  113. package/dist/utils/xhtml/selector.d.ts +35 -0
  114. package/dist/utils/xhtml/selector.d.ts.map +1 -0
  115. package/dist/utils/xhtml/selector.js +358 -0
  116. package/dist/utils/xhtml/selector.js.map +1 -0
  117. package/dist/utils/xhtml/serializer.d.ts +26 -0
  118. package/dist/utils/xhtml/serializer.d.ts.map +1 -0
  119. package/dist/utils/xhtml/serializer.js +170 -0
  120. package/dist/utils/xhtml/serializer.js.map +1 -0
  121. package/dist/utils/xhtml/types.d.ts +134 -0
  122. package/dist/utils/xhtml/types.d.ts.map +1 -0
  123. package/dist/utils/xhtml/types.js +65 -0
  124. package/dist/utils/xhtml/types.js.map +1 -0
  125. package/dist/utils/xhtml/validator.d.ts +67 -0
  126. package/dist/utils/xhtml/validator.d.ts.map +1 -0
  127. package/dist/utils/xhtml/validator.js +300 -0
  128. package/dist/utils/xhtml/validator.js.map +1 -0
  129. package/package.json +5 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jicon-help.js","sourceRoot":"","sources":["../../src/utils/jicon-help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * PlantUML HTTP Client
3
+ *
4
+ * HTTP client for communicating with PlantUML server.
5
+ * Handles encoding, request/response parsing, and error extraction.
6
+ */
7
+ import type { PlantUmlValidationResult, PlantUmlRenderResult, RenderFormat, DiagramType } from "./types.js";
8
+ /**
9
+ * Encode PlantUML code for URL
10
+ */
11
+ export declare function encodePlantUml(code: string): string;
12
+ /**
13
+ * Normalize PlantUML code by ensuring @startuml/@enduml markers
14
+ */
15
+ export declare function normalizePlantUml(code: string): string;
16
+ /**
17
+ * Detect diagram type from PlantUML code
18
+ */
19
+ export declare function detectDiagramType(code: string): DiagramType;
20
+ /**
21
+ * PlantUML HTTP Client
22
+ */
23
+ export declare class PlantUmlClient {
24
+ private baseUrl;
25
+ private timeoutMs;
26
+ constructor(baseUrl: string, timeoutMs?: number);
27
+ /**
28
+ * Validate PlantUML syntax by attempting to render it
29
+ */
30
+ validate(code: string): Promise<PlantUmlValidationResult>;
31
+ /**
32
+ * Render PlantUML diagram to specified format
33
+ */
34
+ render(code: string, format: RenderFormat): Promise<PlantUmlRenderResult>;
35
+ /**
36
+ * Check if server is healthy
37
+ */
38
+ healthCheck(): Promise<boolean>;
39
+ }
40
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/utils/plantuml/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EAEpB,YAAY,EACZ,WAAW,EACZ,MAAM,YAAY,CAAC;AAmCpB;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAetD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CA8E3D;AA6DD;;GAEG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,SAAS;gBAAlC,OAAO,EAAE,MAAM,EAAU,SAAS,GAAE,MAAc;IAEtE;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAmE/D;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA4C/E;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAWtC"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * PlantUML HTTP Client
3
+ *
4
+ * HTTP client for communicating with PlantUML server.
5
+ * Handles encoding, request/response parsing, and error extraction.
6
+ */
7
+ import { deflateSync } from "zlib";
8
+ /**
9
+ * PlantUML text encoding - uses deflate + custom base64
10
+ * Based on: https://plantuml.com/text-encoding
11
+ */
12
+ function encode64(data) {
13
+ const chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_";
14
+ let result = "";
15
+ for (let i = 0; i < data.length; i += 3) {
16
+ const b1 = data[i] || 0;
17
+ const b2 = data[i + 1] || 0;
18
+ const b3 = data[i + 2] || 0;
19
+ const c1 = b1 >> 2;
20
+ const c2 = ((b1 & 0x3) << 4) | (b2 >> 4);
21
+ const c3 = ((b2 & 0xf) << 2) | (b3 >> 6);
22
+ const c4 = b3 & 0x3f;
23
+ result += chars[c1];
24
+ result += chars[c2];
25
+ if (i + 1 < data.length) {
26
+ result += chars[c3];
27
+ }
28
+ if (i + 2 < data.length) {
29
+ result += chars[c4];
30
+ }
31
+ }
32
+ return result;
33
+ }
34
+ /**
35
+ * Encode PlantUML code for URL
36
+ */
37
+ export function encodePlantUml(code) {
38
+ const deflated = deflateSync(Buffer.from(code, "utf-8"), { level: 9 });
39
+ return encode64(deflated);
40
+ }
41
+ /**
42
+ * Normalize PlantUML code by ensuring @startuml/@enduml markers
43
+ */
44
+ export function normalizePlantUml(code) {
45
+ let normalized = code.trim();
46
+ const hasStart = /^@startuml\b/im.test(normalized);
47
+ const hasEnd = /@enduml\s*$/im.test(normalized);
48
+ if (!hasStart) {
49
+ normalized = "@startuml\n" + normalized;
50
+ }
51
+ if (!hasEnd) {
52
+ normalized = normalized + "\n@enduml";
53
+ }
54
+ return normalized;
55
+ }
56
+ /**
57
+ * Detect diagram type from PlantUML code
58
+ */
59
+ export function detectDiagramType(code) {
60
+ const patterns = [
61
+ // Explicit diagram types
62
+ { pattern: /@startmindmap/i, type: "mindmap" },
63
+ { pattern: /@startgantt/i, type: "gantt" },
64
+ { pattern: /@startwbs/i, type: "wbs" },
65
+ { pattern: /@startjson/i, type: "json" },
66
+ { pattern: /@startyaml/i, type: "yaml" },
67
+ // C4 Model diagram indicators (check early - uses include directive and special macros)
68
+ { pattern: /!include.*C4_Context\.puml/i, type: "c4" },
69
+ { pattern: /!include.*C4_Container\.puml/i, type: "c4" },
70
+ { pattern: /!include.*C4_Component\.puml/i, type: "c4" },
71
+ { pattern: /!include.*C4_Dynamic\.puml/i, type: "c4" },
72
+ { pattern: /!include.*C4_Deployment\.puml/i, type: "c4" },
73
+ { pattern: /\bPerson\s*\(/i, type: "c4" },
74
+ { pattern: /\bPerson_Ext\s*\(/i, type: "c4" },
75
+ { pattern: /\bSystem\s*\(/i, type: "c4" },
76
+ { pattern: /\bSystem_Ext\s*\(/i, type: "c4" },
77
+ { pattern: /\bSystem_Boundary\s*\(/i, type: "c4" },
78
+ { pattern: /\bContainer\s*\(/i, type: "c4" },
79
+ { pattern: /\bContainer_Ext\s*\(/i, type: "c4" },
80
+ { pattern: /\bContainer_Boundary\s*\(/i, type: "c4" },
81
+ { pattern: /\bComponent\s*\(/i, type: "c4" },
82
+ { pattern: /\bComponent_Ext\s*\(/i, type: "c4" },
83
+ { pattern: /\bRel\s*\(/i, type: "c4" },
84
+ { pattern: /\bRel_Back\s*\(/i, type: "c4" },
85
+ { pattern: /\bRel_Neighbor\s*\(/i, type: "c4" },
86
+ // Class diagram indicators
87
+ { pattern: /\bclass\s+\w+/i, type: "class" },
88
+ { pattern: /\binterface\s+\w+/i, type: "class" },
89
+ { pattern: /\babstract\s+class/i, type: "class" },
90
+ { pattern: /\benum\s+\w+/i, type: "class" },
91
+ // Sequence diagram indicators
92
+ { pattern: /\bparticipant\s+/i, type: "sequence" },
93
+ { pattern: /\bactor\s+.*:/i, type: "sequence" },
94
+ { pattern: /\b\w+\s*->>?\s*\w+\s*:/i, type: "sequence" },
95
+ // Activity diagram indicators
96
+ { pattern: /\bstart\s*$/im, type: "activity" },
97
+ { pattern: /:.*;\s*$/m, type: "activity" },
98
+ { pattern: /\bif\s*\(.*\)\s*then/i, type: "activity" },
99
+ // State diagram indicators
100
+ { pattern: /\bstate\s+/i, type: "state" },
101
+ { pattern: /\[\*\]\s*-->/i, type: "state" },
102
+ { pattern: /-->\s*\[\*\]/i, type: "state" },
103
+ // Component diagram indicators
104
+ { pattern: /\bcomponent\s+/i, type: "component" },
105
+ { pattern: /\[.*\]\s*-->/i, type: "component" },
106
+ { pattern: /\bpackage\s+"[^"]+"\s*\{/i, type: "component" },
107
+ // Use case diagram indicators
108
+ { pattern: /\busecase\s+/i, type: "usecase" },
109
+ { pattern: /\bactor\s+\w+\s*$/im, type: "usecase" },
110
+ // Object diagram indicators
111
+ { pattern: /\bobject\s+/i, type: "object" },
112
+ // Deployment diagram indicators
113
+ { pattern: /\bnode\s+/i, type: "deployment" },
114
+ { pattern: /\bdatabase\s+/i, type: "deployment" },
115
+ // Timing diagram indicators
116
+ { pattern: /\bconcise\s+/i, type: "timing" },
117
+ { pattern: /\brobust\s+/i, type: "timing" },
118
+ ];
119
+ for (const { pattern, type } of patterns) {
120
+ if (pattern.test(code)) {
121
+ return type;
122
+ }
123
+ }
124
+ return "unknown";
125
+ }
126
+ /**
127
+ * Parse error message from PlantUML server response
128
+ */
129
+ function parseErrors(errorText, code) {
130
+ const errors = [];
131
+ const lines = code.split("\n");
132
+ // PlantUML error patterns:
133
+ // "Syntax Error?" followed by line content
134
+ // "Error line X" pattern
135
+ // Or just the error message
136
+ const errorLinePattern = /error\s+(?:at\s+)?line\s+(\d+)/i;
137
+ const syntaxErrorPattern = /syntax error/i;
138
+ const lineMatch = errorText.match(errorLinePattern);
139
+ if (lineMatch) {
140
+ const lineNum = parseInt(lineMatch[1], 10);
141
+ errors.push({
142
+ line: lineNum,
143
+ message: errorText.trim(),
144
+ suggestion: lineNum <= lines.length ? `Check line: "${lines[lineNum - 1]?.trim()}"` : undefined,
145
+ });
146
+ }
147
+ else if (syntaxErrorPattern.test(errorText)) {
148
+ // Try to find the problematic line from error text
149
+ // PlantUML often includes the problematic text in the error
150
+ errors.push({
151
+ line: 1,
152
+ message: errorText.trim(),
153
+ });
154
+ }
155
+ else {
156
+ // Generic error
157
+ errors.push({
158
+ line: 1,
159
+ message: errorText.trim(),
160
+ });
161
+ }
162
+ return errors;
163
+ }
164
+ /**
165
+ * Format mapping for PlantUML endpoints
166
+ */
167
+ const FORMAT_ENDPOINTS = {
168
+ ascii: "/txt",
169
+ png: "/png",
170
+ svg: "/svg",
171
+ eps: "/eps",
172
+ };
173
+ const FORMAT_CONTENT_TYPES = {
174
+ ascii: "text/plain",
175
+ png: "image/png",
176
+ svg: "image/svg+xml",
177
+ eps: "application/postscript",
178
+ };
179
+ /**
180
+ * PlantUML HTTP Client
181
+ */
182
+ export class PlantUmlClient {
183
+ baseUrl;
184
+ timeoutMs;
185
+ constructor(baseUrl, timeoutMs = 30000) {
186
+ this.baseUrl = baseUrl;
187
+ this.timeoutMs = timeoutMs;
188
+ }
189
+ /**
190
+ * Validate PlantUML syntax by attempting to render it
191
+ */
192
+ async validate(code) {
193
+ const normalizedCode = normalizePlantUml(code);
194
+ const diagramType = detectDiagramType(normalizedCode);
195
+ const encoded = encodePlantUml(normalizedCode);
196
+ try {
197
+ // Use TXT endpoint for validation - returns plain text errors (not SVG)
198
+ const response = await fetch(`${this.baseUrl}/txt/${encoded}`, {
199
+ method: "GET",
200
+ signal: AbortSignal.timeout(this.timeoutMs),
201
+ });
202
+ const body = await response.text();
203
+ // Check for error markers in plain text response
204
+ if (body.includes("Syntax Error") ||
205
+ body.includes("No @startuml") ||
206
+ body.includes("Error line")) {
207
+ const errors = parseErrors(body, normalizedCode);
208
+ return {
209
+ valid: false,
210
+ normalizedCode,
211
+ diagramType,
212
+ errors,
213
+ };
214
+ }
215
+ // Valid diagram (TXT endpoint returns ASCII art representation)
216
+ if (response.ok) {
217
+ return {
218
+ valid: true,
219
+ normalizedCode,
220
+ diagramType,
221
+ };
222
+ }
223
+ // Unexpected response
224
+ return {
225
+ valid: false,
226
+ normalizedCode,
227
+ diagramType,
228
+ errors: [
229
+ {
230
+ line: 1,
231
+ message: `Unexpected response from PlantUML server: ${response.status}`,
232
+ },
233
+ ],
234
+ };
235
+ }
236
+ catch (error) {
237
+ const message = error instanceof Error ? error.message : "Unknown error";
238
+ return {
239
+ valid: false,
240
+ normalizedCode,
241
+ diagramType,
242
+ errors: [
243
+ {
244
+ line: 1,
245
+ message: `PlantUML server error: ${message}`,
246
+ },
247
+ ],
248
+ };
249
+ }
250
+ }
251
+ /**
252
+ * Render PlantUML diagram to specified format
253
+ */
254
+ async render(code, format) {
255
+ const normalizedCode = normalizePlantUml(code);
256
+ const encoded = encodePlantUml(normalizedCode);
257
+ const endpoint = FORMAT_ENDPOINTS[format];
258
+ const contentType = FORMAT_CONTENT_TYPES[format];
259
+ const response = await fetch(`${this.baseUrl}${endpoint}/${encoded}`, {
260
+ method: "GET",
261
+ signal: AbortSignal.timeout(this.timeoutMs),
262
+ });
263
+ if (!response.ok) {
264
+ throw new Error(`PlantUML render failed: ${response.status} ${response.statusText}`);
265
+ }
266
+ // For text formats, return content directly
267
+ if (format === "ascii" || format === "svg") {
268
+ const content = await response.text();
269
+ // Check for error in response
270
+ if (content.includes("Syntax Error")) {
271
+ throw new Error(`PlantUML syntax error: ${content}`);
272
+ }
273
+ return {
274
+ format,
275
+ content,
276
+ contentType,
277
+ size: Buffer.byteLength(content, "utf-8"),
278
+ };
279
+ }
280
+ // For binary formats, return as base64
281
+ const buffer = await response.arrayBuffer();
282
+ const content = Buffer.from(buffer).toString("base64");
283
+ return {
284
+ format,
285
+ content,
286
+ contentType,
287
+ size: buffer.byteLength,
288
+ };
289
+ }
290
+ /**
291
+ * Check if server is healthy
292
+ */
293
+ async healthCheck() {
294
+ try {
295
+ const response = await fetch(this.baseUrl, {
296
+ method: "GET",
297
+ signal: AbortSignal.timeout(2000),
298
+ });
299
+ return response.ok;
300
+ }
301
+ catch {
302
+ return false;
303
+ }
304
+ }
305
+ }
306
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/utils/plantuml/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
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 (start if needed)
29
+ */
30
+ export declare function ensureContainer(config?: PlantUmlConfig): Promise<ContainerState>;
31
+ /**
32
+ * Clean up any orphaned Jicon PlantUML containers from previous runs
33
+ */
34
+ export declare function cleanupOrphanedContainers(): Promise<number>;
35
+ //# sourceMappingURL=docker-manager.d.ts.map
@@ -0,0 +1 @@
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;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,CAAC,EAAE,cAAc,GACtB,OAAO,CAAC,cAAc,CAAC,CAazB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,MAAM,CAAC,CAiCjE"}