Problem
POST /api/raw-events rejects the whole batch if the top-level opencode_session_id starts with msg_, even when every event in events[] includes a valid opencode_session_id.
This breaks backwards-compat for clients that send a wrapper-level msg_* id while also including per-event session IDs.
Expected
- If
events[] contains valid opencode_session_id values, the request should be accepted regardless of the top-level opencode_session_id value.
Actual
- The request returns
400 when the top-level opencode_session_id starts with msg_.
Proposed fix
- Only validate/reject a
msg_* session id when it is actually used as the default session id for an event.
- Add a regression test covering:
- top-level
opencode_session_id = msg_*
- per-event
opencode_session_id = sess-*
- request is accepted and events are recorded.
Acceptance criteria
- The scenario above returns
200 and records events.
- Test added.
Problem
POST /api/raw-eventsrejects the whole batch if the top-levelopencode_session_idstarts withmsg_, even when every event inevents[]includes a validopencode_session_id.This breaks backwards-compat for clients that send a wrapper-level
msg_*id while also including per-event session IDs.Expected
events[]contains validopencode_session_idvalues, the request should be accepted regardless of the top-levelopencode_session_idvalue.Actual
400when the top-levelopencode_session_idstarts withmsg_.Proposed fix
msg_*session id when it is actually used as the default session id for an event.opencode_session_id = msg_*opencode_session_id = sess-*Acceptance criteria
200and records events.