@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.
Files changed (76) hide show
  1. package/README.md +95 -22
  2. package/README.zh-TW.md +88 -0
  3. package/dist/bin.js +54699 -39316
  4. package/dist/client/assets/index-C80c1frR.css +1 -0
  5. package/dist/client/assets/index-CrWem9u3.js +434 -0
  6. package/dist/client/index.html +2 -2
  7. package/dist/server/index.js +54699 -39316
  8. package/package.json +20 -9
  9. package/CHANGELOG.md +0 -47
  10. package/Dockerfile +0 -46
  11. package/Dockerfile.demo-worker +0 -29
  12. package/ECOSYSTEM_EXPANSION_RFC.md +0 -130
  13. package/bin/flux-console.ts +0 -2
  14. package/dist/client/assets/index-BSMp8oq_.js +0 -436
  15. package/dist/client/assets/index-BwxlHx-_.css +0 -1
  16. package/docker-compose.yml +0 -40
  17. package/docs/ALERTING_GUIDE.md +0 -71
  18. package/docs/DEPLOYMENT.md +0 -157
  19. package/docs/DOCS_INTERNAL.md +0 -73
  20. package/docs/LARAVEL_ZENITH_ROADMAP.md +0 -109
  21. package/docs/QUASAR_MASTER_PLAN.md +0 -140
  22. package/docs/QUICK_TEST_GUIDE.md +0 -72
  23. package/docs/ROADMAP.md +0 -85
  24. package/docs/integrations/LARAVEL.md +0 -207
  25. package/postcss.config.js +0 -6
  26. package/scripts/debug_redis_keys.ts +0 -24
  27. package/scripts/flood-logs.ts +0 -21
  28. package/scripts/seed.ts +0 -213
  29. package/scripts/verify-throttle.ts +0 -49
  30. package/scripts/worker.ts +0 -124
  31. package/specs/PULSE_SPEC.md +0 -86
  32. package/src/bin.ts +0 -6
  33. package/src/client/App.tsx +0 -72
  34. package/src/client/Layout.tsx +0 -672
  35. package/src/client/Sidebar.tsx +0 -112
  36. package/src/client/ThroughputChart.tsx +0 -144
  37. package/src/client/WorkerStatus.tsx +0 -226
  38. package/src/client/components/BrandIcons.tsx +0 -168
  39. package/src/client/components/ConfirmDialog.tsx +0 -126
  40. package/src/client/components/JobInspector.tsx +0 -554
  41. package/src/client/components/LogArchiveModal.tsx +0 -432
  42. package/src/client/components/NotificationBell.tsx +0 -212
  43. package/src/client/components/PageHeader.tsx +0 -47
  44. package/src/client/components/Toaster.tsx +0 -90
  45. package/src/client/components/UserProfileDropdown.tsx +0 -186
  46. package/src/client/contexts/AuthContext.tsx +0 -105
  47. package/src/client/contexts/NotificationContext.tsx +0 -128
  48. package/src/client/index.css +0 -174
  49. package/src/client/index.html +0 -12
  50. package/src/client/main.tsx +0 -15
  51. package/src/client/pages/LoginPage.tsx +0 -162
  52. package/src/client/pages/MetricsPage.tsx +0 -417
  53. package/src/client/pages/OverviewPage.tsx +0 -517
  54. package/src/client/pages/PulsePage.tsx +0 -488
  55. package/src/client/pages/QueuesPage.tsx +0 -379
  56. package/src/client/pages/SchedulesPage.tsx +0 -540
  57. package/src/client/pages/SettingsPage.tsx +0 -1020
  58. package/src/client/pages/WorkersPage.tsx +0 -394
  59. package/src/client/pages/index.ts +0 -8
  60. package/src/client/utils.ts +0 -15
  61. package/src/server/config/ServerConfigManager.ts +0 -90
  62. package/src/server/index.ts +0 -860
  63. package/src/server/middleware/auth.ts +0 -127
  64. package/src/server/services/AlertService.ts +0 -321
  65. package/src/server/services/CommandService.ts +0 -137
  66. package/src/server/services/LogStreamProcessor.ts +0 -93
  67. package/src/server/services/MaintenanceScheduler.ts +0 -78
  68. package/src/server/services/PulseService.ts +0 -91
  69. package/src/server/services/QueueMetricsCollector.ts +0 -138
  70. package/src/server/services/QueueService.ts +0 -631
  71. package/src/shared/types.ts +0 -198
  72. package/tailwind.config.js +0 -73
  73. package/tests/placeholder.test.ts +0 -7
  74. package/tsconfig.json +0 -38
  75. package/tsconfig.node.json +0 -12
  76. package/vite.config.ts +0 -27
@@ -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
- }
@@ -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
- }
@@ -1,7 +0,0 @@
1
- import { describe, expect, it } from 'bun:test'
2
-
3
- describe('zenith', () => {
4
- it('should have a test', () => {
5
- expect(true).toBe(true)
6
- })
7
- })
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
- }
@@ -1,12 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "composite": true,
4
- "skipLibCheck": true,
5
- "module": "ESNext",
6
- "moduleResolution": "bundler",
7
- "allowSyntheticDefaultImports": true
8
- },
9
- "include": [
10
- "vite.config.ts"
11
- ]
12
- }
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
- })