refactorai-cli 0.7.5__tar.gz → 0.7.6__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 (53) hide show
  1. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/PKG-INFO +2 -2
  2. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/pyproject.toml +2 -2
  3. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/__init__.py +1 -1
  4. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/watch_cmds.py +39 -11
  5. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli.egg-info/PKG-INFO +2 -2
  6. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli.egg-info/requires.txt +1 -1
  7. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/README.md +0 -0
  8. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/auth.py +0 -0
  9. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/client.py +0 -0
  10. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/cloud_rr.py +0 -0
  11. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/__init__.py +0 -0
  12. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/account_cmds.py +0 -0
  13. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/auth_cmds.py +0 -0
  14. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/branch_cmds.py +0 -0
  15. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/cloud_cmds.py +0 -0
  16. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/engine_cmds.py +0 -0
  17. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/hook_cmds.py +0 -0
  18. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/model_cmds.py +0 -0
  19. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/policy_cmds.py +0 -0
  20. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/pre_push_cmds.py +0 -0
  21. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/request_cmds.py +0 -0
  22. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/rules_cmds.py +0 -0
  23. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/run_cmds.py +0 -0
  24. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/runtime_cmds.py +0 -0
  25. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/runtime_proxy_cmds.py +0 -0
  26. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/setup_cmds.py +0 -0
  27. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/toolchains_cmds.py +0 -0
  28. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commands/workspace_cmds.py +0 -0
  29. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commit_queue.py +0 -0
  30. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/commit_telemetry.py +0 -0
  31. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/control_plane.py +0 -0
  32. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/credentials.py +0 -0
  33. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/dotenv_loader.py +0 -0
  34. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/git_scope.py +0 -0
  35. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/local_constitution.py +0 -0
  36. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/local_engine_runtime.py +0 -0
  37. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/local_paths.py +0 -0
  38. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/main.py +0 -0
  39. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/model_policy.py +0 -0
  40. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/pre_push_gate.py +0 -0
  41. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/refactor_branch_store.py +0 -0
  42. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/review_runner.py +0 -0
  43. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/runtime_manager.py +0 -0
  44. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/settings.py +0 -0
  45. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/setup_flow.py +0 -0
  46. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/watch_ledger.py +0 -0
  47. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/watch_state.py +0 -0
  48. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli/watch_supervisor.py +0 -0
  49. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli.egg-info/SOURCES.txt +0 -0
  50. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli.egg-info/dependency_links.txt +0 -0
  51. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli.egg-info/entry_points.txt +0 -0
  52. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/refactorai_cli.egg-info/top_level.txt +0 -0
  53. {refactorai_cli-0.7.5 → refactorai_cli-0.7.6}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: refactorai-cli
3
- Version: 0.7.5
3
+ Version: 0.7.6
4
4
  Summary: Local-first CLI for the refactor platform
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -8,7 +8,7 @@ Requires-Dist: typer>=0.12.0
8
8
  Requires-Dist: httpx>=0.27.0
9
9
  Requires-Dist: rich>=13.7.0
10
10
  Requires-Dist: PyYAML>=6.0.1
11
- Requires-Dist: refactorai-core>=3.2.17
11
+ Requires-Dist: refactorai-core>=3.2.18
12
12
 
13
13
  # refactorai-cli
14
14
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "refactorai-cli"
3
- version = "0.7.5"
3
+ version = "0.7.6"
4
4
  description = "Local-first CLI for the refactor platform"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -12,7 +12,7 @@ dependencies = [
12
12
  "httpx>=0.27.0",
13
13
  "rich>=13.7.0",
14
14
  "PyYAML>=6.0.1",
15
- "refactorai-core>=3.2.17",
15
+ "refactorai-core>=3.2.18",
16
16
  ]
17
17
 
18
18
  [project.scripts]
@@ -5,4 +5,4 @@ the shared `refactor_core` pipeline from a project folder while staying
5
5
  authenticated to the hosted platform via a developer key.
6
6
  """
7
7
 
8
- __version__ = "0.7.5"
8
+ __version__ = "0.7.6"
@@ -489,22 +489,40 @@ def process_pending(
489
489
  return reviewed
490
490
 
491
491
 
492
- def _read_key(timeout: float) -> str:
493
- """Non-blocking key read on a POSIX TTY, normalized to a token.
494
-
495
- Returns ``up``/``down`` for arrow keys, the raw character for normal keys
496
- (used for hotkeys like ``[r]`` and ``[f]``), ``esc`` for a
497
- bare Escape, or ``""`` when nothing was pressed / the terminal is not
498
- interactive. Sleeps ``timeout`` in the non-interactive case so the caller's
499
- poll cadence is preserved.
500
- """
501
- if not sys.stdin.isatty():
492
+ def _read_key_windows(timeout: float) -> str:
493
+ """Non-blocking key read on Windows consoles (PowerShell/cmd/Terminal)."""
494
+ try:
495
+ import msvcrt
496
+ except ImportError:
502
497
  time.sleep(timeout)
503
498
  return ""
499
+ deadline = time.monotonic() + max(0.0, float(timeout))
500
+ while True:
501
+ if msvcrt.kbhit():
502
+ ch = msvcrt.getwch()
503
+ # Windows emits extended keys as a two-char sequence:
504
+ # prefix (\x00 or \xe0) + code (H/P/K/M etc).
505
+ if ch in ("\x00", "\xe0"):
506
+ code = msvcrt.getwch() if msvcrt.kbhit() else ""
507
+ if code == "H":
508
+ return "up"
509
+ if code == "P":
510
+ return "down"
511
+ return ""
512
+ if ch == "\x1b":
513
+ return "esc"
514
+ return ch
515
+ if time.monotonic() >= deadline:
516
+ return ""
517
+ time.sleep(0.01)
518
+
519
+
520
+ def _read_key_posix(timeout: float) -> str:
521
+ """Non-blocking key read on a POSIX TTY, normalized to a token."""
504
522
  try:
505
523
  import termios
506
524
  import tty
507
- except ImportError: # non-POSIX
525
+ except ImportError:
508
526
  time.sleep(timeout)
509
527
  return ""
510
528
  fd = sys.stdin.fileno()
@@ -534,6 +552,16 @@ def _read_key(timeout: float) -> str:
534
552
  termios.tcsetattr(fd, termios.TCSADRAIN, old)
535
553
 
536
554
 
555
+ def _read_key(timeout: float) -> str:
556
+ """Cross-platform non-blocking key read for ``refactor watch`` hotkeys."""
557
+ if not sys.stdin.isatty():
558
+ time.sleep(timeout)
559
+ return ""
560
+ if os.name == "nt":
561
+ return _read_key_windows(timeout)
562
+ return _read_key_posix(timeout)
563
+
564
+
537
565
  def build_action_command(
538
566
  action: str,
539
567
  sha: str,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: refactorai-cli
3
- Version: 0.7.5
3
+ Version: 0.7.6
4
4
  Summary: Local-first CLI for the refactor platform
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -8,7 +8,7 @@ Requires-Dist: typer>=0.12.0
8
8
  Requires-Dist: httpx>=0.27.0
9
9
  Requires-Dist: rich>=13.7.0
10
10
  Requires-Dist: PyYAML>=6.0.1
11
- Requires-Dist: refactorai-core>=3.2.17
11
+ Requires-Dist: refactorai-core>=3.2.18
12
12
 
13
13
  # refactorai-cli
14
14
 
@@ -2,4 +2,4 @@ typer>=0.12.0
2
2
  httpx>=0.27.0
3
3
  rich>=13.7.0
4
4
  PyYAML>=6.0.1
5
- refactorai-core>=3.2.17
5
+ refactorai-core>=3.2.18
File without changes
File without changes