@vibesdotdev/infra-doks 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/README.md +107 -0
  2. package/SPEC.md +285 -0
  3. package/dist/client/digitalocean-app-deploy.client.d.ts +46 -0
  4. package/dist/client/digitalocean-app-deploy.client.d.ts.map +1 -0
  5. package/dist/client/digitalocean-app-deploy.client.js +135 -0
  6. package/dist/client/digitalocean-app-deploy.client.js.map +1 -0
  7. package/dist/client/index.d.ts +15 -0
  8. package/dist/client/index.d.ts.map +1 -0
  9. package/dist/client/index.js +18 -0
  10. package/dist/client/index.js.map +1 -0
  11. package/dist/cloud/base.d.ts +33 -0
  12. package/dist/cloud/base.d.ts.map +1 -0
  13. package/dist/cloud/base.js +86 -0
  14. package/dist/cloud/base.js.map +1 -0
  15. package/dist/cloud/digitalocean.d.ts +33 -0
  16. package/dist/cloud/digitalocean.d.ts.map +1 -0
  17. package/dist/cloud/digitalocean.js +258 -0
  18. package/dist/cloud/digitalocean.js.map +1 -0
  19. package/dist/cloud/factory.d.ts +28 -0
  20. package/dist/cloud/factory.d.ts.map +1 -0
  21. package/dist/cloud/factory.js +151 -0
  22. package/dist/cloud/factory.js.map +1 -0
  23. package/dist/cloud/index.d.ts +12 -0
  24. package/dist/cloud/index.d.ts.map +1 -0
  25. package/dist/cloud/index.js +11 -0
  26. package/dist/cloud/index.js.map +1 -0
  27. package/dist/doks.plugin.d.ts +41 -0
  28. package/dist/doks.plugin.d.ts.map +1 -0
  29. package/dist/doks.plugin.js +287 -0
  30. package/dist/doks.plugin.js.map +1 -0
  31. package/dist/implementations/deployment.impl.d.ts +34 -0
  32. package/dist/implementations/deployment.impl.d.ts.map +1 -0
  33. package/dist/implementations/deployment.impl.js +86 -0
  34. package/dist/implementations/deployment.impl.js.map +1 -0
  35. package/dist/implementations/droplet.impl.d.ts +85 -0
  36. package/dist/implementations/droplet.impl.d.ts.map +1 -0
  37. package/dist/implementations/droplet.impl.js +113 -0
  38. package/dist/implementations/droplet.impl.js.map +1 -0
  39. package/dist/implementations/gitea.impl.d.ts +68 -0
  40. package/dist/implementations/gitea.impl.d.ts.map +1 -0
  41. package/dist/implementations/gitea.impl.js +295 -0
  42. package/dist/implementations/gitea.impl.js.map +1 -0
  43. package/dist/implementations/managed-db.impl.d.ts +25 -0
  44. package/dist/implementations/managed-db.impl.d.ts.map +1 -0
  45. package/dist/implementations/managed-db.impl.js +31 -0
  46. package/dist/implementations/managed-db.impl.js.map +1 -0
  47. package/dist/implementations/managed-redis.impl.d.ts +37 -0
  48. package/dist/implementations/managed-redis.impl.d.ts.map +1 -0
  49. package/dist/implementations/managed-redis.impl.js +40 -0
  50. package/dist/implementations/managed-redis.impl.js.map +1 -0
  51. package/dist/implementations/spaces.impl.d.ts +36 -0
  52. package/dist/implementations/spaces.impl.d.ts.map +1 -0
  53. package/dist/implementations/spaces.impl.js +40 -0
  54. package/dist/implementations/spaces.impl.js.map +1 -0
  55. package/dist/implementations/statefulset.impl.d.ts +65 -0
  56. package/dist/implementations/statefulset.impl.d.ts.map +1 -0
  57. package/dist/implementations/statefulset.impl.js +165 -0
  58. package/dist/implementations/statefulset.impl.js.map +1 -0
  59. package/dist/implementations/verdaccio.impl.d.ts +65 -0
  60. package/dist/implementations/verdaccio.impl.d.ts.map +1 -0
  61. package/dist/implementations/verdaccio.impl.js +259 -0
  62. package/dist/implementations/verdaccio.impl.js.map +1 -0
  63. package/dist/index.d.ts +15 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +19 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/kubernetes/index.d.ts +95 -0
  68. package/dist/kubernetes/index.d.ts.map +1 -0
  69. package/dist/kubernetes/index.js +625 -0
  70. package/dist/kubernetes/index.js.map +1 -0
  71. package/dist/secrets/index.d.ts +4 -0
  72. package/dist/secrets/index.d.ts.map +1 -0
  73. package/dist/secrets/index.js +4 -0
  74. package/dist/secrets/index.js.map +1 -0
  75. package/dist/secrets/vault.descriptor.d.ts +10 -0
  76. package/dist/secrets/vault.descriptor.d.ts.map +1 -0
  77. package/dist/secrets/vault.descriptor.js +25 -0
  78. package/dist/secrets/vault.descriptor.js.map +1 -0
  79. package/dist/secrets/vault.impl.cloud.d.ts +40 -0
  80. package/dist/secrets/vault.impl.cloud.d.ts.map +1 -0
  81. package/dist/secrets/vault.impl.cloud.js +178 -0
  82. package/dist/secrets/vault.impl.cloud.js.map +1 -0
  83. package/dist/secrets/vault.impl.d.ts +29 -0
  84. package/dist/secrets/vault.impl.d.ts.map +1 -0
  85. package/dist/secrets/vault.impl.js +137 -0
  86. package/dist/secrets/vault.impl.js.map +1 -0
  87. package/dist/types.d.ts +509 -0
  88. package/dist/types.d.ts.map +1 -0
  89. package/dist/types.js +47 -0
  90. package/dist/types.js.map +1 -0
  91. package/package.json +145 -0
  92. package/src/client/digitalocean-app-deploy.client.ts +226 -0
  93. package/src/client/index.ts +24 -0
  94. package/src/cloud/base.ts +149 -0
  95. package/src/cloud/digitalocean.ts +363 -0
  96. package/src/cloud/factory.ts +190 -0
  97. package/src/cloud/index.ts +81 -0
  98. package/src/doks.plugin.ts +401 -0
  99. package/src/implementations/deployment.impl.ts +93 -0
  100. package/src/implementations/droplet.impl.ts +157 -0
  101. package/src/implementations/gitea.impl.ts +319 -0
  102. package/src/implementations/managed-db.impl.ts +37 -0
  103. package/src/implementations/managed-redis.impl.ts +49 -0
  104. package/src/implementations/spaces.impl.ts +52 -0
  105. package/src/implementations/statefulset.impl.ts +186 -0
  106. package/src/implementations/verdaccio.impl.ts +300 -0
  107. package/src/index.ts +136 -0
  108. package/src/kubernetes/index.ts +754 -0
  109. package/src/secrets/index.ts +9 -0
  110. package/src/secrets/vault.descriptor.ts +28 -0
  111. package/src/secrets/vault.impl.cloud.ts +278 -0
  112. package/src/secrets/vault.impl.ts +149 -0
  113. package/src/types.ts +563 -0
@@ -0,0 +1,625 @@
1
+ /**
2
+ * Kubernetes Client Wrapper
3
+ *
4
+ * Thin wrapper around @kubernetes/client-node providing
5
+ * simplified access to common operations with proper typing
6
+ */
7
+ import * as k8s from '@kubernetes/client-node';
8
+ import { Readable, Writable } from 'stream';
9
+ import { getLogger } from '@vibesdotdev/logging';
10
+ import { K8sAuthError, K8sError, K8sNotFoundError } from "../types.js";
11
+ const logger = getLogger('infra-doks:k8s');
12
+ export class KubernetesClient {
13
+ kc;
14
+ coreApi;
15
+ appsApi;
16
+ metrics;
17
+ config;
18
+ constructor(config = {}) {
19
+ this.config = config;
20
+ this.kc = new k8s.KubeConfig();
21
+ // Load appropriate config
22
+ if (config.inCluster) {
23
+ this.kc.loadFromCluster();
24
+ }
25
+ else if (config.kubeconfig) {
26
+ this.kc.loadFromFile(config.kubeconfig);
27
+ }
28
+ else {
29
+ this.kc.loadFromDefault();
30
+ }
31
+ // Set context if specified
32
+ if (config.context) {
33
+ this.kc.setCurrentContext(config.context);
34
+ }
35
+ // Initialize API clients
36
+ this.coreApi = this.kc.makeApiClient(k8s.CoreV1Api);
37
+ this.appsApi = this.kc.makeApiClient(k8s.AppsV1Api);
38
+ // Prefer the stable Metrics helper exported by @kubernetes/client-node
39
+ try {
40
+ const MetricsCtor = k8s.Metrics;
41
+ if (MetricsCtor)
42
+ this.metrics = new MetricsCtor(this.kc);
43
+ }
44
+ catch {
45
+ this.metrics = undefined;
46
+ }
47
+ }
48
+ /**
49
+ * Get current environment info
50
+ */
51
+ getCurrentEnvironment() {
52
+ const context = this.kc.getCurrentContext();
53
+ const cluster = this.kc.getCurrentCluster();
54
+ return {
55
+ name: context,
56
+ context: context,
57
+ namespace: this.config.namespace || 'default',
58
+ apiServer: cluster?.server,
59
+ provider: this.detectProvider(cluster?.server || '')
60
+ };
61
+ }
62
+ /**
63
+ * List available contexts
64
+ */
65
+ getContexts() {
66
+ return this.kc.getContexts().map((ctx) => ctx.name);
67
+ }
68
+ /**
69
+ * Switch to a different context
70
+ */
71
+ setContext(contextName) {
72
+ this.kc.setCurrentContext(contextName);
73
+ // Reinitialize API clients
74
+ this.coreApi = this.kc.makeApiClient(k8s.CoreV1Api);
75
+ this.appsApi = this.kc.makeApiClient(k8s.AppsV1Api);
76
+ try {
77
+ const MetricsCtor = k8s.Metrics;
78
+ if (MetricsCtor)
79
+ this.metrics = new MetricsCtor(this.kc);
80
+ else
81
+ this.metrics = undefined;
82
+ }
83
+ catch {
84
+ this.metrics = undefined;
85
+ }
86
+ }
87
+ /**
88
+ * Get pod status
89
+ */
90
+ async getPodStatus(selector) {
91
+ try {
92
+ const namespace = selector.namespace || this.config.namespace || 'default';
93
+ let pods;
94
+ if (selector.name) {
95
+ const pod = await this.coreApi.readNamespacedPod({ name: selector.name, namespace });
96
+ pods = [pod];
97
+ }
98
+ else {
99
+ const labelSelector = selector.labels
100
+ ? Object.entries(selector.labels)
101
+ .map(([k, v]) => `${k}=${v}`)
102
+ .join(',')
103
+ : undefined;
104
+ const response = await this.coreApi.listNamespacedPod({ namespace, labelSelector });
105
+ pods = response.items;
106
+ }
107
+ return pods.map((pod) => this.mapPodStatus(pod));
108
+ }
109
+ catch (error) {
110
+ throw this.handleK8sError(error);
111
+ }
112
+ }
113
+ /**
114
+ * Stream logs from pods.
115
+ *
116
+ * Uses `k8s.Log.log()` (the pod-log streaming API) — NOT `k8s.Watch.watch()`,
117
+ * which is for resource-change events (ADDED/MODIFIED/DELETED) and is
118
+ * incompatible with the log endpoint. Each pod gets a `Writable` sink that
119
+ * splits incoming bytes into lines, parses them as `LogEntry`, and fans them
120
+ * out to subscribers. `close()` calls `controller.abort()` on every
121
+ * AbortController returned by `Log.log()` to cancel the upstream request.
122
+ */
123
+ async streamLogs(selector, options = {}) {
124
+ const namespace = selector.namespace || this.config.namespace || 'default';
125
+ const pods = await this.getPodStatus(selector);
126
+ if (pods.length === 0) {
127
+ throw new K8sNotFoundError('Pod', JSON.stringify(selector), namespace);
128
+ }
129
+ const controllers = new Map();
130
+ const listeners = new Set();
131
+ let isPaused = false;
132
+ const logClient = new k8s.Log(this.kc);
133
+ // Create a log stream per pod
134
+ for (const pod of pods) {
135
+ // Line-splitting Writable. Holds a buffer across writes so partial
136
+ // chunks at the boundary don't corrupt log entries.
137
+ let buffer = '';
138
+ const sink = new Writable({
139
+ write: (chunk, _encoding, callback) => {
140
+ if (isPaused) {
141
+ callback();
142
+ return;
143
+ }
144
+ buffer += typeof chunk === 'string' ? chunk : chunk.toString('utf8');
145
+ const lines = buffer.split('\n');
146
+ buffer = lines.pop() ?? '';
147
+ for (const line of lines) {
148
+ if (!line.trim())
149
+ continue;
150
+ const logEntry = this.parseLogEntry(line, pod, namespace);
151
+ listeners.forEach((listener) => listener(logEntry));
152
+ }
153
+ callback();
154
+ },
155
+ final: (callback) => {
156
+ if (buffer.trim()) {
157
+ const logEntry = this.parseLogEntry(buffer, pod, namespace);
158
+ listeners.forEach((listener) => listener(logEntry));
159
+ buffer = '';
160
+ }
161
+ callback();
162
+ }
163
+ });
164
+ try {
165
+ const controller = await logClient.log(namespace, pod.name, options.container ?? '', sink, {
166
+ follow: options.follow !== false,
167
+ tailLines: options.tailLines ?? 100,
168
+ timestamps: true,
169
+ previous: options.previous,
170
+ sinceSeconds: options.sinceSeconds,
171
+ limitBytes: options.limitBytes
172
+ });
173
+ controllers.set(pod.name, controller);
174
+ }
175
+ catch (err) {
176
+ logger.error(`Log stream error for ${pod.name}:`, err);
177
+ }
178
+ }
179
+ return {
180
+ subscribe(callback) {
181
+ listeners.add(callback);
182
+ return () => listeners.delete(callback);
183
+ },
184
+ pause() {
185
+ isPaused = true;
186
+ },
187
+ resume() {
188
+ isPaused = false;
189
+ },
190
+ close() {
191
+ controllers.forEach((controller) => controller.abort());
192
+ controllers.clear();
193
+ listeners.clear();
194
+ }
195
+ };
196
+ }
197
+ /**
198
+ * Get logs as a single batch
199
+ */
200
+ async getLogs(selector, options = {}) {
201
+ const namespace = selector.namespace || this.config.namespace || 'default';
202
+ const pods = await this.getPodStatus(selector);
203
+ if (pods.length === 0) {
204
+ throw new K8sNotFoundError('Pod', JSON.stringify(selector), namespace);
205
+ }
206
+ const allLogs = [];
207
+ for (const pod of pods) {
208
+ try {
209
+ const logBody = await this.coreApi.readNamespacedPodLog({
210
+ name: pod.name,
211
+ namespace,
212
+ container: options.container,
213
+ follow: options.follow,
214
+ limitBytes: options.limitBytes,
215
+ previous: options.previous,
216
+ sinceSeconds: options.sinceSeconds,
217
+ tailLines: options.tailLines,
218
+ timestamps: options.timestamps
219
+ });
220
+ const lines = logBody.split('\n').filter((line) => line.trim());
221
+ const logs = lines.map((line) => this.parseLogEntry(line, pod, namespace));
222
+ allLogs.push(...logs);
223
+ }
224
+ catch (error) {
225
+ logger.error(`Failed to get logs for ${pod.name}:`, error);
226
+ }
227
+ }
228
+ return allLogs.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
229
+ }
230
+ /**
231
+ * Get deployment status
232
+ */
233
+ async getDeploymentStatus(name, namespace) {
234
+ try {
235
+ const ns = namespace || this.config.namespace || 'default';
236
+ const deployment = await this.appsApi.readNamespacedDeployment({ name, namespace: ns });
237
+ return {
238
+ name: deployment.metadata.name,
239
+ namespace: deployment.metadata.namespace,
240
+ replicas: {
241
+ desired: deployment.spec.replicas || 0,
242
+ current: deployment.status?.replicas || 0,
243
+ available: deployment.status?.availableReplicas || 0,
244
+ updated: deployment.status?.updatedReplicas || 0
245
+ },
246
+ conditions: (deployment.status?.conditions || []).map((c) => ({
247
+ type: c.type,
248
+ status: c.status,
249
+ reason: c.reason,
250
+ message: c.message,
251
+ lastUpdateTime: new Date(c.lastUpdateTime),
252
+ lastTransitionTime: new Date(c.lastTransitionTime)
253
+ })),
254
+ strategy: deployment.spec.strategy?.type || 'RollingUpdate',
255
+ minReadySeconds: deployment.spec.minReadySeconds || 0,
256
+ revisionHistoryLimit: deployment.spec.revisionHistoryLimit || 10,
257
+ selector: deployment.spec.selector.matchLabels || {}
258
+ };
259
+ }
260
+ catch (error) {
261
+ throw this.handleK8sError(error);
262
+ }
263
+ }
264
+ /**
265
+ * Get service info
266
+ */
267
+ async getServiceInfo(name, namespace) {
268
+ try {
269
+ const ns = namespace || this.config.namespace || 'default';
270
+ const service = await this.coreApi.readNamespacedService({ name, namespace: ns });
271
+ return {
272
+ name: service.metadata.name,
273
+ namespace: service.metadata.namespace,
274
+ type: service.spec.type,
275
+ clusterIP: service.spec.clusterIP,
276
+ externalIPs: service.spec.externalIPs,
277
+ loadBalancerIP: service.status?.loadBalancer?.ingress?.[0]?.ip,
278
+ ports: (service.spec.ports || []).map((p) => ({
279
+ name: p.name,
280
+ protocol: p.protocol,
281
+ port: p.port,
282
+ targetPort: (typeof p.targetPort === 'object'
283
+ ? p.targetPort.intVal ||
284
+ p.targetPort.strVal ||
285
+ 0
286
+ : p.targetPort),
287
+ nodePort: p.nodePort
288
+ })),
289
+ selector: service.spec.selector ?? null
290
+ };
291
+ }
292
+ catch (error) {
293
+ throw this.handleK8sError(error);
294
+ }
295
+ }
296
+ /**
297
+ * Get pod metrics
298
+ */
299
+ async getPodMetrics(selector) {
300
+ try {
301
+ const namespace = selector.namespace || this.config.namespace || 'default';
302
+ if (!this.metrics) {
303
+ throw new Error('Kubernetes Metrics API is not available in this client version');
304
+ }
305
+ const metricsList = await this.metrics.getPodMetrics(namespace);
306
+ const allMetrics = metricsList.items;
307
+ const pods = await this.getPodStatus(selector);
308
+ const podNames = new Set(pods.map((p) => p.name));
309
+ return allMetrics
310
+ .filter((m) => podNames.has(m.metadata.name))
311
+ .map((m) => ({
312
+ pod: m.metadata.name,
313
+ namespace: m.metadata.namespace,
314
+ containers: m.containers.reduce((acc, c) => {
315
+ acc[c.name] = {
316
+ cpu: { usage: this.parseCPU(c.usage?.cpu || '0') },
317
+ memory: { usage: this.parseMemory(c.usage?.memory || '0') },
318
+ timestamp: new Date(m.timestamp)
319
+ };
320
+ return acc;
321
+ }, {})
322
+ }));
323
+ }
324
+ catch (error) {
325
+ throw this.handleK8sError(error);
326
+ }
327
+ }
328
+ /**
329
+ * Get events for a resource
330
+ */
331
+ async getEvents(kind, name, namespace) {
332
+ try {
333
+ const ns = namespace || this.config.namespace || 'default';
334
+ const fieldSelector = `involvedObject.name=${name},involvedObject.kind=${kind}`;
335
+ const response = await this.coreApi.listNamespacedEvent({
336
+ namespace: ns,
337
+ fieldSelector
338
+ });
339
+ return response.items.map((e) => ({
340
+ type: e.type,
341
+ reason: e.reason,
342
+ message: e.message,
343
+ source: {
344
+ component: e.source?.component,
345
+ host: e.source?.host
346
+ },
347
+ firstTimestamp: new Date(e.firstTimestamp),
348
+ lastTimestamp: new Date(e.lastTimestamp),
349
+ count: e.count || 1,
350
+ involvedObject: {
351
+ kind: e.involvedObject.kind,
352
+ name: e.involvedObject.name,
353
+ namespace: e.involvedObject.namespace
354
+ }
355
+ }));
356
+ }
357
+ catch (error) {
358
+ throw this.handleK8sError(error);
359
+ }
360
+ }
361
+ /**
362
+ * Execute command in pod
363
+ */
364
+ exec(options) {
365
+ const namespace = options.namespace || this.config.namespace || 'default';
366
+ const exec = new k8s.Exec(this.kc);
367
+ let stdout = '';
368
+ let stderr = '';
369
+ const stdoutStream = new Writable({
370
+ write(chunk, _encoding, callback) {
371
+ stdout += chunk.toString();
372
+ callback();
373
+ }
374
+ });
375
+ const stderrStream = new Writable({
376
+ write(chunk, _encoding, callback) {
377
+ stderr += chunk.toString();
378
+ callback();
379
+ }
380
+ });
381
+ return new Promise((resolve, _reject) => {
382
+ exec.exec(namespace, options.pod, options.container ?? '', options.command, stdoutStream, stderrStream, null, options.tty || false, (status) => {
383
+ if (status.status === 'Success') {
384
+ resolve({ stdout, stderr, exitCode: 0 });
385
+ }
386
+ else {
387
+ resolve({
388
+ stdout,
389
+ stderr,
390
+ exitCode: Number.parseInt(String(status.details?.causes?.[0]?.message ?? '1'), 10)
391
+ });
392
+ }
393
+ });
394
+ });
395
+ }
396
+ /**
397
+ * Port forward to a pod.
398
+ *
399
+ * `PortForward.portForward()` requires Node `Writable` for output (and
400
+ * optionally for err) and a Node `Readable` for input. The previous
401
+ * implementation passed `Writable.toWeb(new Writable())` cast through
402
+ * `unknown` — that produced a WHATWG `WritableStream` (not a Node
403
+ * `Writable`) and then lied about its type. Replace with a real
404
+ * pass-through Node `Writable` sink that forwards bytes to the logger.
405
+ */
406
+ async portForward(options) {
407
+ const namespace = options.namespace || this.config.namespace || 'default';
408
+ const forward = new k8s.PortForward(this.kc);
409
+ const output = new Writable({
410
+ write(chunk, _encoding, callback) {
411
+ logger.debug('portForward stdout', {
412
+ pod: options.pod,
413
+ namespace,
414
+ bytes: typeof chunk === 'string' ? Buffer.byteLength(chunk) : chunk.length
415
+ });
416
+ callback();
417
+ }
418
+ });
419
+ const errOutput = new Writable({
420
+ write(chunk, _encoding, callback) {
421
+ logger.warn('portForward stderr', {
422
+ pod: options.pod,
423
+ namespace,
424
+ message: typeof chunk === 'string' ? chunk : chunk.toString('utf8')
425
+ });
426
+ callback();
427
+ }
428
+ });
429
+ // A do-nothing input stream — no bytes are pushed from this side; the
430
+ // `Readable` is required by the API signature.
431
+ const input = new Readable({ read() { } });
432
+ const server = await forward.portForward(namespace, options.pod, [options.remotePort], output, errOutput, input, options.localPort);
433
+ const socket = typeof server === 'function' ? server() : server;
434
+ return {
435
+ localPort: options.localPort,
436
+ remotePort: options.remotePort,
437
+ close: () => {
438
+ socket?.close();
439
+ input.push(null);
440
+ output.end();
441
+ errOutput.end();
442
+ }
443
+ };
444
+ }
445
+ /**
446
+ * Check cluster health
447
+ */
448
+ async checkHealth() {
449
+ try {
450
+ const versionApi = this.kc.makeApiClient(k8s.VersionApi);
451
+ const versionInfo = await versionApi.getCode();
452
+ const version = versionInfo.gitVersion;
453
+ return { healthy: true, version };
454
+ }
455
+ catch (error) {
456
+ return {
457
+ healthy: false,
458
+ message: error instanceof Error ? error.message : 'Unknown error'
459
+ };
460
+ }
461
+ }
462
+ // Private helper methods
463
+ mapPodStatus(pod) {
464
+ const containerStatuses = pod.status?.containerStatuses || [];
465
+ const conditions = pod.status?.conditions || [];
466
+ return {
467
+ name: pod.metadata.name,
468
+ namespace: pod.metadata.namespace,
469
+ phase: pod.status?.phase || 'Unknown',
470
+ ready: conditions.some((c) => c.type === 'Ready' && c.status === 'True'),
471
+ restarts: containerStatuses.reduce((sum, cs) => sum + cs.restartCount, 0),
472
+ age: this.getAge(pod.metadata.creationTimestamp),
473
+ ip: pod.status?.podIP,
474
+ node: pod.spec?.nodeName,
475
+ conditions: conditions.map((c) => ({
476
+ type: c.type,
477
+ status: c.status,
478
+ reason: c.reason,
479
+ message: c.message,
480
+ lastTransitionTime: new Date(c.lastTransitionTime)
481
+ })),
482
+ containers: containerStatuses.map((cs) => ({
483
+ name: cs.name,
484
+ ready: cs.ready,
485
+ restartCount: cs.restartCount,
486
+ state: this.mapContainerState(cs.state),
487
+ image: cs.image,
488
+ imageID: cs.imageID
489
+ }))
490
+ };
491
+ }
492
+ mapContainerState(state) {
493
+ if (state.running) {
494
+ return {
495
+ running: {
496
+ startedAt: new Date(state.running.startedAt)
497
+ }
498
+ };
499
+ }
500
+ else if (state.terminated) {
501
+ return {
502
+ terminated: {
503
+ exitCode: state.terminated.exitCode,
504
+ reason: state.terminated.reason,
505
+ message: state.terminated.message,
506
+ startedAt: state.terminated.startedAt ? new Date(state.terminated.startedAt) : undefined,
507
+ finishedAt: state.terminated.finishedAt
508
+ ? new Date(state.terminated.finishedAt)
509
+ : undefined
510
+ }
511
+ };
512
+ }
513
+ else if (state.waiting) {
514
+ return {
515
+ waiting: {
516
+ reason: state.waiting.reason,
517
+ message: state.waiting.message
518
+ }
519
+ };
520
+ }
521
+ return {};
522
+ }
523
+ parseLogEntry(line, pod, namespace) {
524
+ // Parse timestamp if present (when timestamps: true)
525
+ const timestampMatch = line.match(/^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z)\s+(.*)$/);
526
+ let timestamp;
527
+ let message;
528
+ if (timestampMatch) {
529
+ timestamp = new Date(timestampMatch[1] ?? '');
530
+ message = timestampMatch[2] ?? '';
531
+ }
532
+ else {
533
+ timestamp = new Date();
534
+ message = line;
535
+ }
536
+ // Try to parse log level
537
+ const levelMatch = message.match(/\b(ERROR|WARN|INFO|DEBUG|TRACE)\b/i);
538
+ const level = levelMatch ? levelMatch[1].toUpperCase() : undefined;
539
+ return {
540
+ timestamp,
541
+ pod: pod.name,
542
+ namespace,
543
+ container: pod.containers[0]?.name || 'unknown',
544
+ message,
545
+ level,
546
+ cluster: this.kc.getCurrentContext(),
547
+ node: pod.node,
548
+ labels: {}
549
+ };
550
+ }
551
+ getAge(timestamp) {
552
+ if (!timestamp)
553
+ return 'Unknown';
554
+ const created = new Date(timestamp);
555
+ const now = new Date();
556
+ const diff = now.getTime() - created.getTime();
557
+ const days = Math.floor(diff / (1000 * 60 * 60 * 24));
558
+ const hours = Math.floor((diff % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
559
+ const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
560
+ if (days > 0)
561
+ return `${days}d${hours}h`;
562
+ if (hours > 0)
563
+ return `${hours}h${minutes}m`;
564
+ return `${minutes}m`;
565
+ }
566
+ parseCPU(cpu) {
567
+ // Convert CPU to millicores
568
+ if (cpu.endsWith('n')) {
569
+ return parseInt(cpu) / 1_000_000;
570
+ }
571
+ else if (cpu.endsWith('m')) {
572
+ return parseInt(cpu);
573
+ }
574
+ else {
575
+ return parseFloat(cpu) * 1000;
576
+ }
577
+ }
578
+ parseMemory(memory) {
579
+ // Convert memory to bytes
580
+ const units = {
581
+ Ki: 1024,
582
+ Mi: 1024 * 1024,
583
+ Gi: 1024 * 1024 * 1024,
584
+ K: 1000,
585
+ M: 1000 * 1000,
586
+ G: 1000 * 1000 * 1000
587
+ };
588
+ for (const [unit, multiplier] of Object.entries(units)) {
589
+ if (memory.endsWith(unit)) {
590
+ return parseInt(memory) * multiplier;
591
+ }
592
+ }
593
+ return parseInt(memory);
594
+ }
595
+ detectProvider(server) {
596
+ if (server.includes('eks.amazonaws.com'))
597
+ return 'eks';
598
+ if (server.includes('azmk8s.io'))
599
+ return 'aks';
600
+ if (server.includes('gke.'))
601
+ return 'gke';
602
+ if (server.includes('docker-desktop'))
603
+ return 'docker-desktop';
604
+ if (server.includes('minikube'))
605
+ return 'minikube';
606
+ return 'other';
607
+ }
608
+ handleK8sError(error) {
609
+ if (error.response) {
610
+ const response = error.response;
611
+ const status = response.statusCode;
612
+ const message = response.body?.message || String(error);
613
+ if (status === 401 || status === 403) {
614
+ return new K8sAuthError(message);
615
+ }
616
+ if (status === 404) {
617
+ return new K8sNotFoundError(response.body?.details?.kind || 'Resource', response.body?.details?.name || 'unknown');
618
+ }
619
+ return new K8sError(message, status, error.response?.body?.reason);
620
+ }
621
+ return error instanceof Error ? error : new Error('Unknown Kubernetes error');
622
+ }
623
+ }
624
+ export default KubernetesClient;
625
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kubernetes/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { default as vaultDescriptor } from './vault.descriptor';
2
+ export { createVaultStore } from './vault.impl';
3
+ export { readKVSecret, writeKVSecret, deleteKVKey, listKVPaths, type VaultClientConfig } from './vault.impl.cloud';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/secrets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACN,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,KAAK,iBAAiB,EACtB,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { default as vaultDescriptor } from './vault.descriptor.js';
2
+ export { createVaultStore } from './vault.impl.js';
3
+ export { readKVSecret, writeKVSecret, deleteKVKey, listKVPaths } from './vault.impl.cloud.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/secrets/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACN,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EAEX,MAAM,oBAAoB,CAAC"}