evo-cli 0.10.1__tar.gz → 0.10.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.
- {evo_cli-0.10.1 → evo_cli-0.10.2}/PKG-INFO +1 -1
- evo_cli-0.10.2/evo_cli/VERSION +1 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/opencode.py +16 -2
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/console.py +16 -1
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli.egg-info/PKG-INFO +1 -1
- evo_cli-0.10.1/evo_cli/VERSION +0 -1
- {evo_cli-0.10.1 → evo_cli-0.10.2}/Containerfile +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/HISTORY.md +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/LICENSE +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/MANIFEST.in +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/README.md +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/__init__.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/__main__.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/base.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/cli.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/__init__.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/cloudflare.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/fix_claude.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/gdrive.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/localproxy.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/mcp.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/miniconda.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/netcheck.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/plantuml.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/site2s.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/ssh.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/sysmon.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/commands/wifi.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli/mcp_registry.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli.egg-info/SOURCES.txt +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli.egg-info/dependency_links.txt +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli.egg-info/entry_points.txt +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli.egg-info/requires.txt +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/evo_cli.egg-info/top_level.txt +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/pyproject.toml +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/setup.cfg +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/tests/__init__.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/tests/test_cli.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/tests/test_console.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/tests/test_fix_claude.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/tests/test_mcp.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/tests/test_opencode.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/tests/test_plantuml.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/tests/test_sysmon.py +0 -0
- {evo_cli-0.10.1 → evo_cli-0.10.2}/tests/test_wifi.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.10.2
|
|
@@ -52,7 +52,14 @@ def ensure_node_installed():
|
|
|
52
52
|
npx_cmd = shutil.which("npx")
|
|
53
53
|
|
|
54
54
|
if node_cmd and npm_cmd and npx_cmd:
|
|
55
|
-
result = subprocess.run(
|
|
55
|
+
result = subprocess.run(
|
|
56
|
+
resolve_executable(["node", "--version"]),
|
|
57
|
+
capture_output=True,
|
|
58
|
+
text=True,
|
|
59
|
+
encoding="utf-8",
|
|
60
|
+
errors="replace",
|
|
61
|
+
check=True,
|
|
62
|
+
)
|
|
56
63
|
info(f"Node.js found: {result.stdout.strip()}")
|
|
57
64
|
return node_cmd, npm_cmd, npx_cmd
|
|
58
65
|
|
|
@@ -153,7 +160,12 @@ def opencode_version():
|
|
|
153
160
|
return None
|
|
154
161
|
try:
|
|
155
162
|
result = subprocess.run(
|
|
156
|
-
resolve_executable(["opencode", "--version"]),
|
|
163
|
+
resolve_executable(["opencode", "--version"]),
|
|
164
|
+
capture_output=True,
|
|
165
|
+
text=True,
|
|
166
|
+
encoding="utf-8",
|
|
167
|
+
errors="replace",
|
|
168
|
+
timeout=30,
|
|
157
169
|
)
|
|
158
170
|
return result.stdout.strip() or "unknown"
|
|
159
171
|
except Exception:
|
|
@@ -299,6 +311,8 @@ def verify_mcp_servers():
|
|
|
299
311
|
input=init_message,
|
|
300
312
|
capture_output=True,
|
|
301
313
|
text=True,
|
|
314
|
+
encoding="utf-8",
|
|
315
|
+
errors="replace",
|
|
302
316
|
timeout=30,
|
|
303
317
|
)
|
|
304
318
|
if result.returncode == 0 and '"jsonrpc":"2.0"' in result.stdout:
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import shutil
|
|
2
2
|
import subprocess
|
|
3
|
+
import sys
|
|
3
4
|
import urllib.request
|
|
4
5
|
|
|
5
6
|
from rich.console import Console
|
|
@@ -13,6 +14,14 @@ from rich.progress import (
|
|
|
13
14
|
)
|
|
14
15
|
from rich.theme import Theme
|
|
15
16
|
|
|
17
|
+
for _stream in (sys.stdout, sys.stderr):
|
|
18
|
+
_reconfigure = getattr(_stream, "reconfigure", None)
|
|
19
|
+
if _reconfigure is not None:
|
|
20
|
+
try:
|
|
21
|
+
_reconfigure(encoding="utf-8", errors="replace")
|
|
22
|
+
except (ValueError, OSError):
|
|
23
|
+
pass
|
|
24
|
+
|
|
16
25
|
EVO_THEME = Theme(
|
|
17
26
|
{
|
|
18
27
|
"info": "cyan",
|
|
@@ -67,7 +76,13 @@ def run_command(cmd, capture=False, check=True, input_text=None, status=None, ti
|
|
|
67
76
|
console.print(f"[cmd]$ {' '.join(cmd)}[/cmd]")
|
|
68
77
|
exec_cmd = resolve_executable(cmd)
|
|
69
78
|
|
|
70
|
-
run_kwargs = {
|
|
79
|
+
run_kwargs = {
|
|
80
|
+
"text": True,
|
|
81
|
+
"encoding": "utf-8",
|
|
82
|
+
"errors": "replace",
|
|
83
|
+
"input": input_text,
|
|
84
|
+
"timeout": timeout,
|
|
85
|
+
}
|
|
71
86
|
# subprocess.run rejects passing both `input` and `stdin`. Only attach an
|
|
72
87
|
# explicit stdin (e.g. DEVNULL) when we are not feeding input, so callers can
|
|
73
88
|
# detach a child from the terminal and avoid it blocking on an inherited TTY.
|
evo_cli-0.10.1/evo_cli/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
0.10.1
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|