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.
Files changed (55) hide show
  1. hyrin-0.3.10/.gitignore +91 -0
  2. hyrin-0.3.10/LICENSE +21 -0
  3. hyrin-0.3.10/PKG-INFO +92 -0
  4. hyrin-0.3.10/README.md +62 -0
  5. hyrin-0.3.10/hyrin/__init__.py +1 -0
  6. hyrin-0.3.10/hyrin/__main__.py +3 -0
  7. hyrin-0.3.10/hyrin/app.py +1250 -0
  8. hyrin-0.3.10/hyrin/cli.py +68 -0
  9. hyrin-0.3.10/hyrin/client/__init__.py +0 -0
  10. hyrin-0.3.10/hyrin/client/activity.py +154 -0
  11. hyrin-0.3.10/hyrin/client/cable.py +248 -0
  12. hyrin-0.3.10/hyrin/client/chat.py +301 -0
  13. hyrin-0.3.10/hyrin/client/pair.py +49 -0
  14. hyrin-0.3.10/hyrin/client/types.py +162 -0
  15. hyrin-0.3.10/hyrin/config.py +11 -0
  16. hyrin-0.3.10/hyrin/constants.py +24 -0
  17. hyrin-0.3.10/hyrin/tools/__init__.py +0 -0
  18. hyrin-0.3.10/hyrin/tools/exec.py +43 -0
  19. hyrin-0.3.10/hyrin/tools/fs.py +76 -0
  20. hyrin-0.3.10/hyrin/tools/registry.py +184 -0
  21. hyrin-0.3.10/hyrin/tools/safety.py +140 -0
  22. hyrin-0.3.10/hyrin/ui/__init__.py +0 -0
  23. hyrin-0.3.10/hyrin/ui/theme.py +103 -0
  24. hyrin-0.3.10/hyrin/ui/widgets.py +269 -0
  25. hyrin-0.3.10/pyproject.toml +52 -0
  26. hyrin-0.3.10/tests/__init__.py +0 -0
  27. hyrin-0.3.10/tests/conftest.py +4 -0
  28. hyrin-0.3.10/tests/test_activity.py +194 -0
  29. hyrin-0.3.10/tests/test_app_pilot.py +480 -0
  30. hyrin-0.3.10/tests/test_app_reliability.py +201 -0
  31. hyrin-0.3.10/tests/test_app_stream.py +157 -0
  32. hyrin-0.3.10/tests/test_cable.py +270 -0
  33. hyrin-0.3.10/tests/test_chat.py +264 -0
  34. hyrin-0.3.10/tests/test_cli.py +46 -0
  35. hyrin-0.3.10/tests/test_e2e.py +103 -0
  36. hyrin-0.3.10/tests/test_exec.py +36 -0
  37. hyrin-0.3.10/tests/test_fs.py +69 -0
  38. hyrin-0.3.10/tests/test_layout_density.py +143 -0
  39. hyrin-0.3.10/tests/test_lifecycle.py +213 -0
  40. hyrin-0.3.10/tests/test_logger_permissions.py +44 -0
  41. hyrin-0.3.10/tests/test_mode_badge.py +119 -0
  42. hyrin-0.3.10/tests/test_pair.py +61 -0
  43. hyrin-0.3.10/tests/test_phase_chip.py +140 -0
  44. hyrin-0.3.10/tests/test_registry.py +124 -0
  45. hyrin-0.3.10/tests/test_safety.py +91 -0
  46. hyrin-0.3.10/tests/test_scroll.py +85 -0
  47. hyrin-0.3.10/tests/test_smoke.py +9 -0
  48. hyrin-0.3.10/tests/test_status_bar.py +121 -0
  49. hyrin-0.3.10/tests/test_types.py +139 -0
  50. hyrin-0.3.10/tests/test_widgets.py +89 -0
  51. hyrin-0.3.10/tests/unit/__init__.py +0 -0
  52. hyrin-0.3.10/tests/unit/test_app_correctness.py +358 -0
  53. hyrin-0.3.10/tests/unit/test_app_polish.py +278 -0
  54. hyrin-0.3.10/tests/unit/test_constants.py +88 -0
  55. hyrin-0.3.10/uv.lock +930 -0
@@ -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"
@@ -0,0 +1,3 @@
1
+ from .cli import main
2
+ import sys
3
+ sys.exit(main())