shell-is-all-you-need 0.1.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.
- shell_is_all_you_need-0.1.0/LICENSE +21 -0
- shell_is_all_you_need-0.1.0/PKG-INFO +23 -0
- shell_is_all_you_need-0.1.0/README.md +7 -0
- shell_is_all_you_need-0.1.0/pyproject.toml +29 -0
- shell_is_all_you_need-0.1.0/setup.cfg +4 -0
- shell_is_all_you_need-0.1.0/src/shell_is_all_you_need/__init__.py +93 -0
- shell_is_all_you_need-0.1.0/src/shell_is_all_you_need/__main__.py +3 -0
- shell_is_all_you_need-0.1.0/src/shell_is_all_you_need.egg-info/PKG-INFO +23 -0
- shell_is_all_you_need-0.1.0/src/shell_is_all_you_need.egg-info/SOURCES.txt +10 -0
- shell_is_all_you_need-0.1.0/src/shell_is_all_you_need.egg-info/dependency_links.txt +1 -0
- shell_is_all_you_need-0.1.0/src/shell_is_all_you_need.egg-info/entry_points.txt +2 -0
- shell_is_all_you_need-0.1.0/src/shell_is_all_you_need.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Good Boy
|
|
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,23 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: shell-is-all-you-need
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Zero-dependency launcher for the shell-is-all-you-need MCP server
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Homepage, https://shell-is-all-you-need.github.io/
|
|
7
|
+
Project-URL: Repository, https://github.com/shell-is-all-you-need/mcp
|
|
8
|
+
Project-URL: Issues, https://github.com/shell-is-all-you-need/mcp/issues
|
|
9
|
+
Keywords: mcp,cli,shell,ai
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Requires-Python: >=3.9
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Dynamic: license-file
|
|
16
|
+
|
|
17
|
+
# shell-is-all-you-need
|
|
18
|
+
|
|
19
|
+
Zero-dependency Python launcher for the `shell-is-all-you-need` MCP server. It downloads the matching versioned GitHub Release binary on first run, verifies its SHA-256 checksum, and caches it.
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
uvx shell-is-all-you-need --help
|
|
23
|
+
```
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# shell-is-all-you-need
|
|
2
|
+
|
|
3
|
+
Zero-dependency Python launcher for the `shell-is-all-you-need` MCP server. It downloads the matching versioned GitHub Release binary on first run, verifies its SHA-256 checksum, and caches it.
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
uvx shell-is-all-you-need --help
|
|
7
|
+
```
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=77"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "shell-is-all-you-need"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Zero-dependency launcher for the shell-is-all-you-need MCP server"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.9"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
dependencies = []
|
|
14
|
+
keywords = ["mcp", "cli", "shell", "ai"]
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Environment :: Console",
|
|
17
|
+
"Programming Language :: Python :: 3",
|
|
18
|
+
]
|
|
19
|
+
|
|
20
|
+
[project.scripts]
|
|
21
|
+
shell-is-all-you-need = "shell_is_all_you_need:main"
|
|
22
|
+
|
|
23
|
+
[project.urls]
|
|
24
|
+
Homepage = "https://shell-is-all-you-need.github.io/"
|
|
25
|
+
Repository = "https://github.com/shell-is-all-you-need/mcp"
|
|
26
|
+
Issues = "https://github.com/shell-is-all-you-need/mcp/issues"
|
|
27
|
+
|
|
28
|
+
[tool.setuptools.packages.find]
|
|
29
|
+
where = ["src"]
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"""Launcher for the shell-is-all-you-need release binary."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import hashlib
|
|
6
|
+
import os
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
import platform
|
|
9
|
+
import sys
|
|
10
|
+
import tempfile
|
|
11
|
+
from urllib.request import Request, urlopen
|
|
12
|
+
|
|
13
|
+
__version__ = "0.1.0"
|
|
14
|
+
_REPOSITORY = os.environ.get(
|
|
15
|
+
"SHELL_IS_ALL_YOU_NEED_GITHUB_REPOSITORY", "shell-is-all-you-need/mcp"
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def _target() -> tuple[str, str]:
|
|
20
|
+
system = platform.system().lower()
|
|
21
|
+
machine = platform.machine().lower()
|
|
22
|
+
aliases = {"amd64": "x86_64", "x64": "x86_64", "arm64": "aarch64"}
|
|
23
|
+
machine = aliases.get(machine, machine)
|
|
24
|
+
targets = {
|
|
25
|
+
("linux", "x86_64"): ("x86_64-unknown-linux-musl", ""),
|
|
26
|
+
("linux", "aarch64"): ("aarch64-unknown-linux-musl", ""),
|
|
27
|
+
("darwin", "x86_64"): ("x86_64-apple-darwin", ""),
|
|
28
|
+
("darwin", "aarch64"): ("aarch64-apple-darwin", ""),
|
|
29
|
+
("windows", "x86_64"): ("x86_64-pc-windows-msvc", ".exe"),
|
|
30
|
+
("windows", "aarch64"): ("aarch64-pc-windows-msvc", ".exe"),
|
|
31
|
+
}
|
|
32
|
+
try:
|
|
33
|
+
return targets[(system, machine)]
|
|
34
|
+
except KeyError as error:
|
|
35
|
+
raise RuntimeError(f"unsupported platform: {system}/{machine}") from error
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _cache_root() -> Path:
|
|
39
|
+
override = os.environ.get("SHELL_IS_ALL_YOU_NEED_CACHE_DIR")
|
|
40
|
+
if override:
|
|
41
|
+
return Path(override).expanduser()
|
|
42
|
+
system = platform.system().lower()
|
|
43
|
+
if system == "windows" and os.environ.get("LOCALAPPDATA"):
|
|
44
|
+
return Path(os.environ["LOCALAPPDATA"]) / "shell-is-all-you-need"
|
|
45
|
+
if system == "darwin":
|
|
46
|
+
return Path.home() / "Library" / "Caches" / "shell-is-all-you-need"
|
|
47
|
+
return Path(os.environ.get("XDG_CACHE_HOME", Path.home() / ".cache")) / "shell-is-all-you-need"
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _download(url: str) -> bytes:
|
|
51
|
+
request = Request(url, headers={"User-Agent": f"shell-is-all-you-need-pypi/{__version__}"})
|
|
52
|
+
with urlopen(request, timeout=60) as response:
|
|
53
|
+
return response.read()
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _binary() -> Path:
|
|
57
|
+
override = os.environ.get("SHELL_IS_ALL_YOU_NEED_BINARY")
|
|
58
|
+
if override:
|
|
59
|
+
return Path(override).expanduser().resolve()
|
|
60
|
+
|
|
61
|
+
triple, extension = _target()
|
|
62
|
+
asset = f"shell-is-all-you-need-{triple}{extension}"
|
|
63
|
+
destination = _cache_root() / __version__ / asset
|
|
64
|
+
if destination.is_file():
|
|
65
|
+
return destination
|
|
66
|
+
|
|
67
|
+
destination.parent.mkdir(parents=True, exist_ok=True)
|
|
68
|
+
base = f"https://github.com/{_REPOSITORY}/releases/download/v{__version__}/{asset}"
|
|
69
|
+
binary = _download(base)
|
|
70
|
+
checksum_text = _download(base + ".sha256").decode("ascii").strip()
|
|
71
|
+
expected = checksum_text.split()[0] if checksum_text else ""
|
|
72
|
+
if len(expected) != 64 or any(ch not in "0123456789abcdefABCDEF" for ch in expected):
|
|
73
|
+
raise RuntimeError("release checksum has an invalid format")
|
|
74
|
+
actual = hashlib.sha256(binary).hexdigest()
|
|
75
|
+
if actual.lower() != expected.lower():
|
|
76
|
+
raise RuntimeError(f"SHA-256 mismatch for {asset}")
|
|
77
|
+
|
|
78
|
+
fd, temporary_name = tempfile.mkstemp(prefix=asset + ".", dir=destination.parent)
|
|
79
|
+
temporary = Path(temporary_name)
|
|
80
|
+
try:
|
|
81
|
+
with os.fdopen(fd, "wb") as output:
|
|
82
|
+
output.write(binary)
|
|
83
|
+
if os.name != "nt":
|
|
84
|
+
temporary.chmod(0o755)
|
|
85
|
+
temporary.replace(destination)
|
|
86
|
+
finally:
|
|
87
|
+
temporary.unlink(missing_ok=True)
|
|
88
|
+
return destination
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
def main() -> None:
|
|
92
|
+
binary = _binary()
|
|
93
|
+
os.execv(binary, [str(binary), *sys.argv[1:]])
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: shell-is-all-you-need
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Zero-dependency launcher for the shell-is-all-you-need MCP server
|
|
5
|
+
License-Expression: MIT
|
|
6
|
+
Project-URL: Homepage, https://shell-is-all-you-need.github.io/
|
|
7
|
+
Project-URL: Repository, https://github.com/shell-is-all-you-need/mcp
|
|
8
|
+
Project-URL: Issues, https://github.com/shell-is-all-you-need/mcp/issues
|
|
9
|
+
Keywords: mcp,cli,shell,ai
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Requires-Python: >=3.9
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: LICENSE
|
|
15
|
+
Dynamic: license-file
|
|
16
|
+
|
|
17
|
+
# shell-is-all-you-need
|
|
18
|
+
|
|
19
|
+
Zero-dependency Python launcher for the `shell-is-all-you-need` MCP server. It downloads the matching versioned GitHub Release binary on first run, verifies its SHA-256 checksum, and caches it.
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
uvx shell-is-all-you-need --help
|
|
23
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
src/shell_is_all_you_need/__init__.py
|
|
5
|
+
src/shell_is_all_you_need/__main__.py
|
|
6
|
+
src/shell_is_all_you_need.egg-info/PKG-INFO
|
|
7
|
+
src/shell_is_all_you_need.egg-info/SOURCES.txt
|
|
8
|
+
src/shell_is_all_you_need.egg-info/dependency_links.txt
|
|
9
|
+
src/shell_is_all_you_need.egg-info/entry_points.txt
|
|
10
|
+
src/shell_is_all_you_need.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
shell_is_all_you_need
|