You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: PROGRESS.md
+48-1Lines changed: 48 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,24 @@ This file is the source of milestone progress, validation commands, and next act
11
11
12
12
-`Post-M8` ACP multi-agent readiness and maintenance.
13
13
14
-
## Latest Update (2026-03-09)
14
+
## Latest Update (2026-03-11)
15
+
16
+
-`Post-M8` codex session identity and replay normalization completed:
17
+
- fixed fresh Codex `New session` persistence so ngent no longer stores provisional runtime ids like `session-1` as the thread session binding when a durable `_meta.threadId` is not yet available.
18
+
- deferred initial `session_bound` persistence/emission for fresh Codex sessions until a stable session id can be resolved after the first prompt, then updated in-memory and persisted thread `agentOptions.sessionId` with the durable id.
19
+
- normalized Codex transcript replay by filtering bootstrap user messages injected by the desktop wrapper (`AGENTS.md` / `environment_context`) and extracting the actual user request from known wrapper formats:
20
+
-`[Conversation Summary] ... [Current User Input]`
21
+
-`# Context from my IDE setup: ... ## My request for Codex:`
22
+
- verified with real local Codex and Playwright against `http://127.0.0.1:8687/`:
23
+
-`New session` now produces distinct stable Codex session ids and no longer mixes first-session messages into the second-session chat.
24
+
- switching between the two replayed sessions in the Web UI now shows only the expected user/assistant pairs.
25
+
- direct `session-history` API responses for the repro sessions now return cleaned transcript messages.
26
+
- validation:
27
+
- pass: `go test ./internal/agents/codex -run 'Test(ParseSessionTranscriptMessage|CodexShouldDeferInitialSessionBinding|NormalizeCodexSessionListResultUsesStableThreadID|CodexSessionMatchesIDAcceptsStableAndRawIDs|CodexStableSessionIDFallsBackToRawSessionID)$' -count=1`
28
+
- pass: `cd internal/webui/web && npm run build`
29
+
- pass: `go test ./...`
30
+
31
+
## Previous Update (2026-03-09)
15
32
16
33
- Kimi CLI ACP integration completed:
17
34
- implemented `internal/agents/kimi` with one-turn ACP stdio lifecycle and fail-closed permission handling.
@@ -574,3 +591,33 @@ This file is the source of milestone progress, validation commands, and next act
574
591
- 2026-03-09: unified ACP message-chunk constant usage across stdio providers by removing per-provider `updateTypeMessageChunk` definitions and reusing `agents.ACPUpdateTypeMessageChunk`.
575
592
- 2026-03-09: hid the Web UI Reasoning switch when the active agent exposes fewer than two reasoning choices, so agents without switchable reasoning no longer show a dead control.
576
593
- 2026-03-09: switched Kimi model/reasoning catalog queries to local `config.toml` when available, so startup catalog refresh and thread config/model operations no longer create empty Kimi sessions; real prompt turns still use ACP.
594
+
- 2026-03-11: added opt-in `--debug` startup flag; when enabled, stderr now emits sanitized `acp.message` traces for ACP stdio and embedded-runtime request/response traffic, including session prompts, updates, and permission flows.
595
+
- 2026-03-11: added ACP session browsing/resume support across built-in agents:
596
+
- introduced shared agent session abstractions for `session/list`, bound-session reporting, and initialize capability parsing.
597
+
- built-in providers now:
598
+
- list sessions through ACP `session/list` when supported.
599
+
- load persisted `agentOptions.sessionId` through ACP `session/load` before prompting.
600
+
- report the effective session id back to HTTP turns so the server can persist it.
601
+
- added `GET /v1/threads/{threadId}/sessions` with cursor passthrough and graceful `supported=false` fallback for agents without ACP session-history support.
602
+
- turn SSE now emits `session_bound`, and the server persists the thread session id without closing the active provider.
603
+
- once a thread is bound to an ACP session, prompt building skips local recent-turn injection to avoid duplicating already-loaded ACP context.
604
+
- Web UI now renders a right-side session sidebar with first-page load, `Show more`, active-session highlighting, and `New session` reset.
605
+
- executed validation:
606
+
- pass: `cd internal/webui/web && npm run build`
607
+
- pass: `go test ./internal/httpapi -run 'TestThreadSessionsListEndpoint|TestTurnSessionBoundPersistsSessionIDAndSkipsContextInjection' -count=1`
608
+
- pass: `go test ./...`
609
+
610
+
- 2026-03-11: fixed Web UI session playback when selecting an existing ACP session from the right sidebar.
611
+
- the active chat view now treats `(threadId, sessionId)` as its render scope instead of refreshing only on `threadId` changes.
612
+
-`loadHistory()` now filters locally persisted turns by each turn's `session_bound` event so the center chat panel replays the selected session's ngent-recorded turns instead of leaving the previous session on screen.
613
+
- session changes reported mid-stream by `session_bound` defer the full chat refresh until the active turn completes, so the live streaming bubble is not destroyed.
614
+
- executed validation:
615
+
- pass: `cd internal/webui/web && npm run build`
616
+
- pass: `go test ./...`
617
+
618
+
- 2026-03-11: fixed Web UI history replay for legacy session threads whose `/history` data lacks per-turn `session_bound` events.
619
+
- session-scoped history filtering now falls back to showing all turns when a thread has no annotated session markers at all, instead of rendering an empty chat pane despite non-empty `/history`.
620
+
- when a thread has exactly one annotated session, the selected session view also keeps older unannotated turns so pre-annotation history is still visible for that same session.
0 commit comments