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.
- {ring_cli-0.11.3 → ring_cli-0.11.4}/PKG-INFO +4 -2
- {ring_cli-0.11.3 → ring_cli-0.11.4}/README.en.md +3 -1
- {ring_cli-0.11.3 → ring_cli-0.11.4}/pyproject.toml +1 -1
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/hook.py +3 -2
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/hook_protocol.py +7 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/LICENSE +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/__init__.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/__main__.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/cli.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/__init__.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/_args.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/completion.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/digest.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/doctor.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/focus.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/gc.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/hook.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/commands/stats.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/config.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/__init__.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/applescript.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/base.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/iterm2.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/linux_wm.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/neovim.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/terminal.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/focus/tmux.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/gc.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/i18n.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/ipc.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/labels.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/locale/en/LC_MESSAGES/ring.mo +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/locale/en/LC_MESSAGES/ring.po +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/locale/ring.pot +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/__init__.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/base.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/command.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/notify_send.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/ntfy.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/osascript_notifier.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/terminal_notifier.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/notify/webhook.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/osascript.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/permission.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/plugins.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/registry.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/sources/__init__.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/sources/base.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/sources/claude_code.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/sources/codex.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/sources/hook_registry.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/stats.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/transcript.py +0 -0
- {ring_cli-0.11.3 → ring_cli-0.11.4}/src/ring/tui.py +0 -0
- {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
|
+
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.
|
|
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
|
|
48
|
-
# Stop(→ 🟡 回合結束、清掉 waiting)。多裝 Codex
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|