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.
Files changed (42) hide show
  1. yncli-1.0.2/PKG-INFO +118 -0
  2. yncli-1.0.2/README.md +103 -0
  3. {yncli-1.0.0 → yncli-1.0.2}/pyproject.toml +3 -4
  4. {yncli-1.0.0 → yncli-1.0.2}/setup.py +3 -4
  5. yncli-1.0.2/yncli/tools/search_tools.py +127 -0
  6. yncli-1.0.2/yncli.egg-info/PKG-INFO +118 -0
  7. {yncli-1.0.0 → yncli-1.0.2}/yncli.egg-info/requires.txt +1 -2
  8. yncli-1.0.0/PKG-INFO +0 -63
  9. yncli-1.0.0/README.md +0 -47
  10. yncli-1.0.0/yncli/tools/search_tools.py +0 -68
  11. yncli-1.0.0/yncli.egg-info/PKG-INFO +0 -63
  12. {yncli-1.0.0 → yncli-1.0.2}/setup.cfg +0 -0
  13. {yncli-1.0.0 → yncli-1.0.2}/yncli/__init__.py +0 -0
  14. {yncli-1.0.0 → yncli-1.0.2}/yncli/agent.py +0 -0
  15. {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/architect.md +0 -0
  16. {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/code_review.md +0 -0
  17. {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/debug_oracle.md +0 -0
  18. {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/debugger.md +0 -0
  19. {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/polyglot.md +0 -0
  20. {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/refactor_master.md +0 -0
  21. {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/security_auditor.md +0 -0
  22. {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/system_architect.md +0 -0
  23. {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/test_runner.md +0 -0
  24. {yncli-1.0.0 → yncli-1.0.2}/yncli/built_in_skills/ultrabrain.md +0 -0
  25. {yncli-1.0.0 → yncli-1.0.2}/yncli/clean_text.py +0 -0
  26. {yncli-1.0.0 → yncli-1.0.2}/yncli/client.py +0 -0
  27. {yncli-1.0.0 → yncli-1.0.2}/yncli/config.py +0 -0
  28. {yncli-1.0.0 → yncli-1.0.2}/yncli/language_detector.py +0 -0
  29. {yncli-1.0.0 → yncli-1.0.2}/yncli/main.py +0 -0
  30. {yncli-1.0.0 → yncli-1.0.2}/yncli/skills_manager.py +0 -0
  31. {yncli-1.0.0 → yncli-1.0.2}/yncli/system_prompt.py +0 -0
  32. {yncli-1.0.0 → yncli-1.0.2}/yncli/tools/__init__.py +0 -0
  33. {yncli-1.0.0 → yncli-1.0.2}/yncli/tools/file_tools.py +0 -0
  34. {yncli-1.0.0 → yncli-1.0.2}/yncli/tools/polyglot_tools.py +0 -0
  35. {yncli-1.0.0 → yncli-1.0.2}/yncli/tools/system_tools.py +0 -0
  36. {yncli-1.0.0 → yncli-1.0.2}/yncli/tui.py +0 -0
  37. {yncli-1.0.0 → yncli-1.0.2}/yncli/workspace_memory.py +0 -0
  38. {yncli-1.0.0 → yncli-1.0.2}/yncli/workspace_scanner.py +0 -0
  39. {yncli-1.0.0 → yncli-1.0.2}/yncli.egg-info/SOURCES.txt +0 -0
  40. {yncli-1.0.0 → yncli-1.0.2}/yncli.egg-info/dependency_links.txt +0 -0
  41. {yncli-1.0.0 → yncli-1.0.2}/yncli.egg-info/entry_points.txt +0 -0
  42. {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.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
- "duckduckgo-search>=6.0.0",
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.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="YNCLI Team",
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.
@@ -1,6 +1,5 @@
1
1
  rich>=13.7.0
2
2
  prompt_toolkit>=3.0.40
3
3
  requests>=2.31.0
4
- duckduckgo-search>=6.0.0
5
- beautifulsoup4>=4.12.0
6
4
  pygments>=2.17.0
5
+ beautifulsoup4>=4.12.0
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