Adapt to two contract changes master introduced: - The generated Remote face now wraps every business result in RemoteResult, folding carrier failures into an ok:false branch instead of rejecting. The controller reads that envelope at its three call sites and maps a carrier failure onto the same settled shape the controls already render; three specs cover the new branch. - Client packages split their tsconfig into host and client halves, and the host aggregate now compiles any test not named *.client.spec.*. Rename this package's specs to the client convention and drop the ../connection project reference, which pointed at a solution file that no longer carries the client sources. Keep master's mount loop with its rollback-on-failure in api-remotes and add messageFeedbackRemote to it.
feedback/ — recorded human feedback
English | 中文
The feedback family exposes two deliberately separate contracts: an immutable remark in the canonical Session log, and editable feedback attached to one assistant message in a local sidecar. Neither form enters the model conversation.
| Package | Role | ctx key |
|---|---|---|
command-feedback/ |
Trigger-independent feedback/record event plus the human-facing /feedback producer |
— |
message-feedback/ |
Lifecycle-bound per-message rating/note sidecar plus Host messageFeedback.list/put/delete Remote contract |
messageFeedback |
A command feedback remark is log-only: it never enters model context or derived history. When mounted, dsh-session-telemetry-otel observes feedback/record to release a pending telemetry prefix or warn that disabled telemetry leaves the feedback local; capture itself remains independent of that policy.
Message feedback is not a Session event or projection. It remains in the storage-domain sidecar and causes no telemetry handoff. The Host Remote contract ships with the service; the client Remote aggregate mount and UI consumer are separately owned and deferred.