104 lines
5.5 KiB
Markdown
104 lines
5.5 KiB
Markdown
# Task: Render AI Design agent activity progress
|
|
|
|
## Identity
|
|
|
|
- Task ID: 20260907-design-agent-activity-client-b6d913e4
|
|
- Mode: Feature
|
|
- Branch: codex/20260907-design-agent-activity-client-b6d913e4-design-agent-activity-client
|
|
- Worktree: D:\Datas\OthersProjects\.codex-worktrees\makelore\20260907-design-agent-activity-client-b6d913e4
|
|
- Base commit: da29294979da4ce041edf992b590ee6ea170a44f
|
|
- Owner: codex-root
|
|
- Status: Ready for Integration
|
|
|
|
## Scope
|
|
|
|
- Consume operation-scoped AI Design activity events through the existing Main-owned
|
|
Works Square transport.
|
|
- Render one transient activity area attached to the optimistic user message, update
|
|
meaningful steps in place, and settle it correctly on final reply or terminal error.
|
|
- Cover reconnect/replay, transport-unknown, stale-operation, and compact responsive
|
|
presentation without duplicating the right-side Design summary.
|
|
|
|
## Intent And Constraints
|
|
|
|
- User messages remain immediately visible and final assistant replies remain normal
|
|
conversation content.
|
|
- Activity is presentation state, not canonical Design state or a durable chat bubble.
|
|
- Show at most a few youth-safe phase/action/outcome lines; never render raw reasoning,
|
|
tool arguments, prompts, provider output, or technical error details.
|
|
- Preserve stable operation identity across uncertain transport outcomes and ignore
|
|
progress that belongs to another Workspace/direction/operation.
|
|
|
|
## Project Context Loaded
|
|
|
|
- Project goal: a youth-friendly desktop creation flow with Electron Main as the only
|
|
network authority and server-owned Design Specification semantics.
|
|
- Current integrated focus: Living Form V2 and immediate optimistic user messages are
|
|
integrated; the experimental `050d78d` progress UI is not assumed present.
|
|
- Decisions: ADR-007 keeps Renderer drafts temporary and Gateway operations stable;
|
|
the activity view may observe events but cannot become another authority.
|
|
- Evidence/commitments: real paid Design production smoke remains separate and is not
|
|
claimed by this client presentation task.
|
|
- Relevant peers: the Enter-key E2E task is test-only; older generic-error tasks have
|
|
undefined scope. No semantic conflict was found.
|
|
- Likely modules: Main Workspace adapter/DTO mapping, Renderer store event reduction,
|
|
Design conversation pane, and focused unit/Electron E2E tests.
|
|
- Unknowns to resolve in source: current stream event DTO shape and the best existing
|
|
operation-to-optimistic-message association seam.
|
|
- Gate result: Passed.
|
|
|
|
## Outcome
|
|
|
|
- Added a dedicated `AI 处理过程` panel beneath the optimistic user message. Active
|
|
steps update in place; completed processing collapses into a compact, user-toggleable
|
|
summary while the final assistant reply continues to stream as normal conversation.
|
|
- Added Main-owned normalization for the four public progress stages. Main maps stages
|
|
to fixed youth-safe copy instead of trusting arbitrary server/provider text.
|
|
- Preserved exact operation association across optimistic, streaming, canonical, and
|
|
transport-unknown states by recording the pre-command turn sequence and matching the
|
|
earliest exact canonical user turn after that boundary.
|
|
- Added Gateway command terminal-event handling so accepted commands converge after a
|
|
polling disconnect. WebSocket-terminal-first races remain authoritative, stale
|
|
connections cannot mutate current state, duplicate chunks advance the replay cursor,
|
|
and late results from another Workspace cannot replace the active Workspace.
|
|
- Activity remains transient presentation state: it is filtered by Workspace and
|
|
direction, never becomes a chat message or right-side Design authority, and contains
|
|
no raw model reasoning, prompts, tool arguments, or technical provider output.
|
|
|
|
## Verification
|
|
|
|
- `pnpm exec vitest run tests/unit/image-workspace-store.test.ts
|
|
tests/unit/image-canvas-page.test.tsx
|
|
tests/unit/works-square-design-workspace.test.ts
|
|
tests/unit/image-workspace-route.test.ts` — 67 passed.
|
|
- `pnpm exec tsc --noEmit` — passed.
|
|
- Focused ESLint across all eight changed TypeScript/TSX files — passed.
|
|
- `pnpm run build:vite` — passed; only existing chunk-size, dynamic-import, and stale
|
|
Browserslist-data warnings were reported.
|
|
- `git diff --check` — passed.
|
|
- Independent client and lifecycle reviews were repeated after the terminal-race,
|
|
exact-turn-association, and Workspace A→B→A fixes — PASS; no reachable P1/P2
|
|
remained.
|
|
|
|
## Follow-ups
|
|
|
|
- Add an explicit snapshot/cursor reseed contract for a Gateway `cursor expired`
|
|
response in a separate transport-resilience task. That pre-existing recovery gap is
|
|
broader than the AI activity presentation slice.
|
|
|
|
## Promotion Candidates
|
|
|
|
- Target canonical documents: ADR-007 and the client/Main transport architecture.
|
|
- Proposal: document operation-scoped AI activity as transient Renderer state fed by
|
|
Main-normalized public Gateway events; generic Gateway terminal events must settle
|
|
uncertain writes without changing operation identity.
|
|
- Evidence: fixed public stage projection, exact turn association, terminal/poll race
|
|
tests, stale-source and cross-Workspace tests, 67 passing focused tests, typecheck,
|
|
lint, and production build.
|
|
- Future impact: future Agents SDK lifecycle hooks can reuse the same UI seam, while
|
|
canonical Design state continues to come only from Workspace snapshots/events.
|
|
- Semantic conflicts: none identified; this preserves ADR-007's Main ownership and
|
|
temporary Renderer-state boundaries.
|
|
- Human confirmation required: yes, during a future integration-mode promotion to
|
|
canonical architecture documentation.
|