asher-cli 0.0.1__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.
@@ -0,0 +1,156 @@
1
+ Metadata-Version: 2.4
2
+ Name: asher-cli
3
+ Version: 0.0.1
4
+ Summary: Terminal dashboard for Litter Robot (LR3/LR4/LR5) via the Whisker cloud API
5
+ License: MIT License
6
+
7
+ Copyright (c) 2026 Karz
8
+
9
+ Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ of this software and associated documentation files (the "Software"), to deal
11
+ in the Software without restriction, including without limitation the rights
12
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ copies of the Software, and to permit persons to whom the Software is
14
+ furnished to do so, subject to the following conditions:
15
+
16
+ The above copyright notice and this permission notice shall be included in all
17
+ copies or substantial portions of the Software.
18
+
19
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ SOFTWARE.
26
+ License-File: LICENSE
27
+ Keywords: litter-robot,smart-home,terminal,tui,whisker
28
+ Classifier: Development Status :: 4 - Beta
29
+ Classifier: Environment :: Console
30
+ Classifier: License :: OSI Approved :: MIT License
31
+ Classifier: Programming Language :: Python :: 3
32
+ Classifier: Programming Language :: Python :: 3.10
33
+ Classifier: Programming Language :: Python :: 3.11
34
+ Classifier: Programming Language :: Python :: 3.12
35
+ Classifier: Topic :: Home Automation
36
+ Requires-Python: >=3.10
37
+ Requires-Dist: keyring>=24.0.0
38
+ Requires-Dist: pylitterbot>=3.0.0
39
+ Requires-Dist: python-dotenv>=1.0.0
40
+ Requires-Dist: rich>=13.0.0
41
+ Requires-Dist: textual>=0.47.0
42
+ Description-Content-Type: text/markdown
43
+
44
+ # Asher CLI
45
+
46
+ A Claude Code-style terminal dashboard for monitoring and controlling Litter Robot via the Whisker cloud API.
47
+
48
+ <img width="808" height="351" alt="image" src="https://github.com/user-attachments/assets/6599966f-837c-419c-8692-bfda3533e730" />
49
+
50
+ ## Features
51
+
52
+ - Live status bar — unit name, online/offline, drawer fill level, last activity, cat weight
53
+ - Human-readable robot status — translates raw API states into plain English (`Ready`, `Cleaning`, `Cat Detected`, `Drawer Full`, etc.)
54
+ - Scrollable activity log with timestamps
55
+ - Commands: `clean`, `status`, `lock`, `unlock`, `sleep`, `wake`, `night-light`, `history`, `help`, `quit`
56
+ - Slash commands for app management: `/login`, `/logout`, `/exit`
57
+ - Cat animation panel that reacts to robot state
58
+ - Command history (↑/↓ arrows)
59
+ - Auto-refreshes every 30 seconds
60
+
61
+ ## Install
62
+
63
+ ```bash
64
+ pip install asher-cli
65
+ asher
66
+ ```
67
+
68
+ Or run from source:
69
+
70
+ ```bash
71
+ git clone https://github.com/karanshukla/asher-cli
72
+ cd asher-cli
73
+ pip install -e .
74
+ asher
75
+ ```
76
+
77
+ ### Dev setup
78
+
79
+ ```bash
80
+ uv sync --dev
81
+ git config core.hooksPath .githooks # run lint + tests before every push
82
+ ```
83
+
84
+ ```bash
85
+ uv run poe check # ruff + mypy + pytest (same as CI)
86
+ uv run poe fix # auto-fix ruff issues
87
+ uv run poe test # tests only
88
+ uv run poe types # mypy only
89
+ ```
90
+
91
+ ## Credentials
92
+
93
+ On first run, type `/login` at the command prompt. Your credentials are saved to the OS keyring (Windows Credential Manager / macOS Keychain / Linux Secret Service) and reused automatically on subsequent runs.
94
+
95
+ To sign out: `/logout`
96
+
97
+ `.env` fallback (for CI or existing users):
98
+
99
+ ```env
100
+ LITTER_ROBOT_USER=your@email.com
101
+ LITTER_ROBOT_PASSWORD=yourpassword
102
+ ```
103
+
104
+ ## Commands
105
+
106
+ ### Robot commands
107
+
108
+ | Command | Description |
109
+ |---|---|
110
+ | `clean` | Start a clean cycle |
111
+ | `status` | Refresh and show what matters — online state, drawer level, last activity |
112
+ | `info` | Full dump of all robot properties (serial, firmware, all settings) |
113
+ | `lock` / `unlock` | Toggle panel lockout |
114
+ | `sleep` / `wake` | Toggle sleep mode |
115
+ | `night-light on\|off` | Toggle night light |
116
+ | `history` | Show last 25 activity events |
117
+ | `clear` | Clear the log |
118
+ | `help` | Show command list |
119
+ | `quit` | Exit |
120
+
121
+ ### Slash commands
122
+
123
+ | Command | Description |
124
+ |---|---|
125
+ | `/login` | Sign in or switch accounts |
126
+ | `/logout` | Sign out and clear saved credentials |
127
+ | `/exit` | Exit Asher CLI |
128
+
129
+ **Keyboard shortcuts:** `Ctrl+L` clears the log, `Ctrl+C` quits.
130
+
131
+ ## Releasing
132
+
133
+ ```bash
134
+ # bump version, commit, and tag in one step
135
+ uv run bump-my-version bump patch # 0.0.1 → 0.0.2
136
+ uv run bump-my-version bump minor # 0.0.2 → 0.1.0
137
+ uv run bump-my-version bump major # 0.1.0 → 1.0.0
138
+
139
+ # then push the release branch to trigger PyPI publish
140
+ git checkout -b release/0.0.2
141
+ git push origin release/0.0.2
142
+ ```
143
+
144
+ ## Testing
145
+
146
+ ```bash
147
+ uv run pytest
148
+ ```
149
+
150
+ CI runs on Python 3.10 / 3.11 / 3.12 across Ubuntu, Windows, and macOS on every push.
151
+
152
+ ## Notes
153
+
154
+ - Uses the unofficial [pylitterbot](https://github.com/natekspencer/pylitterbot) library — supports LR3, LR4, LR5, and other Whisker robots
155
+ - The Whisker API is reverse-engineered and may change without notice
156
+ - Auth errors and network failures are shown in the UI with friendly messages
@@ -0,0 +1,16 @@
1
+ asher/__init__.py,sha256=cIRw0aLgE2wmQhEV6dfjlVgR3rK8coFQlqDpWpuhV28,53
2
+ asher/__main__.py,sha256=MESC8JTsviYSZ3U89z6-5E2Sj_VvgoJOxlvf4fRJGNo,175
3
+ asher/app.py,sha256=rX03wzWZwM4g0KqY8gi1kF_ii_5S3hB78O0GP9jAhGY,2267
4
+ asher/auth.py,sha256=fSY9dhE9RdAqqH1VKBm37KufZESE_02QCmj_4AhA28c,2889
5
+ asher/cats.py,sha256=NPmlIhI67CFomJApHgpT43PzF1FlO_RiOEovFuUY1gM,1022
6
+ asher/helpers.py,sha256=NtH1qta7to2kVgPJv-dRgCtKBEN8r2Eyywk93FjVZy0,1311
7
+ asher/commands/__init__.py,sha256=kTVyGy3G211HxSW6C87bVlaG5nK9v6esInfCtsFCYsA,15516
8
+ asher/connection/__init__.py,sha256=bsCz_fAXbohmP8H_GIVaTyBEKVEQVolr5EaQSX82ZqE,4528
9
+ asher/monitoring/__init__.py,sha256=iDZwjBuCH1dSgIfC2VMu2X3PZJtSfqhjEMWlLxc3iEM,3977
10
+ asher/slash-commands/__init__.py,sha256=zsM9f_znf0roZbRo_20lHSqjqRdzylN5BA2Y06ZX0HQ,1093
11
+ asher/ui/__init__.py,sha256=OzhHUjFr3JUW8je--IcaWKFCd6n2OYEuNtSMqY-PLgA,7823
12
+ asher_cli-0.0.1.dist-info/METADATA,sha256=KywZ4J97TAaTGcZ3pUKaJeH81jiCb-LDIw6LKigVWCA,5267
13
+ asher_cli-0.0.1.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
14
+ asher_cli-0.0.1.dist-info/entry_points.txt,sha256=I52hYzTnbLcTJzV_8dqEvKbOEUY3Grui-vY3VfPlbpg,46
15
+ asher_cli-0.0.1.dist-info/licenses/LICENSE,sha256=kjaZixoCBIZwt_yA7wb1GFg5IQad-0WG-Hktlm279ik,1061
16
+ asher_cli-0.0.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.30.1
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ asher = asher.__main__:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Karz
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.