konduktor-nightly 0.1.0.dev20251128104812__py3-none-any.whl

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 (107) hide show
  1. konduktor/__init__.py +49 -0
  2. konduktor/adaptors/__init__.py +0 -0
  3. konduktor/adaptors/aws.py +221 -0
  4. konduktor/adaptors/common.py +118 -0
  5. konduktor/adaptors/gcp.py +126 -0
  6. konduktor/authentication.py +124 -0
  7. konduktor/backends/__init__.py +6 -0
  8. konduktor/backends/backend.py +86 -0
  9. konduktor/backends/constants.py +21 -0
  10. konduktor/backends/deployment.py +204 -0
  11. konduktor/backends/deployment_utils.py +1351 -0
  12. konduktor/backends/jobset.py +225 -0
  13. konduktor/backends/jobset_utils.py +726 -0
  14. konduktor/backends/pod_utils.py +501 -0
  15. konduktor/check.py +184 -0
  16. konduktor/cli.py +1945 -0
  17. konduktor/config.py +420 -0
  18. konduktor/constants.py +36 -0
  19. konduktor/controller/__init__.py +0 -0
  20. konduktor/controller/constants.py +56 -0
  21. konduktor/controller/launch.py +44 -0
  22. konduktor/controller/node.py +116 -0
  23. konduktor/controller/parse.py +111 -0
  24. konduktor/dashboard/README.md +30 -0
  25. konduktor/dashboard/backend/main.py +169 -0
  26. konduktor/dashboard/backend/sockets.py +154 -0
  27. konduktor/dashboard/frontend/.eslintrc.json +3 -0
  28. konduktor/dashboard/frontend/.gitignore +36 -0
  29. konduktor/dashboard/frontend/app/api/jobs/route.js +71 -0
  30. konduktor/dashboard/frontend/app/api/namespaces/route.js +69 -0
  31. konduktor/dashboard/frontend/app/components/Grafana.jsx +66 -0
  32. konduktor/dashboard/frontend/app/components/JobsData.jsx +197 -0
  33. konduktor/dashboard/frontend/app/components/LogsData.jsx +139 -0
  34. konduktor/dashboard/frontend/app/components/NavMenu.jsx +39 -0
  35. konduktor/dashboard/frontend/app/components/NavTabs.jsx +73 -0
  36. konduktor/dashboard/frontend/app/components/NavTabs2.jsx +30 -0
  37. konduktor/dashboard/frontend/app/components/SelectBtn.jsx +27 -0
  38. konduktor/dashboard/frontend/app/components/lib/utils.js +6 -0
  39. konduktor/dashboard/frontend/app/components/ui/chip-select.jsx +78 -0
  40. konduktor/dashboard/frontend/app/components/ui/input.jsx +19 -0
  41. konduktor/dashboard/frontend/app/components/ui/navigation-menu.jsx +104 -0
  42. konduktor/dashboard/frontend/app/components/ui/select.jsx +120 -0
  43. konduktor/dashboard/frontend/app/favicon.ico +0 -0
  44. konduktor/dashboard/frontend/app/globals.css +120 -0
  45. konduktor/dashboard/frontend/app/jobs/page.js +10 -0
  46. konduktor/dashboard/frontend/app/layout.js +22 -0
  47. konduktor/dashboard/frontend/app/logs/page.js +11 -0
  48. konduktor/dashboard/frontend/app/page.js +12 -0
  49. konduktor/dashboard/frontend/jsconfig.json +7 -0
  50. konduktor/dashboard/frontend/next.config.mjs +4 -0
  51. konduktor/dashboard/frontend/package-lock.json +6687 -0
  52. konduktor/dashboard/frontend/package.json +37 -0
  53. konduktor/dashboard/frontend/postcss.config.mjs +8 -0
  54. konduktor/dashboard/frontend/server.js +64 -0
  55. konduktor/dashboard/frontend/tailwind.config.js +17 -0
  56. konduktor/data/__init__.py +9 -0
  57. konduktor/data/aws/__init__.py +15 -0
  58. konduktor/data/aws/s3.py +1138 -0
  59. konduktor/data/constants.py +7 -0
  60. konduktor/data/data_utils.py +268 -0
  61. konduktor/data/gcp/__init__.py +19 -0
  62. konduktor/data/gcp/constants.py +42 -0
  63. konduktor/data/gcp/gcs.py +994 -0
  64. konduktor/data/gcp/utils.py +9 -0
  65. konduktor/data/registry.py +19 -0
  66. konduktor/data/storage.py +812 -0
  67. konduktor/data/storage_utils.py +535 -0
  68. konduktor/execution.py +447 -0
  69. konduktor/kube_client.py +237 -0
  70. konduktor/logging.py +111 -0
  71. konduktor/manifests/aibrix-setup.yaml +430 -0
  72. konduktor/manifests/apoxy-setup.yaml +184 -0
  73. konduktor/manifests/apoxy-setup2.yaml +98 -0
  74. konduktor/manifests/controller_deployment.yaml +69 -0
  75. konduktor/manifests/dashboard_deployment.yaml +131 -0
  76. konduktor/manifests/dmesg_daemonset.yaml +57 -0
  77. konduktor/manifests/pod_cleanup_controller.yaml +129 -0
  78. konduktor/resource.py +546 -0
  79. konduktor/serving.py +153 -0
  80. konduktor/task.py +949 -0
  81. konduktor/templates/deployment.yaml.j2 +191 -0
  82. konduktor/templates/jobset.yaml.j2 +43 -0
  83. konduktor/templates/pod.yaml.j2 +563 -0
  84. konduktor/usage/__init__.py +0 -0
  85. konduktor/usage/constants.py +21 -0
  86. konduktor/utils/__init__.py +0 -0
  87. konduktor/utils/accelerator_registry.py +17 -0
  88. konduktor/utils/annotations.py +62 -0
  89. konduktor/utils/base64_utils.py +95 -0
  90. konduktor/utils/common_utils.py +426 -0
  91. konduktor/utils/constants.py +5 -0
  92. konduktor/utils/env_options.py +55 -0
  93. konduktor/utils/exceptions.py +234 -0
  94. konduktor/utils/kubernetes_enums.py +8 -0
  95. konduktor/utils/kubernetes_utils.py +763 -0
  96. konduktor/utils/log_utils.py +467 -0
  97. konduktor/utils/loki_utils.py +102 -0
  98. konduktor/utils/rich_utils.py +123 -0
  99. konduktor/utils/schemas.py +625 -0
  100. konduktor/utils/subprocess_utils.py +273 -0
  101. konduktor/utils/ux_utils.py +247 -0
  102. konduktor/utils/validator.py +461 -0
  103. konduktor_nightly-0.1.0.dev20251128104812.dist-info/LICENSE +91 -0
  104. konduktor_nightly-0.1.0.dev20251128104812.dist-info/METADATA +98 -0
  105. konduktor_nightly-0.1.0.dev20251128104812.dist-info/RECORD +107 -0
  106. konduktor_nightly-0.1.0.dev20251128104812.dist-info/WHEEL +4 -0
  107. konduktor_nightly-0.1.0.dev20251128104812.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,104 @@
1
+ import * as React from "react"
2
+ import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"
3
+ import { cva } from "class-variance-authority"
4
+ import { ChevronDown } from "lucide-react"
5
+
6
+ import { cn } from "../lib/utils"
7
+
8
+ const NavigationMenu = React.forwardRef(({ className, children, ...props }, ref) => (
9
+ <NavigationMenuPrimitive.Root
10
+ ref={ref}
11
+ className={cn(
12
+ "relative z-10 flex max-w-max flex-1 items-center justify-center",
13
+ className
14
+ )}
15
+ {...props}>
16
+ {children}
17
+ <NavigationMenuViewport />
18
+ </NavigationMenuPrimitive.Root>
19
+ ))
20
+ NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName
21
+
22
+ const NavigationMenuList = React.forwardRef(({ className, ...props }, ref) => (
23
+ <NavigationMenuPrimitive.List
24
+ ref={ref}
25
+ className={cn(
26
+ "group flex flex-1 list-none items-center justify-center space-x-1",
27
+ className
28
+ )}
29
+ {...props} />
30
+ ))
31
+ NavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName
32
+
33
+ const NavigationMenuItem = NavigationMenuPrimitive.Item
34
+
35
+ const navigationMenuTriggerStyle = cva(
36
+ "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
37
+ )
38
+
39
+ const NavigationMenuTrigger = React.forwardRef(({ className, children, ...props }, ref) => (
40
+ <NavigationMenuPrimitive.Trigger
41
+ ref={ref}
42
+ className={cn(navigationMenuTriggerStyle(), "group", className)}
43
+ {...props}>
44
+ {children}{" "}
45
+ <ChevronDown
46
+ className="relative top-[1px] ml-1 h-3 w-3 transition duration-200 group-data-[state=open]:rotate-180"
47
+ aria-hidden="true" />
48
+ </NavigationMenuPrimitive.Trigger>
49
+ ))
50
+ NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName
51
+
52
+ const NavigationMenuContent = React.forwardRef(({ className, ...props }, ref) => (
53
+ <NavigationMenuPrimitive.Content
54
+ ref={ref}
55
+ className={cn(
56
+ "left-0 top-0 w-full data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 md:absolute md:w-auto ",
57
+ className
58
+ )}
59
+ {...props} />
60
+ ))
61
+ NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName
62
+
63
+ const NavigationMenuLink = NavigationMenuPrimitive.Link
64
+
65
+ const NavigationMenuViewport = React.forwardRef(({ className, ...props }, ref) => (
66
+ <div className={cn("absolute left-0 top-full flex justify-center")}>
67
+ <NavigationMenuPrimitive.Viewport
68
+ className={cn(
69
+ "origin-top-center relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 md:w-[var(--radix-navigation-menu-viewport-width)]",
70
+ className
71
+ )}
72
+ ref={ref}
73
+ {...props} />
74
+ </div>
75
+ ))
76
+ NavigationMenuViewport.displayName =
77
+ NavigationMenuPrimitive.Viewport.displayName
78
+
79
+ const NavigationMenuIndicator = React.forwardRef(({ className, ...props }, ref) => (
80
+ <NavigationMenuPrimitive.Indicator
81
+ ref={ref}
82
+ className={cn(
83
+ "top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in",
84
+ className
85
+ )}
86
+ {...props}>
87
+ <div
88
+ className="relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" />
89
+ </NavigationMenuPrimitive.Indicator>
90
+ ))
91
+ NavigationMenuIndicator.displayName =
92
+ NavigationMenuPrimitive.Indicator.displayName
93
+
94
+ export {
95
+ navigationMenuTriggerStyle,
96
+ NavigationMenu,
97
+ NavigationMenuList,
98
+ NavigationMenuItem,
99
+ NavigationMenuContent,
100
+ NavigationMenuTrigger,
101
+ NavigationMenuLink,
102
+ NavigationMenuIndicator,
103
+ NavigationMenuViewport,
104
+ }
@@ -0,0 +1,120 @@
1
+ import * as React from "react"
2
+ import * as SelectPrimitive from "@radix-ui/react-select"
3
+ import { Check, ChevronDown, ChevronUp } from "lucide-react"
4
+
5
+ import { cn } from "../lib/utils"
6
+
7
+ const Select = SelectPrimitive.Root
8
+
9
+ const SelectGroup = SelectPrimitive.Group
10
+
11
+ const SelectValue = SelectPrimitive.Value
12
+
13
+ const SelectTrigger = React.forwardRef(({ className, children, ...props }, ref) => (
14
+ <SelectPrimitive.Trigger
15
+ ref={ref}
16
+ className={cn(
17
+ "flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1",
18
+ className
19
+ )}
20
+ {...props}>
21
+ {children}
22
+ <SelectPrimitive.Icon asChild>
23
+ <ChevronDown className="h-4 w-4 opacity-50" />
24
+ </SelectPrimitive.Icon>
25
+ </SelectPrimitive.Trigger>
26
+ ))
27
+ SelectTrigger.displayName = SelectPrimitive.Trigger.displayName
28
+
29
+ const SelectScrollUpButton = React.forwardRef(({ className, ...props }, ref) => (
30
+ <SelectPrimitive.ScrollUpButton
31
+ ref={ref}
32
+ className={cn("flex cursor-default items-center justify-center py-1", className)}
33
+ {...props}>
34
+ <ChevronUp className="h-4 w-4" />
35
+ </SelectPrimitive.ScrollUpButton>
36
+ ))
37
+ SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName
38
+
39
+ const SelectScrollDownButton = React.forwardRef(({ className, ...props }, ref) => (
40
+ <SelectPrimitive.ScrollDownButton
41
+ ref={ref}
42
+ className={cn("flex cursor-default items-center justify-center py-1", className)}
43
+ {...props}>
44
+ <ChevronDown className="h-4 w-4" />
45
+ </SelectPrimitive.ScrollDownButton>
46
+ ))
47
+ SelectScrollDownButton.displayName =
48
+ SelectPrimitive.ScrollDownButton.displayName
49
+
50
+ const SelectContent = React.forwardRef(({ className, children, position = "popper", ...props }, ref) => (
51
+ <SelectPrimitive.Portal>
52
+ <SelectPrimitive.Content
53
+ ref={ref}
54
+ className={cn(
55
+ "relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",
56
+ position === "popper" &&
57
+ "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
58
+ className
59
+ )}
60
+ position={position}
61
+ {...props}>
62
+ <SelectScrollUpButton />
63
+ <SelectPrimitive.Viewport
64
+ className={cn("p-1", position === "popper" &&
65
+ "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]")}>
66
+ {children}
67
+ </SelectPrimitive.Viewport>
68
+ <SelectScrollDownButton />
69
+ </SelectPrimitive.Content>
70
+ </SelectPrimitive.Portal>
71
+ ))
72
+ SelectContent.displayName = SelectPrimitive.Content.displayName
73
+
74
+ const SelectLabel = React.forwardRef(({ className, ...props }, ref) => (
75
+ <SelectPrimitive.Label
76
+ ref={ref}
77
+ className={cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className)}
78
+ {...props} />
79
+ ))
80
+ SelectLabel.displayName = SelectPrimitive.Label.displayName
81
+
82
+ const SelectItem = React.forwardRef(({ className, children, ...props }, ref) => (
83
+ <SelectPrimitive.Item
84
+ ref={ref}
85
+ className={cn(
86
+ "relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
87
+ className
88
+ )}
89
+ {...props}>
90
+ <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
91
+ <SelectPrimitive.ItemIndicator>
92
+ <Check className="h-4 w-4" />
93
+ </SelectPrimitive.ItemIndicator>
94
+ </span>
95
+
96
+ <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
97
+ </SelectPrimitive.Item>
98
+ ))
99
+ SelectItem.displayName = SelectPrimitive.Item.displayName
100
+
101
+ const SelectSeparator = React.forwardRef(({ className, ...props }, ref) => (
102
+ <SelectPrimitive.Separator
103
+ ref={ref}
104
+ className={cn("-mx-1 my-1 h-px bg-muted", className)}
105
+ {...props} />
106
+ ))
107
+ SelectSeparator.displayName = SelectPrimitive.Separator.displayName
108
+
109
+ export {
110
+ Select,
111
+ SelectGroup,
112
+ SelectValue,
113
+ SelectTrigger,
114
+ SelectContent,
115
+ SelectLabel,
116
+ SelectItem,
117
+ SelectSeparator,
118
+ SelectScrollUpButton,
119
+ SelectScrollDownButton,
120
+ }
@@ -0,0 +1,120 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&display=swap');
2
+
3
+ @tailwind base;
4
+ @tailwind components;
5
+ @tailwind utilities;
6
+
7
+
8
+ @layer base {
9
+ :root {
10
+ --background: 0 0% 100%;
11
+ --foreground: 222.2 84% 4.9%;
12
+ --card: 0 0% 100%;
13
+ --card-foreground: 222.2 84% 4.9%;
14
+ --popover: 0 0% 100%;
15
+ --popover-foreground: 222.2 84% 4.9%;
16
+ --primary: 222.2 47.4% 11.2%;
17
+ --primary-foreground: 210 40% 98%;
18
+ --secondary: 210 40% 96.1%;
19
+ --secondary-foreground: 222.2 47.4% 11.2%;
20
+ --muted: 210 40% 96.1%;
21
+ --muted-foreground: 215.4 16.3% 46.9%;
22
+ --accent: 210 40% 96.1%;
23
+ --accent-foreground: 222.2 47.4% 11.2%;
24
+ --destructive: 0 84.2% 60.2%;
25
+ --destructive-foreground: 210 40% 98%;
26
+ --border: 214.3 31.8% 91.4%;
27
+ --input: 214.3 31.8% 91.4%;
28
+ --ring: 222.2 84% 4.9%;
29
+ --radius: 0.5rem;
30
+ --chart-1: 12 76% 61%;
31
+ --chart-2: 173 58% 39%;
32
+ --chart-3: 197 37% 24%;
33
+ --chart-4: 43 74% 66%;
34
+ --chart-5: 27 87% 67%;
35
+ }
36
+
37
+ .dark {
38
+ --background: 222.2 84% 4.9%;
39
+ --foreground: 210 40% 98%;
40
+ --card: 222.2 84% 4.9%;
41
+ --card-foreground: 210 40% 98%;
42
+ --popover: 222.2 84% 4.9%;
43
+ --popover-foreground: 210 40% 98%;
44
+ --primary: 210 40% 98%;
45
+ --primary-foreground: 222.2 47.4% 11.2%;
46
+ --secondary: 217.2 32.6% 17.5%;
47
+ --secondary-foreground: 210 40% 98%;
48
+ --muted: 217.2 32.6% 17.5%;
49
+ --muted-foreground: 215 20.2% 65.1%;
50
+ --accent: 217.2 32.6% 17.5%;
51
+ --accent-foreground: 210 40% 98%;
52
+ --destructive: 0 62.8% 30.6%;
53
+ --destructive-foreground: 210 40% 98%;
54
+ --border: 217.2 32.6% 17.5%;
55
+ --input: 217.2 32.6% 17.5%;
56
+ --ring: 212.7 26.8% 83.9%;
57
+ --chart-1: 220 70% 50%;
58
+ --chart-2: 160 60% 45%;
59
+ --chart-3: 30 80% 55%;
60
+ --chart-4: 280 65% 60%;
61
+ --chart-5: 340 75% 55%;
62
+ }
63
+ }
64
+
65
+
66
+ a {
67
+ font-weight: 500;
68
+ color: #646cff;
69
+ text-decoration: inherit;
70
+ }
71
+ a:hover {
72
+ color: #535bf2;
73
+ }
74
+
75
+ body {
76
+ margin: 0;
77
+ display: flex;
78
+ place-items: center;
79
+ min-width: 320px;
80
+ min-height: 100vh;
81
+ }
82
+
83
+ h1 {
84
+ font-size: 3.2em;
85
+ line-height: 1.1;
86
+ }
87
+
88
+ button {
89
+ border-radius: 8px;
90
+ border: 1px solid transparent;
91
+ padding: 0.6em 1.2em;
92
+ font-size: 1em;
93
+ font-weight: 500;
94
+ font-family: inherit;
95
+ background-color: #1a1a1a;
96
+ cursor: pointer;
97
+ transition: border-color 0.25s;
98
+ color: white;
99
+ }
100
+ button:hover {
101
+ border-color: #646cff;
102
+ }
103
+ button:focus,
104
+ button:focus-visible {
105
+ outline: 4px auto -webkit-focus-ring-color;
106
+ }
107
+
108
+ @media (prefers-color-scheme: light) {
109
+ :root {
110
+ color: #213547;
111
+ background-color: #ffffff;
112
+ }
113
+ a:hover {
114
+ color: #747bff;
115
+ }
116
+ button {
117
+ background-color: #f9f9f9;
118
+ }
119
+ }
120
+
@@ -0,0 +1,10 @@
1
+ import JobsData from "../components/JobsData";
2
+
3
+ export default function Jobs() {
4
+
5
+ return (
6
+ <div className='flex w-screen h-screen p-2 flex-col'>
7
+ <JobsData />
8
+ </div>
9
+ );
10
+ }
@@ -0,0 +1,22 @@
1
+ import "./globals.css";
2
+ import NavTabs from './components/NavTabs';
3
+
4
+ export const metadata = {
5
+ title: "Konduktor Dashboard",
6
+ description: "Konduktor Dashboard V1",
7
+ };
8
+
9
+ export default function RootLayout({ children }) {
10
+ return (
11
+ <html lang="en">
12
+ <body>
13
+ <div className="flex-col">
14
+ <NavTabs />
15
+ <div>
16
+ {children}
17
+ </div>
18
+ </div>
19
+ </body>
20
+ </html>
21
+ );
22
+ }
@@ -0,0 +1,11 @@
1
+ import LogsData from "../components/LogsData";
2
+ import "../globals.css";
3
+
4
+ export default function Logs() {
5
+
6
+ return (
7
+ <div className='flex w-screen h-screen p-2 flex-col'>
8
+ <LogsData />
9
+ </div>
10
+ );
11
+ }
@@ -0,0 +1,12 @@
1
+ import "./globals.css";
2
+
3
+ import Grafana from "./components/Grafana";
4
+
5
+ export default function Home() {
6
+
7
+ return (
8
+ <div className='flex w-screen h-screen p-2 flex-col'>
9
+ <Grafana />
10
+ </div>
11
+ );
12
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "compilerOptions": {
3
+ "paths": {
4
+ "@/*": ["./*"]
5
+ }
6
+ }
7
+ }
@@ -0,0 +1,4 @@
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {};
3
+
4
+ export default nextConfig;