feat: add minimum API and web GUI
This commit is contained in:
16
docs/plan.md
16
docs/plan.md
@@ -1460,9 +1460,16 @@ Events:
|
||||
|
||||
Reconnect:
|
||||
|
||||
- `Last-Event-ID` is last `run_events.seq`.
|
||||
- server replays `seq > lastSeq`.
|
||||
- non-run-event SSE types are not replayed; state is re-derived by fetch.
|
||||
- Run-scoped `/sse/runs/:runId`:
|
||||
- `Last-Event-ID` is last `run_events.seq` for that run.
|
||||
- server replays `run.event_appended` for `seq > lastSeq`.
|
||||
- derived non-`run.event_appended` SSE types are not replayed for historical rows; state is re-derived by fetch.
|
||||
- Global `/sse/global`:
|
||||
- `Last-Event-ID` is last global `run_events.id`, because `run_events.seq` is only monotonic within a run.
|
||||
- fresh connects start at the latest global event id and emit only new summary events.
|
||||
- reconnects replay rows with `id > lastId`.
|
||||
- global stream emits only scope=`both` events: `run.state_changed`, `approval.created`, `approval.resolved`.
|
||||
- global stream never emits `run.event_appended`.
|
||||
|
||||
## 18. Errors
|
||||
|
||||
@@ -1768,6 +1775,9 @@ M5+:
|
||||
| CC-33 | API-side already-applied `reject` / `abort` replay tried to dispose sessions through DB-only replay validation runtime | API replay side effects are report-repair only; worker-side decision application owns session disposal |
|
||||
| CC-34 | Closed-workflow approval settlement waited for reports but did not replay approval side effects | settlement now verifies the requested decision, replays side effects, then waits for the terminal report |
|
||||
| CC-35 | Baseline-protected BUSY replay recorded synthetic prompt proof before the baseline wait was durable | baseline replay no longer records synthetic prompt events; replay without real prompt proof keeps treating existing files as stale |
|
||||
| CC-36 | SSE reconnect wording used per-run `seq` for global stream even though `seq` is not globally monotonic | `/sse/runs/:runId` uses per-run `seq`; `/sse/global` uses global `run_events.id` and emits only scope=`both` summary events |
|
||||
| CC-37 | Run SSE replay could emit historical derived events after the first page | run SSE drains historical rows up to a high-water `seq` with only `run.event_appended`, then switches to live derived events |
|
||||
| CC-38 | Normal phase start changed run state to `planning` / `executing` without a summary event source | `phase.started` payload includes `runState`; SSE derives `run.state_changed` from that live event |
|
||||
|
||||
### Future Open Questions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user