kubechart 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.
@@ -0,0 +1,209 @@
1
+ import React from 'react';
2
+ import { Box, Text } from 'ink';
3
+ import { getPodStatusColor, getColor } from './colors.js';
4
+ export function TreeView({ tree }) {
5
+ return (React.createElement(Box, { flexDirection: "column" },
6
+ React.createElement(Box, { marginBottom: 1 },
7
+ React.createElement(Text, { color: getColor('header') },
8
+ "\u25C6 CLUSTER ",
9
+ tree.contextName,
10
+ " | k8s ",
11
+ tree.serverVersion,
12
+ " | ",
13
+ tree.nodeCount,
14
+ " nodes")),
15
+ tree.namespaces.map((ns, nsIndex) => (React.createElement(NamespaceRow, { key: ns.name, namespace: ns, isLast: nsIndex === tree.namespaces.length - 1 }))),
16
+ React.createElement(Box, { marginTop: 1 },
17
+ React.createElement(Text, { color: getColor('tree') }, "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500")),
18
+ React.createElement(Box, null,
19
+ React.createElement(Text, { color: getColor('tree') },
20
+ "namespaces: ",
21
+ tree.namespaces.length,
22
+ " | workloads:",
23
+ ' ',
24
+ tree.namespaces.reduce((sum, ns) => sum + ns.workloads.length, 0),
25
+ ' ',
26
+ "| pods:",
27
+ ' ',
28
+ tree.namespaces.reduce((sum, ns) => sum +
29
+ ns.workloads.reduce((pSum, wl) => pSum + wl.pods.length, 0), 0),
30
+ ' ',
31
+ "| services:",
32
+ ' ',
33
+ tree.namespaces.reduce((sum, ns) => sum + ns.services.length, 0),
34
+ ' ',
35
+ "| ingresses:",
36
+ ' ',
37
+ tree.namespaces.reduce((sum, ns) => sum + ns.ingresses.length, 0))),
38
+ React.createElement(Box, { marginTop: 1 },
39
+ React.createElement(Text, { color: getColor('tree') }, "Pod Status: "),
40
+ React.createElement(Text, { color: getColor('running') }, "\u25CF Running+Ready"),
41
+ React.createElement(Text, { color: getColor('tree') }, " "),
42
+ React.createElement(Text, { color: getColor('pending') }, "\u25D1 Running+NotReady"),
43
+ React.createElement(Text, { color: getColor('tree') }, " "),
44
+ React.createElement(Text, { color: getColor('pending') }, "\u25CC Pending"),
45
+ React.createElement(Text, { color: getColor('tree') }, " "),
46
+ React.createElement(Text, { color: getColor('failed') }, "\u2716 Failed"),
47
+ React.createElement(Text, { color: getColor('tree') }, " "),
48
+ React.createElement(Text, { color: getColor('succeeded') }, "\u25CB Succeeded"))));
49
+ }
50
+ function NamespaceRow({ namespace, isLast }) {
51
+ const prefix = isLast ? '└──' : '├──';
52
+ const childPrefix = isLast ? ' ' : '│ ';
53
+ const hasResources = namespace.workloads.length > 0 ||
54
+ namespace.services.length > 0 ||
55
+ namespace.ingresses.length > 0;
56
+ const totalResources = namespace.workloads.length + namespace.services.length + namespace.ingresses.length;
57
+ return (React.createElement(Box, { flexDirection: "column", marginBottom: hasResources ? 0 : 1 },
58
+ React.createElement(Box, null,
59
+ React.createElement(Text, { color: getColor('tree') },
60
+ prefix,
61
+ " "),
62
+ React.createElement(Text, { color: getColor('namespace') },
63
+ "NAMESPACE ",
64
+ namespace.name,
65
+ " [",
66
+ namespace.status,
67
+ "]")),
68
+ namespace.workloads.map((workload, wlIndex) => (React.createElement(WorkloadRow, { key: workload.name, workload: workload, prefix: childPrefix, isLast: wlIndex === totalResources - 1 &&
69
+ namespace.services.length === 0 &&
70
+ namespace.ingresses.length === 0 }))),
71
+ namespace.services.map((service, svcIndex) => (React.createElement(ServiceRow, { key: service.name, service: service, prefix: childPrefix, isLast: svcIndex === namespace.services.length - 1 && namespace.ingresses.length === 0 }))),
72
+ namespace.ingresses.map((ingress, ingIndex) => (React.createElement(IngressRow, { key: ingress.name, ingress: ingress, prefix: childPrefix, isLast: ingIndex === namespace.ingresses.length - 1 }))),
73
+ !hasResources && !isLast && (React.createElement(Box, null,
74
+ React.createElement(Text, { color: getColor('tree') }, childPrefix)))));
75
+ }
76
+ function WorkloadRow({ workload, prefix, isLast }) {
77
+ const wlPrefix = isLast ? '└──' : '├──';
78
+ const podPrefix = isLast ? ' ' : '│ ';
79
+ const { icon, color } = getWorkloadIcon(workload.kind);
80
+ return (React.createElement(Box, { flexDirection: "column" },
81
+ React.createElement(Box, null,
82
+ React.createElement(Text, { color: getColor('tree') }, prefix),
83
+ React.createElement(Text, { color: getColor('tree') },
84
+ wlPrefix,
85
+ " "),
86
+ React.createElement(Text, { color: color }, icon),
87
+ React.createElement(Text, { color: getColor('deployment') },
88
+ ' ',
89
+ workload.kind,
90
+ " ",
91
+ workload.name,
92
+ " [",
93
+ workload.ready,
94
+ "]")),
95
+ workload.pods.map((pod, podIndex) => (React.createElement(PodRow, { key: pod.name, pod: pod, prefix: prefix + podPrefix, isLast: podIndex === workload.pods.length - 1 })))));
96
+ }
97
+ function getWorkloadIcon(kind) {
98
+ switch (kind) {
99
+ case 'Deployment':
100
+ return { icon: '▲', color: getColor('deployment') };
101
+ case 'StatefulSet':
102
+ return { icon: '◆', color: getColor('statefulSet') };
103
+ case 'DaemonSet':
104
+ return { icon: '■', color: getColor('daemonSet') };
105
+ case 'Job':
106
+ return { icon: '●', color: getColor('job') };
107
+ case 'CronJob':
108
+ return { icon: '○', color: getColor('cronJob') };
109
+ default:
110
+ return { icon: '▪', color: getColor('workload') };
111
+ }
112
+ }
113
+ function PodRow({ pod, prefix, isLast }) {
114
+ const podPrefix = isLast ? '└──' : '├──';
115
+ const statusSymbol = getPodStatusSymbol(pod.phase, pod.ready);
116
+ const statusColor = getPodStatusColor(pod.phase);
117
+ return (React.createElement(Box, null,
118
+ React.createElement(Text, { color: getColor('tree') }, prefix),
119
+ React.createElement(Text, { color: getColor('tree') },
120
+ podPrefix,
121
+ " POD "),
122
+ React.createElement(Text, { color: statusColor },
123
+ statusSymbol,
124
+ " ",
125
+ pod.name),
126
+ React.createElement(Text, { color: getColor('tree') },
127
+ ' ',
128
+ pod.nodeName,
129
+ " ",
130
+ pod.ip,
131
+ " ",
132
+ pod.restarts,
133
+ " restarts"),
134
+ pod.reason && React.createElement(Text, { color: getColor('error') },
135
+ " ",
136
+ pod.reason)));
137
+ }
138
+ function getPodStatusSymbol(phase, ready) {
139
+ if (phase === 'Running') {
140
+ // Check if pod is running but not ready (e.g., 0/1, 1/2)
141
+ const [readyContainers, totalContainers] = ready.split('/').map(Number);
142
+ if (readyContainers < totalContainers) {
143
+ return '◑';
144
+ }
145
+ return '●';
146
+ }
147
+ switch (phase) {
148
+ case 'Pending':
149
+ return '◌';
150
+ case 'Failed':
151
+ return '✖';
152
+ case 'Succeeded':
153
+ return '○';
154
+ default:
155
+ return '?';
156
+ }
157
+ }
158
+ function ServiceRow({ service, prefix, isLast }) {
159
+ const svcPrefix = isLast ? '└──' : '├──';
160
+ const { icon, color } = getServiceIcon(service.type);
161
+ return (React.createElement(Box, null,
162
+ React.createElement(Text, { color: getColor('tree') }, prefix),
163
+ React.createElement(Text, { color: getColor('tree') },
164
+ svcPrefix,
165
+ " SVC "),
166
+ React.createElement(Text, { color: color }, icon),
167
+ React.createElement(Text, { color: getColor('workload') },
168
+ ' ',
169
+ service.name,
170
+ " ",
171
+ service.type,
172
+ " ",
173
+ service.clusterIP),
174
+ React.createElement(Text, { color: getColor('tree') },
175
+ " ",
176
+ service.ports.join(', '))));
177
+ }
178
+ function getServiceIcon(type) {
179
+ switch (type) {
180
+ case 'ClusterIP':
181
+ return { icon: '●', color: getColor('clusterIP') };
182
+ case 'NodePort':
183
+ return { icon: '◆', color: getColor('nodePort') };
184
+ case 'LoadBalancer':
185
+ return { icon: '▲', color: getColor('loadBalancer') };
186
+ case 'ExternalName':
187
+ return { icon: '○', color: getColor('externalName') };
188
+ default:
189
+ return { icon: '●', color: getColor('clusterIP') };
190
+ }
191
+ }
192
+ function IngressRow({ ingress, prefix, isLast }) {
193
+ const ingPrefix = isLast ? '└──' : '├──';
194
+ return (React.createElement(Box, null,
195
+ React.createElement(Text, { color: getColor('tree') }, prefix),
196
+ React.createElement(Text, { color: getColor('tree') },
197
+ ingPrefix,
198
+ " ING "),
199
+ React.createElement(Text, { color: getColor('ingress') }, "\u25C6"),
200
+ React.createElement(Text, { color: getColor('workload') },
201
+ ' ',
202
+ ingress.host,
203
+ " ",
204
+ ingress.tls ? '🔒' : ''),
205
+ React.createElement(Text, { color: getColor('tree') },
206
+ " ",
207
+ ingress.paths.join(', '))));
208
+ }
209
+ //# sourceMappingURL=TreeView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeView.js","sourceRoot":"","sources":["../../src/render/TreeView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export declare const colors: {
2
+ running: string;
3
+ pending: string;
4
+ failed: string;
5
+ succeeded: string;
6
+ unknown: string;
7
+ deployment: string;
8
+ statefulSet: string;
9
+ daemonSet: string;
10
+ job: string;
11
+ cronJob: string;
12
+ clusterIP: string;
13
+ nodePort: string;
14
+ loadBalancer: string;
15
+ externalName: string;
16
+ namespace: string;
17
+ workload: string;
18
+ ingress: string;
19
+ header: string;
20
+ tree: string;
21
+ error: string;
22
+ warning: string;
23
+ };
24
+ export declare function setUseColors(enabled: boolean): void;
25
+ export declare function getPodStatusColor(phase: string): string;
26
+ export declare function getColor(colorName: keyof typeof colors): string;
27
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/render/colors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;CA+BlB,CAAC;AAIF,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEnD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAevD;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,MAAM,GAAG,MAAM,CAG/D"}
@@ -0,0 +1,56 @@
1
+ // Color constants for ink components
2
+ // Using ANSI color codes that ink supports
3
+ export const colors = {
4
+ // Pod status colors (ANSI color codes)
5
+ running: '#22c55e', // green
6
+ pending: '#eab308', // yellow
7
+ failed: '#ef4444', // red
8
+ succeeded: '#6b7280', // gray
9
+ unknown: '#6b7280', // gray
10
+ // Workload colors
11
+ deployment: '#3b82f6', // blue
12
+ statefulSet: '#8b5cf6', // purple
13
+ daemonSet: '#ef4444', // red
14
+ job: '#f59e0b', // amber
15
+ cronJob: '#10b981', // emerald
16
+ // Service colors
17
+ clusterIP: '#3b82f6', // blue
18
+ nodePort: '#22c55e', // green
19
+ loadBalancer: '#8b5cf6', // purple
20
+ externalName: '#f59e0b', // amber
21
+ // Resource colors
22
+ namespace: '#06b6d4', // cyan
23
+ workload: '#d946ef', // magenta
24
+ ingress: '#ec4899', // pink
25
+ // UI colors
26
+ header: '#06b6d4', // cyan
27
+ tree: '#6b7280', // gray
28
+ error: '#ef4444', // red
29
+ warning: '#eab308', // yellow
30
+ };
31
+ let useColors = true;
32
+ export function setUseColors(enabled) {
33
+ useColors = enabled;
34
+ }
35
+ export function getPodStatusColor(phase) {
36
+ if (!useColors)
37
+ return '';
38
+ switch (phase) {
39
+ case 'Running':
40
+ return colors.running;
41
+ case 'Pending':
42
+ return colors.pending;
43
+ case 'Failed':
44
+ return colors.failed;
45
+ case 'Succeeded':
46
+ return colors.succeeded;
47
+ default:
48
+ return colors.unknown;
49
+ }
50
+ }
51
+ export function getColor(colorName) {
52
+ if (!useColors)
53
+ return '';
54
+ return colors[colorName];
55
+ }
56
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/render/colors.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,2CAA2C;AAC3C,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,uCAAuC;IACvC,OAAO,EAAE,SAAS,EAAE,QAAQ;IAC5B,OAAO,EAAE,SAAS,EAAE,SAAS;IAC7B,MAAM,EAAE,SAAS,EAAE,MAAM;IACzB,SAAS,EAAE,SAAS,EAAE,OAAO;IAC7B,OAAO,EAAE,SAAS,EAAE,OAAO;IAE3B,kBAAkB;IAClB,UAAU,EAAE,SAAS,EAAE,OAAO;IAC9B,WAAW,EAAE,SAAS,EAAE,SAAS;IACjC,SAAS,EAAE,SAAS,EAAE,MAAM;IAC5B,GAAG,EAAE,SAAS,EAAE,QAAQ;IACxB,OAAO,EAAE,SAAS,EAAE,UAAU;IAE9B,iBAAiB;IACjB,SAAS,EAAE,SAAS,EAAE,OAAO;IAC7B,QAAQ,EAAE,SAAS,EAAE,QAAQ;IAC7B,YAAY,EAAE,SAAS,EAAE,SAAS;IAClC,YAAY,EAAE,SAAS,EAAE,QAAQ;IAEjC,kBAAkB;IAClB,SAAS,EAAE,SAAS,EAAE,OAAO;IAC7B,QAAQ,EAAE,SAAS,EAAE,UAAU;IAC/B,OAAO,EAAE,SAAS,EAAE,OAAO;IAE3B,YAAY;IACZ,MAAM,EAAE,SAAS,EAAE,OAAO;IAC1B,IAAI,EAAE,SAAS,EAAE,OAAO;IACxB,KAAK,EAAE,SAAS,EAAE,MAAM;IACxB,OAAO,EAAE,SAAS,EAAE,SAAS;CAC9B,CAAC;AAEF,IAAI,SAAS,GAAG,IAAI,CAAC;AAErB,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,SAAS,GAAG,OAAO,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC,OAAO,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,KAAK,WAAW;YACd,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B;YACE,OAAO,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,SAA8B;IACrD,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { RawClusterData } from '../k8s/types.js';
2
+ import type { ClusterTree } from './types.js';
3
+ export interface FilterOptions {
4
+ showErrors?: boolean;
5
+ selector?: string;
6
+ }
7
+ export declare function buildTree(raw: RawClusterData, contextName: string, opts?: FilterOptions): ClusterTree;
8
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/tree/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EACV,WAAW,EAOZ,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CACvB,GAAG,EAAE,cAAc,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,aAAkB,GACvB,WAAW,CA0Fb"}
@@ -0,0 +1,233 @@
1
+ export function buildTree(raw, contextName, opts = {}) {
2
+ const namespaces = raw.namespaces.map((ns) => {
3
+ const nsName = ns.metadata?.name || 'unknown';
4
+ const nsStatus = ns.status?.phase || 'Active';
5
+ // Get all resources for this namespace
6
+ const nsDeployments = raw.deployments.filter((d) => d.metadata?.namespace === nsName);
7
+ const nsStatefulSets = raw.statefulSets.filter((s) => s.metadata?.namespace === nsName);
8
+ const nsDaemonSets = raw.daemonSets.filter((d) => d.metadata?.namespace === nsName);
9
+ const nsJobs = raw.jobs.filter((j) => j.metadata?.namespace === nsName);
10
+ const nsCronJobs = raw.cronJobs.filter((c) => c.metadata?.namespace === nsName);
11
+ const nsServices = raw.services.filter((s) => s.metadata?.namespace === nsName);
12
+ const nsIngresses = raw.ingresses.filter((i) => i.metadata?.namespace === nsName);
13
+ // Build workload nodes from all resource types
14
+ const workloads = [
15
+ ...nsDeployments.map((d) => buildWorkloadFromDeployment(d, raw.pods)),
16
+ ...nsStatefulSets.map((s) => buildWorkloadFromStatefulSet(s, raw.pods)),
17
+ ...nsDaemonSets.map((d) => buildWorkloadFromDaemonSet(d, raw.pods)),
18
+ ...nsJobs.map((j) => buildWorkloadFromJob(j, raw.pods)),
19
+ ...nsCronJobs.map((c) => buildWorkloadFromCronJob(c, raw.pods)),
20
+ ];
21
+ // Build service nodes
22
+ const services = nsServices.map((s) => buildServiceNode(s));
23
+ // Build ingress nodes
24
+ const ingresses = nsIngresses.map((i) => buildIngressNode(i));
25
+ return {
26
+ name: nsName,
27
+ status: nsStatus,
28
+ workloads,
29
+ services,
30
+ ingresses,
31
+ };
32
+ });
33
+ // Apply filters
34
+ let filteredNamespaces = namespaces;
35
+ if (opts.showErrors) {
36
+ filteredNamespaces = namespaces.filter((ns) => {
37
+ return ns.workloads.some((wl) => wl.pods.some((pod) => pod.phase !== 'Running'));
38
+ });
39
+ }
40
+ if (opts.selector) {
41
+ // Parse label selector (simple implementation for app=env format)
42
+ const [key, value] = opts.selector.split('=');
43
+ if (key && value) {
44
+ filteredNamespaces = namespaces.map((ns) => ({
45
+ ...ns,
46
+ workloads: ns.workloads.map((wl) => ({
47
+ ...wl,
48
+ pods: wl.pods.filter((_pod) => {
49
+ // This would need actual pod labels from raw data
50
+ // For now, we'll skip this filter in phase 1
51
+ return true;
52
+ }),
53
+ })),
54
+ }));
55
+ }
56
+ }
57
+ return {
58
+ contextName,
59
+ serverVersion: raw.serverVersion || 'unknown',
60
+ nodeCount: raw.nodeCount || 0,
61
+ namespaces: filteredNamespaces,
62
+ fetchedAt: new Date(),
63
+ };
64
+ }
65
+ function buildPodNode(pod) {
66
+ const name = pod.metadata?.name || 'unknown';
67
+ const phase = pod.status?.phase || 'Unknown';
68
+ const nodeName = pod.spec?.nodeName || 'unknown';
69
+ const ip = pod.status?.podIP || 'none';
70
+ // Calculate restarts
71
+ const restarts = pod.status?.containerStatuses?.reduce((sum, cs) => sum + (cs.restartCount || 0), 0) || 0;
72
+ // Get container state reason
73
+ const waitingState = pod.status?.containerStatuses?.[0]?.state?.waiting;
74
+ const terminatedState = pod.status?.containerStatuses?.[0]?.state?.terminated;
75
+ const reason = waitingState?.reason || terminatedState?.reason || undefined;
76
+ // Calculate ready containers
77
+ const readyContainers = pod.status?.containerStatuses?.filter((cs) => cs.ready).length || 0;
78
+ const totalContainers = pod.status?.containerStatuses?.length || 1;
79
+ const ready = `${readyContainers}/${totalContainers}`;
80
+ return {
81
+ name,
82
+ phase,
83
+ nodeName,
84
+ ip,
85
+ restarts,
86
+ reason,
87
+ ready,
88
+ };
89
+ }
90
+ function buildWorkloadFromDeployment(deployment, allPods) {
91
+ const deploymentName = deployment.metadata?.name || 'unknown';
92
+ // Group pods by ownerReference
93
+ const deploymentPods = allPods.filter((pod) => {
94
+ const owners = pod.metadata?.ownerReferences || [];
95
+ const replicaSetOwner = owners.find((owner) => owner.kind === 'ReplicaSet');
96
+ if (!replicaSetOwner)
97
+ return false;
98
+ const deploymentNamePrefix = deploymentName + '-';
99
+ return replicaSetOwner.name?.startsWith(deploymentNamePrefix);
100
+ });
101
+ const readyReplicas = deployment.status?.readyReplicas || 0;
102
+ const desiredReplicas = deployment.spec?.replicas || 1;
103
+ const ready = `${readyReplicas}/${desiredReplicas}`;
104
+ const image = deployment.spec?.template?.spec?.containers?.[0]?.image || 'unknown';
105
+ return {
106
+ name: deploymentName,
107
+ kind: 'Deployment',
108
+ ready,
109
+ image,
110
+ pods: deploymentPods.map((p) => buildPodNode(p)),
111
+ };
112
+ }
113
+ function buildWorkloadFromStatefulSet(sts, allPods) {
114
+ const stsName = sts.metadata?.name || 'unknown';
115
+ const stsPods = allPods.filter((pod) => {
116
+ const owners = pod.metadata?.ownerReferences || [];
117
+ const stsOwner = owners.find((owner) => owner.kind === 'StatefulSet');
118
+ if (!stsOwner)
119
+ return false;
120
+ return stsOwner.name === stsName;
121
+ });
122
+ const readyReplicas = sts.status?.readyReplicas || 0;
123
+ const desiredReplicas = sts.spec?.replicas || 1;
124
+ const ready = `${readyReplicas}/${desiredReplicas}`;
125
+ const image = sts.spec?.template?.spec?.containers?.[0]?.image || 'unknown';
126
+ return {
127
+ name: stsName,
128
+ kind: 'StatefulSet',
129
+ ready,
130
+ image,
131
+ pods: stsPods.map((p) => buildPodNode(p)),
132
+ };
133
+ }
134
+ function buildWorkloadFromDaemonSet(ds, allPods) {
135
+ const dsName = ds.metadata?.name || 'unknown';
136
+ const dsPods = allPods.filter((pod) => {
137
+ const owners = pod.metadata?.ownerReferences || [];
138
+ const dsOwner = owners.find((owner) => owner.kind === 'DaemonSet');
139
+ if (!dsOwner)
140
+ return false;
141
+ return dsOwner.name === dsName;
142
+ });
143
+ const currentNumberScheduled = ds.status?.currentNumberScheduled || 0;
144
+ const desiredNumberScheduled = ds.status?.desiredNumberScheduled || 0;
145
+ const ready = `${currentNumberScheduled}/${desiredNumberScheduled}`;
146
+ const image = ds.spec?.template?.spec?.containers?.[0]?.image || 'unknown';
147
+ return {
148
+ name: dsName,
149
+ kind: 'DaemonSet',
150
+ ready,
151
+ image,
152
+ pods: dsPods.map((p) => buildPodNode(p)),
153
+ };
154
+ }
155
+ function buildWorkloadFromJob(job, allPods) {
156
+ const jobName = job.metadata?.name || 'unknown';
157
+ const jobPods = allPods.filter((pod) => {
158
+ const owners = pod.metadata?.ownerReferences || [];
159
+ const jobOwner = owners.find((owner) => owner.kind === 'Job');
160
+ if (!jobOwner)
161
+ return false;
162
+ return jobOwner.name === jobName;
163
+ });
164
+ const active = job.status?.active || 0;
165
+ const succeeded = job.status?.succeeded || 0;
166
+ const failed = job.status?.failed || 0;
167
+ const total = active + succeeded + failed;
168
+ const ready = `${succeeded}/${total}`;
169
+ const image = job.spec?.template?.spec?.containers?.[0]?.image || 'unknown';
170
+ return {
171
+ name: jobName,
172
+ kind: 'Job',
173
+ ready,
174
+ image,
175
+ pods: jobPods.map((p) => buildPodNode(p)),
176
+ };
177
+ }
178
+ function buildWorkloadFromCronJob(cj, allPods) {
179
+ const cjName = cj.metadata?.name || 'unknown';
180
+ // CronJobs don't directly own pods - they create Jobs which own pods
181
+ // For simplicity, we'll show pods owned by Jobs that match the CronJob name
182
+ const cjPods = allPods.filter((pod) => {
183
+ const owners = pod.metadata?.ownerReferences || [];
184
+ const jobOwner = owners.find((owner) => owner.kind === 'Job');
185
+ if (!jobOwner)
186
+ return false;
187
+ // Job names are typically: <cronjob-name>-<timestamp>
188
+ return jobOwner.name?.startsWith(cjName + '-');
189
+ });
190
+ const active = cj.status?.active?.length || 0;
191
+ const ready = `${active} jobs`;
192
+ const image = cj.spec?.jobTemplate?.spec?.template?.spec?.containers?.[0]?.image || 'unknown';
193
+ return {
194
+ name: cjName,
195
+ kind: 'CronJob',
196
+ ready,
197
+ image,
198
+ pods: cjPods.map((p) => buildPodNode(p)),
199
+ };
200
+ }
201
+ function buildServiceNode(service) {
202
+ const name = service.metadata?.name || 'unknown';
203
+ const type = service.spec?.type ||
204
+ 'ClusterIP';
205
+ const clusterIP = service.spec?.clusterIP || 'none';
206
+ const ports = service.spec?.ports?.map((p) => {
207
+ const port = p.port;
208
+ const protocol = p.protocol || 'TCP';
209
+ return `${port}/${protocol}`;
210
+ }) || [];
211
+ return {
212
+ name,
213
+ type,
214
+ clusterIP,
215
+ ports,
216
+ };
217
+ }
218
+ function buildIngressNode(ingress) {
219
+ const name = ingress.metadata?.name || 'unknown';
220
+ const tls = !!ingress.spec?.tls && ingress.spec.tls.length > 0;
221
+ const rules = ingress.spec?.rules || [];
222
+ const host = rules[0]?.host || 'unknown';
223
+ const paths = rules.flatMap((rule) => {
224
+ return rule.http?.paths?.map((p) => p.path || '/') || [];
225
+ });
226
+ return {
227
+ name,
228
+ host,
229
+ paths,
230
+ tls,
231
+ };
232
+ }
233
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/tree/builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ export type PodPhase = 'Running' | 'Pending' | 'Failed' | 'Succeeded' | 'Unknown';
2
+ export type ResourceKind = 'Deployment' | 'StatefulSet' | 'DaemonSet' | 'Job' | 'CronJob';
3
+ export interface PodNode {
4
+ name: string;
5
+ phase: PodPhase;
6
+ nodeName: string;
7
+ ip: string;
8
+ restarts: number;
9
+ reason?: string;
10
+ ready: string;
11
+ }
12
+ export interface ServiceNode {
13
+ name: string;
14
+ type: 'ClusterIP' | 'NodePort' | 'LoadBalancer' | 'ExternalName';
15
+ clusterIP: string;
16
+ ports: string[];
17
+ }
18
+ export interface IngressNode {
19
+ name: string;
20
+ host: string;
21
+ paths: string[];
22
+ tls: boolean;
23
+ }
24
+ export interface WorkloadNode {
25
+ name: string;
26
+ kind: ResourceKind;
27
+ ready: string;
28
+ image: string;
29
+ pods: PodNode[];
30
+ }
31
+ export interface NamespaceNode {
32
+ name: string;
33
+ status: 'Active' | 'Terminating';
34
+ workloads: WorkloadNode[];
35
+ services: ServiceNode[];
36
+ ingresses: IngressNode[];
37
+ }
38
+ export interface ClusterTree {
39
+ contextName: string;
40
+ serverVersion: string;
41
+ nodeCount: number;
42
+ namespaces: NamespaceNode[];
43
+ fetchedAt: Date;
44
+ }
45
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tree/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AAElF,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,KAAK,GAAG,SAAS,CAAC;AAE1F,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,cAAc,CAAC;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,aAAa,CAAC;IACjC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;CACjB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tree/types.ts"],"names":[],"mappings":""}