hyrin 0.3.10__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.
- hyrin-0.3.10/.gitignore +91 -0
- hyrin-0.3.10/LICENSE +21 -0
- hyrin-0.3.10/PKG-INFO +92 -0
- hyrin-0.3.10/README.md +62 -0
- hyrin-0.3.10/hyrin/__init__.py +1 -0
- hyrin-0.3.10/hyrin/__main__.py +3 -0
- hyrin-0.3.10/hyrin/app.py +1250 -0
- hyrin-0.3.10/hyrin/cli.py +68 -0
- hyrin-0.3.10/hyrin/client/__init__.py +0 -0
- hyrin-0.3.10/hyrin/client/activity.py +154 -0
- hyrin-0.3.10/hyrin/client/cable.py +248 -0
- hyrin-0.3.10/hyrin/client/chat.py +301 -0
- hyrin-0.3.10/hyrin/client/pair.py +49 -0
- hyrin-0.3.10/hyrin/client/types.py +162 -0
- hyrin-0.3.10/hyrin/config.py +11 -0
- hyrin-0.3.10/hyrin/constants.py +24 -0
- hyrin-0.3.10/hyrin/tools/__init__.py +0 -0
- hyrin-0.3.10/hyrin/tools/exec.py +43 -0
- hyrin-0.3.10/hyrin/tools/fs.py +76 -0
- hyrin-0.3.10/hyrin/tools/registry.py +184 -0
- hyrin-0.3.10/hyrin/tools/safety.py +140 -0
- hyrin-0.3.10/hyrin/ui/__init__.py +0 -0
- hyrin-0.3.10/hyrin/ui/theme.py +103 -0
- hyrin-0.3.10/hyrin/ui/widgets.py +269 -0
- hyrin-0.3.10/pyproject.toml +52 -0
- hyrin-0.3.10/tests/__init__.py +0 -0
- hyrin-0.3.10/tests/conftest.py +4 -0
- hyrin-0.3.10/tests/test_activity.py +194 -0
- hyrin-0.3.10/tests/test_app_pilot.py +480 -0
- hyrin-0.3.10/tests/test_app_reliability.py +201 -0
- hyrin-0.3.10/tests/test_app_stream.py +157 -0
- hyrin-0.3.10/tests/test_cable.py +270 -0
- hyrin-0.3.10/tests/test_chat.py +264 -0
- hyrin-0.3.10/tests/test_cli.py +46 -0
- hyrin-0.3.10/tests/test_e2e.py +103 -0
- hyrin-0.3.10/tests/test_exec.py +36 -0
- hyrin-0.3.10/tests/test_fs.py +69 -0
- hyrin-0.3.10/tests/test_layout_density.py +143 -0
- hyrin-0.3.10/tests/test_lifecycle.py +213 -0
- hyrin-0.3.10/tests/test_logger_permissions.py +44 -0
- hyrin-0.3.10/tests/test_mode_badge.py +119 -0
- hyrin-0.3.10/tests/test_pair.py +61 -0
- hyrin-0.3.10/tests/test_phase_chip.py +140 -0
- hyrin-0.3.10/tests/test_registry.py +124 -0
- hyrin-0.3.10/tests/test_safety.py +91 -0
- hyrin-0.3.10/tests/test_scroll.py +85 -0
- hyrin-0.3.10/tests/test_smoke.py +9 -0
- hyrin-0.3.10/tests/test_status_bar.py +121 -0
- hyrin-0.3.10/tests/test_types.py +139 -0
- hyrin-0.3.10/tests/test_widgets.py +89 -0
- hyrin-0.3.10/tests/unit/__init__.py +0 -0
- hyrin-0.3.10/tests/unit/test_app_correctness.py +358 -0
- hyrin-0.3.10/tests/unit/test_app_polish.py +278 -0
- hyrin-0.3.10/tests/unit/test_constants.py +88 -0
- hyrin-0.3.10/uv.lock +930 -0
hyrin-0.3.10/.gitignore
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
|
2
|
+
#
|
|
3
|
+
# Temporary files generated by your text editor or operating system
|
|
4
|
+
# belong in git's global ignore instead:
|
|
5
|
+
# `$XDG_CONFIG_HOME/git/ignore` or `~/.config/git/ignore`
|
|
6
|
+
|
|
7
|
+
# Ignore bundler config.
|
|
8
|
+
/.bundle
|
|
9
|
+
|
|
10
|
+
# VS Code extension build artifacts.
|
|
11
|
+
/extension/*.vsix
|
|
12
|
+
|
|
13
|
+
# Ignore all environment files (except examples).
|
|
14
|
+
/.env*
|
|
15
|
+
!/.env.example
|
|
16
|
+
|
|
17
|
+
# Ignore all logfiles and tempfiles.
|
|
18
|
+
/log/*
|
|
19
|
+
/tmp/*
|
|
20
|
+
!/log/.keep
|
|
21
|
+
!/tmp/.keep
|
|
22
|
+
|
|
23
|
+
# Ignore pidfiles, but keep the directory.
|
|
24
|
+
/tmp/pids/*
|
|
25
|
+
!/tmp/pids/
|
|
26
|
+
!/tmp/pids/.keep
|
|
27
|
+
|
|
28
|
+
# Ignore storage (uploaded files in development and any SQLite databases).
|
|
29
|
+
/storage/*
|
|
30
|
+
!/storage/.keep
|
|
31
|
+
/tmp/storage/*
|
|
32
|
+
!/tmp/storage/
|
|
33
|
+
!/tmp/storage/.keep
|
|
34
|
+
|
|
35
|
+
/public/assets
|
|
36
|
+
/public/vite
|
|
37
|
+
/public/vite-dev
|
|
38
|
+
/public/vite-test
|
|
39
|
+
|
|
40
|
+
# Node modules
|
|
41
|
+
/node_modules
|
|
42
|
+
/cli/node_modules
|
|
43
|
+
|
|
44
|
+
# Ignore key files for decrypting credentials and more.
|
|
45
|
+
/config/*.key
|
|
46
|
+
|
|
47
|
+
# Kamal secrets — real values pulled from operator's env at deploy time.
|
|
48
|
+
# Template lives at .kamal/secrets.example and IS committed.
|
|
49
|
+
/.kamal/secrets
|
|
50
|
+
|
|
51
|
+
# IDE
|
|
52
|
+
/.idea/
|
|
53
|
+
|
|
54
|
+
# Superpowers brainstorming files
|
|
55
|
+
/.superpowers/
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
# Python virtualenv
|
|
59
|
+
.venv/
|
|
60
|
+
|
|
61
|
+
# Python bytecode
|
|
62
|
+
__pycache__/
|
|
63
|
+
*.pyc
|
|
64
|
+
*.pyo
|
|
65
|
+
*.pyd
|
|
66
|
+
|
|
67
|
+
# CLI build output
|
|
68
|
+
cli/dist/
|
|
69
|
+
|
|
70
|
+
# Test scratch files
|
|
71
|
+
test_session/
|
|
72
|
+
cli/test_file_test.spec.ts
|
|
73
|
+
|
|
74
|
+
# Claude Code worktrees (ephemeral)
|
|
75
|
+
.claude/worktrees/
|
|
76
|
+
|
|
77
|
+
# Git worktrees (isolated workspaces, never tracked).
|
|
78
|
+
/.worktrees
|
|
79
|
+
|
|
80
|
+
extension/node_modules/
|
|
81
|
+
extension/dist/
|
|
82
|
+
|
|
83
|
+
# Brainstorming visual companion sessions
|
|
84
|
+
.superpowers/
|
|
85
|
+
|
|
86
|
+
# Playwright MCP session logs
|
|
87
|
+
.playwright-mcp/
|
|
88
|
+
|
|
89
|
+
# Local debugging screenshots (dashboard checks, deployed-page captures)
|
|
90
|
+
/dashboard-*.png
|
|
91
|
+
/deployed-*.png
|
hyrin-0.3.10/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nikshep A V
|
|
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.
|
hyrin-0.3.10/PKG-INFO
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: hyrin
|
|
3
|
+
Version: 0.3.10
|
|
4
|
+
Summary: Candidate CLI for Hyrin interview sessions
|
|
5
|
+
Project-URL: Homepage, https://62-238-24-64.sslip.io/
|
|
6
|
+
Project-URL: Repository, https://github.com/navrikk/hyrin
|
|
7
|
+
Project-URL: Issues, https://github.com/navrikk/hyrin/issues
|
|
8
|
+
Author-email: Nikshep A V <nikshep.av@gmail.com>
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: candidate,hyrin,interview,tui
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Environment :: Console :: Curses
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Operating System :: MacOS
|
|
16
|
+
Classifier: Operating System :: POSIX
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Software Development
|
|
20
|
+
Requires-Python: >=3.12
|
|
21
|
+
Requires-Dist: httpx>=0.27
|
|
22
|
+
Requires-Dist: pydantic>=2
|
|
23
|
+
Requires-Dist: textual>=0.70
|
|
24
|
+
Requires-Dist: websockets>=12
|
|
25
|
+
Provides-Extra: dev
|
|
26
|
+
Requires-Dist: aiohttp>=3.9; extra == 'dev'
|
|
27
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
|
|
28
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
|
|
31
|
+
# hyrin (Python + Textual)
|
|
32
|
+
|
|
33
|
+
Candidate CLI for Hyrin interview sessions. Drives pairing, chat, local
|
|
34
|
+
tool execution, and codebase-state capture for the interviewer.
|
|
35
|
+
|
|
36
|
+
## Install (candidate)
|
|
37
|
+
|
|
38
|
+
Recommended — provisions Python 3.12 in an isolated environment:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
uv tool install --python 3.12 hyrin
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Alternative (requires Python ≥ 3.12 already installed):
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
pipx install hyrin
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Plain pip works but pollutes site-packages; not recommended:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pip install hyrin
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Tested on macOS and Linux. Windows is not supported in v1.0.
|
|
57
|
+
|
|
58
|
+
## Uninstall
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
uv tool uninstall hyrin # if installed via uv
|
|
62
|
+
pipx uninstall hyrin # if installed via pipx
|
|
63
|
+
pip uninstall hyrin # if installed via pip
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Run
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
hyrin <PAIRING_CODE> [--cwd <PATH>] [--server <URL>]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Defaults: `--cwd` = current directory; `--server` = `http://localhost:3100`.
|
|
73
|
+
|
|
74
|
+
## Develop
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
cd cli
|
|
78
|
+
python -m pip install -e ".[dev]"
|
|
79
|
+
python -m pytest -v
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`hyrin/` holds the package; `tests/` holds pytest + Textual Pilot tests.
|
|
83
|
+
|
|
84
|
+
## Architecture
|
|
85
|
+
|
|
86
|
+
- `client/` — protocol-only (httpx, websockets, pydantic). No Textual imports.
|
|
87
|
+
- `tools/` — local FS + `run_command` execution gated through `safety.py`.
|
|
88
|
+
- `ui/` — Textual widgets and CSS. No transport imports.
|
|
89
|
+
- `app.py` — the only place transports meet UI; owns the state machine.
|
|
90
|
+
|
|
91
|
+
See `docs/superpowers/specs/2026-04-16-textual-cli-rewrite-design.md`
|
|
92
|
+
for the full design.
|
hyrin-0.3.10/README.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# hyrin (Python + Textual)
|
|
2
|
+
|
|
3
|
+
Candidate CLI for Hyrin interview sessions. Drives pairing, chat, local
|
|
4
|
+
tool execution, and codebase-state capture for the interviewer.
|
|
5
|
+
|
|
6
|
+
## Install (candidate)
|
|
7
|
+
|
|
8
|
+
Recommended — provisions Python 3.12 in an isolated environment:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
uv tool install --python 3.12 hyrin
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Alternative (requires Python ≥ 3.12 already installed):
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
pipx install hyrin
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Plain pip works but pollutes site-packages; not recommended:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
pip install hyrin
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Tested on macOS and Linux. Windows is not supported in v1.0.
|
|
27
|
+
|
|
28
|
+
## Uninstall
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
uv tool uninstall hyrin # if installed via uv
|
|
32
|
+
pipx uninstall hyrin # if installed via pipx
|
|
33
|
+
pip uninstall hyrin # if installed via pip
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Run
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
hyrin <PAIRING_CODE> [--cwd <PATH>] [--server <URL>]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Defaults: `--cwd` = current directory; `--server` = `http://localhost:3100`.
|
|
43
|
+
|
|
44
|
+
## Develop
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
cd cli
|
|
48
|
+
python -m pip install -e ".[dev]"
|
|
49
|
+
python -m pytest -v
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
`hyrin/` holds the package; `tests/` holds pytest + Textual Pilot tests.
|
|
53
|
+
|
|
54
|
+
## Architecture
|
|
55
|
+
|
|
56
|
+
- `client/` — protocol-only (httpx, websockets, pydantic). No Textual imports.
|
|
57
|
+
- `tools/` — local FS + `run_command` execution gated through `safety.py`.
|
|
58
|
+
- `ui/` — Textual widgets and CSS. No transport imports.
|
|
59
|
+
- `app.py` — the only place transports meet UI; owns the state machine.
|
|
60
|
+
|
|
61
|
+
See `docs/superpowers/specs/2026-04-16-textual-cli-rewrite-design.md`
|
|
62
|
+
for the full design.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.3.0-dev"
|