codex-agent-view 0.4.6 → 0.4.7

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-agent-view",
3
- "version": "0.4.6",
3
+ "version": "0.4.7",
4
4
  "description": "Follow Codex work and participating agent progress in a clear, read-only live view inside the official Codex app.",
5
5
  "author": {
6
6
  "name": "Junho Yoon",
package/README.ko.md CHANGED
@@ -10,10 +10,10 @@ Codex Agent View는 Codex가 지금 어떤 작업을 수행하고 있고 어떤
10
10
 
11
11
  ### 빠른 시작: 설치 후에는 Codex 앱 안에서만 사용
12
12
 
13
- 이 README는 `codex-agent-view@0.4.6` 사용법을 설명한다. **최초 설치만** 일반 터미널에서 아래 exact-version 명령으로 진행한다.
13
+ 이 README는 `codex-agent-view@0.4.7` 사용법을 설명한다. **최초 설치만** 일반 터미널에서 아래 exact-version 명령으로 진행한다.
14
14
 
15
15
  ```bash
16
- npm install --global codex-agent-view@0.4.6
16
+ npm install --global codex-agent-view@0.4.7
17
17
  codex-agent-view install
18
18
  ```
19
19
 
@@ -40,7 +40,7 @@ Live UI의 기본 언어는 영어이며 language selector에서 **English**, **
40
40
 
41
41
  ### 현재 상태
42
42
 
43
- `0.4.6`은 lifecycle 정확성을 바로잡는 릴리스다. `SessionEnd`에 최종 우선순위를 부여하고, 끝나지 않은 child activity를 성공으로 추정하지 않은 정리하며, 늦게 도착한 event가 완료된 turn을 다시 실행 중으로 열지 못하게 한다. 종료 신호 없이 오래 남은 활동은 무기한 **실행 중**으로 두지 않고 **종료 미확인**으로 표시한다. 아래의 기존 제품 구성은 그대로 유지한다.
43
+ `0.4.7`은 lifecycle 정확성 patch를 완성한다. `SessionEnd` 최종 우선순위, 늦은 event 차단과 정직한 **종료 미확인** 표시에 더해, 정상 또는 늦게 도착한 `SubagentStop`과 `PostToolUse`가 recent activity의 대응 start 항목을 **중지됨** 또는 **완료**로 갱신한다. 따라서 종료된 agent나 tool의 이전 recent activity가 잘못 **실행 중**으로 남지 않는다. 아래의 기존 제품 구성은 그대로 유지한다.
44
44
 
45
45
  - 공식 Codex 앱의 내장 thread tools를 우선 사용하는 app-native active-task snapshot skill
46
46
  - `.codex-plugin/plugin.json`, local marketplace catalog, genuine Codex skill
@@ -214,16 +214,16 @@ Plugin enable/trust와 앱 재시작 뒤 생성되거나 재개되는 task는 tr
214
214
 
215
215
  ### npm 설치 명령 참고
216
216
 
217
- 아래 명령은 `0.4.6`을 exact version으로 설치한다.
217
+ 아래 명령은 `0.4.7`을 exact version으로 설치한다.
218
218
 
219
219
  ```bash
220
- npm install --global codex-agent-view@0.4.6
220
+ npm install --global codex-agent-view@0.4.7
221
221
  codex-agent-view install
222
222
  ```
223
223
 
224
224
  이 두 명령 뒤에는 Codex 앱을 완전히 다시 열고 Plugins 화면에서 설치·활성화와 hook trust를 확인한 다음 새 task를 만든다. 첫 trusted hook이 backend 준비와 event 전달을 내부 처리하므로 사용자가 monitor CLI를 실행하지 않는다. Plugin 카드의 **지금 사용해보기**로 `@codex-agent-view`를 선택하고 앱에서 `$show-agents`를 명시 선택한다. Panel을 닫은 뒤에도 같은 방식으로 skill을 다시 선택한다.
225
225
 
226
- `0.4.6` 설치 경로는 위의 global package 설치와 명시적인 `codex-agent-view install` command 조합이다. 이후 일반 사용은 Codex 앱 안에서 진행한다. 이전의 유효한 설치에서 upgrade하면 installation-owned read-only viewer credential을 유지하며, `0.4.3`에서 검증한 legacy `0.4.2` migration 동작도 그대로 보존한다. Token과 private URL은 출력하지 않는다.
226
+ `0.4.7` 설치 경로는 위의 global package 설치와 명시적인 `codex-agent-view install` command 조합이다. 이후 일반 사용은 Codex 앱 안에서 진행한다. 이전의 유효한 설치에서 upgrade하면 installation-owned read-only viewer credential을 유지하며, `0.4.3`에서 검증한 legacy `0.4.2` migration 동작도 그대로 보존한다. Token과 private URL은 출력하지 않는다.
227
227
 
228
228
  Version별 npm, install, migration, CI, tag와 GitHub Release evidence는 [docs/distribution.md](docs/distribution.md)에 보존한다. 각 evidence는 실제 확인한 뒤에만 갱신한다.
229
229
 
package/README.md CHANGED
@@ -8,12 +8,12 @@ Codex Agent View gives you a clear, read-only view of what Codex is working on a
8
8
 
9
9
  ## Quick start: install once, then stay inside the Codex app
10
10
 
11
- This README documents `codex-agent-view@0.4.6`. Use the exact-version command below for the one-time terminal installation.
11
+ This README documents `codex-agent-view@0.4.7`. Use the exact-version command below for the one-time terminal installation.
12
12
 
13
13
  Universal Plugins Directory search installation is not available yet, so use a regular terminal for the **initial installation only**:
14
14
 
15
15
  ```bash
16
- npm install --global codex-agent-view@0.4.6
16
+ npm install --global codex-agent-view@0.4.7
17
17
  codex-agent-view install
18
18
  ```
19
19
 
@@ -40,7 +40,7 @@ In short: install once in a terminal; perform snapshot queries, status checks, l
40
40
 
41
41
  ## Status
42
42
 
43
- Version `0.4.6` is the lifecycle-correctness release. It gives `SessionEnd` terminal priority, settles unfinished child activity without pretending it succeeded, prevents late events from reopening a finished turn, and reports prolonged unconfirmed activity as **End not confirmed** instead of leaving it indefinitely **Running**. It retains the app-native snapshot skill, privacy-minimized hooks, bounded in-memory reducer, local authenticated live backend, and explicit install/remove plus maintainer-diagnostic CLI commands.
43
+ Version `0.4.7` completes the lifecycle-correctness patch. In addition to terminal `SessionEnd`, late-event protection, and honest **End not confirmed** state, normal or late `SubagentStop` and `PostToolUse` events now refine the matching earlier start entry in recent activity to **Stopped** or **Completed**. A finished agent or tool therefore no longer leaves its prior recent-activity row falsely **Running**. It retains the app-native snapshot skill, privacy-minimized hooks, bounded in-memory reducer, local authenticated live backend, and explicit install/remove plus maintainer-diagnostic CLI commands.
44
44
 
45
45
  Plugin installation and lifecycle payloads were verified with Homebrew Codex CLI and the Codex executable embedded in the official app. However, a real-use attempt that installed and enabled `0.2.0` in an already-running official app process delivered zero events while two subagents ran. The monitor, registration, enablement, and installed bundle were healthy, while app logs showed no sender invocation. Evidence indicates that the same process retained a pre-install `hooks/list` snapshot; persisted exact-hook trust is not exposed through CLI JSON, so the precise skip boundary remains unconfirmed.
46
46
 
@@ -166,16 +166,16 @@ After plugin enablement/trust and an app restart, the first trusted hook interna
166
166
 
167
167
  ## Install from npm
168
168
 
169
- The commands below install `0.4.6` by exact version.
169
+ The commands below install `0.4.7` by exact version.
170
170
 
171
171
  ```bash
172
- npm install --global codex-agent-view@0.4.6
172
+ npm install --global codex-agent-view@0.4.7
173
173
  codex-agent-view install
174
174
  ```
175
175
 
176
176
  After these two commands, fully reopen the Codex app, verify installation, enablement, and hook trust, then create a new task. The first trusted hook prepares the backend and delivers its event internally, so users do not run monitor CLI commands. Use the plugin card's **Quick start** action to select `@codex-agent-view`, then explicitly select `$show-agents` in the app. Repeat that explicit skill selection after closing the panel.
177
177
 
178
- The `0.4.6` installation path is the global package install followed by the explicit `codex-agent-view install` command above. Routine use remains inside the Codex app afterward. When upgrading an older valid installation, `install` preserves the installation-owned read-only viewer credential; the legacy `0.4.2` migration behavior remains as documented for `0.4.3`. Neither token nor the private URL is printed.
178
+ The `0.4.7` installation path is the global package install followed by the explicit `codex-agent-view install` command above. Routine use remains inside the Codex app afterward. When upgrading an older valid installation, `install` preserves the installation-owned read-only viewer credential; the legacy `0.4.2` migration behavior remains as documented for `0.4.3`. Neither token nor the private URL is printed.
179
179
 
180
180
  Version-specific npm, install, migration, CI, tag, and GitHub Release evidence is preserved in [Distribution](docs/distribution.md). That evidence is updated only after each item is actually verified.
181
181
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-agent-view",
3
- "version": "0.4.6",
3
+ "version": "0.4.7",
4
4
  "description": "Follow Codex work and participating agent progress in a clear, read-only live view inside the official Codex app.",
5
5
  "type": "module",
6
6
  "main": "./src/core/index.mjs",
@@ -232,6 +232,27 @@ function addActivity(session, event, status, limit) {
232
232
  }
233
233
  }
234
234
 
235
+ function refineUnresolvedStartActivity(
236
+ session,
237
+ { type, idField, id, status },
238
+ ) {
239
+ const unresolvedStatuses = new Set([
240
+ "running",
241
+ "completion_not_observed",
242
+ "interrupted",
243
+ ]);
244
+ for (const activity of session.recent_activities) {
245
+ if (
246
+ activity.type === type &&
247
+ activity[idField] === id &&
248
+ unresolvedStatuses.has(activity.status)
249
+ ) {
250
+ activity.status = status;
251
+ break;
252
+ }
253
+ }
254
+ }
255
+
235
256
  function applySessionEvent(session, event, limits) {
236
257
  const lifecycle = session.lifecycle;
237
258
  if (event.type === "session_started") {
@@ -377,6 +398,14 @@ function applySubagentEvent(session, event, limits) {
377
398
  agent.stopped_at_ms = event.received_at_ms;
378
399
  agent.status = agent.start_observed ? "stopped" : "stopped_without_start";
379
400
  agent.has_out_of_order_events = !agent.start_observed;
401
+ if (agent.start_observed) {
402
+ refineUnresolvedStartActivity(session, {
403
+ type: "subagent_started",
404
+ idField: "agent_id",
405
+ id: event.agent_id,
406
+ status: "stopped",
407
+ });
408
+ }
380
409
  }
381
410
 
382
411
  agent.agent_type = event.agent_type;
@@ -430,6 +459,14 @@ function applyToolEvent(session, event, limits) {
430
459
  tool.status = tool.start_observed ? "completed" : "completed_without_start";
431
460
  tool.has_out_of_order_events = !tool.start_observed;
432
461
  activityStatus = tool.status;
462
+ if (tool.start_observed) {
463
+ refineUnresolvedStartActivity(session, {
464
+ type: "tool_started",
465
+ idField: "tool_use_id",
466
+ id: event.tool_use_id,
467
+ status: "completed",
468
+ });
469
+ }
433
470
 
434
471
  const permission = session.permission;
435
472
  if (