ncloud-mcp-server 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 (220) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +159 -0
  3. package/README_EN.md +159 -0
  4. package/dist/auth/signature.d.ts +16 -0
  5. package/dist/auth/signature.js +18 -0
  6. package/dist/auth/signature.js.map +1 -0
  7. package/dist/auth/signature.test.d.ts +1 -0
  8. package/dist/auth/signature.test.js +90 -0
  9. package/dist/auth/signature.test.js.map +1 -0
  10. package/dist/client/ncloud-client.d.ts +27 -0
  11. package/dist/client/ncloud-client.js +270 -0
  12. package/dist/client/ncloud-client.js.map +1 -0
  13. package/dist/client/ncloud-client.test.d.ts +1 -0
  14. package/dist/client/ncloud-client.test.js +477 -0
  15. package/dist/client/ncloud-client.test.js.map +1 -0
  16. package/dist/client/s3-compatible-client.d.ts +49 -0
  17. package/dist/client/s3-compatible-client.js +210 -0
  18. package/dist/client/s3-compatible-client.js.map +1 -0
  19. package/dist/client/swift-compatible-client.d.ts +68 -0
  20. package/dist/client/swift-compatible-client.js +173 -0
  21. package/dist/client/swift-compatible-client.js.map +1 -0
  22. package/dist/index.d.ts +2 -0
  23. package/dist/index.js +362 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/tools/acg.d.ts +3 -0
  26. package/dist/tools/acg.js +220 -0
  27. package/dist/tools/acg.js.map +1 -0
  28. package/dist/tools/activity-tracer.d.ts +3 -0
  29. package/dist/tools/activity-tracer.js +77 -0
  30. package/dist/tools/activity-tracer.js.map +1 -0
  31. package/dist/tools/analytics-cdss.d.ts +3 -0
  32. package/dist/tools/analytics-cdss.js +618 -0
  33. package/dist/tools/analytics-cdss.js.map +1 -0
  34. package/dist/tools/analytics-datacatalog.d.ts +10 -0
  35. package/dist/tools/analytics-datacatalog.js +409 -0
  36. package/dist/tools/analytics-datacatalog.js.map +1 -0
  37. package/dist/tools/analytics-dataflow.d.ts +16 -0
  38. package/dist/tools/analytics-dataflow.js +478 -0
  39. package/dist/tools/analytics-dataflow.js.map +1 -0
  40. package/dist/tools/analytics-dataforest.d.ts +10 -0
  41. package/dist/tools/analytics-dataforest.js +379 -0
  42. package/dist/tools/analytics-dataforest.js.map +1 -0
  43. package/dist/tools/analytics-dataquery.d.ts +16 -0
  44. package/dist/tools/analytics-dataquery.js +143 -0
  45. package/dist/tools/analytics-dataquery.js.map +1 -0
  46. package/dist/tools/analytics-datastream.d.ts +13 -0
  47. package/dist/tools/analytics-datastream.js +359 -0
  48. package/dist/tools/analytics-datastream.js.map +1 -0
  49. package/dist/tools/analytics-hadoop.d.ts +12 -0
  50. package/dist/tools/analytics-hadoop.js +450 -0
  51. package/dist/tools/analytics-hadoop.js.map +1 -0
  52. package/dist/tools/analytics-ses.d.ts +3 -0
  53. package/dist/tools/analytics-ses.js +653 -0
  54. package/dist/tools/analytics-ses.js.map +1 -0
  55. package/dist/tools/api-gateway.d.ts +3 -0
  56. package/dist/tools/api-gateway.js +202 -0
  57. package/dist/tools/api-gateway.js.map +1 -0
  58. package/dist/tools/autoscaling.d.ts +3 -0
  59. package/dist/tools/autoscaling.js +430 -0
  60. package/dist/tools/autoscaling.js.map +1 -0
  61. package/dist/tools/billing.d.ts +14 -0
  62. package/dist/tools/billing.js +545 -0
  63. package/dist/tools/billing.js.map +1 -0
  64. package/dist/tools/certificate-manager.d.ts +18 -0
  65. package/dist/tools/certificate-manager.js +84 -0
  66. package/dist/tools/certificate-manager.js.map +1 -0
  67. package/dist/tools/cloud-advisor.d.ts +3 -0
  68. package/dist/tools/cloud-advisor.js +202 -0
  69. package/dist/tools/cloud-advisor.js.map +1 -0
  70. package/dist/tools/cloud-functions.d.ts +3 -0
  71. package/dist/tools/cloud-functions.js +497 -0
  72. package/dist/tools/cloud-functions.js.map +1 -0
  73. package/dist/tools/cloud-insight-integration.d.ts +3 -0
  74. package/dist/tools/cloud-insight-integration.js +90 -0
  75. package/dist/tools/cloud-insight-integration.js.map +1 -0
  76. package/dist/tools/cloud-insight-plugin.d.ts +3 -0
  77. package/dist/tools/cloud-insight-plugin.js +600 -0
  78. package/dist/tools/cloud-insight-plugin.js.map +1 -0
  79. package/dist/tools/cloud-insight-rule.d.ts +3 -0
  80. package/dist/tools/cloud-insight-rule.js +570 -0
  81. package/dist/tools/cloud-insight-rule.js.map +1 -0
  82. package/dist/tools/cloud-insight.d.ts +3 -0
  83. package/dist/tools/cloud-insight.js +246 -0
  84. package/dist/tools/cloud-insight.js.map +1 -0
  85. package/dist/tools/common.d.ts +3 -0
  86. package/dist/tools/common.js +120 -0
  87. package/dist/tools/common.js.map +1 -0
  88. package/dist/tools/compute-initscript.d.ts +3 -0
  89. package/dist/tools/compute-initscript.js +62 -0
  90. package/dist/tools/compute-initscript.js.map +1 -0
  91. package/dist/tools/compute-loginkey.d.ts +3 -0
  92. package/dist/tools/compute-loginkey.js +59 -0
  93. package/dist/tools/compute-loginkey.js.map +1 -0
  94. package/dist/tools/compute-placement.d.ts +3 -0
  95. package/dist/tools/compute-placement.js +196 -0
  96. package/dist/tools/compute-placement.js.map +1 -0
  97. package/dist/tools/compute-publicip.d.ts +3 -0
  98. package/dist/tools/compute-publicip.js +97 -0
  99. package/dist/tools/compute-publicip.js.map +1 -0
  100. package/dist/tools/compute-server.d.ts +3 -0
  101. package/dist/tools/compute-server.js +445 -0
  102. package/dist/tools/compute-server.js.map +1 -0
  103. package/dist/tools/compute-server.test.d.ts +1 -0
  104. package/dist/tools/compute-server.test.js +224 -0
  105. package/dist/tools/compute-server.test.js.map +1 -0
  106. package/dist/tools/compute-storage.d.ts +3 -0
  107. package/dist/tools/compute-storage.js +240 -0
  108. package/dist/tools/compute-storage.js.map +1 -0
  109. package/dist/tools/containers-nks.d.ts +13 -0
  110. package/dist/tools/containers-nks.js +576 -0
  111. package/dist/tools/containers-nks.js.map +1 -0
  112. package/dist/tools/containers-registry.d.ts +3 -0
  113. package/dist/tools/containers-registry.js +181 -0
  114. package/dist/tools/containers-registry.js.map +1 -0
  115. package/dist/tools/database-cache.d.ts +3 -0
  116. package/dist/tools/database-cache.js +388 -0
  117. package/dist/tools/database-cache.js.map +1 -0
  118. package/dist/tools/database-mongodb.d.ts +3 -0
  119. package/dist/tools/database-mongodb.js +460 -0
  120. package/dist/tools/database-mongodb.js.map +1 -0
  121. package/dist/tools/database-mssql.d.ts +3 -0
  122. package/dist/tools/database-mssql.js +345 -0
  123. package/dist/tools/database-mssql.js.map +1 -0
  124. package/dist/tools/database-mysql.d.ts +3 -0
  125. package/dist/tools/database-mysql.js +500 -0
  126. package/dist/tools/database-mysql.js.map +1 -0
  127. package/dist/tools/database-postgresql.d.ts +3 -0
  128. package/dist/tools/database-postgresql.js +432 -0
  129. package/dist/tools/database-postgresql.js.map +1 -0
  130. package/dist/tools/global-dns.d.ts +3 -0
  131. package/dist/tools/global-dns.js +207 -0
  132. package/dist/tools/global-dns.js.map +1 -0
  133. package/dist/tools/global-edge.d.ts +3 -0
  134. package/dist/tools/global-edge.js +386 -0
  135. package/dist/tools/global-edge.js.map +1 -0
  136. package/dist/tools/global-traffic-manager.d.ts +3 -0
  137. package/dist/tools/global-traffic-manager.js +497 -0
  138. package/dist/tools/global-traffic-manager.js.map +1 -0
  139. package/dist/tools/index.d.ts +63 -0
  140. package/dist/tools/index.js +64 -0
  141. package/dist/tools/index.js.map +1 -0
  142. package/dist/tools/kms.d.ts +8 -0
  143. package/dist/tools/kms.js +529 -0
  144. package/dist/tools/kms.js.map +1 -0
  145. package/dist/tools/loadbalancer.d.ts +3 -0
  146. package/dist/tools/loadbalancer.js +341 -0
  147. package/dist/tools/loadbalancer.js.map +1 -0
  148. package/dist/tools/log-analytics.d.ts +3 -0
  149. package/dist/tools/log-analytics.js +183 -0
  150. package/dist/tools/log-analytics.js.map +1 -0
  151. package/dist/tools/media-imageoptimizer.d.ts +3 -0
  152. package/dist/tools/media-imageoptimizer.js +187 -0
  153. package/dist/tools/media-imageoptimizer.js.map +1 -0
  154. package/dist/tools/media-livestation.d.ts +3 -0
  155. package/dist/tools/media-livestation.js +252 -0
  156. package/dist/tools/media-livestation.js.map +1 -0
  157. package/dist/tools/media-vodstation.d.ts +3 -0
  158. package/dist/tools/media-vodstation.js +197 -0
  159. package/dist/tools/media-vodstation.js.map +1 -0
  160. package/dist/tools/nat-gateway.d.ts +3 -0
  161. package/dist/tools/nat-gateway.js +91 -0
  162. package/dist/tools/nat-gateway.js.map +1 -0
  163. package/dist/tools/network-acl.d.ts +3 -0
  164. package/dist/tools/network-acl.js +322 -0
  165. package/dist/tools/network-acl.js.map +1 -0
  166. package/dist/tools/network-interface.d.ts +3 -0
  167. package/dist/tools/network-interface.js +193 -0
  168. package/dist/tools/network-interface.js.map +1 -0
  169. package/dist/tools/private-ca.d.ts +8 -0
  170. package/dist/tools/private-ca.js +368 -0
  171. package/dist/tools/private-ca.js.map +1 -0
  172. package/dist/tools/resource-manager.d.ts +3 -0
  173. package/dist/tools/resource-manager.js +151 -0
  174. package/dist/tools/resource-manager.js.map +1 -0
  175. package/dist/tools/route-table.d.ts +3 -0
  176. package/dist/tools/route-table.js +205 -0
  177. package/dist/tools/route-table.js.map +1 -0
  178. package/dist/tools/security-monitoring.d.ts +3 -0
  179. package/dist/tools/security-monitoring.js +182 -0
  180. package/dist/tools/security-monitoring.js.map +1 -0
  181. package/dist/tools/sens.d.ts +3 -0
  182. package/dist/tools/sens.js +240 -0
  183. package/dist/tools/sens.js.map +1 -0
  184. package/dist/tools/sourcebuild.d.ts +3 -0
  185. package/dist/tools/sourcebuild.js +481 -0
  186. package/dist/tools/sourcebuild.js.map +1 -0
  187. package/dist/tools/sourcecommit.d.ts +13 -0
  188. package/dist/tools/sourcecommit.js +228 -0
  189. package/dist/tools/sourcecommit.js.map +1 -0
  190. package/dist/tools/sourcedeploy.d.ts +3 -0
  191. package/dist/tools/sourcedeploy.js +448 -0
  192. package/dist/tools/sourcedeploy.js.map +1 -0
  193. package/dist/tools/sourcepipeline.d.ts +12 -0
  194. package/dist/tools/sourcepipeline.js +357 -0
  195. package/dist/tools/sourcepipeline.js.map +1 -0
  196. package/dist/tools/storage-archive.d.ts +3 -0
  197. package/dist/tools/storage-archive.js +337 -0
  198. package/dist/tools/storage-archive.js.map +1 -0
  199. package/dist/tools/storage-nas.d.ts +3 -0
  200. package/dist/tools/storage-nas.js +288 -0
  201. package/dist/tools/storage-nas.js.map +1 -0
  202. package/dist/tools/storage-ncloud.d.ts +3 -0
  203. package/dist/tools/storage-ncloud.js +864 -0
  204. package/dist/tools/storage-ncloud.js.map +1 -0
  205. package/dist/tools/storage-object.d.ts +3 -0
  206. package/dist/tools/storage-object.js +982 -0
  207. package/dist/tools/storage-object.js.map +1 -0
  208. package/dist/tools/sub-account.d.ts +3 -0
  209. package/dist/tools/sub-account.js +311 -0
  210. package/dist/tools/sub-account.js.map +1 -0
  211. package/dist/tools/target-group.d.ts +3 -0
  212. package/dist/tools/target-group.js +207 -0
  213. package/dist/tools/target-group.js.map +1 -0
  214. package/dist/tools/vpc-peering.d.ts +3 -0
  215. package/dist/tools/vpc-peering.js +109 -0
  216. package/dist/tools/vpc-peering.js.map +1 -0
  217. package/dist/tools/vpc.d.ts +3 -0
  218. package/dist/tools/vpc.js +194 -0
  219. package/dist/tools/vpc.js.map +1 -0
  220. package/package.json +53 -0
@@ -0,0 +1,368 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Private CA (사설 인증 기관) 도구 등록
4
+ * Base URL: https://pca.apigw.ntruss.com
5
+ * RESTful API — GET/POST/PUT/DELETE with JSON body
6
+ */
7
+ export function registerPrivateCaTools(server, client) {
8
+ // ─── CA Management ───────────────────────────────────────────────────────────
9
+ // ncloud_pca_list_cas — Get CA List
10
+ server.tool("ncloud_pca_list_cas", "List all Private CA (Certificate Authority) instances. Returns CA info including status, type, alias, and certificate details.", {
11
+ pageNo: z.number().optional().describe("Page number for pagination"),
12
+ }, async (params) => {
13
+ try {
14
+ const queryParams = {};
15
+ if (params.pageNo !== undefined)
16
+ queryParams.pageNo = params.pageNo;
17
+ const result = await client.requestRaw("GET", "/api/v1/ca", queryParams);
18
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
19
+ }
20
+ catch (error) {
21
+ return { content: [{ type: "text", text: error.message }], isError: true };
22
+ }
23
+ });
24
+ // ncloud_pca_get_ca — Get CA detail
25
+ server.tool("ncloud_pca_get_ca", "Get detailed information of a specific Private CA by its tag value.", {
26
+ caTag: z.string().describe("CA tag value (identifier)"),
27
+ }, async (params) => {
28
+ try {
29
+ const result = await client.requestRaw("GET", `/api/v1/ca/${params.caTag}`);
30
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
31
+ }
32
+ catch (error) {
33
+ return { content: [{ type: "text", text: error.message }], isError: true };
34
+ }
35
+ });
36
+ // ncloud_pca_create_ca — Create CA
37
+ server.tool("ncloud_pca_create_ca", "Create a new Private CA (Root CA or Sub CA). Requires alias, keyType, period, and x509Parameters.", {
38
+ caType: z.enum(["PRIVATE_ROOT", "PRIVATE_SUB"]).describe("CA type: PRIVATE_ROOT (Root CA) or PRIVATE_SUB (Intermediate CA)"),
39
+ issuerTag: z.string().optional().describe("Issuer CA tag value (required for PRIVATE_SUB when using internal signing)"),
40
+ alias: z.string().describe("CA name (3-15 chars, alphanumeric + '-' + '_', starts with letter)"),
41
+ memo: z.string().optional().describe("CA memo/description"),
42
+ keyType: z.enum(["RSA2048", "RSA4096", "EC256", "EC521"]).describe("Key type for the CA"),
43
+ period: z.string().describe("Validity period in days (1-3650) or 'MAX' for maximum"),
44
+ commonName: z.string().describe("Common Name (1-64 chars)"),
45
+ altName: z.string().optional().describe("DNS/Email SANs (domain/host name or email format)"),
46
+ ip: z.string().optional().describe("IP SANs (IP address format)"),
47
+ country: z.string().optional().describe("Country code (ISO 3166-1 alpha-2)"),
48
+ locality: z.string().optional().describe("City name (0-128 chars)"),
49
+ stateProvince: z.string().optional().describe("State/Province name (0-128 chars)"),
50
+ organization: z.string().optional().describe("Organization name (0-64 chars)"),
51
+ organizationUnit: z.string().optional().describe("Organization unit name (0-128 chars)"),
52
+ }, async (params) => {
53
+ try {
54
+ const queryParams = {
55
+ caType: params.caType,
56
+ };
57
+ if (params.issuerTag !== undefined)
58
+ queryParams.issuerTag = params.issuerTag;
59
+ const body = {
60
+ alias: params.alias,
61
+ keyType: params.keyType,
62
+ period: params.period,
63
+ x509Parameters: {
64
+ commonName: params.commonName,
65
+ },
66
+ };
67
+ if (params.memo !== undefined)
68
+ body.memo = params.memo;
69
+ if (params.altName !== undefined)
70
+ body.x509Parameters.altName = params.altName;
71
+ if (params.ip !== undefined)
72
+ body.x509Parameters.ip = params.ip;
73
+ if (params.country !== undefined)
74
+ body.x509Parameters.country = params.country;
75
+ if (params.locality !== undefined)
76
+ body.x509Parameters.locality = params.locality;
77
+ if (params.stateProvince !== undefined)
78
+ body.x509Parameters.stateProvince = params.stateProvince;
79
+ if (params.organization !== undefined)
80
+ body.x509Parameters.organization = params.organization;
81
+ if (params.organizationUnit !== undefined)
82
+ body.x509Parameters.organizationUnit = params.organizationUnit;
83
+ const queryString = new URLSearchParams(Object.fromEntries(Object.entries(queryParams).filter(([, v]) => v !== undefined))).toString();
84
+ const path = `/api/v1/ca${queryString ? `?${queryString}` : ""}`;
85
+ const result = await client.requestRaw("POST", path, undefined, body);
86
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
87
+ }
88
+ catch (error) {
89
+ return { content: [{ type: "text", text: error.message }], isError: true };
90
+ }
91
+ });
92
+ // ncloud_pca_update_ca — Update CA status
93
+ server.tool("ncloud_pca_update_ca", "⚠️ Destructive: Update CA status (ACTIVE, DEACTIVATED, or DESTROYING). Setting to DESTROYING will permanently delete the CA and all sub-CAs after 72 hours. This action is irreversible.", {
94
+ caTag: z.string().describe("CA tag value"),
95
+ status: z.enum(["ACTIVE", "DEACTIVATED", "DESTROYING"]).describe("New CA status"),
96
+ }, async (params) => {
97
+ try {
98
+ const result = await client.requestRaw("PUT", `/api/v1/ca/${params.caTag}`, undefined, { status: params.status });
99
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
100
+ }
101
+ catch (error) {
102
+ return { content: [{ type: "text", text: error.message }], isError: true };
103
+ }
104
+ });
105
+ // ncloud_pca_delete_ca — Delete CA
106
+ server.tool("ncloud_pca_delete_ca", "⚠️ Destructive: Permanently delete a Private CA. Only CAs in DESTROYING status can be deleted. The CA's private key will be permanently destroyed and cannot be recovered.", {
107
+ caTag: z.string().describe("CA tag value (required)"),
108
+ }, async (params) => {
109
+ try {
110
+ const result = await client.requestRaw("DELETE", `/api/v1/ca/${params.caTag}`);
111
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
112
+ }
113
+ catch (error) {
114
+ return { content: [{ type: "text", text: error.message }], isError: true };
115
+ }
116
+ });
117
+ // ncloud_pca_get_ca_chain — Get CA Chain
118
+ server.tool("ncloud_pca_get_ca_chain", "Get the certificate chain (PEM) of a Private CA.", {
119
+ caTag: z.string().describe("CA tag value"),
120
+ }, async (params) => {
121
+ try {
122
+ const result = await client.requestRaw("GET", `/api/v1/ca/${params.caTag}/chain`);
123
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
124
+ }
125
+ catch (error) {
126
+ return { content: [{ type: "text", text: error.message }], isError: true };
127
+ }
128
+ });
129
+ // ncloud_pca_get_ca_crl — Get CA CRL
130
+ server.tool("ncloud_pca_get_ca_crl", "Get the CRL (Certificate Revocation List) of a Private CA in PEM format.", {
131
+ caTag: z.string().describe("CA tag value"),
132
+ }, async (params) => {
133
+ try {
134
+ const result = await client.requestRaw("GET", `/api/v1/ca/${params.caTag}/crl`);
135
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
136
+ }
137
+ catch (error) {
138
+ return { content: [{ type: "text", text: error.message }], isError: true };
139
+ }
140
+ });
141
+ // ─── CRL Configuration ────────────────────────────────────────────────────────
142
+ // ncloud_pca_get_crl_config — Get CRL Config
143
+ server.tool("ncloud_pca_get_crl_config", "Get the CRL update interval configuration for a Private CA.", {
144
+ caTag: z.string().describe("CA tag value"),
145
+ }, async (params) => {
146
+ try {
147
+ const result = await client.requestRaw("GET", `/api/v1/ca/${params.caTag}/crl/config`);
148
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
149
+ }
150
+ catch (error) {
151
+ return { content: [{ type: "text", text: error.message }], isError: true };
152
+ }
153
+ });
154
+ // ncloud_pca_update_crl_config — Update CRL Config
155
+ server.tool("ncloud_pca_update_crl_config", "Set the CRL update interval (in days) for a Private CA. Minimum 3 days.", {
156
+ caTag: z.string().describe("CA tag value"),
157
+ expiry: z.string().describe("CRL update interval in days (minimum 3, up to CA expiry)"),
158
+ }, async (params) => {
159
+ try {
160
+ const result = await client.requestRaw("PUT", `/api/v1/ca/${params.caTag}/crl/config`, undefined, { expiry: params.expiry });
161
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
162
+ }
163
+ catch (error) {
164
+ return { content: [{ type: "text", text: error.message }], isError: true };
165
+ }
166
+ });
167
+ // ncloud_pca_rotate_crl — Rotate CRL
168
+ server.tool("ncloud_pca_rotate_crl", "Manually rotate the CRL to refresh it with the latest revocation information.", {
169
+ caTag: z.string().describe("CA tag value"),
170
+ }, async (params) => {
171
+ try {
172
+ const result = await client.requestRaw("POST", `/api/v1/ca/${params.caTag}/crl/rotate`);
173
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
174
+ }
175
+ catch (error) {
176
+ return { content: [{ type: "text", text: error.message }], isError: true };
177
+ }
178
+ });
179
+ // ─── OCSP Management ──────────────────────────────────────────────────────────
180
+ // ncloud_pca_create_ocsp — Create OCSP (deploy OCSP URL to certificates)
181
+ server.tool("ncloud_pca_create_ocsp", "Create OCSP and deploy the OCSP URL to certificates issued by this CA.", {
182
+ caTag: z.string().describe("CA tag value"),
183
+ ocspServers: z.string().describe("OCSP URL (format: https://pca.apigw.ntruss.com/ext/{caTag}/ocsp)"),
184
+ }, async (params) => {
185
+ try {
186
+ const result = await client.requestRaw("PUT", `/api/v1/ca/${params.caTag}/urls`, undefined, { ocsp_servers: params.ocspServers });
187
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
188
+ }
189
+ catch (error) {
190
+ return { content: [{ type: "text", text: error.message }], isError: true };
191
+ }
192
+ });
193
+ // ncloud_pca_delete_ocsp — Delete OCSP
194
+ server.tool("ncloud_pca_delete_ocsp", "⚠️ Destructive: Delete OCSP configuration and remove the OCSP URL from all certificates issued by this CA.", {
195
+ caTag: z.string().describe("CA tag value (required)"),
196
+ }, async (params) => {
197
+ try {
198
+ const result = await client.requestRaw("DELETE", `/api/v1/ca/${params.caTag}/urls`);
199
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
200
+ }
201
+ catch (error) {
202
+ return { content: [{ type: "text", text: error.message }], isError: true };
203
+ }
204
+ });
205
+ // ─── Sub CA Management ────────────────────────────────────────────────────────
206
+ // ncloud_pca_get_sub_csr — Get Sub CA CSR
207
+ server.tool("ncloud_pca_get_sub_csr", "Get the CSR (Certificate Signing Request) of a Sub CA for external signing. Only available for unsigned Sub CAs.", {
208
+ caTag: z.string().describe("CA tag value of the Sub CA"),
209
+ }, async (params) => {
210
+ try {
211
+ const result = await client.requestRaw("GET", `/api/v1/ca/${params.caTag}/sub/csr`);
212
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
213
+ }
214
+ catch (error) {
215
+ return { content: [{ type: "text", text: error.message }], isError: true };
216
+ }
217
+ });
218
+ // ncloud_pca_activate_sub_ca — Activate Sub CA
219
+ server.tool("ncloud_pca_activate_sub_ca", "Activate a Sub CA using a signed certificate and CA chain (direct signing method).", {
220
+ caTag: z.string().describe("CA tag value of the Sub CA to activate"),
221
+ certPem: z.string().describe("Signed CA certificate in PEM format"),
222
+ caChainPem: z.string().describe("Signer certificate chain in PEM format"),
223
+ }, async (params) => {
224
+ try {
225
+ const result = await client.requestRaw("POST", `/api/v1/ca/${params.caTag}/activate`, undefined, {
226
+ certPem: params.certPem,
227
+ caChainPem: params.caChainPem,
228
+ });
229
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
230
+ }
231
+ catch (error) {
232
+ return { content: [{ type: "text", text: error.message }], isError: true };
233
+ }
234
+ });
235
+ // ncloud_pca_sign_sub_csr — Sign Sub CA CSR
236
+ server.tool("ncloud_pca_sign_sub_csr", "Sign a Sub CA CSR using this CA to issue an intermediate CA certificate.", {
237
+ caTag: z.string().describe("CA tag value of the signing (parent) CA"),
238
+ period: z.string().describe("Validity period in days (1-3650)"),
239
+ csrPem: z.string().describe("CSR in PEM format"),
240
+ }, async (params) => {
241
+ try {
242
+ const result = await client.requestRaw("POST", `/api/v1/ca/${params.caTag}/sub/sign`, undefined, {
243
+ period: params.period,
244
+ csrPem: params.csrPem,
245
+ });
246
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
247
+ }
248
+ catch (error) {
249
+ return { content: [{ type: "text", text: error.message }], isError: true };
250
+ }
251
+ });
252
+ // ─── End Certificate Management ───────────────────────────────────────────────
253
+ // ncloud_pca_list_end_certs — Get End Cert List
254
+ server.tool("ncloud_pca_list_end_certs", "List all end-entity certificates issued by a specific CA. Returns serial numbers.", {
255
+ caTag: z.string().describe("CA tag value"),
256
+ }, async (params) => {
257
+ try {
258
+ const result = await client.requestRaw("GET", `/api/v1/ca/${params.caTag}/cert`);
259
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
260
+ }
261
+ catch (error) {
262
+ return { content: [{ type: "text", text: error.message }], isError: true };
263
+ }
264
+ });
265
+ // ncloud_pca_get_end_cert — Get End Cert detail
266
+ server.tool("ncloud_pca_get_end_cert", "Get detailed information of a specific end-entity certificate by serial number.", {
267
+ caTag: z.string().describe("CA tag value"),
268
+ serialNo: z.string().describe("Certificate serial number"),
269
+ }, async (params) => {
270
+ try {
271
+ const result = await client.requestRaw("GET", `/api/v1/ca/${params.caTag}/cert/${params.serialNo}`);
272
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
273
+ }
274
+ catch (error) {
275
+ return { content: [{ type: "text", text: error.message }], isError: true };
276
+ }
277
+ });
278
+ // ncloud_pca_issue_end_cert — Issue End Cert
279
+ server.tool("ncloud_pca_issue_end_cert", "Issue a new end-entity certificate from a CA. Returns private key, certificate, and CA chain.", {
280
+ caTag: z.string().describe("CA tag value of the issuing CA"),
281
+ keyType: z.enum(["RSA2048", "RSA4096", "EC256", "EC521"]).optional().describe("Key type for the certificate"),
282
+ period: z.string().optional().describe("Validity period in days (1-3650) or 'MAX'"),
283
+ commonName: z.string().describe("Common Name (1-64 chars)"),
284
+ altName: z.string().optional().describe("DNS/Email SANs"),
285
+ organization: z.string().optional().describe("Organization name (0-64 chars)"),
286
+ organizationUnit: z.string().optional().describe("Organization unit (0-128 chars)"),
287
+ locality: z.string().optional().describe("City name (0-128 chars)"),
288
+ stateProvince: z.string().optional().describe("State/Province (0-128 chars)"),
289
+ streetAddress: z.string().optional().describe("Street address (0-128 chars)"),
290
+ country: z.string().optional().describe("Country code (ISO 3166-1 alpha-2)"),
291
+ ip: z.string().optional().describe("IP SANs (IP address format)"),
292
+ }, async (params) => {
293
+ try {
294
+ const body = {
295
+ x509Parameters: {
296
+ commonName: params.commonName,
297
+ },
298
+ };
299
+ if (params.keyType !== undefined)
300
+ body.keyType = params.keyType;
301
+ if (params.period !== undefined)
302
+ body.period = params.period;
303
+ if (params.altName !== undefined)
304
+ body.x509Parameters.altName = params.altName;
305
+ if (params.organization !== undefined)
306
+ body.x509Parameters.organization = params.organization;
307
+ if (params.organizationUnit !== undefined)
308
+ body.x509Parameters.organizationUnit = params.organizationUnit;
309
+ if (params.locality !== undefined)
310
+ body.x509Parameters.locality = params.locality;
311
+ if (params.stateProvince !== undefined)
312
+ body.x509Parameters.stateProvince = params.stateProvince;
313
+ if (params.streetAddress !== undefined)
314
+ body.x509Parameters.streetAddress = params.streetAddress;
315
+ if (params.country !== undefined)
316
+ body.x509Parameters.country = params.country;
317
+ if (params.ip !== undefined)
318
+ body.x509Parameters.ip = params.ip;
319
+ const result = await client.requestRaw("POST", `/api/v1/ca/${params.caTag}/cert`, undefined, body);
320
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
321
+ }
322
+ catch (error) {
323
+ return { content: [{ type: "text", text: error.message }], isError: true };
324
+ }
325
+ });
326
+ // ncloud_pca_sign_end_csr — Sign End CSR
327
+ server.tool("ncloud_pca_sign_end_csr", "Sign a provided CSR to issue a new end-entity certificate. The existing CA certificate is returned.", {
328
+ caTag: z.string().describe("CA tag value of the signing CA"),
329
+ csrPem: z.string().describe("CSR in PEM format"),
330
+ }, async (params) => {
331
+ try {
332
+ const result = await client.requestRaw("POST", `/api/v1/ca/${params.caTag}/cert/sign`, undefined, {
333
+ csrPem: params.csrPem,
334
+ });
335
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
336
+ }
337
+ catch (error) {
338
+ return { content: [{ type: "text", text: error.message }], isError: true };
339
+ }
340
+ });
341
+ // ncloud_pca_revoke_end_cert — Revoke End Cert
342
+ server.tool("ncloud_pca_revoke_end_cert", "⚠️ Destructive: Revoke an end-entity certificate by its serial number. This action is irreversible and the certificate will no longer be trusted.", {
343
+ caTag: z.string().describe("CA tag value (required)"),
344
+ serialNo: z.string().describe("Certificate serial number to revoke (required)"),
345
+ }, async (params) => {
346
+ try {
347
+ const result = await client.requestRaw("POST", `/api/v1/ca/${params.caTag}/cert/${params.serialNo}/revoke`);
348
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
349
+ }
350
+ catch (error) {
351
+ return { content: [{ type: "text", text: error.message }], isError: true };
352
+ }
353
+ });
354
+ // ─── CA Maintenance ───────────────────────────────────────────────────────────
355
+ // ncloud_pca_trim_ca — Trim CA
356
+ server.tool("ncloud_pca_trim_ca", "Trim expired certificates from the CRL to clean up the revocation list.", {
357
+ caTag: z.string().describe("CA tag value"),
358
+ }, async (params) => {
359
+ try {
360
+ const result = await client.requestRaw("POST", `/api/v1/ca/${params.caTag}/trim`);
361
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
362
+ }
363
+ catch (error) {
364
+ return { content: [{ type: "text", text: error.message }], isError: true };
365
+ }
366
+ });
367
+ }
368
+ //# sourceMappingURL=private-ca.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"private-ca.js","sourceRoot":"","sources":["../../src/tools/private-ca.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAoB;IAE5E,gFAAgF;IAEhF,oCAAoC;IACpC,MAAM,CAAC,IAAI,CACT,qBAAqB,EACrB,gIAAgI,EAChI;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;KACrE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,WAAW,GAAgD,EAAE,CAAC;YACpE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACpE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;YACzE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,oCAAoC;IACpC,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,qEAAqE,EACrE;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACxD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,mCAAmC;IACnC,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,mGAAmG,EACnG;QACE,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,kEAAkE,CAAC;QAC5H,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4EAA4E,CAAC;QACvH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;QAChG,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC3D,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QACzF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;QACpF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC3D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC5F,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC5E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACnE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAClF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC9E,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;KACzF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,WAAW,GAAuC;gBACtD,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC;YACF,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;gBAAE,WAAW,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YAE7E,MAAM,IAAI,GAAwB;gBAChC,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,cAAc,EAAE;oBACd,UAAU,EAAE,MAAM,CAAC,UAAU;iBAC9B;aACF,CAAC;YACF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACvD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/E,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;YAChE,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/E,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAClF,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YACjG,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;YAC9F,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;YAE1G,MAAM,WAAW,GAAG,IAAI,eAAe,CACrC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAA2B,CAC7G,CAAC,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,aAAa,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAEjE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACtE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,0CAA0C;IAC1C,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,0LAA0L,EAC1L;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC1C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;KAClF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,MAAM,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAClH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,mCAAmC;IACnC,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,4KAA4K,EAC5K;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KACtD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,cAAc,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,yCAAyC;IACzC,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,kDAAkD,EAClD;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC3C,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC;YAClF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,qCAAqC;IACrC,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,0EAA0E,EAC1E;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC3C,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC;YAChF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,iFAAiF;IAEjF,6CAA6C;IAC7C,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,6DAA6D,EAC7D;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC3C,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,MAAM,CAAC,KAAK,aAAa,CAAC,CAAC;YACvF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,mDAAmD;IACnD,MAAM,CAAC,IAAI,CACT,8BAA8B,EAC9B,yEAAyE,EACzE;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;KACxF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,MAAM,CAAC,KAAK,aAAa,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7H,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,qCAAqC;IACrC,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,+EAA+E,EAC/E;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC3C,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,MAAM,CAAC,KAAK,aAAa,CAAC,CAAC;YACxF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,iFAAiF;IAEjF,yEAAyE;IACzE,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,wEAAwE,EACxE;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC1C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;KACrG,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,MAAM,CAAC,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YAClI,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,uCAAuC;IACvC,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,4GAA4G,EAC5G;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;KACtD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,cAAc,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC;YACpF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,iFAAiF;IAEjF,0CAA0C;IAC1C,MAAM,CAAC,IAAI,CACT,wBAAwB,EACxB,kHAAkH,EAClH;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;KACzD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;YACpF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,+CAA+C;IAC/C,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,oFAAoF,EACpF;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACpE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACnE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KAC1E,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,MAAM,CAAC,KAAK,WAAW,EAAE,SAAS,EAAE;gBAC/F,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,UAAU,EAAE,MAAM,CAAC,UAAU;aAC9B,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,4CAA4C;IAC5C,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,0EAA0E,EAC1E;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;QACrE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC/D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACjD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,MAAM,CAAC,KAAK,WAAW,EAAE,SAAS,EAAE;gBAC/F,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,iFAAiF;IAEjF,gDAAgD;IAChD,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,mFAAmF,EACnF;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC3C,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,gDAAgD;IAChD,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,iFAAiF,EACjF;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;QAC1C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KAC3D,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,MAAM,CAAC,KAAK,SAAS,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,6CAA6C;IAC7C,MAAM,CAAC,IAAI,CACT,2BAA2B,EAC3B,+FAA+F,EAC/F;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC5D,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC7G,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;QACnF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;QAC3D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QACzD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC9E,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACnF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACnE,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC7E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;QAC7E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QAC5E,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;KAClE,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,IAAI,GAAwB;gBAChC,cAAc,EAAE;oBACd,UAAU,EAAE,MAAM,CAAC,UAAU;iBAC9B;aACF,CAAC;YACF,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAChE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;gBAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7D,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/E,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;YAC9F,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;YAC1G,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAClF,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YACjG,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YACjG,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/E,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS;gBAAE,IAAI,CAAC,cAAc,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;YAEhE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,MAAM,CAAC,KAAK,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;YACnG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,yCAAyC;IACzC,MAAM,CAAC,IAAI,CACT,yBAAyB,EACzB,qGAAqG,EACrG;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;KACjD,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,MAAM,CAAC,KAAK,YAAY,EAAE,SAAS,EAAE;gBAChG,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB,CAAC,CAAC;YACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,+CAA+C;IAC/C,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,mJAAmJ,EACnJ;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACrD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;KAChF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,MAAM,CAAC,KAAK,SAAS,MAAM,CAAC,QAAQ,SAAS,CAAC,CAAC;YAC5G,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;IAEF,iFAAiF;IAEjF,+BAA+B;IAC/B,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,yEAAyE,EACzE;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;KAC3C,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC;YAClF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACzF,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QACtF,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { NcloudClient } from "../client/ncloud-client.js";
3
+ export declare function registerResourceManagerTools(server: McpServer, client: NcloudClient): void;
@@ -0,0 +1,151 @@
1
+ import { z } from "zod";
2
+ export function registerResourceManagerTools(server, client) {
3
+ // ncloud_resource_list_resources — List resources with optional filters
4
+ server.tool("ncloud_resource_list_resources", "List resources managed in Ncloud. When NRN is specified, returns single resource detail with tags and groups.", {
5
+ nrn: z.string().optional().describe("Ncloud Resource Name for single resource detail lookup"),
6
+ productName: z.string().optional().describe("Product name filter (e.g., 'Server (VPC)', 'VPC')"),
7
+ regionCode: z.string().optional().describe("Region code filter (e.g., 'KR', 'JPN')"),
8
+ resourceType: z.string().optional().describe("Resource type filter"),
9
+ resourceId: z.string().optional().describe("Resource ID filter"),
10
+ resourceName: z.string().optional().describe("Resource name filter"),
11
+ tag: z.array(z.object({
12
+ tagKey: z.string().describe("Tag key"),
13
+ tagValue: z.string().describe("Tag value"),
14
+ })).optional().describe("Tag filter array [{tagKey, tagValue}]"),
15
+ groupName: z.string().optional().describe("Group name filter"),
16
+ page: z.number().optional().describe("Page number (default 0)"),
17
+ size: z.number().optional().describe("Page size (default 20)"),
18
+ }, async (params) => {
19
+ try {
20
+ const body = {};
21
+ if (params.nrn !== undefined)
22
+ body.nrn = params.nrn;
23
+ if (params.productName !== undefined)
24
+ body.productName = params.productName;
25
+ if (params.regionCode !== undefined)
26
+ body.regionCode = params.regionCode;
27
+ if (params.resourceType !== undefined)
28
+ body.resourceType = params.resourceType;
29
+ if (params.resourceId !== undefined)
30
+ body.resourceId = params.resourceId;
31
+ if (params.resourceName !== undefined)
32
+ body.resourceName = params.resourceName;
33
+ if (params.tag !== undefined)
34
+ body.tag = params.tag;
35
+ if (params.groupName !== undefined)
36
+ body.groupName = params.groupName;
37
+ if (params.page !== undefined)
38
+ body.page = params.page;
39
+ if (params.size !== undefined)
40
+ body.size = params.size;
41
+ const result = await client.postRequest("/api/v1/resources", body);
42
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
43
+ }
44
+ catch (error) {
45
+ return { content: [{ type: "text", text: error.message }], isError: true };
46
+ }
47
+ });
48
+ // ncloud_resource_attach_tag — Attach tag to resources
49
+ server.tool("ncloud_resource_attach_tag", "Attach a tag to one or more resources. If the tag key already exists, the value is updated.", {
50
+ nrnList: z.array(z.string()).describe("List of Ncloud Resource Names to tag"),
51
+ tagKey: z.string().describe("Tag key to attach"),
52
+ tagValue: z.string().describe("Tag value to attach"),
53
+ }, async (params) => {
54
+ try {
55
+ const body = {
56
+ nrnList: params.nrnList,
57
+ tagKey: params.tagKey,
58
+ tagValue: params.tagValue,
59
+ };
60
+ const result = await client.postRequest("/api/v1/resource-tags", body);
61
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
62
+ }
63
+ catch (error) {
64
+ return { content: [{ type: "text", text: error.message }], isError: true };
65
+ }
66
+ });
67
+ // ncloud_resource_detach_tag — Detach tag from resources (destructive)
68
+ server.tool("ncloud_resource_detach_tag", "\u26a0\ufe0f Destructive: Remove a tag from one or more resources. Set confirm=true to execute.", {
69
+ nrnList: z.array(z.string()).describe("List of Ncloud Resource Names to remove tag from"),
70
+ tagKey: z.string().describe("Tag key to remove"),
71
+ tagValue: z.string().optional().describe("Tag value (optional, if omitted removes all values for the key)"),
72
+ confirm: z.boolean().default(false).describe("Must be true to actually execute the destructive operation"),
73
+ }, async (params) => {
74
+ try {
75
+ if (!params.confirm) {
76
+ const message = `\u26a0\ufe0f This will remove tag [${params.tagKey}${params.tagValue ? `=${params.tagValue}` : ""}] from ${params.nrnList.length} resource(s).\n\nTo execute, call this tool again with confirm=true.`;
77
+ return { content: [{ type: "text", text: message }] };
78
+ }
79
+ const body = {
80
+ nrnList: params.nrnList,
81
+ tagKey: params.tagKey,
82
+ };
83
+ if (params.tagValue !== undefined)
84
+ body.tagValue = params.tagValue;
85
+ const result = await client.deleteRequest("/api/v1/resource-tags", body);
86
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
87
+ }
88
+ catch (error) {
89
+ return { content: [{ type: "text", text: error.message }], isError: true };
90
+ }
91
+ });
92
+ // ncloud_resource_list_groups — List resource groups
93
+ server.tool("ncloud_resource_list_groups", "List resource groups with optional name filter and pagination.", {
94
+ groupName: z.string().optional().describe("Group name filter"),
95
+ page: z.number().optional().describe("Page number (default 0)"),
96
+ size: z.number().optional().describe("Page size (default 20)"),
97
+ }, async (params) => {
98
+ try {
99
+ const queryParams = {};
100
+ if (params.groupName !== undefined)
101
+ queryParams.groupName = params.groupName;
102
+ if (params.page !== undefined)
103
+ queryParams.page = String(params.page);
104
+ if (params.size !== undefined)
105
+ queryParams.size = String(params.size);
106
+ const result = await client.requestRaw("GET", "/api/v1/groups", Object.keys(queryParams).length > 0 ? queryParams : undefined);
107
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
108
+ }
109
+ catch (error) {
110
+ return { content: [{ type: "text", text: error.message }], isError: true };
111
+ }
112
+ });
113
+ // ncloud_resource_attach_group — Add resources to a group
114
+ server.tool("ncloud_resource_attach_group", "Add one or more resources to a resource group.", {
115
+ groupId: z.string().describe("Resource group ID"),
116
+ nrnList: z.array(z.string()).describe("List of Ncloud Resource Names to add to the group"),
117
+ }, async (params) => {
118
+ try {
119
+ const body = {
120
+ nrnList: params.nrnList,
121
+ };
122
+ const result = await client.requestRaw("POST", `/api/v1/groups/${encodeURIComponent(params.groupId)}/resources`, undefined, body);
123
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
124
+ }
125
+ catch (error) {
126
+ return { content: [{ type: "text", text: error.message }], isError: true };
127
+ }
128
+ });
129
+ // ncloud_resource_detach_group — Remove resources from a group (destructive)
130
+ server.tool("ncloud_resource_detach_group", "\u26a0\ufe0f Destructive: Remove one or more resources from a resource group. Set confirm=true to execute.", {
131
+ groupId: z.string().describe("Resource group ID"),
132
+ nrnList: z.array(z.string()).describe("List of Ncloud Resource Names to remove from the group"),
133
+ confirm: z.boolean().default(false).describe("Must be true to actually execute the destructive operation"),
134
+ }, async (params) => {
135
+ try {
136
+ if (!params.confirm) {
137
+ const message = `\u26a0\ufe0f This will remove ${params.nrnList.length} resource(s) from group [${params.groupId}].\n\nTo execute, call this tool again with confirm=true.`;
138
+ return { content: [{ type: "text", text: message }] };
139
+ }
140
+ const body = {
141
+ nrnList: params.nrnList,
142
+ };
143
+ const result = await client.requestRaw("DELETE", `/api/v1/groups/${encodeURIComponent(params.groupId)}/resources`, undefined, body);
144
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
145
+ }
146
+ catch (error) {
147
+ return { content: [{ type: "text", text: error.message }], isError: true };
148
+ }
149
+ });
150
+ }
151
+ //# sourceMappingURL=resource-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-manager.js","sourceRoot":"","sources":["../../src/tools/resource-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { NcloudClient } from "../client/ncloud-client.js";
3
+ export declare function registerRouteTableTools(server: McpServer, client: NcloudClient): void;