@gravito/zenith 1.1.2 → 1.1.6
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.
- package/README.md +95 -22
- package/README.zh-TW.md +88 -0
- package/dist/bin.js +54699 -39316
- package/dist/client/assets/index-C80c1frR.css +1 -0
- package/dist/client/assets/index-CrWem9u3.js +434 -0
- package/dist/client/index.html +2 -2
- package/dist/server/index.js +54699 -39316
- package/package.json +20 -9
- package/CHANGELOG.md +0 -47
- package/Dockerfile +0 -46
- package/Dockerfile.demo-worker +0 -29
- package/ECOSYSTEM_EXPANSION_RFC.md +0 -130
- package/bin/flux-console.ts +0 -2
- package/dist/client/assets/index-BSMp8oq_.js +0 -436
- package/dist/client/assets/index-BwxlHx-_.css +0 -1
- package/docker-compose.yml +0 -40
- package/docs/ALERTING_GUIDE.md +0 -71
- package/docs/DEPLOYMENT.md +0 -157
- package/docs/DOCS_INTERNAL.md +0 -73
- package/docs/LARAVEL_ZENITH_ROADMAP.md +0 -109
- package/docs/QUASAR_MASTER_PLAN.md +0 -140
- package/docs/QUICK_TEST_GUIDE.md +0 -72
- package/docs/ROADMAP.md +0 -85
- package/docs/integrations/LARAVEL.md +0 -207
- package/postcss.config.js +0 -6
- package/scripts/debug_redis_keys.ts +0 -24
- package/scripts/flood-logs.ts +0 -21
- package/scripts/seed.ts +0 -213
- package/scripts/verify-throttle.ts +0 -49
- package/scripts/worker.ts +0 -124
- package/specs/PULSE_SPEC.md +0 -86
- package/src/bin.ts +0 -6
- package/src/client/App.tsx +0 -72
- package/src/client/Layout.tsx +0 -672
- package/src/client/Sidebar.tsx +0 -112
- package/src/client/ThroughputChart.tsx +0 -144
- package/src/client/WorkerStatus.tsx +0 -226
- package/src/client/components/BrandIcons.tsx +0 -168
- package/src/client/components/ConfirmDialog.tsx +0 -126
- package/src/client/components/JobInspector.tsx +0 -554
- package/src/client/components/LogArchiveModal.tsx +0 -432
- package/src/client/components/NotificationBell.tsx +0 -212
- package/src/client/components/PageHeader.tsx +0 -47
- package/src/client/components/Toaster.tsx +0 -90
- package/src/client/components/UserProfileDropdown.tsx +0 -186
- package/src/client/contexts/AuthContext.tsx +0 -105
- package/src/client/contexts/NotificationContext.tsx +0 -128
- package/src/client/index.css +0 -174
- package/src/client/index.html +0 -12
- package/src/client/main.tsx +0 -15
- package/src/client/pages/LoginPage.tsx +0 -162
- package/src/client/pages/MetricsPage.tsx +0 -417
- package/src/client/pages/OverviewPage.tsx +0 -517
- package/src/client/pages/PulsePage.tsx +0 -488
- package/src/client/pages/QueuesPage.tsx +0 -379
- package/src/client/pages/SchedulesPage.tsx +0 -540
- package/src/client/pages/SettingsPage.tsx +0 -1020
- package/src/client/pages/WorkersPage.tsx +0 -394
- package/src/client/pages/index.ts +0 -8
- package/src/client/utils.ts +0 -15
- package/src/server/config/ServerConfigManager.ts +0 -90
- package/src/server/index.ts +0 -860
- package/src/server/middleware/auth.ts +0 -127
- package/src/server/services/AlertService.ts +0 -321
- package/src/server/services/CommandService.ts +0 -137
- package/src/server/services/LogStreamProcessor.ts +0 -93
- package/src/server/services/MaintenanceScheduler.ts +0 -78
- package/src/server/services/PulseService.ts +0 -91
- package/src/server/services/QueueMetricsCollector.ts +0 -138
- package/src/server/services/QueueService.ts +0 -631
- package/src/shared/types.ts +0 -198
- package/tailwind.config.js +0 -73
- package/tests/placeholder.test.ts +0 -7
- package/tsconfig.json +0 -38
- package/tsconfig.node.json +0 -12
- package/vite.config.ts +0 -27
package/src/shared/types.ts
DELETED
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metrics representing CPU usage for a specific node/process.
|
|
3
|
-
*
|
|
4
|
-
* @public
|
|
5
|
-
* @since 3.0.0
|
|
6
|
-
*/
|
|
7
|
-
export interface PulseCpu {
|
|
8
|
-
/** System-wide CPU usage percentage (0-100). */
|
|
9
|
-
system: number
|
|
10
|
-
/** Process-specific CPU usage percentage (0-100). */
|
|
11
|
-
process: number
|
|
12
|
-
/** Number of CPU cores available. */
|
|
13
|
-
cores: number
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Metrics representing memory usage for a specific node/process.
|
|
18
|
-
*
|
|
19
|
-
* @public
|
|
20
|
-
* @since 3.0.0
|
|
21
|
-
*/
|
|
22
|
-
export interface PulseMemory {
|
|
23
|
-
/** System-wide memory statistics. */
|
|
24
|
-
system: {
|
|
25
|
-
/** Total system memory in bytes. */
|
|
26
|
-
total: number
|
|
27
|
-
/** Free system memory in bytes. */
|
|
28
|
-
free: number
|
|
29
|
-
/** Used system memory in bytes. */
|
|
30
|
-
used: number
|
|
31
|
-
}
|
|
32
|
-
/** Process-specific memory statistics. */
|
|
33
|
-
process: {
|
|
34
|
-
/** Resident Set Size (RSS) in bytes. */
|
|
35
|
-
rss: number
|
|
36
|
-
/** Total allocated heap size in bytes. */
|
|
37
|
-
heapTotal: number
|
|
38
|
-
/** Used heap size in bytes. */
|
|
39
|
-
heapUsed: number
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Runtime metadata for a monitored process.
|
|
45
|
-
*
|
|
46
|
-
* @public
|
|
47
|
-
* @since 3.0.0
|
|
48
|
-
*/
|
|
49
|
-
export interface PulseRuntime {
|
|
50
|
-
/** Uptime in seconds. */
|
|
51
|
-
uptime: number
|
|
52
|
-
/** Framework or runtime identification (e.g., "Node 21.4"). */
|
|
53
|
-
framework: string
|
|
54
|
-
/** Current process status (e.g., 'online', 'maintenance'). */
|
|
55
|
-
status?: string
|
|
56
|
-
/** Last few error messages from the process. */
|
|
57
|
-
errors?: string[]
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Statistics snapshot for a specific queue.
|
|
62
|
-
*
|
|
63
|
-
* @public
|
|
64
|
-
* @since 3.0.0
|
|
65
|
-
*/
|
|
66
|
-
export interface QueueSnapshot {
|
|
67
|
-
/** The name of the queue. */
|
|
68
|
-
name: string
|
|
69
|
-
/** The driver used (redis, sqs, etc.). */
|
|
70
|
-
driver: 'redis' | 'sqs' | 'rabbitmq'
|
|
71
|
-
/** Current counts of jobs in different states. */
|
|
72
|
-
size: {
|
|
73
|
-
waiting: number
|
|
74
|
-
active: number
|
|
75
|
-
failed: number
|
|
76
|
-
delayed: number
|
|
77
|
-
}
|
|
78
|
-
/** Historical throughput data. */
|
|
79
|
-
throughput?: {
|
|
80
|
-
in: number
|
|
81
|
-
out: number
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Represents a single application instance (node) monitored by Zenith.
|
|
87
|
-
*
|
|
88
|
-
* @public
|
|
89
|
-
* @since 3.0.0
|
|
90
|
-
*/
|
|
91
|
-
export interface PulseNode {
|
|
92
|
-
/** Unique execution ID for the node. */
|
|
93
|
-
id: string
|
|
94
|
-
/** Service group name. */
|
|
95
|
-
service: string
|
|
96
|
-
/** Programming language or runtime type. */
|
|
97
|
-
language: 'node' | 'bun' | 'deno' | 'php' | 'go' | 'python' | 'other'
|
|
98
|
-
/** Application version. */
|
|
99
|
-
version: string
|
|
100
|
-
/** Process identifier. */
|
|
101
|
-
pid: number
|
|
102
|
-
/** Hostname of the machine. */
|
|
103
|
-
hostname: string
|
|
104
|
-
/** Operating system platform. */
|
|
105
|
-
platform: string
|
|
106
|
-
/** CPU metrics. */
|
|
107
|
-
cpu: PulseCpu
|
|
108
|
-
/** Memory metrics. */
|
|
109
|
-
memory: PulseMemory
|
|
110
|
-
/** Optional list of queues managed by this node. */
|
|
111
|
-
queues?: QueueSnapshot[]
|
|
112
|
-
/** Runtime details. */
|
|
113
|
-
runtime: PulseRuntime
|
|
114
|
-
/** Unstructured metadata (e.g., framework-specific details). */
|
|
115
|
-
meta?: any
|
|
116
|
-
/** Epoch timestamp of the last heartbeat. */
|
|
117
|
-
timestamp: number
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Definition of an alert rule for monitoring health.
|
|
122
|
-
*
|
|
123
|
-
* @public
|
|
124
|
-
* @since 3.0.0
|
|
125
|
-
*/
|
|
126
|
-
export interface AlertRule {
|
|
127
|
-
/** Unique rule ID. */
|
|
128
|
-
id: string
|
|
129
|
-
/** Human-readable name. */
|
|
130
|
-
name: string
|
|
131
|
-
/** The metric type to monitor. */
|
|
132
|
-
type: 'backlog' | 'failure' | 'worker_lost' | 'node_cpu' | 'node_ram'
|
|
133
|
-
/** The value that triggers the alert. */
|
|
134
|
-
threshold: number
|
|
135
|
-
/** Optional queue name (if applicable). */
|
|
136
|
-
queue?: string
|
|
137
|
-
/** Minutes to wait before re-triggering the alert. */
|
|
138
|
-
cooldownMinutes: number
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Configuration for alert notification channels.
|
|
143
|
-
*
|
|
144
|
-
* @public
|
|
145
|
-
* @since 3.0.0
|
|
146
|
-
*/
|
|
147
|
-
export interface AlertConfig {
|
|
148
|
-
/** Map of enabled notification channels. */
|
|
149
|
-
channels: {
|
|
150
|
-
slack?: {
|
|
151
|
-
enabled: boolean
|
|
152
|
-
webhookUrl: string
|
|
153
|
-
}
|
|
154
|
-
discord?: {
|
|
155
|
-
enabled: boolean
|
|
156
|
-
webhookUrl: string
|
|
157
|
-
}
|
|
158
|
-
email?: {
|
|
159
|
-
enabled: boolean
|
|
160
|
-
smtpHost: string
|
|
161
|
-
smtpPort: number
|
|
162
|
-
smtpUser: string
|
|
163
|
-
smtpPass: string
|
|
164
|
-
from: string
|
|
165
|
-
to: string
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Configuration for automated system maintenance.
|
|
172
|
-
*
|
|
173
|
-
* @public
|
|
174
|
-
* @since 3.0.0
|
|
175
|
-
*/
|
|
176
|
-
export interface MaintenanceConfig {
|
|
177
|
-
/** Whether to automatically delete old data. */
|
|
178
|
-
autoCleanup: boolean
|
|
179
|
-
/** Number of days to retain records. */
|
|
180
|
-
retentionDays: number
|
|
181
|
-
/** Timestamp of the last maintenance run. */
|
|
182
|
-
lastRun?: number
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Represents a historical alert event.
|
|
187
|
-
*/
|
|
188
|
-
export interface AlertEvent {
|
|
189
|
-
id?: string
|
|
190
|
-
ruleId: string
|
|
191
|
-
ruleName?: string
|
|
192
|
-
type?: string
|
|
193
|
-
severity: 'critical' | 'warning' | 'info'
|
|
194
|
-
message: string
|
|
195
|
-
timestamp: number
|
|
196
|
-
resolved?: boolean
|
|
197
|
-
resolvedAt?: number
|
|
198
|
-
}
|
package/tailwind.config.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/** @type {import('tailwindcss').Config} */
|
|
2
|
-
export default {
|
|
3
|
-
content: [
|
|
4
|
-
"./src/client/index.html",
|
|
5
|
-
"./src/client/**/*.{js,ts,jsx,tsx}",
|
|
6
|
-
],
|
|
7
|
-
theme: {
|
|
8
|
-
extend: {
|
|
9
|
-
colors: {
|
|
10
|
-
background: "hsl(var(--background))",
|
|
11
|
-
foreground: "hsl(var(--foreground))",
|
|
12
|
-
card: {
|
|
13
|
-
DEFAULT: "hsl(var(--card))",
|
|
14
|
-
foreground: "hsl(var(--card-foreground))",
|
|
15
|
-
},
|
|
16
|
-
popover: {
|
|
17
|
-
DEFAULT: "hsl(var(--popover))",
|
|
18
|
-
foreground: "hsl(var(--popover-foreground))",
|
|
19
|
-
},
|
|
20
|
-
primary: {
|
|
21
|
-
DEFAULT: "hsl(var(--primary))",
|
|
22
|
-
foreground: "hsl(var(--primary-foreground))",
|
|
23
|
-
},
|
|
24
|
-
secondary: {
|
|
25
|
-
DEFAULT: "hsl(var(--secondary))",
|
|
26
|
-
foreground: "hsl(var(--secondary-foreground))",
|
|
27
|
-
},
|
|
28
|
-
muted: {
|
|
29
|
-
DEFAULT: "hsl(var(--muted))",
|
|
30
|
-
foreground: "hsl(var(--muted-foreground))",
|
|
31
|
-
},
|
|
32
|
-
accent: {
|
|
33
|
-
DEFAULT: "hsl(var(--accent))",
|
|
34
|
-
foreground: "hsl(var(--accent-foreground))",
|
|
35
|
-
},
|
|
36
|
-
destructive: {
|
|
37
|
-
DEFAULT: "hsl(var(--destructive))",
|
|
38
|
-
foreground: "hsl(var(--destructive-foreground))",
|
|
39
|
-
},
|
|
40
|
-
border: "hsl(var(--border))",
|
|
41
|
-
input: "hsl(var(--input))",
|
|
42
|
-
ring: "hsl(var(--ring))",
|
|
43
|
-
chart: {
|
|
44
|
-
"1": "hsl(var(--chart-1))",
|
|
45
|
-
"2": "hsl(var(--chart-2))",
|
|
46
|
-
"3": "hsl(var(--chart-3))",
|
|
47
|
-
"4": "hsl(var(--chart-4))",
|
|
48
|
-
"5": "hsl(var(--chart-5))",
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
borderRadius: {
|
|
52
|
-
lg: "var(--radius)",
|
|
53
|
-
md: "calc(var(--radius) - 2px)",
|
|
54
|
-
sm: "calc(var(--radius) - 4px)",
|
|
55
|
-
},
|
|
56
|
-
keyframes: {
|
|
57
|
-
"accordion-down": {
|
|
58
|
-
from: { height: "0" },
|
|
59
|
-
to: { height: "var(--radix-accordion-content-height)" },
|
|
60
|
-
},
|
|
61
|
-
"accordion-up": {
|
|
62
|
-
from: { height: "var(--radix-accordion-content-height)" },
|
|
63
|
-
to: { height: "0" },
|
|
64
|
-
},
|
|
65
|
-
},
|
|
66
|
-
animation: {
|
|
67
|
-
"accordion-down": "accordion-down 0.2s ease-out",
|
|
68
|
-
"accordion-up": "accordion-up 0.2s ease-out",
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
plugins: [],
|
|
73
|
-
}
|
package/tsconfig.json
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "../../tsconfig.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"target": "ESNext",
|
|
5
|
-
"useDefineForClassFields": true,
|
|
6
|
-
"lib": [
|
|
7
|
-
"ESNext",
|
|
8
|
-
"DOM",
|
|
9
|
-
"DOM.Iterable"
|
|
10
|
-
],
|
|
11
|
-
"module": "ESNext",
|
|
12
|
-
"skipLibCheck": true,
|
|
13
|
-
/* Bundler mode */
|
|
14
|
-
"moduleResolution": "bundler",
|
|
15
|
-
"allowImportingTsExtensions": true,
|
|
16
|
-
"resolveJsonModule": true,
|
|
17
|
-
"isolatedModules": true,
|
|
18
|
-
"noEmit": true,
|
|
19
|
-
"jsx": "react-jsx",
|
|
20
|
-
/* Linting */
|
|
21
|
-
"strict": true,
|
|
22
|
-
"noUnusedLocals": true,
|
|
23
|
-
"noUnusedParameters": true,
|
|
24
|
-
"noFallthroughCasesInSwitch": true,
|
|
25
|
-
"types": [
|
|
26
|
-
"bun-types",
|
|
27
|
-
"vite/client"
|
|
28
|
-
]
|
|
29
|
-
},
|
|
30
|
-
"include": [
|
|
31
|
-
"src"
|
|
32
|
-
],
|
|
33
|
-
"references": [
|
|
34
|
-
{
|
|
35
|
-
"path": "./tsconfig.node.json"
|
|
36
|
-
}
|
|
37
|
-
]
|
|
38
|
-
}
|
package/tsconfig.node.json
DELETED
package/vite.config.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { resolve } from 'node:path'
|
|
2
|
-
import react from '@vitejs/plugin-react'
|
|
3
|
-
import { defineConfig } from 'vite'
|
|
4
|
-
|
|
5
|
-
// https://vitejs.dev/config/
|
|
6
|
-
export default defineConfig({
|
|
7
|
-
plugins: [react()],
|
|
8
|
-
root: 'src/client',
|
|
9
|
-
publicDir: '../../public',
|
|
10
|
-
build: {
|
|
11
|
-
outDir: '../../dist/client',
|
|
12
|
-
emptyOutDir: true,
|
|
13
|
-
},
|
|
14
|
-
resolve: {
|
|
15
|
-
alias: {
|
|
16
|
-
'@': resolve(__dirname, './src/client'),
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
server: {
|
|
20
|
-
proxy: {
|
|
21
|
-
'/api': {
|
|
22
|
-
target: 'http://localhost:3000',
|
|
23
|
-
changeOrigin: true,
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
},
|
|
27
|
-
})
|