yncli 1.0.0__tar.gz → 1.0.2__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.
- yncli-1.0.2/PKG-INFO +118 -0
- yncli-1.0.2/README.md +103 -0
- {yncli-1.0.0 → yncli-1.0.2}/pyproject.toml +3 -4
- {yncli-1.0.0 → yncli-1.0.2}/setup.py +3 -4
- yncli-1.0.2/yncli/tools/search_tools.py +127 -0
- yncli-1.0.2/yncli.egg-info/PKG-INFO +118 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli.egg-info/requires.txt +1 -2
- yncli-1.0.0/PKG-INFO +0 -63
- yncli-1.0.0/README.md +0 -47
- yncli-1.0.0/yncli/tools/search_tools.py +0 -68
- yncli-1.0.0/yncli.egg-info/PKG-INFO +0 -63
- {yncli-1.0.0 → yncli-1.0.2}/setup.cfg +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/__init__.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/agent.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/architect.md +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/code_review.md +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/debug_oracle.md +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/debugger.md +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/polyglot.md +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/refactor_master.md +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/security_auditor.md +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/system_architect.md +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/test_runner.md +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/ultrabrain.md +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/clean_text.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/client.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/config.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/language_detector.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/main.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/skills_manager.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/system_prompt.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/tools/__init__.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/tools/file_tools.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/tools/polyglot_tools.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/tools/system_tools.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/tui.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/workspace_memory.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli/workspace_scanner.py +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli.egg-info/SOURCES.txt +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli.egg-info/dependency_links.txt +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli.egg-info/entry_points.txt +0 -0
- {yncli-1.0.0 → yncli-1.0.2}/yncli.egg-info/top_level.txt +0 -0
yncli-1.0.2/PKG-INFO
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: yncli
|
|
3
|
+
Version: 1.0.2
|
|
4
|
+
Summary: Autonomous Polyglot AI Coding Agent & TUI
|
|
5
|
+
Author: Yanzyuyu
|
|
6
|
+
Requires-Python: >=3.8
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Requires-Dist: rich>=13.7.0
|
|
9
|
+
Requires-Dist: prompt_toolkit>=3.0.40
|
|
10
|
+
Requires-Dist: requests>=2.31.0
|
|
11
|
+
Requires-Dist: pygments>=2.17.0
|
|
12
|
+
Requires-Dist: beautifulsoup4>=4.12.0
|
|
13
|
+
Dynamic: author
|
|
14
|
+
Dynamic: requires-python
|
|
15
|
+
|
|
16
|
+
# yncli
|
|
17
|
+
|
|
18
|
+
> AI coding agent untuk terminal. Langsung paham struktur workspace Anda, merancang rencana di `plan.md`, dan mengeksekusi kode tanpa basa-basi.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## ⚡ Cara Pasang & Jalankan
|
|
23
|
+
|
|
24
|
+
### Lewat NPX / NPM (Node.js)
|
|
25
|
+
```bash
|
|
26
|
+
# Langsung jalankan tanpa instalasi:
|
|
27
|
+
npx @yanzyuyu/yncli
|
|
28
|
+
|
|
29
|
+
# Atau pasang secara global:
|
|
30
|
+
npm install -g @yanzyuyu/yncli
|
|
31
|
+
yncli
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Lewat Pip / Pipx (Python)
|
|
35
|
+
```bash
|
|
36
|
+
# Pasang via pip:
|
|
37
|
+
pip install yncli
|
|
38
|
+
yncli
|
|
39
|
+
|
|
40
|
+
# Atau jalankan via pipx:
|
|
41
|
+
pipx run yncli
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Script Pasang Otomatis (PowerShell / Shell)
|
|
45
|
+
- **Windows (PowerShell)**:
|
|
46
|
+
```powershell
|
|
47
|
+
irm https://raw.githubusercontent.com/yanzyuyu/yncli/main/install.ps1 | iex
|
|
48
|
+
```
|
|
49
|
+
- **macOS / Linux**:
|
|
50
|
+
```bash
|
|
51
|
+
curl -fsSL https://raw.githubusercontent.com/yanzyuyu/yncli/main/install.sh | bash
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 💡 Kenapa Pakai yncli?
|
|
57
|
+
|
|
58
|
+
1. **Langsung Paham Isi Folder**
|
|
59
|
+
Begitu dibuka di direktori proyek, `yncli` otomatis membaca file kode ke memori aktif. Anda tidak perlu repot copy-paste isi file manual.
|
|
60
|
+
|
|
61
|
+
2. **Perencanaan Jelas (`plan.md`)**
|
|
62
|
+
Di **Plan Mode**, AI menganalisis sistem, menggambar rancangan ASCII, dan menulis dokumen PRD ke `plan.md` sebelum menyentuh kode produksi.
|
|
63
|
+
|
|
64
|
+
3. **Eksekusi Mandiri di Build Mode**
|
|
65
|
+
Di **Build Mode**, AI langsung memodifikasi file, membuat komponen baru, dan memvalidasi sintaks (JS/TS, Python, Rust, Go, PHP, dll.) secara mandiri.
|
|
66
|
+
|
|
67
|
+
4. **Tampilan Bersih Satu Baris**
|
|
68
|
+
Status eksekusi diperbarui di baris yang sama tanpa membanjiri layar terminal Anda dengan ratusan baris log yang tidak perlu.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 🛠️ Contoh Penggunaan
|
|
73
|
+
|
|
74
|
+
### 1. Buka Konsol Interaktif
|
|
75
|
+
Cukup buka terminal di folder proyek Anda:
|
|
76
|
+
```bash
|
|
77
|
+
yncli
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 2. Kirim Instruksi Cepat Sekali Ketik
|
|
81
|
+
```bash
|
|
82
|
+
yncli "buatkan REST API FastAPI dengan autentikasi JWT dan SQLite"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 3. Opsi Tambahan
|
|
86
|
+
```bash
|
|
87
|
+
# Ganti model AI:
|
|
88
|
+
yncli -m ag/claude-sonnet-4-6
|
|
89
|
+
|
|
90
|
+
# Mulai langsung di Plan Mode:
|
|
91
|
+
yncli --mode plan
|
|
92
|
+
|
|
93
|
+
# Aktifkan spesialisasi tertentu:
|
|
94
|
+
yncli -s architect
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## ⌨️ Perintah di Dalam Konsol (Slash Commands)
|
|
100
|
+
|
|
101
|
+
| Perintah | Deskripsi |
|
|
102
|
+
| :--- | :--- |
|
|
103
|
+
| `/model` | Buka menu pop-up interaktif untuk memilih model AI (bisa diklik) |
|
|
104
|
+
| `/plan` | Masuk ke Plan Mode (Riset arsitektur & susun `plan.md`) |
|
|
105
|
+
| `/build` | Masuk ke Build Mode (Eksekusi pembuatan & modifikasi kode) |
|
|
106
|
+
| `/ask` | Masuk ke Ask Mode (Konsultasi murni tanpa edit file) |
|
|
107
|
+
| `/cd <folder>` | Pindah folder kerja aktif & muat ulang memori file |
|
|
108
|
+
| `/approval` | Atur apakah tool dijalankan otomatis atau konfirmasi manual |
|
|
109
|
+
| `/thinking` | Tampilkan atau sembunyikan proses penalaran AI |
|
|
110
|
+
| `/skill <nama>` | Ganti persona (ultrabrain, architect, debugger, dll) |
|
|
111
|
+
| `/clear` | Bersihkan riwayat chat dan segarkan memori proyek |
|
|
112
|
+
| `/save` | Simpan riwayat percakapan ke file Markdown |
|
|
113
|
+
| `/exit` | Keluar dari yncli |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 📄 Lisensi
|
|
118
|
+
[MIT License](LICENSE) © 2026 Yanzyuyu.
|
yncli-1.0.2/README.md
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# yncli
|
|
2
|
+
|
|
3
|
+
> AI coding agent untuk terminal. Langsung paham struktur workspace Anda, merancang rencana di `plan.md`, dan mengeksekusi kode tanpa basa-basi.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## ⚡ Cara Pasang & Jalankan
|
|
8
|
+
|
|
9
|
+
### Lewat NPX / NPM (Node.js)
|
|
10
|
+
```bash
|
|
11
|
+
# Langsung jalankan tanpa instalasi:
|
|
12
|
+
npx @yanzyuyu/yncli
|
|
13
|
+
|
|
14
|
+
# Atau pasang secara global:
|
|
15
|
+
npm install -g @yanzyuyu/yncli
|
|
16
|
+
yncli
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Lewat Pip / Pipx (Python)
|
|
20
|
+
```bash
|
|
21
|
+
# Pasang via pip:
|
|
22
|
+
pip install yncli
|
|
23
|
+
yncli
|
|
24
|
+
|
|
25
|
+
# Atau jalankan via pipx:
|
|
26
|
+
pipx run yncli
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Script Pasang Otomatis (PowerShell / Shell)
|
|
30
|
+
- **Windows (PowerShell)**:
|
|
31
|
+
```powershell
|
|
32
|
+
irm https://raw.githubusercontent.com/yanzyuyu/yncli/main/install.ps1 | iex
|
|
33
|
+
```
|
|
34
|
+
- **macOS / Linux**:
|
|
35
|
+
```bash
|
|
36
|
+
curl -fsSL https://raw.githubusercontent.com/yanzyuyu/yncli/main/install.sh | bash
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 💡 Kenapa Pakai yncli?
|
|
42
|
+
|
|
43
|
+
1. **Langsung Paham Isi Folder**
|
|
44
|
+
Begitu dibuka di direktori proyek, `yncli` otomatis membaca file kode ke memori aktif. Anda tidak perlu repot copy-paste isi file manual.
|
|
45
|
+
|
|
46
|
+
2. **Perencanaan Jelas (`plan.md`)**
|
|
47
|
+
Di **Plan Mode**, AI menganalisis sistem, menggambar rancangan ASCII, dan menulis dokumen PRD ke `plan.md` sebelum menyentuh kode produksi.
|
|
48
|
+
|
|
49
|
+
3. **Eksekusi Mandiri di Build Mode**
|
|
50
|
+
Di **Build Mode**, AI langsung memodifikasi file, membuat komponen baru, dan memvalidasi sintaks (JS/TS, Python, Rust, Go, PHP, dll.) secara mandiri.
|
|
51
|
+
|
|
52
|
+
4. **Tampilan Bersih Satu Baris**
|
|
53
|
+
Status eksekusi diperbarui di baris yang sama tanpa membanjiri layar terminal Anda dengan ratusan baris log yang tidak perlu.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 🛠️ Contoh Penggunaan
|
|
58
|
+
|
|
59
|
+
### 1. Buka Konsol Interaktif
|
|
60
|
+
Cukup buka terminal di folder proyek Anda:
|
|
61
|
+
```bash
|
|
62
|
+
yncli
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 2. Kirim Instruksi Cepat Sekali Ketik
|
|
66
|
+
```bash
|
|
67
|
+
yncli "buatkan REST API FastAPI dengan autentikasi JWT dan SQLite"
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### 3. Opsi Tambahan
|
|
71
|
+
```bash
|
|
72
|
+
# Ganti model AI:
|
|
73
|
+
yncli -m ag/claude-sonnet-4-6
|
|
74
|
+
|
|
75
|
+
# Mulai langsung di Plan Mode:
|
|
76
|
+
yncli --mode plan
|
|
77
|
+
|
|
78
|
+
# Aktifkan spesialisasi tertentu:
|
|
79
|
+
yncli -s architect
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## ⌨️ Perintah di Dalam Konsol (Slash Commands)
|
|
85
|
+
|
|
86
|
+
| Perintah | Deskripsi |
|
|
87
|
+
| :--- | :--- |
|
|
88
|
+
| `/model` | Buka menu pop-up interaktif untuk memilih model AI (bisa diklik) |
|
|
89
|
+
| `/plan` | Masuk ke Plan Mode (Riset arsitektur & susun `plan.md`) |
|
|
90
|
+
| `/build` | Masuk ke Build Mode (Eksekusi pembuatan & modifikasi kode) |
|
|
91
|
+
| `/ask` | Masuk ke Ask Mode (Konsultasi murni tanpa edit file) |
|
|
92
|
+
| `/cd <folder>` | Pindah folder kerja aktif & muat ulang memori file |
|
|
93
|
+
| `/approval` | Atur apakah tool dijalankan otomatis atau konfirmasi manual |
|
|
94
|
+
| `/thinking` | Tampilkan atau sembunyikan proses penalaran AI |
|
|
95
|
+
| `/skill <nama>` | Ganti persona (ultrabrain, architect, debugger, dll) |
|
|
96
|
+
| `/clear` | Bersihkan riwayat chat dan segarkan memori proyek |
|
|
97
|
+
| `/save` | Simpan riwayat percakapan ke file Markdown |
|
|
98
|
+
| `/exit` | Keluar dari yncli |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 📄 Lisensi
|
|
103
|
+
[MIT License](LICENSE) © 2026 Yanzyuyu.
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "yncli"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.2"
|
|
8
8
|
description = "Autonomous Polyglot AI Coding Agent & TUI"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.8"
|
|
@@ -12,9 +12,8 @@ dependencies = [
|
|
|
12
12
|
"rich>=13.7.0",
|
|
13
13
|
"prompt_toolkit>=3.0.40",
|
|
14
14
|
"requests>=2.31.0",
|
|
15
|
-
"
|
|
16
|
-
"beautifulsoup4>=4.12.0"
|
|
17
|
-
"pygments>=2.17.0"
|
|
15
|
+
"pygments>=2.17.0",
|
|
16
|
+
"beautifulsoup4>=4.12.0"
|
|
18
17
|
]
|
|
19
18
|
|
|
20
19
|
[project.scripts]
|
|
@@ -6,11 +6,11 @@ long_description = (this_directory / "README.md").read_text(encoding="utf-8") if
|
|
|
6
6
|
|
|
7
7
|
setup(
|
|
8
8
|
name="yncli",
|
|
9
|
-
version="1.0.
|
|
9
|
+
version="1.0.2",
|
|
10
10
|
description="Autonomous Polyglot AI Coding Agent & TUI",
|
|
11
11
|
long_description=long_description,
|
|
12
12
|
long_description_content_type="text/markdown",
|
|
13
|
-
author="
|
|
13
|
+
author="Yanzyuyu",
|
|
14
14
|
packages=find_packages(),
|
|
15
15
|
include_package_data=True,
|
|
16
16
|
package_data={
|
|
@@ -20,9 +20,8 @@ setup(
|
|
|
20
20
|
"rich>=13.7.0",
|
|
21
21
|
"prompt_toolkit>=3.0.40",
|
|
22
22
|
"requests>=2.31.0",
|
|
23
|
-
"duckduckgo-search>=6.0.0",
|
|
24
|
-
"beautifulsoup4>=4.12.0",
|
|
25
23
|
"pygments>=2.17.0",
|
|
24
|
+
"beautifulsoup4>=4.12.0",
|
|
26
25
|
],
|
|
27
26
|
entry_points={
|
|
28
27
|
"console_scripts": [
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import re
|
|
2
|
+
import urllib.parse
|
|
3
|
+
import urllib.request
|
|
4
|
+
import warnings
|
|
5
|
+
from typing import Optional
|
|
6
|
+
|
|
7
|
+
warnings.filterwarnings("ignore")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def web_search(query: str, max_results: int = 5) -> str:
|
|
11
|
+
"""
|
|
12
|
+
Performs a real-time web search using lightweight HTTP endpoints.
|
|
13
|
+
100% pure Python with ZERO heavy Rust/C compilation dependencies.
|
|
14
|
+
"""
|
|
15
|
+
try:
|
|
16
|
+
import requests
|
|
17
|
+
|
|
18
|
+
headers = {
|
|
19
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
|
|
20
|
+
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
|
|
21
|
+
"Accept-Language": "en-US,en;q=0.5",
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
results = []
|
|
25
|
+
|
|
26
|
+
# 1. Try DuckDuckGo HTML endpoint
|
|
27
|
+
try:
|
|
28
|
+
url = f"https://html.duckduckgo.com/html/?q={urllib.parse.quote(query)}"
|
|
29
|
+
resp = requests.get(url, headers=headers, timeout=10)
|
|
30
|
+
|
|
31
|
+
if resp.status_code == 200:
|
|
32
|
+
from bs4 import BeautifulSoup
|
|
33
|
+
soup = BeautifulSoup(resp.text, "html.parser")
|
|
34
|
+
|
|
35
|
+
result_divs = soup.find_all("div", class_=re.compile(r"result|results_links"))
|
|
36
|
+
for r in result_divs:
|
|
37
|
+
title_tag = r.find("a", class_="result__a") or r.find("a")
|
|
38
|
+
snippet_tag = r.find("a", class_="result__snippet") or r.find("div", class_="result__snippet")
|
|
39
|
+
|
|
40
|
+
if title_tag:
|
|
41
|
+
title = title_tag.get_text().strip()
|
|
42
|
+
raw_href = title_tag.get("href", "")
|
|
43
|
+
|
|
44
|
+
if "uddg=" in raw_href:
|
|
45
|
+
parsed = urllib.parse.parse_qs(urllib.parse.urlparse(raw_href).query)
|
|
46
|
+
link = parsed.get("uddg", [raw_href])[0]
|
|
47
|
+
else:
|
|
48
|
+
link = raw_href
|
|
49
|
+
|
|
50
|
+
snippet = snippet_tag.get_text().strip() if snippet_tag else ""
|
|
51
|
+
if link and (link.startswith("http://") or link.startswith("https://")):
|
|
52
|
+
if title and not any(res["link"] == link for res in results):
|
|
53
|
+
results.append({"title": title, "link": link, "snippet": snippet})
|
|
54
|
+
if len(results) >= max_results:
|
|
55
|
+
break
|
|
56
|
+
except Exception:
|
|
57
|
+
pass
|
|
58
|
+
|
|
59
|
+
# 2. Fallback to DuckDuckGo Instant Answer API if needed
|
|
60
|
+
if not results:
|
|
61
|
+
try:
|
|
62
|
+
api_url = f"https://api.duckduckgo.com/?q={urllib.parse.quote(query)}&format=json&no_html=1&skip_disambig=1"
|
|
63
|
+
api_resp = requests.get(api_url, headers=headers, timeout=8)
|
|
64
|
+
if api_resp.status_code == 200:
|
|
65
|
+
data = api_resp.json()
|
|
66
|
+
if data.get("AbstractText"):
|
|
67
|
+
results.append({
|
|
68
|
+
"title": data.get("Heading", query),
|
|
69
|
+
"link": data.get("AbstractURL", ""),
|
|
70
|
+
"snippet": data.get("AbstractText", "")
|
|
71
|
+
})
|
|
72
|
+
for topic in data.get("RelatedTopics", [])[:max_results]:
|
|
73
|
+
if isinstance(topic, dict) and "Text" in topic and "FirstURL" in topic:
|
|
74
|
+
results.append({
|
|
75
|
+
"title": topic.get("Text", "")[:60],
|
|
76
|
+
"link": topic.get("FirstURL", ""),
|
|
77
|
+
"snippet": topic.get("Text", "")
|
|
78
|
+
})
|
|
79
|
+
except Exception:
|
|
80
|
+
pass
|
|
81
|
+
|
|
82
|
+
if not results:
|
|
83
|
+
return f"No search results found for: '{query}'"
|
|
84
|
+
|
|
85
|
+
formatted = [f"Web Search Results for '{query}':", "=" * 50]
|
|
86
|
+
for i, res in enumerate(results[:max_results], start=1):
|
|
87
|
+
title = res.get("title", "No title")
|
|
88
|
+
link = res.get("link", "")
|
|
89
|
+
body = res.get("snippet", "")
|
|
90
|
+
formatted.append(f"[{i}] {title}\nURL: {link}\nSnippet: {body}\n")
|
|
91
|
+
|
|
92
|
+
return "\n".join(formatted)
|
|
93
|
+
except Exception as e:
|
|
94
|
+
return f"Error executing web search: {str(e)}"
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def fetch_webpage(url: str, max_chars: int = 6000) -> str:
|
|
98
|
+
"""
|
|
99
|
+
Fetches the content of a webpage and extracts clean, readable text/markdown.
|
|
100
|
+
"""
|
|
101
|
+
try:
|
|
102
|
+
import requests
|
|
103
|
+
from bs4 import BeautifulSoup
|
|
104
|
+
|
|
105
|
+
headers = {
|
|
106
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36"
|
|
107
|
+
}
|
|
108
|
+
resp = requests.get(url, headers=headers, timeout=15)
|
|
109
|
+
resp.raise_for_status()
|
|
110
|
+
|
|
111
|
+
soup = BeautifulSoup(resp.text, "html.parser")
|
|
112
|
+
|
|
113
|
+
for tag in soup(["script", "style", "nav", "footer", "header", "aside", "svg", "noscript"]):
|
|
114
|
+
tag.decompose()
|
|
115
|
+
|
|
116
|
+
title = soup.title.string.strip() if soup.title else url
|
|
117
|
+
text = soup.get_text(separator="\n")
|
|
118
|
+
|
|
119
|
+
clean_lines = [line.strip() for line in text.splitlines() if line.strip()]
|
|
120
|
+
clean_text = "\n".join(clean_lines)
|
|
121
|
+
|
|
122
|
+
if len(clean_text) > max_chars:
|
|
123
|
+
clean_text = clean_text[:max_chars] + f"\n... [Content truncated, total {len(text)} chars]"
|
|
124
|
+
|
|
125
|
+
return f"Title: {title}\nURL: {url}\n\nContent:\n{clean_text}"
|
|
126
|
+
except Exception as e:
|
|
127
|
+
return f"Error fetching webpage from {url}: {str(e)}"
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: yncli
|
|
3
|
+
Version: 1.0.2
|
|
4
|
+
Summary: Autonomous Polyglot AI Coding Agent & TUI
|
|
5
|
+
Author: Yanzyuyu
|
|
6
|
+
Requires-Python: >=3.8
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Requires-Dist: rich>=13.7.0
|
|
9
|
+
Requires-Dist: prompt_toolkit>=3.0.40
|
|
10
|
+
Requires-Dist: requests>=2.31.0
|
|
11
|
+
Requires-Dist: pygments>=2.17.0
|
|
12
|
+
Requires-Dist: beautifulsoup4>=4.12.0
|
|
13
|
+
Dynamic: author
|
|
14
|
+
Dynamic: requires-python
|
|
15
|
+
|
|
16
|
+
# yncli
|
|
17
|
+
|
|
18
|
+
> AI coding agent untuk terminal. Langsung paham struktur workspace Anda, merancang rencana di `plan.md`, dan mengeksekusi kode tanpa basa-basi.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## ⚡ Cara Pasang & Jalankan
|
|
23
|
+
|
|
24
|
+
### Lewat NPX / NPM (Node.js)
|
|
25
|
+
```bash
|
|
26
|
+
# Langsung jalankan tanpa instalasi:
|
|
27
|
+
npx @yanzyuyu/yncli
|
|
28
|
+
|
|
29
|
+
# Atau pasang secara global:
|
|
30
|
+
npm install -g @yanzyuyu/yncli
|
|
31
|
+
yncli
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Lewat Pip / Pipx (Python)
|
|
35
|
+
```bash
|
|
36
|
+
# Pasang via pip:
|
|
37
|
+
pip install yncli
|
|
38
|
+
yncli
|
|
39
|
+
|
|
40
|
+
# Atau jalankan via pipx:
|
|
41
|
+
pipx run yncli
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Script Pasang Otomatis (PowerShell / Shell)
|
|
45
|
+
- **Windows (PowerShell)**:
|
|
46
|
+
```powershell
|
|
47
|
+
irm https://raw.githubusercontent.com/yanzyuyu/yncli/main/install.ps1 | iex
|
|
48
|
+
```
|
|
49
|
+
- **macOS / Linux**:
|
|
50
|
+
```bash
|
|
51
|
+
curl -fsSL https://raw.githubusercontent.com/yanzyuyu/yncli/main/install.sh | bash
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 💡 Kenapa Pakai yncli?
|
|
57
|
+
|
|
58
|
+
1. **Langsung Paham Isi Folder**
|
|
59
|
+
Begitu dibuka di direktori proyek, `yncli` otomatis membaca file kode ke memori aktif. Anda tidak perlu repot copy-paste isi file manual.
|
|
60
|
+
|
|
61
|
+
2. **Perencanaan Jelas (`plan.md`)**
|
|
62
|
+
Di **Plan Mode**, AI menganalisis sistem, menggambar rancangan ASCII, dan menulis dokumen PRD ke `plan.md` sebelum menyentuh kode produksi.
|
|
63
|
+
|
|
64
|
+
3. **Eksekusi Mandiri di Build Mode**
|
|
65
|
+
Di **Build Mode**, AI langsung memodifikasi file, membuat komponen baru, dan memvalidasi sintaks (JS/TS, Python, Rust, Go, PHP, dll.) secara mandiri.
|
|
66
|
+
|
|
67
|
+
4. **Tampilan Bersih Satu Baris**
|
|
68
|
+
Status eksekusi diperbarui di baris yang sama tanpa membanjiri layar terminal Anda dengan ratusan baris log yang tidak perlu.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 🛠️ Contoh Penggunaan
|
|
73
|
+
|
|
74
|
+
### 1. Buka Konsol Interaktif
|
|
75
|
+
Cukup buka terminal di folder proyek Anda:
|
|
76
|
+
```bash
|
|
77
|
+
yncli
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 2. Kirim Instruksi Cepat Sekali Ketik
|
|
81
|
+
```bash
|
|
82
|
+
yncli "buatkan REST API FastAPI dengan autentikasi JWT dan SQLite"
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 3. Opsi Tambahan
|
|
86
|
+
```bash
|
|
87
|
+
# Ganti model AI:
|
|
88
|
+
yncli -m ag/claude-sonnet-4-6
|
|
89
|
+
|
|
90
|
+
# Mulai langsung di Plan Mode:
|
|
91
|
+
yncli --mode plan
|
|
92
|
+
|
|
93
|
+
# Aktifkan spesialisasi tertentu:
|
|
94
|
+
yncli -s architect
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## ⌨️ Perintah di Dalam Konsol (Slash Commands)
|
|
100
|
+
|
|
101
|
+
| Perintah | Deskripsi |
|
|
102
|
+
| :--- | :--- |
|
|
103
|
+
| `/model` | Buka menu pop-up interaktif untuk memilih model AI (bisa diklik) |
|
|
104
|
+
| `/plan` | Masuk ke Plan Mode (Riset arsitektur & susun `plan.md`) |
|
|
105
|
+
| `/build` | Masuk ke Build Mode (Eksekusi pembuatan & modifikasi kode) |
|
|
106
|
+
| `/ask` | Masuk ke Ask Mode (Konsultasi murni tanpa edit file) |
|
|
107
|
+
| `/cd <folder>` | Pindah folder kerja aktif & muat ulang memori file |
|
|
108
|
+
| `/approval` | Atur apakah tool dijalankan otomatis atau konfirmasi manual |
|
|
109
|
+
| `/thinking` | Tampilkan atau sembunyikan proses penalaran AI |
|
|
110
|
+
| `/skill <nama>` | Ganti persona (ultrabrain, architect, debugger, dll) |
|
|
111
|
+
| `/clear` | Bersihkan riwayat chat dan segarkan memori proyek |
|
|
112
|
+
| `/save` | Simpan riwayat percakapan ke file Markdown |
|
|
113
|
+
| `/exit` | Keluar dari yncli |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 📄 Lisensi
|
|
118
|
+
[MIT License](LICENSE) © 2026 Yanzyuyu.
|
yncli-1.0.0/PKG-INFO
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: yncli
|
|
3
|
-
Version: 1.0.0
|
|
4
|
-
Summary: Autonomous Polyglot AI Coding Agent & TUI
|
|
5
|
-
Author: YNCLI Team
|
|
6
|
-
Requires-Python: >=3.8
|
|
7
|
-
Description-Content-Type: text/markdown
|
|
8
|
-
Requires-Dist: rich>=13.7.0
|
|
9
|
-
Requires-Dist: prompt_toolkit>=3.0.40
|
|
10
|
-
Requires-Dist: requests>=2.31.0
|
|
11
|
-
Requires-Dist: duckduckgo-search>=6.0.0
|
|
12
|
-
Requires-Dist: beautifulsoup4>=4.12.0
|
|
13
|
-
Requires-Dist: pygments>=2.17.0
|
|
14
|
-
Dynamic: author
|
|
15
|
-
Dynamic: requires-python
|
|
16
|
-
|
|
17
|
-
# ⚡ YNCLI: World-Class Autonomous Polyglot AI Coding Agent & TUI
|
|
18
|
-
|
|
19
|
-
YNCLI adalah AI Coding Agent berbasis CLI/TUI mandiri yang mendukung:
|
|
20
|
-
- **Polyglot Coding Engine**: Menguasai Python, TypeScript/JavaScript, Rust, Go, C/C++, Java/Kotlin, C#/.NET, PHP, Ruby, Dart/Flutter, Swift, SQL, Shell, dan Web stack.
|
|
21
|
-
- **Dynamic Language & Framework Detection**: Otomatis mendeteksi arsitektur project dan menginjeksi idiomatic patterns ke dalam agent.
|
|
22
|
-
- **Autonomous ReAct Loop**: AI dapat membaca file, menulis file, melakukan surgical patch, mencari kode via grep, memvalidasi sintaks via compiler/linter, dan menjalankan perintah di terminal.
|
|
23
|
-
- **Real-Time Date & Environment Awareness**: Mengetahui waktu, tanggal, hari lokal secara real-time.
|
|
24
|
-
- **Thinking / Reasoning Visualizer**: Menampilkan penalaran model (seperti Gemini 3.7 Flash High / Claude 4.6 Thinking) secara live.
|
|
25
|
-
- **Real-time Web Search & Scraper**: DuckDuckGo search + HTML-to-markdown reader bawaan.
|
|
26
|
-
- **Dynamic Skills System**: Mode Architect, Debugger, Code Reviewer, Test Runner, dan Polyglot.
|
|
27
|
-
|
|
28
|
-
## Cara Menggunakan
|
|
29
|
-
|
|
30
|
-
Cukup ketik perintah berikut di PowerShell atau Command Prompt mana saja:
|
|
31
|
-
|
|
32
|
-
### 1. Masuk ke Mode TUI Interaktif:
|
|
33
|
-
```powershell
|
|
34
|
-
yncli
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### 2. Mode Direct Execution (Quick Query):
|
|
38
|
-
```powershell
|
|
39
|
-
yncli "buatkan script rest api fastapi lengkap dengan jwt auth"
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### 3. Opsi Tambahan:
|
|
43
|
-
```powershell
|
|
44
|
-
# Ganti model
|
|
45
|
-
yncli -m ag/claude-sonnet-4-6
|
|
46
|
-
|
|
47
|
-
# Aktifkan skill tertentu
|
|
48
|
-
yncli -s architect
|
|
49
|
-
|
|
50
|
-
# Lihat daftar model yang tersedia di endpoint
|
|
51
|
-
yncli --list-models
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Slash Commands di dalam TUI:
|
|
55
|
-
- `/model <nama>`: Ganti model AI aktif
|
|
56
|
-
- `/models`: Lihat semua model AI dari endpoint
|
|
57
|
-
- `/skill <nama>`: Aktifkan skill (polyglot, architect, debugger, code_review, test_runner)
|
|
58
|
-
- `/skills`: Lihat semua skill yang tersedia
|
|
59
|
-
- `/tools`: Lihat daftar tools coding yang aktif
|
|
60
|
-
- `/clear`: Reset memory percakapan
|
|
61
|
-
- `/history`: Lihat ringkasan percakapan
|
|
62
|
-
- `/save [file]`: Export percakapan ke Markdown
|
|
63
|
-
- `/exit`: Keluar
|
yncli-1.0.0/README.md
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
# ⚡ YNCLI: World-Class Autonomous Polyglot AI Coding Agent & TUI
|
|
2
|
-
|
|
3
|
-
YNCLI adalah AI Coding Agent berbasis CLI/TUI mandiri yang mendukung:
|
|
4
|
-
- **Polyglot Coding Engine**: Menguasai Python, TypeScript/JavaScript, Rust, Go, C/C++, Java/Kotlin, C#/.NET, PHP, Ruby, Dart/Flutter, Swift, SQL, Shell, dan Web stack.
|
|
5
|
-
- **Dynamic Language & Framework Detection**: Otomatis mendeteksi arsitektur project dan menginjeksi idiomatic patterns ke dalam agent.
|
|
6
|
-
- **Autonomous ReAct Loop**: AI dapat membaca file, menulis file, melakukan surgical patch, mencari kode via grep, memvalidasi sintaks via compiler/linter, dan menjalankan perintah di terminal.
|
|
7
|
-
- **Real-Time Date & Environment Awareness**: Mengetahui waktu, tanggal, hari lokal secara real-time.
|
|
8
|
-
- **Thinking / Reasoning Visualizer**: Menampilkan penalaran model (seperti Gemini 3.7 Flash High / Claude 4.6 Thinking) secara live.
|
|
9
|
-
- **Real-time Web Search & Scraper**: DuckDuckGo search + HTML-to-markdown reader bawaan.
|
|
10
|
-
- **Dynamic Skills System**: Mode Architect, Debugger, Code Reviewer, Test Runner, dan Polyglot.
|
|
11
|
-
|
|
12
|
-
## Cara Menggunakan
|
|
13
|
-
|
|
14
|
-
Cukup ketik perintah berikut di PowerShell atau Command Prompt mana saja:
|
|
15
|
-
|
|
16
|
-
### 1. Masuk ke Mode TUI Interaktif:
|
|
17
|
-
```powershell
|
|
18
|
-
yncli
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
### 2. Mode Direct Execution (Quick Query):
|
|
22
|
-
```powershell
|
|
23
|
-
yncli "buatkan script rest api fastapi lengkap dengan jwt auth"
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
### 3. Opsi Tambahan:
|
|
27
|
-
```powershell
|
|
28
|
-
# Ganti model
|
|
29
|
-
yncli -m ag/claude-sonnet-4-6
|
|
30
|
-
|
|
31
|
-
# Aktifkan skill tertentu
|
|
32
|
-
yncli -s architect
|
|
33
|
-
|
|
34
|
-
# Lihat daftar model yang tersedia di endpoint
|
|
35
|
-
yncli --list-models
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
### Slash Commands di dalam TUI:
|
|
39
|
-
- `/model <nama>`: Ganti model AI aktif
|
|
40
|
-
- `/models`: Lihat semua model AI dari endpoint
|
|
41
|
-
- `/skill <nama>`: Aktifkan skill (polyglot, architect, debugger, code_review, test_runner)
|
|
42
|
-
- `/skills`: Lihat semua skill yang tersedia
|
|
43
|
-
- `/tools`: Lihat daftar tools coding yang aktif
|
|
44
|
-
- `/clear`: Reset memory percakapan
|
|
45
|
-
- `/history`: Lihat ringkasan percakapan
|
|
46
|
-
- `/save [file]`: Export percakapan ke Markdown
|
|
47
|
-
- `/exit`: Keluar
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import re
|
|
2
|
-
import warnings
|
|
3
|
-
import urllib.request
|
|
4
|
-
from typing import Optional
|
|
5
|
-
|
|
6
|
-
warnings.filterwarnings("ignore")
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def web_search(query: str, max_results: int = 5) -> str:
|
|
10
|
-
"""
|
|
11
|
-
Performs a real-time web search using DuckDuckGo to find accurate, up-to-date information.
|
|
12
|
-
"""
|
|
13
|
-
try:
|
|
14
|
-
try:
|
|
15
|
-
from ddgs import DDGS
|
|
16
|
-
except ImportError:
|
|
17
|
-
from duckduckgo_search import DDGS
|
|
18
|
-
|
|
19
|
-
ddgs = DDGS()
|
|
20
|
-
results = list(ddgs.text(query, max_results=max_results))
|
|
21
|
-
|
|
22
|
-
if not results:
|
|
23
|
-
return f"No search results found for: '{query}'"
|
|
24
|
-
|
|
25
|
-
formatted = [f"Web Search Results for '{query}':"]
|
|
26
|
-
formatted.append("=" * 50)
|
|
27
|
-
for i, res in enumerate(results, start=1):
|
|
28
|
-
title = res.get("title", "No title")
|
|
29
|
-
link = res.get("href", res.get("link", ""))
|
|
30
|
-
body = res.get("body", res.get("snippet", ""))
|
|
31
|
-
formatted.append(f"[{i}] {title}\nURL: {link}\nSnippet: {body}\n")
|
|
32
|
-
|
|
33
|
-
return "\n".join(formatted)
|
|
34
|
-
except Exception as e:
|
|
35
|
-
return f"Error executing web search: {str(e)}"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def fetch_webpage(url: str, max_chars: int = 6000) -> str:
|
|
39
|
-
"""
|
|
40
|
-
Fetches the content of a webpage and extracts clean, readable text/markdown.
|
|
41
|
-
"""
|
|
42
|
-
try:
|
|
43
|
-
import requests
|
|
44
|
-
from bs4 import BeautifulSoup
|
|
45
|
-
|
|
46
|
-
headers = {
|
|
47
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
|
|
48
|
-
}
|
|
49
|
-
resp = requests.get(url, headers=headers, timeout=15)
|
|
50
|
-
resp.raise_for_status()
|
|
51
|
-
|
|
52
|
-
soup = BeautifulSoup(resp.text, "html.parser")
|
|
53
|
-
|
|
54
|
-
for tag in soup(["script", "style", "nav", "footer", "header", "aside", "svg", "noscript"]):
|
|
55
|
-
tag.decompose()
|
|
56
|
-
|
|
57
|
-
title = soup.title.string.strip() if soup.title else url
|
|
58
|
-
text = soup.get_text(separator="\n")
|
|
59
|
-
|
|
60
|
-
clean_lines = [line.strip() for line in text.splitlines() if line.strip()]
|
|
61
|
-
clean_text = "\n".join(clean_lines)
|
|
62
|
-
|
|
63
|
-
if len(clean_text) > max_chars:
|
|
64
|
-
clean_text = clean_text[:max_chars] + f"\n... [Content truncated, total {len(text)} chars]"
|
|
65
|
-
|
|
66
|
-
return f"Title: {title}\nURL: {url}\n\nContent:\n{clean_text}"
|
|
67
|
-
except Exception as e:
|
|
68
|
-
return f"Error fetching webpage from {url}: {str(e)}"
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: yncli
|
|
3
|
-
Version: 1.0.0
|
|
4
|
-
Summary: Autonomous Polyglot AI Coding Agent & TUI
|
|
5
|
-
Author: YNCLI Team
|
|
6
|
-
Requires-Python: >=3.8
|
|
7
|
-
Description-Content-Type: text/markdown
|
|
8
|
-
Requires-Dist: rich>=13.7.0
|
|
9
|
-
Requires-Dist: prompt_toolkit>=3.0.40
|
|
10
|
-
Requires-Dist: requests>=2.31.0
|
|
11
|
-
Requires-Dist: duckduckgo-search>=6.0.0
|
|
12
|
-
Requires-Dist: beautifulsoup4>=4.12.0
|
|
13
|
-
Requires-Dist: pygments>=2.17.0
|
|
14
|
-
Dynamic: author
|
|
15
|
-
Dynamic: requires-python
|
|
16
|
-
|
|
17
|
-
# ⚡ YNCLI: World-Class Autonomous Polyglot AI Coding Agent & TUI
|
|
18
|
-
|
|
19
|
-
YNCLI adalah AI Coding Agent berbasis CLI/TUI mandiri yang mendukung:
|
|
20
|
-
- **Polyglot Coding Engine**: Menguasai Python, TypeScript/JavaScript, Rust, Go, C/C++, Java/Kotlin, C#/.NET, PHP, Ruby, Dart/Flutter, Swift, SQL, Shell, dan Web stack.
|
|
21
|
-
- **Dynamic Language & Framework Detection**: Otomatis mendeteksi arsitektur project dan menginjeksi idiomatic patterns ke dalam agent.
|
|
22
|
-
- **Autonomous ReAct Loop**: AI dapat membaca file, menulis file, melakukan surgical patch, mencari kode via grep, memvalidasi sintaks via compiler/linter, dan menjalankan perintah di terminal.
|
|
23
|
-
- **Real-Time Date & Environment Awareness**: Mengetahui waktu, tanggal, hari lokal secara real-time.
|
|
24
|
-
- **Thinking / Reasoning Visualizer**: Menampilkan penalaran model (seperti Gemini 3.7 Flash High / Claude 4.6 Thinking) secara live.
|
|
25
|
-
- **Real-time Web Search & Scraper**: DuckDuckGo search + HTML-to-markdown reader bawaan.
|
|
26
|
-
- **Dynamic Skills System**: Mode Architect, Debugger, Code Reviewer, Test Runner, dan Polyglot.
|
|
27
|
-
|
|
28
|
-
## Cara Menggunakan
|
|
29
|
-
|
|
30
|
-
Cukup ketik perintah berikut di PowerShell atau Command Prompt mana saja:
|
|
31
|
-
|
|
32
|
-
### 1. Masuk ke Mode TUI Interaktif:
|
|
33
|
-
```powershell
|
|
34
|
-
yncli
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### 2. Mode Direct Execution (Quick Query):
|
|
38
|
-
```powershell
|
|
39
|
-
yncli "buatkan script rest api fastapi lengkap dengan jwt auth"
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### 3. Opsi Tambahan:
|
|
43
|
-
```powershell
|
|
44
|
-
# Ganti model
|
|
45
|
-
yncli -m ag/claude-sonnet-4-6
|
|
46
|
-
|
|
47
|
-
# Aktifkan skill tertentu
|
|
48
|
-
yncli -s architect
|
|
49
|
-
|
|
50
|
-
# Lihat daftar model yang tersedia di endpoint
|
|
51
|
-
yncli --list-models
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Slash Commands di dalam TUI:
|
|
55
|
-
- `/model <nama>`: Ganti model AI aktif
|
|
56
|
-
- `/models`: Lihat semua model AI dari endpoint
|
|
57
|
-
- `/skill <nama>`: Aktifkan skill (polyglot, architect, debugger, code_review, test_runner)
|
|
58
|
-
- `/skills`: Lihat semua skill yang tersedia
|
|
59
|
-
- `/tools`: Lihat daftar tools coding yang aktif
|
|
60
|
-
- `/clear`: Reset memory percakapan
|
|
61
|
-
- `/history`: Lihat ringkasan percakapan
|
|
62
|
-
- `/save [file]`: Export percakapan ke Markdown
|
|
63
|
-
- `/exit`: Keluar
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|