ring-cli 0.11.3__tar.gz → 0.11.4__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. {ring_cli-0.11.3 → ring_cli-0.11.4}/PKG-INFO +4 -2
  2. {ring_cli-0.11.3 → ring_cli-0.11.4}/README.en.md +3 -1
  3. {ring_cli-0.11.3 → ring_cli-0.11.4}/pyproject.toml +1 -1
  4. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/hook.py +3 -2
  5. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/hook_protocol.py +7 -0
  6. {ring_cli-0.11.3 → ring_cli-0.11.4}/LICENSE +0 -0
  7. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/__init__.py +0 -0
  8. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/__main__.py +0 -0
  9. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/cli.py +0 -0
  10. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/__init__.py +0 -0
  11. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/_args.py +0 -0
  12. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/completion.py +0 -0
  13. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/digest.py +0 -0
  14. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/doctor.py +0 -0
  15. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/focus.py +0 -0
  16. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/gc.py +0 -0
  17. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/hook.py +0 -0
  18. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/stats.py +0 -0
  19. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/config.py +0 -0
  20. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/__init__.py +0 -0
  21. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/applescript.py +0 -0
  22. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/base.py +0 -0
  23. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/iterm2.py +0 -0
  24. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/linux_wm.py +0 -0
  25. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/neovim.py +0 -0
  26. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/terminal.py +0 -0
  27. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/tmux.py +0 -0
  28. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/gc.py +0 -0
  29. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/i18n.py +0 -0
  30. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/ipc.py +0 -0
  31. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/labels.py +0 -0
  32. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/locale/en/LC_MESSAGES/ring.mo +0 -0
  33. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/locale/en/LC_MESSAGES/ring.po +0 -0
  34. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/locale/ring.pot +0 -0
  35. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/__init__.py +0 -0
  36. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/base.py +0 -0
  37. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/command.py +0 -0
  38. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/notify_send.py +0 -0
  39. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/ntfy.py +0 -0
  40. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/osascript_notifier.py +0 -0
  41. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/terminal_notifier.py +0 -0
  42. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/webhook.py +0 -0
  43. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/osascript.py +0 -0
  44. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/permission.py +0 -0
  45. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/plugins.py +0 -0
  46. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/registry.py +0 -0
  47. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/sources/__init__.py +0 -0
  48. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/sources/base.py +0 -0
  49. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/sources/claude_code.py +0 -0
  50. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/sources/codex.py +0 -0
  51. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/sources/hook_registry.py +0 -0
  52. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/stats.py +0 -0
  53. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/transcript.py +0 -0
  54. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/tui.py +0 -0
  55. {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/watcher.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ring-cli
3
- Version: 0.11.3
3
+ Version: 0.11.4
4
4
  Summary: RiNG — Realtime Instance Notification Grid for active agent CLI sessions.
5
5
  Keywords: claude-code,codex,tui,dashboard,session,monitor,rich
6
6
  Author: Wei Lee
@@ -319,7 +319,9 @@ Claude Code events:
319
319
  | `PermissionRequest` / `PreToolUse` with `AskUserQuestion` | 🔴 waiting |
320
320
  | `SessionEnd` | removed from the board |
321
321
 
322
- Codex currently installs the supported interactive events: `PreToolUse`, `PermissionRequest`, and `Stop`.
322
+ Codex currently installs the supported interactive events: `PreToolUse`, `PermissionRequest`, and `Stop`. Codex
323
+ also emits `PermissionRequest` before an existing policy auto-approves the call; a bare event therefore stays
324
+ 🟢 working, and it only turns 🔴 waiting when the payload explicitly carries `requires_action` / `waiting_for`.
323
325
 
324
326
  Verify that hooks are writing:
325
327
 
@@ -294,7 +294,9 @@ Claude Code events:
294
294
  | `PermissionRequest` / `PreToolUse` with `AskUserQuestion` | 🔴 waiting |
295
295
  | `SessionEnd` | removed from the board |
296
296
 
297
- Codex currently installs the supported interactive events: `PreToolUse`, `PermissionRequest`, and `Stop`.
297
+ Codex currently installs the supported interactive events: `PreToolUse`, `PermissionRequest`, and `Stop`. Codex
298
+ also emits `PermissionRequest` before an existing policy auto-approves the call; a bare event therefore stays
299
+ 🟢 working, and it only turns 🔴 waiting when the payload explicitly carries `requires_action` / `waiting_for`.
298
300
 
299
301
  Verify that hooks are writing:
300
302
 
@@ -2,7 +2,7 @@
2
2
  # import 的 module(見 [tool.uv.build-backend] module-name)與 CLI 指令仍是 `ring`。
3
3
  [project]
4
4
  name = "ring-cli"
5
- version = "0.11.3"
5
+ version = "0.11.4"
6
6
  description = "RiNG — Realtime Instance Notification Grid for active agent CLI sessions."
7
7
  readme = "README.en.md"
8
8
  requires-python = ">=3.13"
@@ -44,8 +44,9 @@ from ring.transcript import _extract_todo, _latest_action, _tail_records
44
44
  _HOOK_EVENTS = list(HOOK_EVENTS)
45
45
 
46
46
  # Codex 的 hooks.json 用跟 Claude 同樣的 PascalCase 事件名,但只支援其中一小撮。
47
- # 保守取有實證可用的:PermissionRequest(→ 🔴 等核可)、PreToolUse(→ 動作/清除)、
48
- # Stop(→ 🟡 回合結束、清掉 waiting)。多裝 Codex 不認的事件有風險,故不照搬 Claude 全套。
47
+ # 保守取有實證可用的:PermissionRequest(裸事件只代表權限準備判定;明確需互動才 → 🔴)、
48
+ # PreToolUse(→ 動作/清除)、Stop(→ 🟡 回合結束、清掉 waiting)。多裝 Codex 不認的事件
49
+ # 有風險,故不照搬 Claude 全套。
49
50
  _CODEX_HOOK_EVENTS = ["PreToolUse", "PermissionRequest", "Stop"]
50
51
 
51
52
  # hook command 的 timeout(秒)。給足,因為 notify_backend="agent-hooks" 時權限 modal 會
@@ -105,6 +105,13 @@ class CommonHookAdapter:
105
105
  status = Status.WORKING
106
106
  elif explicit_requires_action is not None:
107
107
  status = Status.WAITING if explicit_requires_action else Status.IDLE
108
+ elif event == "PermissionRequest" and self.provider == "codex":
109
+ # Codex 會在權限「準備判定」時送 PermissionRequest;即使既有 policy
110
+ # 隨後自動放行、畫面從未停下來等人,也會經過這個 hook。裸事件因此只能
111
+ # 證明 agent 還在處理工具呼叫,不能當成使用者需要回應。若 payload 有
112
+ # requires_action / waiting_for 等明確訊號,已由上面的分支判成 WAITING;
113
+ # 明確的 requires_action=false 也在上面判成 IDLE,不會落到這裡的 WORKING。
114
+ status = Status.WORKING
108
115
  elif event == "Notification":
109
116
  status = Status.WAITING if _is_action_required_notification(data) else Status.IDLE
110
117
  elif event == "PreToolUse":
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes