Add distribution-owned response feedback UI - #214
Conversation
Co-authored-by: Amp <amp@ampcode.com> Amp-Thread-ID: https://ampcode.com/threads/T-019fbabe-6c0e-70ab-8559-31ba601d4897
Amp-Thread-ID: https://ampcode.com/threads/T-019fbabe-6c0e-70ab-8559-31ba601d4897 Co-authored-by: Amp <amp@ampcode.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019fbabe-6c0e-70ab-8559-31ba601d4897 Co-authored-by: Amp <amp@ampcode.com>
| #[serde(skip_serializing_if = "Option::is_none", default)] | ||
| pub project_key: Option<String>, | ||
| #[serde(skip_serializing_if = "Option::is_none", default)] | ||
| pub response_rating_enabled: Option<bool>, |
There was a problem hiding this comment.
🤖 Is the admin runtime-config endpoint guaranteed to version responses by client? RuntimeFeedbackConfig uses deny_unknown_fields, but this adds a field while retaining schema version 1. An older managed client receiving the new field rejects the entire endpoint response and falls back to cache/default policy; the stacked survey PR adds another field under the same v1 shape. If mixed client versions can reach one endpoint, this needs an extensible field or negotiated schema response rather than an undeclared additive v1 change.
There was a problem hiding this comment.
Confirmed the compatibility risk is conditional on the service contract. The client sends no visible schema/client negotiation signal, so I avoided a speculative local version change that would not protect already-shipped strict v1 clients. Can mixed Berd versions receive the same /desktop/v1/runtime-config response, and if so what service-side signal shapes fields for each client? — Amp 🤖
Amp-Thread-ID: https://ampcode.com/threads/T-019fbabe-6c0e-70ab-8559-31ba601d4897 Co-authored-by: Amp <amp@ampcode.com>
This PR description was generated by AMP.
Summary
Berd distributions need a generic way to collect turn-level response ratings without putting a company-specific telemetry endpoint or schema in the public app.
This adds opt-in thumbs-up/down controls tied to the canonical assistant response, session ID, and message ID. Stock Berd uses a typed no-op transport and ordering seam; distributions can supply their own sink and enable the UI through the transport-neutral
feedbackSurveysbuild capability plus runtime config. Mounting, hovering, focusing, or revealing controls emits nothing; only explicit good, bad, and cleared transitions reach the sink.Related issue
N/A — no duplicate issue or PR found.
Testing
AI tool validation prompt
Copy and paste into your AI tool: