@prodisco/k8s-mcp 0.1.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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +226 -0
  3. package/dist/codegen/generateTypes.d.ts +8 -0
  4. package/dist/codegen/generateTypes.d.ts.map +1 -0
  5. package/dist/codegen/generateTypes.js +96 -0
  6. package/dist/codegen/generateTypes.js.map +1 -0
  7. package/dist/codegen/interfaceGenerator.d.ts +9 -0
  8. package/dist/codegen/interfaceGenerator.d.ts.map +1 -0
  9. package/dist/codegen/interfaceGenerator.js +185 -0
  10. package/dist/codegen/interfaceGenerator.js.map +1 -0
  11. package/dist/codegen/toolMapping.d.ts +11 -0
  12. package/dist/codegen/toolMapping.d.ts.map +1 -0
  13. package/dist/codegen/toolMapping.js +78 -0
  14. package/dist/codegen/toolMapping.js.map +1 -0
  15. package/dist/codegen/typeExtractor.d.ts +23 -0
  16. package/dist/codegen/typeExtractor.d.ts.map +1 -0
  17. package/dist/codegen/typeExtractor.js +112 -0
  18. package/dist/codegen/typeExtractor.js.map +1 -0
  19. package/dist/kube/client.d.ts +37 -0
  20. package/dist/kube/client.d.ts.map +1 -0
  21. package/dist/kube/client.js +161 -0
  22. package/dist/kube/client.js.map +1 -0
  23. package/dist/kube/types.d.ts +27 -0
  24. package/dist/kube/types.d.ts.map +1 -0
  25. package/dist/kube/types.js +2 -0
  26. package/dist/kube/types.js.map +1 -0
  27. package/dist/resources/filesystem.d.ts +15 -0
  28. package/dist/resources/filesystem.d.ts.map +1 -0
  29. package/dist/resources/filesystem.js +54 -0
  30. package/dist/resources/filesystem.js.map +1 -0
  31. package/dist/server.d.ts +3 -0
  32. package/dist/server.d.ts.map +1 -0
  33. package/dist/server.js +127 -0
  34. package/dist/server.js.map +1 -0
  35. package/dist/tools/index.d.ts +3 -0
  36. package/dist/tools/index.d.ts.map +1 -0
  37. package/dist/tools/index.js +3 -0
  38. package/dist/tools/index.js.map +1 -0
  39. package/dist/tools/kubernetes/index.d.ts +5 -0
  40. package/dist/tools/kubernetes/index.d.ts.map +1 -0
  41. package/dist/tools/kubernetes/index.js +6 -0
  42. package/dist/tools/kubernetes/index.js.map +1 -0
  43. package/dist/tools/kubernetes/metadata.d.ts +110 -0
  44. package/dist/tools/kubernetes/metadata.d.ts.map +1 -0
  45. package/dist/tools/kubernetes/metadata.js +19 -0
  46. package/dist/tools/kubernetes/metadata.js.map +1 -0
  47. package/dist/tools/kubernetes/searchTools-old.d.ts +35 -0
  48. package/dist/tools/kubernetes/searchTools-old.d.ts.map +1 -0
  49. package/dist/tools/kubernetes/searchTools-old.js +414 -0
  50. package/dist/tools/kubernetes/searchTools-old.js.map +1 -0
  51. package/dist/tools/kubernetes/searchTools-v2.d.ts +35 -0
  52. package/dist/tools/kubernetes/searchTools-v2.d.ts.map +1 -0
  53. package/dist/tools/kubernetes/searchTools-v2.js +269 -0
  54. package/dist/tools/kubernetes/searchTools-v2.js.map +1 -0
  55. package/dist/tools/kubernetes/searchTools.d.ts +87 -0
  56. package/dist/tools/kubernetes/searchTools.d.ts.map +1 -0
  57. package/dist/tools/kubernetes/searchTools.js +529 -0
  58. package/dist/tools/kubernetes/searchTools.js.map +1 -0
  59. package/dist/tools/kubernetes/typeDefinitions.d.ts +24 -0
  60. package/dist/tools/kubernetes/typeDefinitions.d.ts.map +1 -0
  61. package/dist/tools/kubernetes/typeDefinitions.js +518 -0
  62. package/dist/tools/kubernetes/typeDefinitions.js.map +1 -0
  63. package/dist/tools/types.d.ts +10 -0
  64. package/dist/tools/types.d.ts.map +1 -0
  65. package/dist/tools/types.js +2 -0
  66. package/dist/tools/types.js.map +1 -0
  67. package/dist/util/manifest.d.ts +5 -0
  68. package/dist/util/manifest.d.ts.map +1 -0
  69. package/dist/util/manifest.js +31 -0
  70. package/dist/util/manifest.js.map +1 -0
  71. package/dist/util/paths.d.ts +7 -0
  72. package/dist/util/paths.d.ts.map +1 -0
  73. package/dist/util/paths.js +14 -0
  74. package/dist/util/paths.js.map +1 -0
  75. package/dist/util/summary.d.ts +403 -0
  76. package/dist/util/summary.d.ts.map +1 -0
  77. package/dist/util/summary.js +211 -0
  78. package/dist/util/summary.js.map +1 -0
  79. package/package.json +61 -0
@@ -0,0 +1,403 @@
1
+ import type { V1Deployment, V1Node, V1ObjectMeta, V1Pod, V1Service } from '@kubernetes/client-node';
2
+ import { z } from 'zod';
3
+ export declare const MetadataSummarySchema: z.ZodObject<{
4
+ name: z.ZodOptional<z.ZodString>;
5
+ namespace: z.ZodOptional<z.ZodString>;
6
+ uid: z.ZodOptional<z.ZodString>;
7
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
8
+ annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
9
+ creationTimestamp: z.ZodOptional<z.ZodString>;
10
+ ageSeconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
11
+ }, "strip", z.ZodTypeAny, {
12
+ namespace?: string | undefined;
13
+ name?: string | undefined;
14
+ uid?: string | undefined;
15
+ labels?: Record<string, string> | undefined;
16
+ annotations?: Record<string, string> | undefined;
17
+ creationTimestamp?: string | undefined;
18
+ ageSeconds?: number | null | undefined;
19
+ }, {
20
+ namespace?: string | undefined;
21
+ name?: string | undefined;
22
+ uid?: string | undefined;
23
+ labels?: Record<string, string> | undefined;
24
+ annotations?: Record<string, string> | undefined;
25
+ creationTimestamp?: string | undefined;
26
+ ageSeconds?: number | null | undefined;
27
+ }>;
28
+ export type MetadataSummary = z.infer<typeof MetadataSummarySchema>;
29
+ export declare function summarizeMetadata(meta?: V1ObjectMeta | null): MetadataSummary;
30
+ export declare function calculateAgeSeconds(timestamp: string | Date): number | null;
31
+ export declare const PodSummarySchema: z.ZodObject<{
32
+ name: z.ZodOptional<z.ZodString>;
33
+ namespace: z.ZodOptional<z.ZodString>;
34
+ uid: z.ZodOptional<z.ZodString>;
35
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
36
+ annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
37
+ creationTimestamp: z.ZodOptional<z.ZodString>;
38
+ ageSeconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
39
+ } & {
40
+ phase: z.ZodOptional<z.ZodString>;
41
+ podIP: z.ZodOptional<z.ZodString>;
42
+ nodeName: z.ZodOptional<z.ZodString>;
43
+ qosClass: z.ZodOptional<z.ZodString>;
44
+ readyContainers: z.ZodNumber;
45
+ totalContainers: z.ZodNumber;
46
+ restarts: z.ZodNumber;
47
+ failingConditions: z.ZodArray<z.ZodObject<{
48
+ type: z.ZodOptional<z.ZodString>;
49
+ status: z.ZodOptional<z.ZodString>;
50
+ reason: z.ZodOptional<z.ZodString>;
51
+ message: z.ZodOptional<z.ZodString>;
52
+ lastTransitionTime: z.ZodOptional<z.ZodString>;
53
+ }, "strip", z.ZodTypeAny, {
54
+ message?: string | undefined;
55
+ type?: string | undefined;
56
+ status?: string | undefined;
57
+ reason?: string | undefined;
58
+ lastTransitionTime?: string | undefined;
59
+ }, {
60
+ message?: string | undefined;
61
+ type?: string | undefined;
62
+ status?: string | undefined;
63
+ reason?: string | undefined;
64
+ lastTransitionTime?: string | undefined;
65
+ }>, "many">;
66
+ }, "strip", z.ZodTypeAny, {
67
+ readyContainers: number;
68
+ totalContainers: number;
69
+ restarts: number;
70
+ failingConditions: {
71
+ message?: string | undefined;
72
+ type?: string | undefined;
73
+ status?: string | undefined;
74
+ reason?: string | undefined;
75
+ lastTransitionTime?: string | undefined;
76
+ }[];
77
+ namespace?: string | undefined;
78
+ name?: string | undefined;
79
+ uid?: string | undefined;
80
+ labels?: Record<string, string> | undefined;
81
+ annotations?: Record<string, string> | undefined;
82
+ creationTimestamp?: string | undefined;
83
+ ageSeconds?: number | null | undefined;
84
+ phase?: string | undefined;
85
+ podIP?: string | undefined;
86
+ nodeName?: string | undefined;
87
+ qosClass?: string | undefined;
88
+ }, {
89
+ readyContainers: number;
90
+ totalContainers: number;
91
+ restarts: number;
92
+ failingConditions: {
93
+ message?: string | undefined;
94
+ type?: string | undefined;
95
+ status?: string | undefined;
96
+ reason?: string | undefined;
97
+ lastTransitionTime?: string | undefined;
98
+ }[];
99
+ namespace?: string | undefined;
100
+ name?: string | undefined;
101
+ uid?: string | undefined;
102
+ labels?: Record<string, string> | undefined;
103
+ annotations?: Record<string, string> | undefined;
104
+ creationTimestamp?: string | undefined;
105
+ ageSeconds?: number | null | undefined;
106
+ phase?: string | undefined;
107
+ podIP?: string | undefined;
108
+ nodeName?: string | undefined;
109
+ qosClass?: string | undefined;
110
+ }>;
111
+ export type PodSummary = z.infer<typeof PodSummarySchema>;
112
+ export declare function summarizePod(pod: V1Pod): PodSummary;
113
+ export declare const DeploymentSummarySchema: z.ZodObject<{
114
+ name: z.ZodOptional<z.ZodString>;
115
+ namespace: z.ZodOptional<z.ZodString>;
116
+ uid: z.ZodOptional<z.ZodString>;
117
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
118
+ annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
119
+ creationTimestamp: z.ZodOptional<z.ZodString>;
120
+ ageSeconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
121
+ } & {
122
+ strategy: z.ZodOptional<z.ZodString>;
123
+ replicas: z.ZodObject<{
124
+ desired: z.ZodNumber;
125
+ ready: z.ZodNumber;
126
+ available: z.ZodNumber;
127
+ updated: z.ZodNumber;
128
+ }, "strip", z.ZodTypeAny, {
129
+ desired: number;
130
+ ready: number;
131
+ available: number;
132
+ updated: number;
133
+ }, {
134
+ desired: number;
135
+ ready: number;
136
+ available: number;
137
+ updated: number;
138
+ }>;
139
+ selector: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
140
+ failingConditions: z.ZodArray<z.ZodObject<{
141
+ type: z.ZodOptional<z.ZodString>;
142
+ status: z.ZodOptional<z.ZodString>;
143
+ reason: z.ZodOptional<z.ZodString>;
144
+ message: z.ZodOptional<z.ZodString>;
145
+ lastTransitionTime: z.ZodOptional<z.ZodString>;
146
+ }, "strip", z.ZodTypeAny, {
147
+ message?: string | undefined;
148
+ type?: string | undefined;
149
+ status?: string | undefined;
150
+ reason?: string | undefined;
151
+ lastTransitionTime?: string | undefined;
152
+ }, {
153
+ message?: string | undefined;
154
+ type?: string | undefined;
155
+ status?: string | undefined;
156
+ reason?: string | undefined;
157
+ lastTransitionTime?: string | undefined;
158
+ }>, "many">;
159
+ }, "strip", z.ZodTypeAny, {
160
+ failingConditions: {
161
+ message?: string | undefined;
162
+ type?: string | undefined;
163
+ status?: string | undefined;
164
+ reason?: string | undefined;
165
+ lastTransitionTime?: string | undefined;
166
+ }[];
167
+ replicas: {
168
+ desired: number;
169
+ ready: number;
170
+ available: number;
171
+ updated: number;
172
+ };
173
+ namespace?: string | undefined;
174
+ name?: string | undefined;
175
+ uid?: string | undefined;
176
+ labels?: Record<string, string> | undefined;
177
+ annotations?: Record<string, string> | undefined;
178
+ creationTimestamp?: string | undefined;
179
+ ageSeconds?: number | null | undefined;
180
+ strategy?: string | undefined;
181
+ selector?: Record<string, string> | undefined;
182
+ }, {
183
+ failingConditions: {
184
+ message?: string | undefined;
185
+ type?: string | undefined;
186
+ status?: string | undefined;
187
+ reason?: string | undefined;
188
+ lastTransitionTime?: string | undefined;
189
+ }[];
190
+ replicas: {
191
+ desired: number;
192
+ ready: number;
193
+ available: number;
194
+ updated: number;
195
+ };
196
+ namespace?: string | undefined;
197
+ name?: string | undefined;
198
+ uid?: string | undefined;
199
+ labels?: Record<string, string> | undefined;
200
+ annotations?: Record<string, string> | undefined;
201
+ creationTimestamp?: string | undefined;
202
+ ageSeconds?: number | null | undefined;
203
+ strategy?: string | undefined;
204
+ selector?: Record<string, string> | undefined;
205
+ }>;
206
+ export type DeploymentSummary = z.infer<typeof DeploymentSummarySchema>;
207
+ export declare function summarizeDeployment(deployment: V1Deployment): DeploymentSummary;
208
+ export declare const ServiceSummarySchema: z.ZodObject<{
209
+ name: z.ZodOptional<z.ZodString>;
210
+ namespace: z.ZodOptional<z.ZodString>;
211
+ uid: z.ZodOptional<z.ZodString>;
212
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
213
+ annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
214
+ creationTimestamp: z.ZodOptional<z.ZodString>;
215
+ ageSeconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
216
+ } & {
217
+ type: z.ZodOptional<z.ZodString>;
218
+ clusterIP: z.ZodOptional<z.ZodString>;
219
+ externalIPs: z.ZodArray<z.ZodString, "many">;
220
+ selector: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
221
+ ports: z.ZodArray<z.ZodObject<{
222
+ name: z.ZodOptional<z.ZodString>;
223
+ protocol: z.ZodOptional<z.ZodString>;
224
+ port: z.ZodNumber;
225
+ targetPort: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber]>>;
226
+ nodePort: z.ZodOptional<z.ZodNumber>;
227
+ }, "strip", z.ZodTypeAny, {
228
+ port: number;
229
+ name?: string | undefined;
230
+ protocol?: string | undefined;
231
+ targetPort?: string | number | undefined;
232
+ nodePort?: number | undefined;
233
+ }, {
234
+ port: number;
235
+ name?: string | undefined;
236
+ protocol?: string | undefined;
237
+ targetPort?: string | number | undefined;
238
+ nodePort?: number | undefined;
239
+ }>, "many">;
240
+ }, "strip", z.ZodTypeAny, {
241
+ externalIPs: string[];
242
+ ports: {
243
+ port: number;
244
+ name?: string | undefined;
245
+ protocol?: string | undefined;
246
+ targetPort?: string | number | undefined;
247
+ nodePort?: number | undefined;
248
+ }[];
249
+ type?: string | undefined;
250
+ namespace?: string | undefined;
251
+ name?: string | undefined;
252
+ uid?: string | undefined;
253
+ labels?: Record<string, string> | undefined;
254
+ annotations?: Record<string, string> | undefined;
255
+ creationTimestamp?: string | undefined;
256
+ ageSeconds?: number | null | undefined;
257
+ selector?: Record<string, string> | undefined;
258
+ clusterIP?: string | undefined;
259
+ }, {
260
+ externalIPs: string[];
261
+ ports: {
262
+ port: number;
263
+ name?: string | undefined;
264
+ protocol?: string | undefined;
265
+ targetPort?: string | number | undefined;
266
+ nodePort?: number | undefined;
267
+ }[];
268
+ type?: string | undefined;
269
+ namespace?: string | undefined;
270
+ name?: string | undefined;
271
+ uid?: string | undefined;
272
+ labels?: Record<string, string> | undefined;
273
+ annotations?: Record<string, string> | undefined;
274
+ creationTimestamp?: string | undefined;
275
+ ageSeconds?: number | null | undefined;
276
+ selector?: Record<string, string> | undefined;
277
+ clusterIP?: string | undefined;
278
+ }>;
279
+ export type ServiceSummary = z.infer<typeof ServiceSummarySchema>;
280
+ export declare function summarizeService(service: V1Service): ServiceSummary;
281
+ export declare const NodeSummarySchema: z.ZodObject<{
282
+ name: z.ZodOptional<z.ZodString>;
283
+ namespace: z.ZodOptional<z.ZodString>;
284
+ uid: z.ZodOptional<z.ZodString>;
285
+ creationTimestamp: z.ZodOptional<z.ZodString>;
286
+ ageSeconds: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
287
+ } & {
288
+ labels: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
289
+ annotations: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
290
+ kubeletVersion: z.ZodOptional<z.ZodString>;
291
+ osImage: z.ZodOptional<z.ZodString>;
292
+ containerRuntimeVersion: z.ZodOptional<z.ZodString>;
293
+ capacity: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
294
+ allocatable: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber]>>>;
295
+ addresses: z.ZodOptional<z.ZodArray<z.ZodObject<{
296
+ type: z.ZodOptional<z.ZodString>;
297
+ address: z.ZodOptional<z.ZodString>;
298
+ }, "strip", z.ZodTypeAny, {
299
+ type?: string | undefined;
300
+ address?: string | undefined;
301
+ }, {
302
+ type?: string | undefined;
303
+ address?: string | undefined;
304
+ }>, "many">>;
305
+ conditions: z.ZodArray<z.ZodObject<{
306
+ type: z.ZodOptional<z.ZodString>;
307
+ status: z.ZodOptional<z.ZodString>;
308
+ reason: z.ZodOptional<z.ZodString>;
309
+ message: z.ZodOptional<z.ZodString>;
310
+ lastTransitionTime: z.ZodOptional<z.ZodString>;
311
+ }, "strip", z.ZodTypeAny, {
312
+ message?: string | undefined;
313
+ type?: string | undefined;
314
+ status?: string | undefined;
315
+ reason?: string | undefined;
316
+ lastTransitionTime?: string | undefined;
317
+ }, {
318
+ message?: string | undefined;
319
+ type?: string | undefined;
320
+ status?: string | undefined;
321
+ reason?: string | undefined;
322
+ lastTransitionTime?: string | undefined;
323
+ }>, "many">;
324
+ taints: z.ZodOptional<z.ZodArray<z.ZodObject<{
325
+ key: z.ZodOptional<z.ZodString>;
326
+ value: z.ZodOptional<z.ZodString>;
327
+ effect: z.ZodOptional<z.ZodString>;
328
+ timeAdded: z.ZodOptional<z.ZodString>;
329
+ }, "strip", z.ZodTypeAny, {
330
+ value?: string | undefined;
331
+ key?: string | undefined;
332
+ effect?: string | undefined;
333
+ timeAdded?: string | undefined;
334
+ }, {
335
+ value?: string | undefined;
336
+ key?: string | undefined;
337
+ effect?: string | undefined;
338
+ timeAdded?: string | undefined;
339
+ }>, "many">>;
340
+ }, "strip", z.ZodTypeAny, {
341
+ conditions: {
342
+ message?: string | undefined;
343
+ type?: string | undefined;
344
+ status?: string | undefined;
345
+ reason?: string | undefined;
346
+ lastTransitionTime?: string | undefined;
347
+ }[];
348
+ namespace?: string | undefined;
349
+ name?: string | undefined;
350
+ uid?: string | undefined;
351
+ labels?: Record<string, string> | undefined;
352
+ annotations?: Record<string, string> | undefined;
353
+ creationTimestamp?: string | undefined;
354
+ ageSeconds?: number | null | undefined;
355
+ kubeletVersion?: string | undefined;
356
+ osImage?: string | undefined;
357
+ containerRuntimeVersion?: string | undefined;
358
+ capacity?: Record<string, string | number> | undefined;
359
+ allocatable?: Record<string, string | number> | undefined;
360
+ addresses?: {
361
+ type?: string | undefined;
362
+ address?: string | undefined;
363
+ }[] | undefined;
364
+ taints?: {
365
+ value?: string | undefined;
366
+ key?: string | undefined;
367
+ effect?: string | undefined;
368
+ timeAdded?: string | undefined;
369
+ }[] | undefined;
370
+ }, {
371
+ conditions: {
372
+ message?: string | undefined;
373
+ type?: string | undefined;
374
+ status?: string | undefined;
375
+ reason?: string | undefined;
376
+ lastTransitionTime?: string | undefined;
377
+ }[];
378
+ namespace?: string | undefined;
379
+ name?: string | undefined;
380
+ uid?: string | undefined;
381
+ labels?: Record<string, string> | undefined;
382
+ annotations?: Record<string, string> | undefined;
383
+ creationTimestamp?: string | undefined;
384
+ ageSeconds?: number | null | undefined;
385
+ kubeletVersion?: string | undefined;
386
+ osImage?: string | undefined;
387
+ containerRuntimeVersion?: string | undefined;
388
+ capacity?: Record<string, string | number> | undefined;
389
+ allocatable?: Record<string, string | number> | undefined;
390
+ addresses?: {
391
+ type?: string | undefined;
392
+ address?: string | undefined;
393
+ }[] | undefined;
394
+ taints?: {
395
+ value?: string | undefined;
396
+ key?: string | undefined;
397
+ effect?: string | undefined;
398
+ timeAdded?: string | undefined;
399
+ }[] | undefined;
400
+ }>;
401
+ export type NodeSummary = z.infer<typeof NodeSummarySchema>;
402
+ export declare function summarizeNode(node: V1Node): NodeSummary;
403
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/util/summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,MAAM,EACN,YAAY,EACZ,KAAK,EACL,SAAS,EACV,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;EAQhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,eAAe,CAgB7E;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAQ3E;AAUD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,wBAAgB,YAAY,CAAC,GAAG,EAAE,KAAK,GAAG,UAAU,CA0BnD;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,YAAY,GAAG,iBAAiB,CAuB/E;AAUD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,SAAS,GAAG,cAAc,CAkBnE;AAiBD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAkCvD"}
@@ -0,0 +1,211 @@
1
+ import { z } from 'zod';
2
+ export const MetadataSummarySchema = z.object({
3
+ name: z.string().optional(),
4
+ namespace: z.string().optional(),
5
+ uid: z.string().optional(),
6
+ labels: z.record(z.string()).optional(),
7
+ annotations: z.record(z.string()).optional(),
8
+ creationTimestamp: z.string().optional(),
9
+ ageSeconds: z.number().nullable().optional(),
10
+ });
11
+ export function summarizeMetadata(meta) {
12
+ if (!meta) {
13
+ return {};
14
+ }
15
+ const creationTimestamp = toIsoString(meta.creationTimestamp);
16
+ return {
17
+ name: meta.name ?? undefined,
18
+ namespace: meta.namespace ?? undefined,
19
+ uid: meta.uid ?? undefined,
20
+ labels: meta.labels ?? undefined,
21
+ annotations: meta.annotations ?? undefined,
22
+ creationTimestamp,
23
+ ageSeconds: creationTimestamp ? calculateAgeSeconds(creationTimestamp) : null,
24
+ };
25
+ }
26
+ export function calculateAgeSeconds(timestamp) {
27
+ const value = typeof timestamp === 'string' ? timestamp : timestamp.toISOString();
28
+ const createdAtMs = Date.parse(value);
29
+ if (Number.isNaN(createdAtMs)) {
30
+ return null;
31
+ }
32
+ return Math.max(0, Math.floor((Date.now() - createdAtMs) / 1000));
33
+ }
34
+ const ConditionSummarySchema = z.object({
35
+ type: z.string().optional(),
36
+ status: z.string().optional(),
37
+ reason: z.string().optional(),
38
+ message: z.string().optional(),
39
+ lastTransitionTime: z.string().optional(),
40
+ });
41
+ export const PodSummarySchema = MetadataSummarySchema.extend({
42
+ phase: z.string().optional(),
43
+ podIP: z.string().optional(),
44
+ nodeName: z.string().optional(),
45
+ qosClass: z.string().optional(),
46
+ readyContainers: z.number(),
47
+ totalContainers: z.number(),
48
+ restarts: z.number(),
49
+ failingConditions: z.array(ConditionSummarySchema),
50
+ });
51
+ export function summarizePod(pod) {
52
+ const metadata = summarizeMetadata(pod.metadata);
53
+ const containerStatuses = pod.status?.containerStatuses ?? [];
54
+ const readyContainers = containerStatuses.filter((status) => status.ready).length;
55
+ const totalContainers = containerStatuses.length;
56
+ const restarts = containerStatuses.reduce((sum, status) => sum + (status.restartCount ?? 0), 0);
57
+ const failingConditions = pod.status?.conditions?.filter((condition) => condition.status !== 'True') ?? [];
58
+ return {
59
+ ...metadata,
60
+ phase: pod.status?.phase,
61
+ podIP: pod.status?.podIP,
62
+ nodeName: pod.spec?.nodeName,
63
+ qosClass: pod.status?.qosClass,
64
+ readyContainers,
65
+ totalContainers,
66
+ restarts,
67
+ failingConditions: failingConditions.map((condition) => ({
68
+ type: condition.type,
69
+ status: condition.status,
70
+ reason: condition.reason,
71
+ message: condition.message,
72
+ lastTransitionTime: toIsoString(condition.lastTransitionTime),
73
+ })),
74
+ };
75
+ }
76
+ export const DeploymentSummarySchema = MetadataSummarySchema.extend({
77
+ strategy: z.string().optional(),
78
+ replicas: z.object({
79
+ desired: z.number(),
80
+ ready: z.number(),
81
+ available: z.number(),
82
+ updated: z.number(),
83
+ }),
84
+ selector: z.record(z.string()).optional(),
85
+ failingConditions: z.array(ConditionSummarySchema),
86
+ });
87
+ export function summarizeDeployment(deployment) {
88
+ const metadata = summarizeMetadata(deployment.metadata);
89
+ const conditions = deployment.status?.conditions?.filter((condition) => condition.status !== 'True') ?? [];
90
+ return {
91
+ ...metadata,
92
+ strategy: deployment.spec?.strategy?.type,
93
+ replicas: {
94
+ desired: deployment.spec?.replicas ?? 1,
95
+ ready: deployment.status?.readyReplicas ?? 0,
96
+ available: deployment.status?.availableReplicas ?? 0,
97
+ updated: deployment.status?.updatedReplicas ?? 0,
98
+ },
99
+ selector: deployment.spec?.selector?.matchLabels ?? {},
100
+ failingConditions: conditions.map((condition) => ({
101
+ type: condition.type,
102
+ status: condition.status,
103
+ reason: condition.reason,
104
+ message: condition.message,
105
+ lastTransitionTime: toIsoString(condition.lastTransitionTime),
106
+ })),
107
+ };
108
+ }
109
+ const ServicePortSummarySchema = z.object({
110
+ name: z.string().optional(),
111
+ protocol: z.string().optional(),
112
+ port: z.number(),
113
+ targetPort: z.union([z.string(), z.number()]).optional(),
114
+ nodePort: z.number().optional(),
115
+ });
116
+ export const ServiceSummarySchema = MetadataSummarySchema.extend({
117
+ type: z.string().optional(),
118
+ clusterIP: z.string().optional(),
119
+ externalIPs: z.array(z.string()),
120
+ selector: z.record(z.string()).optional(),
121
+ ports: z.array(ServicePortSummarySchema),
122
+ });
123
+ export function summarizeService(service) {
124
+ const metadata = summarizeMetadata(service.metadata);
125
+ return {
126
+ ...metadata,
127
+ type: service.spec?.type,
128
+ clusterIP: service.spec?.clusterIP,
129
+ externalIPs: service.spec?.externalIPs ?? [],
130
+ selector: service.spec?.selector ?? undefined,
131
+ ports: service.spec?.ports?.map((port) => ({
132
+ name: port.name ?? undefined,
133
+ protocol: port.protocol ?? 'TCP',
134
+ port: port.port,
135
+ targetPort: typeof port.targetPort === 'string' ? port.targetPort : port.targetPort ?? undefined,
136
+ nodePort: port.nodePort ?? undefined,
137
+ })) ?? [],
138
+ };
139
+ }
140
+ const NodeAddressSchema = z.object({
141
+ type: z.string().optional(),
142
+ address: z.string().optional(),
143
+ });
144
+ const NodeConditionSchema = z.object({
145
+ type: z.string().optional(),
146
+ status: z.string().optional(),
147
+ reason: z.string().optional(),
148
+ message: z.string().optional(),
149
+ lastTransitionTime: z.string().optional(),
150
+ });
151
+ const QuantityRecordSchema = z.record(z.union([z.string(), z.number()])).optional();
152
+ export const NodeSummarySchema = MetadataSummarySchema.extend({
153
+ labels: z.record(z.string()).optional(),
154
+ annotations: z.record(z.string()).optional(),
155
+ kubeletVersion: z.string().optional(),
156
+ osImage: z.string().optional(),
157
+ containerRuntimeVersion: z.string().optional(),
158
+ capacity: QuantityRecordSchema,
159
+ allocatable: QuantityRecordSchema,
160
+ addresses: z.array(NodeAddressSchema).optional(),
161
+ conditions: z.array(NodeConditionSchema),
162
+ taints: z
163
+ .array(z.object({
164
+ key: z.string().optional(),
165
+ value: z.string().optional(),
166
+ effect: z.string().optional(),
167
+ timeAdded: z.string().optional(),
168
+ }))
169
+ .optional(),
170
+ });
171
+ export function summarizeNode(node) {
172
+ const metadata = summarizeMetadata(node.metadata);
173
+ const conditions = node.status?.conditions?.map((condition) => ({
174
+ type: condition.type,
175
+ status: condition.status,
176
+ reason: condition.reason,
177
+ message: condition.message,
178
+ lastTransitionTime: toIsoString(condition.lastTransitionTime),
179
+ })) ?? [];
180
+ return {
181
+ ...metadata,
182
+ labels: node.metadata?.labels ?? undefined,
183
+ annotations: node.metadata?.annotations ?? undefined,
184
+ kubeletVersion: node.status?.nodeInfo?.kubeletVersion,
185
+ osImage: node.status?.nodeInfo?.osImage,
186
+ containerRuntimeVersion: node.status?.nodeInfo?.containerRuntimeVersion,
187
+ capacity: node.status?.capacity,
188
+ allocatable: node.status?.allocatable,
189
+ addresses: node.status?.addresses?.map((address) => ({
190
+ type: address.type,
191
+ address: address.address,
192
+ })) ?? undefined,
193
+ conditions,
194
+ taints: node.spec?.taints?.map((taint) => ({
195
+ key: taint.key,
196
+ value: taint.value,
197
+ effect: taint.effect,
198
+ timeAdded: toIsoString(taint.timeAdded),
199
+ })) ?? undefined,
200
+ };
201
+ }
202
+ function toIsoString(value) {
203
+ if (!value) {
204
+ return undefined;
205
+ }
206
+ if (typeof value === 'string') {
207
+ return value;
208
+ }
209
+ return value.toISOString();
210
+ }
211
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/util/summary.ts"],"names":[],"mappings":"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"}