andarlabs 2.0.0__tar.gz

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 (36) hide show
  1. andarlabs-2.0.0/LICENSE +21 -0
  2. andarlabs-2.0.0/PKG-INFO +131 -0
  3. andarlabs-2.0.0/README.md +107 -0
  4. andarlabs-2.0.0/andarlabs.egg-info/PKG-INFO +131 -0
  5. andarlabs-2.0.0/andarlabs.egg-info/SOURCES.txt +34 -0
  6. andarlabs-2.0.0/andarlabs.egg-info/dependency_links.txt +1 -0
  7. andarlabs-2.0.0/andarlabs.egg-info/entry_points.txt +2 -0
  8. andarlabs-2.0.0/andarlabs.egg-info/requires.txt +2 -0
  9. andarlabs-2.0.0/andarlabs.egg-info/top_level.txt +3 -0
  10. andarlabs-2.0.0/core/__init__.py +0 -0
  11. andarlabs-2.0.0/core/banner.py +32 -0
  12. andarlabs-2.0.0/core/config.py +16 -0
  13. andarlabs-2.0.0/core/logging_config.py +15 -0
  14. andarlabs-2.0.0/core/menu.py +19 -0
  15. andarlabs-2.0.0/core/tools.py +47 -0
  16. andarlabs-2.0.0/core/ui.py +35 -0
  17. andarlabs-2.0.0/main.py +99 -0
  18. andarlabs-2.0.0/modules/__init__.py +0 -0
  19. andarlabs-2.0.0/modules/about.py +20 -0
  20. andarlabs-2.0.0/modules/base64_tools.py +32 -0
  21. andarlabs-2.0.0/modules/dnslookup.py +26 -0
  22. andarlabs-2.0.0/modules/export_report.py +63 -0
  23. andarlabs-2.0.0/modules/filehash.py +23 -0
  24. andarlabs-2.0.0/modules/hash_tools.py +18 -0
  25. andarlabs-2.0.0/modules/httpheaders.py +27 -0
  26. andarlabs-2.0.0/modules/network.py +63 -0
  27. andarlabs-2.0.0/modules/ping.py +33 -0
  28. andarlabs-2.0.0/modules/portcheck.py +29 -0
  29. andarlabs-2.0.0/modules/portscan_range.py +50 -0
  30. andarlabs-2.0.0/modules/sslcheck.py +59 -0
  31. andarlabs-2.0.0/modules/subnetcalc.py +35 -0
  32. andarlabs-2.0.0/modules/sysinfo.py +12 -0
  33. andarlabs-2.0.0/modules/traceroute.py +41 -0
  34. andarlabs-2.0.0/pyproject.toml +38 -0
  35. andarlabs-2.0.0/setup.cfg +4 -0
  36. andarlabs-2.0.0/tests/test_tools.py +61 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Laurensius Andar Sakaleak
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,131 @@
1
+ Metadata-Version: 2.4
2
+ Name: andarlabs
3
+ Version: 2.0.0
4
+ Summary: Cross-platform network and security CLI toolkit
5
+ Author: Laurensius Andar Sakaleak
6
+ License-Expression: MIT
7
+ Keywords: network,security,cli,dns,diagnostics
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Environment :: Console
10
+ Classifier: Intended Audience :: Education
11
+ Classifier: Intended Audience :: System Administrators
12
+ Classifier: Operating System :: Microsoft :: Windows
13
+ Classifier: Operating System :: POSIX
14
+ Classifier: Operating System :: MacOS
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Topic :: System :: Networking :: Monitoring
18
+ Requires-Python: >=3.10
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ Requires-Dist: dnspython<3,>=2.4
22
+ Requires-Dist: rich<15,>=13
23
+ Dynamic: license-file
24
+
25
+ # Andarlabs
26
+
27
+ Andarlabs adalah toolkit CLI untuk pembelajaran dan pemeriksaan dasar sistem, jaringan, serta keamanan. Gunakan hanya pada perangkat atau jaringan yang Anda miliki atau yang sudah Anda dapatkan izinnya.
28
+
29
+ ## Dukungan
30
+
31
+ - Windows
32
+ - Kali Linux
33
+ - Ubuntu
34
+ - macOS
35
+ - Python 3.10+
36
+
37
+ ## Instalasi
38
+
39
+ ```powershell
40
+ python -m venv .venv
41
+ .venv\Scripts\activate
42
+ pip install -r requirements.txt
43
+ ```
44
+
45
+ Untuk memasang sebagai command system:
46
+
47
+ ```bash
48
+ pip install andarlabs
49
+ andarlabs --version
50
+ ```
51
+
52
+ Untuk instalasi langsung dari source repository:
53
+
54
+ ```bash
55
+ pip install .
56
+ ```
57
+
58
+ Di Linux/macOS:
59
+
60
+ ```bash
61
+ python3 -m venv .venv
62
+ source .venv/bin/activate
63
+ pip install -r requirements.txt
64
+ ```
65
+
66
+ ## Menjalankan
67
+
68
+ ```bash
69
+ python main.py
70
+ ```
71
+
72
+ Setelah package dipasang, jalankan dengan:
73
+
74
+ ```bash
75
+ andarlabs
76
+ ```
77
+
78
+ Menu interaktif menyediakan informasi sistem/jaringan, DNS, ping, pemeriksaan port, HTTP headers, subnet, hashing, Base64, report, SSL/TLS, port range scan, dan traceroute.
79
+
80
+ ## Mode CLI
81
+
82
+ ```bash
83
+ python main.py --version
84
+ python main.py --dns example.com --record-type A
85
+ python main.py --hash "teks yang ingin dihitung"
86
+ python main.py --subnet 192.168.1.0/24
87
+ python main.py --report
88
+ python main.py --port-range 127.0.0.1 1 1024
89
+ python main.py --traceroute example.com
90
+ ```
91
+
92
+ Report disimpan di `exports/report.txt` dan `exports/report.json`. Error aplikasi dicatat di `logs/andarlabs.log`.
93
+
94
+ ## Pengujian
95
+
96
+ ```bash
97
+ python -m unittest discover -s tests -v
98
+ ```
99
+
100
+ ## Build dan publikasi package
101
+
102
+ Untuk membuat package:
103
+
104
+ ```bash
105
+ python -m pip install -r requirements-dev.txt
106
+ python -m build
107
+ ```
108
+
109
+ Hasil build berada di folder `dist/`. Uji dulu dengan TestPyPI atau virtual environment bersih. Setelah akun PyPI dan token sudah disiapkan:
110
+
111
+ ```bash
112
+ python -m twine check dist/*
113
+ python -m twine upload dist/*
114
+ ```
115
+
116
+ Setelah package berhasil diunggah, pengguna Linux dapat memasang Andarlabs dengan:
117
+
118
+ ```bash
119
+ python3 -m pip install andarlabs
120
+ andarlabs
121
+ ```
122
+
123
+ ## Catatan keamanan
124
+
125
+ Port scanner dan traceroute menghasilkan traffic jaringan. Jalankan hanya terhadap target yang Anda miliki atau yang secara eksplisit mengizinkan pengujian.
126
+
127
+ MD5 hanya ditampilkan untuk kompatibilitas legacy dan tidak boleh digunakan sebagai hash keamanan. Gunakan SHA-256 atau algoritma modern lain untuk kebutuhan keamanan.
128
+
129
+ ## License
130
+
131
+ Project ini dirilis di bawah [MIT License](LICENSE).
@@ -0,0 +1,107 @@
1
+ # Andarlabs
2
+
3
+ Andarlabs adalah toolkit CLI untuk pembelajaran dan pemeriksaan dasar sistem, jaringan, serta keamanan. Gunakan hanya pada perangkat atau jaringan yang Anda miliki atau yang sudah Anda dapatkan izinnya.
4
+
5
+ ## Dukungan
6
+
7
+ - Windows
8
+ - Kali Linux
9
+ - Ubuntu
10
+ - macOS
11
+ - Python 3.10+
12
+
13
+ ## Instalasi
14
+
15
+ ```powershell
16
+ python -m venv .venv
17
+ .venv\Scripts\activate
18
+ pip install -r requirements.txt
19
+ ```
20
+
21
+ Untuk memasang sebagai command system:
22
+
23
+ ```bash
24
+ pip install andarlabs
25
+ andarlabs --version
26
+ ```
27
+
28
+ Untuk instalasi langsung dari source repository:
29
+
30
+ ```bash
31
+ pip install .
32
+ ```
33
+
34
+ Di Linux/macOS:
35
+
36
+ ```bash
37
+ python3 -m venv .venv
38
+ source .venv/bin/activate
39
+ pip install -r requirements.txt
40
+ ```
41
+
42
+ ## Menjalankan
43
+
44
+ ```bash
45
+ python main.py
46
+ ```
47
+
48
+ Setelah package dipasang, jalankan dengan:
49
+
50
+ ```bash
51
+ andarlabs
52
+ ```
53
+
54
+ Menu interaktif menyediakan informasi sistem/jaringan, DNS, ping, pemeriksaan port, HTTP headers, subnet, hashing, Base64, report, SSL/TLS, port range scan, dan traceroute.
55
+
56
+ ## Mode CLI
57
+
58
+ ```bash
59
+ python main.py --version
60
+ python main.py --dns example.com --record-type A
61
+ python main.py --hash "teks yang ingin dihitung"
62
+ python main.py --subnet 192.168.1.0/24
63
+ python main.py --report
64
+ python main.py --port-range 127.0.0.1 1 1024
65
+ python main.py --traceroute example.com
66
+ ```
67
+
68
+ Report disimpan di `exports/report.txt` dan `exports/report.json`. Error aplikasi dicatat di `logs/andarlabs.log`.
69
+
70
+ ## Pengujian
71
+
72
+ ```bash
73
+ python -m unittest discover -s tests -v
74
+ ```
75
+
76
+ ## Build dan publikasi package
77
+
78
+ Untuk membuat package:
79
+
80
+ ```bash
81
+ python -m pip install -r requirements-dev.txt
82
+ python -m build
83
+ ```
84
+
85
+ Hasil build berada di folder `dist/`. Uji dulu dengan TestPyPI atau virtual environment bersih. Setelah akun PyPI dan token sudah disiapkan:
86
+
87
+ ```bash
88
+ python -m twine check dist/*
89
+ python -m twine upload dist/*
90
+ ```
91
+
92
+ Setelah package berhasil diunggah, pengguna Linux dapat memasang Andarlabs dengan:
93
+
94
+ ```bash
95
+ python3 -m pip install andarlabs
96
+ andarlabs
97
+ ```
98
+
99
+ ## Catatan keamanan
100
+
101
+ Port scanner dan traceroute menghasilkan traffic jaringan. Jalankan hanya terhadap target yang Anda miliki atau yang secara eksplisit mengizinkan pengujian.
102
+
103
+ MD5 hanya ditampilkan untuk kompatibilitas legacy dan tidak boleh digunakan sebagai hash keamanan. Gunakan SHA-256 atau algoritma modern lain untuk kebutuhan keamanan.
104
+
105
+ ## License
106
+
107
+ Project ini dirilis di bawah [MIT License](LICENSE).
@@ -0,0 +1,131 @@
1
+ Metadata-Version: 2.4
2
+ Name: andarlabs
3
+ Version: 2.0.0
4
+ Summary: Cross-platform network and security CLI toolkit
5
+ Author: Laurensius Andar Sakaleak
6
+ License-Expression: MIT
7
+ Keywords: network,security,cli,dns,diagnostics
8
+ Classifier: Development Status :: 4 - Beta
9
+ Classifier: Environment :: Console
10
+ Classifier: Intended Audience :: Education
11
+ Classifier: Intended Audience :: System Administrators
12
+ Classifier: Operating System :: Microsoft :: Windows
13
+ Classifier: Operating System :: POSIX
14
+ Classifier: Operating System :: MacOS
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3 :: Only
17
+ Classifier: Topic :: System :: Networking :: Monitoring
18
+ Requires-Python: >=3.10
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ Requires-Dist: dnspython<3,>=2.4
22
+ Requires-Dist: rich<15,>=13
23
+ Dynamic: license-file
24
+
25
+ # Andarlabs
26
+
27
+ Andarlabs adalah toolkit CLI untuk pembelajaran dan pemeriksaan dasar sistem, jaringan, serta keamanan. Gunakan hanya pada perangkat atau jaringan yang Anda miliki atau yang sudah Anda dapatkan izinnya.
28
+
29
+ ## Dukungan
30
+
31
+ - Windows
32
+ - Kali Linux
33
+ - Ubuntu
34
+ - macOS
35
+ - Python 3.10+
36
+
37
+ ## Instalasi
38
+
39
+ ```powershell
40
+ python -m venv .venv
41
+ .venv\Scripts\activate
42
+ pip install -r requirements.txt
43
+ ```
44
+
45
+ Untuk memasang sebagai command system:
46
+
47
+ ```bash
48
+ pip install andarlabs
49
+ andarlabs --version
50
+ ```
51
+
52
+ Untuk instalasi langsung dari source repository:
53
+
54
+ ```bash
55
+ pip install .
56
+ ```
57
+
58
+ Di Linux/macOS:
59
+
60
+ ```bash
61
+ python3 -m venv .venv
62
+ source .venv/bin/activate
63
+ pip install -r requirements.txt
64
+ ```
65
+
66
+ ## Menjalankan
67
+
68
+ ```bash
69
+ python main.py
70
+ ```
71
+
72
+ Setelah package dipasang, jalankan dengan:
73
+
74
+ ```bash
75
+ andarlabs
76
+ ```
77
+
78
+ Menu interaktif menyediakan informasi sistem/jaringan, DNS, ping, pemeriksaan port, HTTP headers, subnet, hashing, Base64, report, SSL/TLS, port range scan, dan traceroute.
79
+
80
+ ## Mode CLI
81
+
82
+ ```bash
83
+ python main.py --version
84
+ python main.py --dns example.com --record-type A
85
+ python main.py --hash "teks yang ingin dihitung"
86
+ python main.py --subnet 192.168.1.0/24
87
+ python main.py --report
88
+ python main.py --port-range 127.0.0.1 1 1024
89
+ python main.py --traceroute example.com
90
+ ```
91
+
92
+ Report disimpan di `exports/report.txt` dan `exports/report.json`. Error aplikasi dicatat di `logs/andarlabs.log`.
93
+
94
+ ## Pengujian
95
+
96
+ ```bash
97
+ python -m unittest discover -s tests -v
98
+ ```
99
+
100
+ ## Build dan publikasi package
101
+
102
+ Untuk membuat package:
103
+
104
+ ```bash
105
+ python -m pip install -r requirements-dev.txt
106
+ python -m build
107
+ ```
108
+
109
+ Hasil build berada di folder `dist/`. Uji dulu dengan TestPyPI atau virtual environment bersih. Setelah akun PyPI dan token sudah disiapkan:
110
+
111
+ ```bash
112
+ python -m twine check dist/*
113
+ python -m twine upload dist/*
114
+ ```
115
+
116
+ Setelah package berhasil diunggah, pengguna Linux dapat memasang Andarlabs dengan:
117
+
118
+ ```bash
119
+ python3 -m pip install andarlabs
120
+ andarlabs
121
+ ```
122
+
123
+ ## Catatan keamanan
124
+
125
+ Port scanner dan traceroute menghasilkan traffic jaringan. Jalankan hanya terhadap target yang Anda miliki atau yang secara eksplisit mengizinkan pengujian.
126
+
127
+ MD5 hanya ditampilkan untuk kompatibilitas legacy dan tidak boleh digunakan sebagai hash keamanan. Gunakan SHA-256 atau algoritma modern lain untuk kebutuhan keamanan.
128
+
129
+ ## License
130
+
131
+ Project ini dirilis di bawah [MIT License](LICENSE).
@@ -0,0 +1,34 @@
1
+ LICENSE
2
+ README.md
3
+ main.py
4
+ pyproject.toml
5
+ andarlabs.egg-info/PKG-INFO
6
+ andarlabs.egg-info/SOURCES.txt
7
+ andarlabs.egg-info/dependency_links.txt
8
+ andarlabs.egg-info/entry_points.txt
9
+ andarlabs.egg-info/requires.txt
10
+ andarlabs.egg-info/top_level.txt
11
+ core/__init__.py
12
+ core/banner.py
13
+ core/config.py
14
+ core/logging_config.py
15
+ core/menu.py
16
+ core/tools.py
17
+ core/ui.py
18
+ modules/__init__.py
19
+ modules/about.py
20
+ modules/base64_tools.py
21
+ modules/dnslookup.py
22
+ modules/export_report.py
23
+ modules/filehash.py
24
+ modules/hash_tools.py
25
+ modules/httpheaders.py
26
+ modules/network.py
27
+ modules/ping.py
28
+ modules/portcheck.py
29
+ modules/portscan_range.py
30
+ modules/sslcheck.py
31
+ modules/subnetcalc.py
32
+ modules/sysinfo.py
33
+ modules/traceroute.py
34
+ tests/test_tools.py
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ andarlabs = main:main
@@ -0,0 +1,2 @@
1
+ dnspython<3,>=2.4
2
+ rich<15,>=13
@@ -0,0 +1,3 @@
1
+ core
2
+ main
3
+ modules
File without changes
@@ -0,0 +1,32 @@
1
+ from rich.align import Align
2
+ from rich.console import Console, Group
3
+ from rich.panel import Panel
4
+ from rich.text import Text
5
+
6
+ from core.config import APP_NAME, TAGLINE, VERSION
7
+
8
+ Andarlabs = Console()
9
+
10
+ def show_banner():
11
+ title = Text(APP_NAME, style="bold bright_cyan")
12
+ subtitle = Text("CYBER SECURITY & NETWORK PLATFORM", style="bold white")
13
+ version = Text(f"v{VERSION}", style="dim cyan")
14
+ tagline = Text(TAGLINE.upper(), style="italic bright_green")
15
+
16
+ content = Group(
17
+ Align.center(title),
18
+ Align.center(subtitle),
19
+ Align.center(version),
20
+ Text(""),
21
+ Align.center(tagline),
22
+ )
23
+
24
+ Andarlabs.print(
25
+ Panel(
26
+ content,
27
+ border_style="bright_cyan",
28
+ padding=(1, 4),
29
+ title="[bold bright_green]SECURE TOOLKIT[/bold bright_green]",
30
+ subtitle="[dim]learn | build | secure[/dim]",
31
+ )
32
+ )
@@ -0,0 +1,16 @@
1
+ from pathlib import Path
2
+ import sys
3
+
4
+ APP_NAME = "ANDARLABS"
5
+ VERSION = "2.0.0"
6
+ TAGLINE = "Learn . Build . Secure"
7
+
8
+ if getattr(sys, "frozen", False):
9
+ PROJECT_ROOT = Path(sys.executable).resolve().parent
10
+ else:
11
+ PROJECT_ROOT = Path.cwd()
12
+
13
+ EXPORTS_PATH = PROJECT_ROOT / "exports"
14
+ REPORT_TXT_PATH = EXPORTS_PATH / "report.txt"
15
+ REPORT_JSON_PATH = EXPORTS_PATH / "report.json"
16
+ LOG_PATH = PROJECT_ROOT / "logs" / "andarlabs.log"
@@ -0,0 +1,15 @@
1
+ import logging
2
+ from pathlib import Path
3
+
4
+ from core.config import LOG_PATH
5
+
6
+
7
+ def configure_logging():
8
+ LOG_PATH.parent.mkdir(parents=True, exist_ok=True)
9
+ logging.basicConfig(
10
+ filename=LOG_PATH,
11
+ level=logging.INFO,
12
+ format="%(asctime)s %(levelname)s %(name)s: %(message)s",
13
+ encoding="utf-8",
14
+ )
15
+ return logging.getLogger("andarlabs")
@@ -0,0 +1,19 @@
1
+ from rich.console import Console
2
+ from rich.table import Table
3
+
4
+ from core.tools import TOOLS
5
+
6
+ Andarlabs = Console()
7
+
8
+ def show_menu():
9
+ menu = Table(title="MAIN OPERATIONS", border_style="bright_cyan", header_style="bold bright_green")
10
+ menu.add_column("Key", style="bold bright_yellow", justify="center", width=7)
11
+ menu.add_column("Operation", style="white")
12
+ menu.add_column("Group", style="dim cyan")
13
+
14
+ for tool in TOOLS:
15
+ menu.add_row(tool.key, tool.label, tool.group)
16
+
17
+ menu.add_row("0", "Exit", "SYSTEM")
18
+
19
+ Andarlabs.print(menu)
@@ -0,0 +1,47 @@
1
+ from dataclasses import dataclass
2
+ from typing import Callable
3
+
4
+ from modules.about import about_Andarlabs
5
+ from modules.base64_tools import base64_tool
6
+ from modules.dnslookup import dns_lookup
7
+ from modules.export_report import export_report
8
+ from modules.filehash import file_hash
9
+ from modules.hash_tools import hash_generator
10
+ from modules.httpheaders import http_header_checker
11
+ from modules.network import network_info
12
+ from modules.ping import ping_host
13
+ from modules.portcheck import port_checker
14
+ from modules.portscan_range import port_range_scanner
15
+ from modules.sslcheck import ssl_checker
16
+ from modules.subnetcalc import subnet_calculator
17
+ from modules.sysinfo import system_info
18
+ from modules.traceroute import traceroute_host
19
+
20
+
21
+ @dataclass(frozen=True)
22
+ class Tool:
23
+ key: str
24
+ label: str
25
+ group: str
26
+ handler: Callable
27
+
28
+
29
+ TOOLS = (
30
+ Tool("1", "System Information", "DISCOVERY", system_info),
31
+ Tool("2", "Network Information", "DISCOVERY", network_info),
32
+ Tool("3", "DNS Lookup", "NETWORK", dns_lookup),
33
+ Tool("4", "Ping Host", "NETWORK", ping_host),
34
+ Tool("5", "Port Checker", "NETWORK", port_checker),
35
+ Tool("6", "Port Range Scanner", "NETWORK", port_range_scanner),
36
+ Tool("7", "Traceroute", "NETWORK", traceroute_host),
37
+ Tool("8", "HTTP Header Checker", "NETWORK", http_header_checker),
38
+ Tool("9", "Subnet Calculator", "NETWORK", subnet_calculator),
39
+ Tool("10", "Hash Generator", "SECURITY", hash_generator),
40
+ Tool("11", "File Hash Checker", "SECURITY", file_hash),
41
+ Tool("12", "Base64 Encoder / Decoder", "SECURITY", base64_tool),
42
+ Tool("13", "SSL/TLS Checker", "WEB SECURITY", ssl_checker),
43
+ Tool("14", "Export Report TXT", "REPORTS", export_report),
44
+ Tool("15", "About Andarlabs", "SYSTEM", about_Andarlabs),
45
+ )
46
+
47
+ TOOL_HANDLERS = {tool.key: tool.handler for tool in TOOLS}
@@ -0,0 +1,35 @@
1
+ import os
2
+
3
+ from rich.console import Console
4
+ from rich.panel import Panel
5
+ from rich.table import Table
6
+ from rich.text import Text
7
+
8
+ console = Console()
9
+
10
+
11
+ def clear_screen():
12
+ os.system("cls" if os.name == "nt" else "clear")
13
+
14
+
15
+ def show_section(title, subtitle=None, color="bright_cyan"):
16
+ heading = Text(title.upper(), style=f"bold {color}")
17
+ if subtitle:
18
+ console.print(Panel(heading, subtitle=subtitle, border_style=color, padding=(0, 2)))
19
+ else:
20
+ console.print(Panel(heading, border_style=color, padding=(0, 2)))
21
+
22
+
23
+ def show_status(label, value, color="bright_white"):
24
+ console.print(f"[bold bright_cyan]{label:<14}[/bold bright_cyan] [{color}]{value}[/{color}]")
25
+
26
+
27
+ def pause():
28
+ console.input("\n[dim]Tekan Enter untuk kembali ke menu...[/dim]")
29
+
30
+
31
+ def make_table(title, columns):
32
+ table = Table(title=title, border_style="bright_cyan", header_style="bold bright_green")
33
+ table.add_column("Property", style="bright_cyan", no_wrap=True)
34
+ table.add_column("Value", style="white")
35
+ return table