@crypto512/jicon-mcp 0.7.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,280 @@
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 (start if needed)
231
+ */
232
+ export async function ensureContainer(config) {
233
+ // Check if existing container is healthy
234
+ if (containerState?.ready) {
235
+ const healthy = await isContainerHealthy();
236
+ if (healthy) {
237
+ return containerState;
238
+ }
239
+ // Container died, reset state
240
+ containerState = null;
241
+ startupPromise = null;
242
+ }
243
+ return startContainer(config);
244
+ }
245
+ /**
246
+ * Clean up any orphaned Jicon PlantUML containers from previous runs
247
+ */
248
+ export async function cleanupOrphanedContainers() {
249
+ let cleaned = 0;
250
+ try {
251
+ const containers = await docker.listContainers({
252
+ all: true,
253
+ filters: {
254
+ label: ["jicon.managed=true"],
255
+ },
256
+ });
257
+ for (const containerInfo of containers) {
258
+ // Don't remove our own container
259
+ if (containerState && containerInfo.Id === containerState.containerId) {
260
+ continue;
261
+ }
262
+ try {
263
+ const container = docker.getContainer(containerInfo.Id);
264
+ if (containerInfo.State === "running") {
265
+ await container.stop({ t: 1 });
266
+ }
267
+ await container.remove({ force: true });
268
+ cleaned++;
269
+ }
270
+ catch {
271
+ // Ignore errors for individual containers
272
+ }
273
+ }
274
+ }
275
+ catch {
276
+ // Docker may not be available
277
+ }
278
+ return cleaned;
279
+ }
280
+ //# sourceMappingURL=docker-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker-manager.js","sourceRoot":"","sources":["../../../src/utils/plantuml/docker-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * PlantUML Module Exports
3
+ *
4
+ * Docker-based PlantUML validation and rendering service.
5
+ */
6
+ export * from "./types.js";
7
+ export { validate, render, isAvailable, getStatus, shutdown, configure, normalizePlantUml, detectDiagramType, } from "./service.js";
8
+ export { startContainer, stopContainer, ensureContainer, getContainerState, isContainerHealthy, cleanupOrphanedContainers, } from "./docker-manager.js";
9
+ export { PlantUmlClient, encodePlantUml } from "./client.js";
10
+ export { createPlantUmlTools, PLANTUML_TOOLS } from "./tools.js";
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/plantuml/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * PlantUML Module Exports
3
+ *
4
+ * Docker-based PlantUML validation and rendering service.
5
+ */
6
+ // Types
7
+ export * from "./types.js";
8
+ // Service (main API)
9
+ export { validate, render, isAvailable, getStatus, shutdown, configure, normalizePlantUml, detectDiagramType, } from "./service.js";
10
+ // Docker manager (for lifecycle control)
11
+ export { startContainer, stopContainer, ensureContainer, getContainerState, isContainerHealthy, cleanupOrphanedContainers, } from "./docker-manager.js";
12
+ // HTTP client (for direct access if needed)
13
+ export { PlantUmlClient, encodePlantUml } from "./client.js";
14
+ // MCP Tools
15
+ export { createPlantUmlTools, PLANTUML_TOOLS } from "./tools.js";
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/plantuml/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,qBAAqB;AACrB,OAAO,EACL,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAEtB,yCAAyC;AACzC,OAAO,EACL,cAAc,EACd,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,4CAA4C;AAC5C,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7D,YAAY;AACZ,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * PlantUML Service
3
+ *
4
+ * Unified service facade for PlantUML operations.
5
+ * Handles lazy container initialization and provides high-level API.
6
+ */
7
+ import { normalizePlantUml, detectDiagramType } from "./client.js";
8
+ import type { PlantUmlConfig, PlantUmlValidationResult, PlantUmlRenderResult, RenderFormat } from "./types.js";
9
+ /**
10
+ * Configure the PlantUML service
11
+ */
12
+ export declare function configure(config: PlantUmlConfig): void;
13
+ /**
14
+ * Validate PlantUML syntax
15
+ *
16
+ * Starts the Docker container on first call if not already running.
17
+ */
18
+ export declare function validate(code: string): Promise<PlantUmlValidationResult>;
19
+ /**
20
+ * Render PlantUML diagram to specified format
21
+ *
22
+ * Starts the Docker container on first call if not already running.
23
+ */
24
+ export declare function render(code: string, format: RenderFormat): Promise<PlantUmlRenderResult>;
25
+ /**
26
+ * Check if PlantUML service is available (container running)
27
+ */
28
+ export declare function isAvailable(): boolean;
29
+ /**
30
+ * Get current service status
31
+ */
32
+ export declare function getStatus(): {
33
+ available: boolean;
34
+ containerId?: string;
35
+ port?: number;
36
+ baseUrl?: string;
37
+ };
38
+ /**
39
+ * Shutdown the PlantUML service (stop container)
40
+ */
41
+ export declare function shutdown(): Promise<void>;
42
+ /**
43
+ * Re-export utility functions for convenience
44
+ */
45
+ export { normalizePlantUml, detectDiagramType };
46
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/utils/plantuml/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAkB,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,KAAK,EACV,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,YAAY,EACb,MAAM,YAAY,CAAC;AAapB;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAItD;AAyBD;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAG9E;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAG/B;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAGrC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAWA;AAED;;GAEG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAG9C;AAED;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * PlantUML Service
3
+ *
4
+ * Unified service facade for PlantUML operations.
5
+ * Handles lazy container initialization and provides high-level API.
6
+ */
7
+ import { ensureContainer, stopContainer, getContainerState } from "./docker-manager.js";
8
+ import { PlantUmlClient, normalizePlantUml, detectDiagramType } from "./client.js";
9
+ import { DEFAULT_PLANTUML_CONFIG } from "./types.js";
10
+ /**
11
+ * Cached client instance
12
+ */
13
+ let clientInstance = null;
14
+ /**
15
+ * Service configuration
16
+ */
17
+ let serviceConfig = { ...DEFAULT_PLANTUML_CONFIG };
18
+ /**
19
+ * Configure the PlantUML service
20
+ */
21
+ export function configure(config) {
22
+ serviceConfig = { ...DEFAULT_PLANTUML_CONFIG, ...config };
23
+ // Reset client to pick up new config
24
+ clientInstance = null;
25
+ }
26
+ /**
27
+ * Get or create the PlantUML client (starts container if needed)
28
+ */
29
+ async function getClient() {
30
+ // Check if we have a valid client
31
+ if (clientInstance) {
32
+ const healthy = await clientInstance.healthCheck();
33
+ if (healthy) {
34
+ return clientInstance;
35
+ }
36
+ // Client unhealthy, reset and recreate
37
+ clientInstance = null;
38
+ }
39
+ // Ensure container is running
40
+ const state = await ensureContainer(serviceConfig);
41
+ // Create new client
42
+ clientInstance = new PlantUmlClient(state.baseUrl, serviceConfig.requestTimeout);
43
+ return clientInstance;
44
+ }
45
+ /**
46
+ * Validate PlantUML syntax
47
+ *
48
+ * Starts the Docker container on first call if not already running.
49
+ */
50
+ export async function validate(code) {
51
+ const client = await getClient();
52
+ return client.validate(code);
53
+ }
54
+ /**
55
+ * Render PlantUML diagram to specified format
56
+ *
57
+ * Starts the Docker container on first call if not already running.
58
+ */
59
+ export async function render(code, format) {
60
+ const client = await getClient();
61
+ return client.render(code, format);
62
+ }
63
+ /**
64
+ * Check if PlantUML service is available (container running)
65
+ */
66
+ export function isAvailable() {
67
+ const state = getContainerState();
68
+ return state?.ready ?? false;
69
+ }
70
+ /**
71
+ * Get current service status
72
+ */
73
+ export function getStatus() {
74
+ const state = getContainerState();
75
+ if (!state?.ready) {
76
+ return { available: false };
77
+ }
78
+ return {
79
+ available: true,
80
+ containerId: state.containerId,
81
+ port: state.port,
82
+ baseUrl: state.baseUrl,
83
+ };
84
+ }
85
+ /**
86
+ * Shutdown the PlantUML service (stop container)
87
+ */
88
+ export async function shutdown() {
89
+ clientInstance = null;
90
+ await stopContainer();
91
+ }
92
+ /**
93
+ * Re-export utility functions for convenience
94
+ */
95
+ export { normalizePlantUml, detectDiagramType };
96
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/utils/plantuml/service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAOnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,IAAI,cAAc,GAA0B,IAAI,CAAC;AAEjD;;GAEG;AACH,IAAI,aAAa,GAA6B,EAAE,GAAG,uBAAuB,EAAE,CAAC;AAE7E;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAsB;IAC9C,aAAa,GAAG,EAAE,GAAG,uBAAuB,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1D,qCAAqC;IACrC,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS;IACtB,kCAAkC;IAClC,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,CAAC;QACnD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,uCAAuC;QACvC,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IAED,8BAA8B;IAC9B,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,aAAa,CAAC,CAAC;IAEnD,oBAAoB;IACpB,cAAc,GAAG,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IAEjF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,IAAY,EACZ,MAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,OAAO,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IAMvB,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QAClB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;IACD,OAAO;QACL,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ;IAC5B,cAAc,GAAG,IAAI,CAAC;IACtB,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * PlantUML MCP Tools
3
+ *
4
+ * Tool definitions for PlantUML validation and rendering.
5
+ */
6
+ import { z } from "zod";
7
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
8
+ import { type RenderFormat } from "./types.js";
9
+ /**
10
+ * Create PlantUML tools for MCP server
11
+ */
12
+ export declare function createPlantUmlTools(): {
13
+ plantuml_validate: {
14
+ description: string;
15
+ inputSchema: z.ZodObject<{
16
+ code: z.ZodOptional<z.ZodString>;
17
+ bufferId: z.ZodOptional<z.ZodString>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ bufferId?: string | undefined;
20
+ code?: string | undefined;
21
+ }, {
22
+ bufferId?: string | undefined;
23
+ code?: string | undefined;
24
+ }>;
25
+ handler: (args: {
26
+ code?: string;
27
+ bufferId?: string;
28
+ }) => Promise<CallToolResult>;
29
+ };
30
+ plantuml_render: {
31
+ description: string;
32
+ inputSchema: z.ZodObject<{
33
+ code: z.ZodOptional<z.ZodString>;
34
+ bufferId: z.ZodOptional<z.ZodString>;
35
+ format: z.ZodDefault<z.ZodEnum<["ascii", "png", "svg", "eps"]>>;
36
+ maxWidth: z.ZodOptional<z.ZodNumber>;
37
+ }, "strip", z.ZodTypeAny, {
38
+ format: "ascii" | "png" | "svg" | "eps";
39
+ bufferId?: string | undefined;
40
+ code?: string | undefined;
41
+ maxWidth?: number | undefined;
42
+ }, {
43
+ bufferId?: string | undefined;
44
+ code?: string | undefined;
45
+ format?: "ascii" | "png" | "svg" | "eps" | undefined;
46
+ maxWidth?: number | undefined;
47
+ }>;
48
+ handler: (args: {
49
+ code?: string;
50
+ bufferId?: string;
51
+ format?: RenderFormat;
52
+ maxWidth?: number;
53
+ }) => Promise<CallToolResult>;
54
+ };
55
+ plantuml_status: {
56
+ description: string;
57
+ inputSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
58
+ handler: () => Promise<CallToolResult>;
59
+ };
60
+ };
61
+ /**
62
+ * Tool names for registry
63
+ */
64
+ export declare const PLANTUML_TOOLS: readonly ["plantuml_validate", "plantuml_render", "plantuml_status"];
65
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../src/utils/plantuml/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIzE,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,YAAY,CAAC;AA2CpB;;GAEG;AACH,wBAAgB,mBAAmB;;;;;;;;;;;;;wBAkBP;YACpB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,KAAG,OAAO,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;wBAsHL;YACpB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,MAAM,CAAC,EAAE,YAAY,CAAC;YACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,KAAG,OAAO,CAAC,cAAc,CAAC;;;;;uBAsFR,OAAO,CAAC,cAAc,CAAC;;EAqB/C;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,sEAIjB,CAAC"}