@oneuptime/common 10.0.83 → 10.0.85

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 (100) hide show
  1. package/Models/DatabaseModels/Index.ts +2 -0
  2. package/Models/DatabaseModels/KubernetesContainer.ts +552 -0
  3. package/Models/DatabaseModels/KubernetesResource.ts +130 -0
  4. package/Models/DatabaseModels/LlmLog.ts +2 -1
  5. package/Models/DatabaseModels/LlmProvider.ts +5 -4
  6. package/Models/DatabaseModels/Project.ts +40 -0
  7. package/Server/API/KubernetesResourceAPI.ts +144 -12
  8. package/Server/Infrastructure/Postgres/SchemaMigrations/1777550162848-MigrationName.ts +29 -0
  9. package/Server/Infrastructure/Postgres/SchemaMigrations/1777571961028-MigrationName.ts +99 -0
  10. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  11. package/Server/Infrastructure/Queue.ts +60 -0
  12. package/Server/Infrastructure/QueueWorker.ts +39 -1
  13. package/Server/Middleware/HttpMetricsMiddleware.ts +92 -0
  14. package/Server/Services/AuditLogService.ts +19 -1
  15. package/Server/Services/KubernetesContainerService.ts +264 -0
  16. package/Server/Services/KubernetesResourceService.ts +233 -0
  17. package/Server/Services/StatusPageSubscriberService.ts +4 -4
  18. package/Server/Types/Database/Permissions/AccessControlPermission.ts +3 -3
  19. package/Server/Utils/LLM/LLMService.ts +132 -11
  20. package/Server/Utils/Monitor/MonitorAlert.ts +1 -1
  21. package/Server/Utils/Monitor/MonitorIncident.ts +1 -1
  22. package/Server/Utils/StartServer.ts +2 -0
  23. package/Server/Utils/Telemetry/AppMetrics.ts +211 -0
  24. package/Server/Utils/Telemetry/RuntimeMetrics.ts +169 -0
  25. package/Server/Utils/Telemetry.ts +98 -0
  26. package/Server/Utils/Workspace/Slack/Actions/Alert.ts +2 -2
  27. package/Server/Utils/Workspace/Slack/Actions/Incident.ts +2 -2
  28. package/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.ts +2 -2
  29. package/Tests/jest.setup.ts +18 -0
  30. package/Types/Kubernetes/KubernetesInventoryExtractor.ts +171 -5
  31. package/Types/LLM/LlmType.ts +3 -0
  32. package/UI/Components/Forms/ModelForm.tsx +3 -3
  33. package/UI/Components/Label/Labels.tsx +10 -2
  34. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +2 -2
  35. package/Utils/UUID.ts +1 -3
  36. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  37. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  38. package/build/dist/Models/DatabaseModels/KubernetesContainer.js +581 -0
  39. package/build/dist/Models/DatabaseModels/KubernetesContainer.js.map +1 -0
  40. package/build/dist/Models/DatabaseModels/KubernetesResource.js +135 -0
  41. package/build/dist/Models/DatabaseModels/KubernetesResource.js.map +1 -1
  42. package/build/dist/Models/DatabaseModels/LlmLog.js +1 -1
  43. package/build/dist/Models/DatabaseModels/LlmLog.js.map +1 -1
  44. package/build/dist/Models/DatabaseModels/LlmProvider.js +4 -4
  45. package/build/dist/Models/DatabaseModels/LlmProvider.js.map +1 -1
  46. package/build/dist/Models/DatabaseModels/Project.js +41 -0
  47. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  48. package/build/dist/Server/API/KubernetesResourceAPI.js +106 -9
  49. package/build/dist/Server/API/KubernetesResourceAPI.js.map +1 -1
  50. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1777550162848-MigrationName.js +16 -0
  51. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1777550162848-MigrationName.js.map +1 -0
  52. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1777571961028-MigrationName.js +40 -0
  53. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1777571961028-MigrationName.js.map +1 -0
  54. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  55. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  56. package/build/dist/Server/Infrastructure/Queue.js +44 -0
  57. package/build/dist/Server/Infrastructure/Queue.js.map +1 -1
  58. package/build/dist/Server/Infrastructure/QueueWorker.js +31 -1
  59. package/build/dist/Server/Infrastructure/QueueWorker.js.map +1 -1
  60. package/build/dist/Server/Middleware/HttpMetricsMiddleware.js +61 -0
  61. package/build/dist/Server/Middleware/HttpMetricsMiddleware.js.map +1 -0
  62. package/build/dist/Server/Services/AuditLogService.js +14 -1
  63. package/build/dist/Server/Services/AuditLogService.js.map +1 -1
  64. package/build/dist/Server/Services/KubernetesContainerService.js +179 -0
  65. package/build/dist/Server/Services/KubernetesContainerService.js.map +1 -0
  66. package/build/dist/Server/Services/KubernetesResourceService.js +175 -0
  67. package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -1
  68. package/build/dist/Server/Services/StatusPageSubscriberService.js +4 -4
  69. package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
  70. package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js +3 -3
  71. package/build/dist/Server/Utils/LLM/LLMService.js +111 -13
  72. package/build/dist/Server/Utils/LLM/LLMService.js.map +1 -1
  73. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +1 -1
  74. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  75. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +1 -1
  76. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  77. package/build/dist/Server/Utils/StartServer.js +2 -0
  78. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  79. package/build/dist/Server/Utils/Telemetry/AppMetrics.js +167 -0
  80. package/build/dist/Server/Utils/Telemetry/AppMetrics.js.map +1 -0
  81. package/build/dist/Server/Utils/Telemetry/RuntimeMetrics.js +141 -0
  82. package/build/dist/Server/Utils/Telemetry/RuntimeMetrics.js.map +1 -0
  83. package/build/dist/Server/Utils/Telemetry.js +47 -0
  84. package/build/dist/Server/Utils/Telemetry.js.map +1 -1
  85. package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js +2 -2
  86. package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js +2 -2
  87. package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js +2 -2
  88. package/build/dist/Tests/jest.setup.js +17 -0
  89. package/build/dist/Tests/jest.setup.js.map +1 -1
  90. package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js +116 -4
  91. package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js.map +1 -1
  92. package/build/dist/Types/LLM/LlmType.js +3 -0
  93. package/build/dist/Types/LLM/LlmType.js.map +1 -1
  94. package/build/dist/UI/Components/Forms/ModelForm.js +3 -3
  95. package/build/dist/UI/Components/Label/Labels.js +8 -2
  96. package/build/dist/UI/Components/Label/Labels.js.map +1 -1
  97. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  98. package/build/dist/Utils/UUID.js +1 -2
  99. package/build/dist/Utils/UUID.js.map +1 -1
  100. package/package.json +6 -8
@@ -0,0 +1,581 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import KubernetesCluster from "./KubernetesCluster";
11
+ import Project from "./Project";
12
+ import User from "./User";
13
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
14
+ import Route from "../../Types/API/Route";
15
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
16
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
17
+ import ColumnLength from "../../Types/Database/ColumnLength";
18
+ import ColumnType from "../../Types/Database/ColumnType";
19
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
20
+ import TableColumn from "../../Types/Database/TableColumn";
21
+ import TableColumnType from "../../Types/Database/TableColumnType";
22
+ import TableMetadata from "../../Types/Database/TableMetadata";
23
+ import TenantColumn from "../../Types/Database/TenantColumn";
24
+ import IconProp from "../../Types/Icon/IconProp";
25
+ import ObjectID from "../../Types/ObjectID";
26
+ import Permission from "../../Types/Permission";
27
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
28
+ /*
29
+ * ------------------------------------------------------------------
30
+ * KubernetesContainer
31
+ * ------------------------------------------------------------------
32
+ *
33
+ * One row per container in the Pod inventory snapshot. Lets the
34
+ * Containers list page do a single indexed SELECT instead of
35
+ * fetching every Pod and unpacking JSONB at render time, and lets
36
+ * the metric ingest path write latest CPU/memory directly so the
37
+ * page never needs to hit ClickHouse.
38
+ *
39
+ * Populated together with KubernetesResource: when a Pod snapshot
40
+ * arrives, the ingest path emits one parent KubernetesResource row
41
+ * (kind = "Pod") and N child KubernetesContainer rows.
42
+ *
43
+ * Hard-deleted alongside its parent Pod by the cleanup worker once
44
+ * the Pod's lastSeenAt falls behind the staleness threshold.
45
+ *
46
+ * ------------------------------------------------------------------
47
+ */
48
+ const READ_PERMISSIONS = [
49
+ Permission.ProjectOwner,
50
+ Permission.ProjectAdmin,
51
+ Permission.ProjectMember,
52
+ Permission.Viewer,
53
+ Permission.SettingsManager,
54
+ Permission.ReadKubernetesCluster,
55
+ Permission.ReadAllProjectResources,
56
+ ];
57
+ let KubernetesContainer = class KubernetesContainer extends BaseModel {
58
+ constructor() {
59
+ super(...arguments);
60
+ this.project = undefined;
61
+ this.projectId = undefined;
62
+ this.kubernetesCluster = undefined;
63
+ this.kubernetesClusterId = undefined;
64
+ this.podNamespaceKey = undefined;
65
+ this.podName = undefined;
66
+ this.name = undefined;
67
+ this.image = undefined;
68
+ this.state = undefined;
69
+ this.reason = undefined;
70
+ this.isReady = undefined;
71
+ this.restartCount = undefined;
72
+ this.memoryLimitBytes = undefined;
73
+ this.latestCpuPercent = undefined;
74
+ this.latestMemoryBytes = undefined;
75
+ this.metricsUpdatedAt = undefined;
76
+ this.lastSeenAt = undefined;
77
+ this.createdByUser = undefined;
78
+ this.createdByUserId = undefined;
79
+ this.deletedByUser = undefined;
80
+ this.deletedByUserId = undefined;
81
+ }
82
+ };
83
+ __decorate([
84
+ ColumnAccessControl({
85
+ create: [],
86
+ read: READ_PERMISSIONS,
87
+ update: [],
88
+ }),
89
+ TableColumn({
90
+ manyToOneRelationColumn: "projectId",
91
+ type: TableColumnType.Entity,
92
+ modelType: Project,
93
+ title: "Project",
94
+ description: "Relation to Project this container belongs to.",
95
+ }),
96
+ ManyToOne(() => {
97
+ return Project;
98
+ }, {
99
+ eager: false,
100
+ nullable: true,
101
+ onDelete: "CASCADE",
102
+ orphanedRowAction: "nullify",
103
+ }),
104
+ JoinColumn({ name: "projectId" }),
105
+ __metadata("design:type", Project)
106
+ ], KubernetesContainer.prototype, "project", void 0);
107
+ __decorate([
108
+ ColumnAccessControl({
109
+ create: [],
110
+ read: READ_PERMISSIONS,
111
+ update: [],
112
+ }),
113
+ Index(),
114
+ TableColumn({
115
+ type: TableColumnType.ObjectID,
116
+ required: true,
117
+ canReadOnRelationQuery: true,
118
+ title: "Project ID",
119
+ description: "ID of the Project this container belongs to.",
120
+ }),
121
+ Column({
122
+ type: ColumnType.ObjectID,
123
+ nullable: false,
124
+ transformer: ObjectID.getDatabaseTransformer(),
125
+ }),
126
+ __metadata("design:type", ObjectID)
127
+ ], KubernetesContainer.prototype, "projectId", void 0);
128
+ __decorate([
129
+ ColumnAccessControl({
130
+ create: [],
131
+ read: READ_PERMISSIONS,
132
+ update: [],
133
+ }),
134
+ TableColumn({
135
+ manyToOneRelationColumn: "kubernetesClusterId",
136
+ type: TableColumnType.Entity,
137
+ modelType: KubernetesCluster,
138
+ title: "Kubernetes Cluster",
139
+ description: "Cluster this container lives in.",
140
+ }),
141
+ ManyToOne(() => {
142
+ return KubernetesCluster;
143
+ }, {
144
+ eager: false,
145
+ nullable: true,
146
+ onDelete: "CASCADE",
147
+ orphanedRowAction: "nullify",
148
+ }),
149
+ JoinColumn({ name: "kubernetesClusterId" }),
150
+ __metadata("design:type", KubernetesCluster)
151
+ ], KubernetesContainer.prototype, "kubernetesCluster", void 0);
152
+ __decorate([
153
+ ColumnAccessControl({
154
+ create: [],
155
+ read: READ_PERMISSIONS,
156
+ update: [],
157
+ }),
158
+ Index(),
159
+ TableColumn({
160
+ type: TableColumnType.ObjectID,
161
+ required: true,
162
+ canReadOnRelationQuery: true,
163
+ title: "Kubernetes Cluster ID",
164
+ description: "ID of the Kubernetes Cluster this container lives in.",
165
+ }),
166
+ Column({
167
+ type: ColumnType.ObjectID,
168
+ nullable: false,
169
+ transformer: ObjectID.getDatabaseTransformer(),
170
+ }),
171
+ __metadata("design:type", ObjectID)
172
+ ], KubernetesContainer.prototype, "kubernetesClusterId", void 0);
173
+ __decorate([
174
+ ColumnAccessControl({
175
+ create: [],
176
+ read: READ_PERMISSIONS,
177
+ update: [],
178
+ }),
179
+ TableColumn({
180
+ required: true,
181
+ type: TableColumnType.ShortText,
182
+ canReadOnRelationQuery: true,
183
+ title: "Pod Namespace Key",
184
+ description: "Namespace of the parent Pod. Empty string for the rare cluster-scoped pod case; kept non-null so the upsert unique index works.",
185
+ }),
186
+ Column({
187
+ nullable: false,
188
+ type: ColumnType.ShortText,
189
+ length: ColumnLength.ShortText,
190
+ default: "",
191
+ }),
192
+ __metadata("design:type", String)
193
+ ], KubernetesContainer.prototype, "podNamespaceKey", void 0);
194
+ __decorate([
195
+ ColumnAccessControl({
196
+ create: [],
197
+ read: READ_PERMISSIONS,
198
+ update: [],
199
+ }),
200
+ TableColumn({
201
+ required: true,
202
+ type: TableColumnType.ShortText,
203
+ canReadOnRelationQuery: true,
204
+ title: "Pod Name",
205
+ description: "metadata.name of the parent Pod.",
206
+ }),
207
+ Column({
208
+ nullable: false,
209
+ type: ColumnType.ShortText,
210
+ length: ColumnLength.ShortText,
211
+ }),
212
+ __metadata("design:type", String)
213
+ ], KubernetesContainer.prototype, "podName", void 0);
214
+ __decorate([
215
+ ColumnAccessControl({
216
+ create: [],
217
+ read: READ_PERMISSIONS,
218
+ update: [],
219
+ }),
220
+ TableColumn({
221
+ required: true,
222
+ type: TableColumnType.ShortText,
223
+ canReadOnRelationQuery: true,
224
+ title: "Name",
225
+ description: "Container name (spec.containers[].name).",
226
+ }),
227
+ Column({
228
+ nullable: false,
229
+ type: ColumnType.ShortText,
230
+ length: ColumnLength.ShortText,
231
+ }),
232
+ __metadata("design:type", String)
233
+ ], KubernetesContainer.prototype, "name", void 0);
234
+ __decorate([
235
+ ColumnAccessControl({
236
+ create: [],
237
+ read: READ_PERMISSIONS,
238
+ update: [],
239
+ }),
240
+ TableColumn({
241
+ required: false,
242
+ type: TableColumnType.LongText,
243
+ canReadOnRelationQuery: true,
244
+ title: "Image",
245
+ description: "Container image reference (spec.containers[].image).",
246
+ }),
247
+ Column({
248
+ nullable: true,
249
+ type: ColumnType.LongText,
250
+ length: ColumnLength.LongText,
251
+ }),
252
+ __metadata("design:type", String)
253
+ ], KubernetesContainer.prototype, "image", void 0);
254
+ __decorate([
255
+ ColumnAccessControl({
256
+ create: [],
257
+ read: READ_PERMISSIONS,
258
+ update: [],
259
+ }),
260
+ TableColumn({
261
+ required: false,
262
+ type: TableColumnType.ShortText,
263
+ canReadOnRelationQuery: true,
264
+ title: "State",
265
+ description: "Container state from status.containerStatuses[].state (running / waiting / terminated). Null until status is observed.",
266
+ }),
267
+ Column({
268
+ nullable: true,
269
+ type: ColumnType.ShortText,
270
+ length: ColumnLength.ShortText,
271
+ }),
272
+ __metadata("design:type", String)
273
+ ], KubernetesContainer.prototype, "state", void 0);
274
+ __decorate([
275
+ ColumnAccessControl({
276
+ create: [],
277
+ read: READ_PERMISSIONS,
278
+ update: [],
279
+ }),
280
+ TableColumn({
281
+ required: false,
282
+ type: TableColumnType.ShortText,
283
+ canReadOnRelationQuery: true,
284
+ title: "Reason",
285
+ description: "Container state reason (e.g. ImagePullBackOff, CrashLoopBackOff). Surfaced on the list page when the container is not Running.",
286
+ }),
287
+ Column({
288
+ nullable: true,
289
+ type: ColumnType.ShortText,
290
+ length: ColumnLength.ShortText,
291
+ }),
292
+ __metadata("design:type", String)
293
+ ], KubernetesContainer.prototype, "reason", void 0);
294
+ __decorate([
295
+ ColumnAccessControl({
296
+ create: [],
297
+ read: READ_PERMISSIONS,
298
+ update: [],
299
+ }),
300
+ TableColumn({
301
+ required: false,
302
+ type: TableColumnType.Boolean,
303
+ canReadOnRelationQuery: true,
304
+ title: "Is Ready",
305
+ description: "True when status.containerStatuses[].ready is true. Null until status is observed.",
306
+ }),
307
+ Column({
308
+ nullable: true,
309
+ type: ColumnType.Boolean,
310
+ }),
311
+ __metadata("design:type", Boolean)
312
+ ], KubernetesContainer.prototype, "isReady", void 0);
313
+ __decorate([
314
+ ColumnAccessControl({
315
+ create: [],
316
+ read: READ_PERMISSIONS,
317
+ update: [],
318
+ }),
319
+ TableColumn({
320
+ required: false,
321
+ type: TableColumnType.PositiveNumber,
322
+ canReadOnRelationQuery: true,
323
+ title: "Restart Count",
324
+ description: "Restart counter from status.containerStatuses[].restartCount.",
325
+ }),
326
+ Column({
327
+ nullable: true,
328
+ type: ColumnType.PositiveNumber,
329
+ }),
330
+ __metadata("design:type", Number)
331
+ ], KubernetesContainer.prototype, "restartCount", void 0);
332
+ __decorate([
333
+ ColumnAccessControl({
334
+ create: [],
335
+ read: READ_PERMISSIONS,
336
+ update: [],
337
+ }),
338
+ TableColumn({
339
+ required: false,
340
+ type: TableColumnType.BigPositiveNumber,
341
+ canReadOnRelationQuery: true,
342
+ title: "Memory Limit Bytes",
343
+ description: "spec.containers[].resources.limits.memory parsed to bytes, used to render the % memory bar on the list view.",
344
+ }),
345
+ Column({
346
+ nullable: true,
347
+ type: ColumnType.BigPositiveNumber,
348
+ transformer: {
349
+ to: (value) => {
350
+ if (value === null || value === undefined) {
351
+ return null;
352
+ }
353
+ return Math.trunc(value).toString();
354
+ },
355
+ from: (value) => {
356
+ if (value === null || value === undefined) {
357
+ return null;
358
+ }
359
+ const parsed = parseInt(value, 10);
360
+ return isNaN(parsed) ? null : parsed;
361
+ },
362
+ },
363
+ }),
364
+ __metadata("design:type", Number)
365
+ ], KubernetesContainer.prototype, "memoryLimitBytes", void 0);
366
+ __decorate([
367
+ ColumnAccessControl({
368
+ create: [],
369
+ read: READ_PERMISSIONS,
370
+ update: [],
371
+ }),
372
+ TableColumn({
373
+ required: false,
374
+ type: TableColumnType.Number,
375
+ canReadOnRelationQuery: true,
376
+ title: "Latest CPU Percent",
377
+ description: "Most recent CPU utilization percent for this container. Stored as decimal so sub-percent precision survives the round trip. Null until the first metric arrives.",
378
+ }),
379
+ Column({
380
+ nullable: true,
381
+ type: ColumnType.Decimal,
382
+ transformer: {
383
+ to: (value) => {
384
+ if (value === null || value === undefined) {
385
+ return null;
386
+ }
387
+ return value;
388
+ },
389
+ from: (value) => {
390
+ if (value === null || value === undefined) {
391
+ return null;
392
+ }
393
+ if (typeof value === "number") {
394
+ return value;
395
+ }
396
+ const parsed = parseFloat(value);
397
+ return isNaN(parsed) ? null : parsed;
398
+ },
399
+ },
400
+ }),
401
+ __metadata("design:type", Number)
402
+ ], KubernetesContainer.prototype, "latestCpuPercent", void 0);
403
+ __decorate([
404
+ ColumnAccessControl({
405
+ create: [],
406
+ read: READ_PERMISSIONS,
407
+ update: [],
408
+ }),
409
+ TableColumn({
410
+ required: false,
411
+ type: TableColumnType.BigPositiveNumber,
412
+ canReadOnRelationQuery: true,
413
+ title: "Latest Memory Bytes",
414
+ description: "Most recent memory usage (bytes) for this container. Same lifecycle as latestCpuPercent.",
415
+ }),
416
+ Column({
417
+ nullable: true,
418
+ type: ColumnType.BigPositiveNumber,
419
+ transformer: {
420
+ to: (value) => {
421
+ if (value === null || value === undefined) {
422
+ return null;
423
+ }
424
+ return Math.trunc(value).toString();
425
+ },
426
+ from: (value) => {
427
+ if (value === null || value === undefined) {
428
+ return null;
429
+ }
430
+ const parsed = parseInt(value, 10);
431
+ return isNaN(parsed) ? null : parsed;
432
+ },
433
+ },
434
+ }),
435
+ __metadata("design:type", Number)
436
+ ], KubernetesContainer.prototype, "latestMemoryBytes", void 0);
437
+ __decorate([
438
+ ColumnAccessControl({
439
+ create: [],
440
+ read: READ_PERMISSIONS,
441
+ update: [],
442
+ }),
443
+ TableColumn({
444
+ required: false,
445
+ type: TableColumnType.Date,
446
+ canReadOnRelationQuery: true,
447
+ title: "Metrics Updated At",
448
+ description: "Observed timestamp of the latest CPU/memory point. Acts as the monotonic guard for metric updates and the cutoff for staleness rendering.",
449
+ }),
450
+ Column({
451
+ nullable: true,
452
+ type: ColumnType.Date,
453
+ }),
454
+ __metadata("design:type", Date)
455
+ ], KubernetesContainer.prototype, "metricsUpdatedAt", void 0);
456
+ __decorate([
457
+ ColumnAccessControl({
458
+ create: [],
459
+ read: READ_PERMISSIONS,
460
+ update: [],
461
+ }),
462
+ TableColumn({
463
+ required: true,
464
+ type: TableColumnType.Date,
465
+ canReadOnRelationQuery: true,
466
+ title: "Last Seen At",
467
+ description: "Agent-observed timestamp of the most recent Pod snapshot containing this container. Acts as the monotonic guard for upserts and the cutoff for stale-row cleanup.",
468
+ }),
469
+ Column({
470
+ nullable: false,
471
+ type: ColumnType.Date,
472
+ }),
473
+ __metadata("design:type", Date)
474
+ ], KubernetesContainer.prototype, "lastSeenAt", void 0);
475
+ __decorate([
476
+ ColumnAccessControl({
477
+ create: [],
478
+ read: READ_PERMISSIONS,
479
+ update: [],
480
+ }),
481
+ TableColumn({
482
+ manyToOneRelationColumn: "createdByUserId",
483
+ type: TableColumnType.Entity,
484
+ modelType: User,
485
+ title: "Created By User",
486
+ description: "Not user-facing; ingest writes as isRoot so this stays null in practice.",
487
+ }),
488
+ ManyToOne(() => {
489
+ return User;
490
+ }, {
491
+ eager: false,
492
+ nullable: true,
493
+ onDelete: "SET NULL",
494
+ orphanedRowAction: "nullify",
495
+ }),
496
+ JoinColumn({ name: "createdByUserId" }),
497
+ __metadata("design:type", User)
498
+ ], KubernetesContainer.prototype, "createdByUser", void 0);
499
+ __decorate([
500
+ ColumnAccessControl({
501
+ create: [],
502
+ read: READ_PERMISSIONS,
503
+ update: [],
504
+ }),
505
+ TableColumn({
506
+ type: TableColumnType.ObjectID,
507
+ title: "Created By User ID",
508
+ description: "ID of the user who created this row.",
509
+ }),
510
+ Column({
511
+ type: ColumnType.ObjectID,
512
+ nullable: true,
513
+ transformer: ObjectID.getDatabaseTransformer(),
514
+ }),
515
+ __metadata("design:type", ObjectID)
516
+ ], KubernetesContainer.prototype, "createdByUserId", void 0);
517
+ __decorate([
518
+ ColumnAccessControl({
519
+ create: [],
520
+ read: READ_PERMISSIONS,
521
+ update: [],
522
+ }),
523
+ TableColumn({
524
+ manyToOneRelationColumn: "deletedByUserId",
525
+ type: TableColumnType.Entity,
526
+ modelType: User,
527
+ title: "Deleted By User",
528
+ description: "Relation to the user who deleted this row.",
529
+ }),
530
+ ManyToOne(() => {
531
+ return User;
532
+ }, {
533
+ eager: false,
534
+ nullable: true,
535
+ onDelete: "SET NULL",
536
+ orphanedRowAction: "nullify",
537
+ }),
538
+ JoinColumn({ name: "deletedByUserId" }),
539
+ __metadata("design:type", User)
540
+ ], KubernetesContainer.prototype, "deletedByUser", void 0);
541
+ __decorate([
542
+ ColumnAccessControl({
543
+ create: [],
544
+ read: READ_PERMISSIONS,
545
+ update: [],
546
+ }),
547
+ TableColumn({
548
+ type: TableColumnType.ObjectID,
549
+ title: "Deleted By User ID",
550
+ description: "ID of the user who deleted this row.",
551
+ }),
552
+ Column({
553
+ type: ColumnType.ObjectID,
554
+ nullable: true,
555
+ transformer: ObjectID.getDatabaseTransformer(),
556
+ }),
557
+ __metadata("design:type", ObjectID)
558
+ ], KubernetesContainer.prototype, "deletedByUserId", void 0);
559
+ KubernetesContainer = __decorate([
560
+ TenantColumn("projectId"),
561
+ TableAccessControl({
562
+ create: [],
563
+ read: READ_PERMISSIONS,
564
+ update: [],
565
+ delete: [],
566
+ }),
567
+ CrudApiEndpoint(new Route("/kubernetes-container")),
568
+ TableMetadata({
569
+ tableName: "KubernetesContainer",
570
+ singularName: "Kubernetes Container",
571
+ pluralName: "Kubernetes Containers",
572
+ icon: IconProp.Cube,
573
+ tableDescription: "Snapshot of a single container inside a Pod, populated by the telemetry ingest pipeline. Not user-editable.",
574
+ }),
575
+ Index(["projectId", "kubernetesClusterId", "podNamespaceKey", "podName", "name"], { unique: true }),
576
+ Entity({
577
+ name: "KubernetesContainer",
578
+ })
579
+ ], KubernetesContainer);
580
+ export default KubernetesContainer;
581
+ //# sourceMappingURL=KubernetesContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KubernetesContainer.js","sourceRoot":"","sources":["../../../../Models/DatabaseModels/KubernetesContainer.ts"],"names":[],"mappings":"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"}