feat: runtime and UX polish
P1 features:
- System prompt injection on session resume (ThreadRecord gains system_prompt
field, ensure_engine_loaded passes it to Op::SyncSession)
- Session resume bridge: GET/POST /v1/sessions/{id}, seed_thread_from_messages
- Task detail panel with deep links (?task=<id>), timeline, tool calls
- Tauri desktop build fix (CI=true in tauri:build script)
P2 features:
- Task detail auto-refresh polling for running/queued tasks (3s interval)
- Session delete: DELETE /v1/sessions/{id} endpoint + palette delete button
- Transcript full-text search input with combined role filter + search
- Per-item copy-to-clipboard, collapse/expand for long outputs, filter chips
Polish:
- Typography scale CSS variables, skeleton loading utilities
- Panel slide-in animation for task detail, fade-up for list items
- Toast auto-dismiss (4s success, 6s error) with dismiss buttons
- Focus trap in command palette, backdrop click to close
- Escape key closes task detail panel
- ARIA improvements: role=alert on error toasts, role=listbox on palette
- Responsive breakpoints for tablet (task detail stacking, palette width)
- prefers-reduced-motion respected throughout
All validation checks pass:
- cargo test (517 tests), cargo check
- pnpm typecheck, lint (0 errors), test (36 tests)
- pnpm web:build, desktop:build
This commit is contained in:
@@ -42,6 +42,10 @@ The event log is append-only with global monotonic `seq` for replay/resume.
|
||||
|
||||
- `GET /health`
|
||||
- `GET /v1/sessions?limit=50&search=<substring>`
|
||||
- `GET /v1/workspace/status`
|
||||
- `GET /v1/skills`
|
||||
- `GET /v1/apps/mcp/servers`
|
||||
- `GET /v1/apps/mcp/tools?server=<optional>`
|
||||
|
||||
### Compatibility Stream (Single Turn)
|
||||
|
||||
@@ -80,7 +84,9 @@ Typical SSE events:
|
||||
|
||||
- `POST /v1/threads`
|
||||
- `GET /v1/threads?limit=50&include_archived=false`
|
||||
- `GET /v1/threads/summary?limit=50&search=<optional>&include_archived=false`
|
||||
- `GET /v1/threads/{id}`
|
||||
- `PATCH /v1/threads/{id}` (currently supports `{ "archived": true|false }`)
|
||||
- `POST /v1/threads/{id}/resume`
|
||||
- `POST /v1/threads/{id}/fork`
|
||||
|
||||
@@ -110,6 +116,7 @@ Notes:
|
||||
- `interrupt` returns quickly and marks `turn.interrupt_requested`.
|
||||
- Terminal turn status becomes `interrupted` only after cleanup completes.
|
||||
- Manual compaction is exposed as a turn with `context_compaction` item lifecycle events.
|
||||
- Archiving/unarchiving threads updates persisted thread state and emits `thread.updated`.
|
||||
|
||||
### Replayable Events
|
||||
|
||||
@@ -166,6 +173,25 @@ Tasks execute through the same runtime thread/turn pipeline and include:
|
||||
- runtime event count
|
||||
- timeline + tool summaries + artifact references
|
||||
|
||||
### Automations
|
||||
|
||||
- `GET /v1/automations`
|
||||
- `POST /v1/automations`
|
||||
- `GET /v1/automations/{id}`
|
||||
- `PATCH /v1/automations/{id}`
|
||||
- `DELETE /v1/automations/{id}`
|
||||
- `POST /v1/automations/{id}/run`
|
||||
- `POST /v1/automations/{id}/pause`
|
||||
- `POST /v1/automations/{id}/resume`
|
||||
- `GET /v1/automations/{id}/runs?limit=20`
|
||||
|
||||
RRULE support is intentionally constrained to:
|
||||
- hourly: `FREQ=HOURLY;INTERVAL=<hours>[;BYDAY=MO,TU,...]`
|
||||
- weekly: `FREQ=WEEKLY;BYDAY=...;BYHOUR=<0-23>;BYMINUTE=<0-59>`
|
||||
|
||||
Automations are persisted under `~/.deepseek/automations` (override with `DEEPSEEK_AUTOMATIONS_DIR`).
|
||||
Each run is executed as a normal background task and links to task/thread/turn ids.
|
||||
|
||||
## Persistence
|
||||
|
||||
Runtime store (default under task data root):
|
||||
|
||||
Reference in New Issue
Block a user