feat(canvas): add MemoryInspectorPanel for workspace KV memory (issue #730)
Builds MemoryInspectorPanel.tsx — a focused inspector for per-workspace
platform memory entries. Replaces MemoryTab in the SidePanel "memory" tab.
- GET /workspaces/:id/memory loads entries (flat MemoryEntry[] — confirmed
with Backend Engineer: fields are key/value/version/expires_at/updated_at,
no scope, write verb is POST not PATCH)
- Empty state: "No memory entries yet" with icon
- Click entry -> expand -> show JSON value, version badge, relative timestamp
- Edit flow: textarea pre-filled with JSON.stringify(value), Save calls POST
with if_match_version for optimistic concurrency, optimistic update with
rollback on 409/error, invalid-JSON guard
- Delete flow: button -> ConfirmDialog -> optimistic removal -> DELETE call
- Refresh button re-fetches entries
- 665 tests pass (43 files), next build clean, 'use client' check passes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>