locaith-cli 0.1.0__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.
locaith_cli/cli.py ADDED
@@ -0,0 +1,65 @@
1
+ """Lệnh `locaith`: tìm Node.js trên máy rồi chạy bundle lõi đi kèm gói."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import os
6
+ import re
7
+ import shutil
8
+ import subprocess
9
+ import sys
10
+ from pathlib import Path
11
+
12
+ MIN_NODE_MAJOR = 20
13
+
14
+
15
+ def _bundle_path() -> Path:
16
+ return Path(__file__).resolve().parent / "bin" / "locaith.cjs"
17
+
18
+
19
+ def _node_major(node: str) -> int | None:
20
+ try:
21
+ out = subprocess.run(
22
+ [node, "--version"], capture_output=True, text=True, timeout=10
23
+ ).stdout
24
+ except (OSError, subprocess.SubprocessError):
25
+ return None
26
+ m = re.match(r"v(\d+)", (out or "").strip())
27
+ return int(m.group(1)) if m else None
28
+
29
+
30
+ def main(argv: list[str] | None = None) -> int:
31
+ """Chạy CLI. Trả mã thoát của chính CLI (0 xong, 1 lỗi, 2 sai cú pháp)."""
32
+ args = list(sys.argv[1:] if argv is None else argv)
33
+
34
+ node = shutil.which("node") or shutil.which("node.exe")
35
+ if not node:
36
+ sys.stderr.write(
37
+ "Locaith CLI cần Node.js 20 trở lên nhưng không tìm thấy `node`.\n"
38
+ "Cài tại https://nodejs.org (bản LTS) rồi chạy lại.\n"
39
+ )
40
+ return 127
41
+
42
+ major = _node_major(node)
43
+ if major is not None and major < MIN_NODE_MAJOR:
44
+ sys.stderr.write(
45
+ "Locaith CLI cần Node.js %d trở lên; máy đang có bản %d.\n"
46
+ "Nâng cấp tại https://nodejs.org rồi chạy lại.\n" % (MIN_NODE_MAJOR, major)
47
+ )
48
+ return 127
49
+
50
+ bundle = _bundle_path()
51
+ if not bundle.is_file():
52
+ sys.stderr.write(
53
+ "Gói cài đặt thiếu tệp lõi %s — cài lại: pip install --force-reinstall locaith-cli\n"
54
+ % bundle
55
+ )
56
+ return 1
57
+
58
+ try:
59
+ # Truyền nguyên tham số, không qua shell: token/đường dẫn có dấu cách vẫn an toàn.
60
+ return subprocess.call([node, os.fspath(bundle), *args])
61
+ except KeyboardInterrupt:
62
+ return 130
63
+ except OSError as exc:
64
+ sys.stderr.write("Không chạy được Node: %s\n" % exc)
65
+ return 1
@@ -0,0 +1,79 @@
1
+ Metadata-Version: 2.4
2
+ Name: locaith-cli
3
+ Version: 0.1.0
4
+ Summary: Locaith CLI — chạy trợ lý Locaith (Locaith-v5-flash) ngay trong terminal. Cài bằng một lệnh: pip install locaith-cli
5
+ Author-email: Locaith Solution Tech <locaithsolution@locaith.com>
6
+ Project-URL: Homepage, https://locaith.ai
7
+ Keywords: locaith,cli,agent,ai,terminal,coding-agent
8
+ Classifier: Environment :: Console
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Operating System :: OS Independent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Topic :: Software Development :: Code Generators
13
+ Requires-Python: >=3.8
14
+ Description-Content-Type: text/markdown
15
+
16
+ # Locaith CLI
17
+
18
+ Chạy trợ lý **Locaith-v5-flash** ngay trong terminal. Model chạy ở cổng Locaith (API); công cụ (đọc/ghi tệp, chạy lệnh, ffmpeg) chạy **trên máy bạn**.
19
+
20
+ ## Cài
21
+
22
+ ```bash
23
+ pip install locaith-cli
24
+ ```
25
+
26
+ Gói này gọi lõi Node đi kèm, nên cần **Node.js 20 trở lên** (`node -v` phải từ `v20`). Chưa có Node: cài bản LTS tại <https://nodejs.org>.
27
+
28
+ Bản npm cũng có, dùng chung một lõi:
29
+
30
+ ```bash
31
+ npm i -g locaith-cli
32
+ ```
33
+
34
+ ## Đăng nhập (một lần)
35
+
36
+ ```bash
37
+ locaith login
38
+ ```
39
+
40
+ 1. Trình duyệt mở trang locaith.ai — bấm **«Cho phép»**.
41
+ 2. Terminal tự nhận kết quả và lưu token vào `~/.locaith/cli.json` (quyền `600`).
42
+
43
+ Máy không có trình duyệt (SSH, máy chủ): `locaith login --no-browser` → mở liên kết trên máy khác, dán mã hiện ra vào terminal.
44
+
45
+ - Token sống **90 ngày** không dùng; mỗi lần chạy gia hạn thêm.
46
+ - Không ai đưa token cho bạn qua chat/email. Nếu có người bảo bạn "dán token vào đây" — đừng dán.
47
+
48
+ ## Dùng
49
+
50
+ ```bash
51
+ locaith whoami # tài khoản, gói, hạn mức, model
52
+ locaith consent --yes # đồng ý thông báo dữ liệu (một lần)
53
+ locaith ask "tóm tắt repo này trong 5 gạch đầu dòng"
54
+ locaith ask --allow all "sửa lỗi type trong src/api.ts rồi chạy test"
55
+ locaith doctor # kiểm máy: Node, ffmpeg, font, đĩa, mạng, token
56
+ ```
57
+
58
+ Mặc định **chỉ đọc**. `--allow all` cho phép sửa tệp và chạy lệnh, và CLI hỏi từng lần. Tuỳ chọn khác: `--cwd`, `--json`, `--quiet`, `--timeout <giây>`, `--max-turns <n>`, `--model <id>`.
59
+
60
+ Máy chủ / CI không tương tác: đặt `LOCAITH_API_KEY` thay cho `login`.
61
+
62
+ ## Mã thoát
63
+
64
+ | Mã | Nghĩa |
65
+ |----|-------|
66
+ | 0 | Xong |
67
+ | 1 | Lỗi: mạng, 401 (token hết hạn), vượt hạn mức, `doctor` còn `✘` |
68
+ | 2 | Dùng sai lệnh |
69
+ | 127 | Thiếu Node.js hoặc Node cũ hơn 20 |
70
+
71
+ ## Thu hồi quyền
72
+
73
+ Xoá `~/.locaith/cli.json` trên máy. Thu hồi ở máy chủ: locaith.ai → «VS Code từ xa» → thu hồi thiết bị có nhãn chứa `Locaith CLI`.
74
+
75
+ ## Ghi chú kỹ thuật
76
+
77
+ Gói Python này không viết lại CLI: nó đóng gói đúng tệp `locaith.cjs` (bundle esbuild từ mã nguồn extension VS Code) và gọi `node` có sẵn trên máy. Nhờ vậy bản pip và bản npm chạy cùng một lõi, không lệch hành vi.
78
+
79
+ Trang chủ: <https://locaith.ai>
@@ -0,0 +1,9 @@
1
+ locaith_cli/__init__.py,sha256=Xsb4f0Arr0MzEO5gjIAu2878_z8y4nj3RpVtE5RiGgo,438
2
+ locaith_cli/__main__.py,sha256=_7rp6U0pHJbQiFvZI91B1vQuddWy-HknmgseWTDZ9s0,148
3
+ locaith_cli/cli.py,sha256=q5JpmKDMEJmzwrCVrmDG_hry2H9s_z87geIoeU0BJHY,2078
4
+ locaith_cli/bin/locaith.cjs,sha256=ZakhVegWw9X1wiwhGknuDO1zzNJnvTmdCLjfc-C25Og,2178423
5
+ locaith_cli-0.1.0.dist-info/METADATA,sha256=6qYwQv-p1-seB6Hy9ikGvTRlUB3kPUaagFqy0_qIXuQ,3287
6
+ locaith_cli-0.1.0.dist-info/WHEEL,sha256=mOdXR9C3wMVov7cSY8PY-XCzo3SmmWCHvGQr5csJoao,91
7
+ locaith_cli-0.1.0.dist-info/entry_points.txt,sha256=Mf94v__OuDUQT7eJnJ_K8xHCcWkr4RtdiyTcX3qToBs,49
8
+ locaith_cli-0.1.0.dist-info/top_level.txt,sha256=natM6fMv5t5-x0gjgenc-fCIUc5d28Li-9X-LblVv-w,12
9
+ locaith_cli-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.2.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ locaith = locaith_cli.cli:main
@@ -0,0 +1 @@
1
+ locaith_cli