events: LiveEvent::Note becomes struct variant so serde can actually serialize it
This commit is contained in:
parent
aa24080f7b
commit
b60774a66c
5 changed files with 46 additions and 29 deletions
|
|
@ -372,9 +372,9 @@ async fn events_stream(
|
|||
let rx = state.bus.subscribe();
|
||||
// Drop a "hello" note into the bus so every new subscriber sees at
|
||||
// least one event immediately and can clear the connecting placeholder.
|
||||
state.bus.emit(crate::events::LiveEvent::Note(
|
||||
"live stream attached".into(),
|
||||
));
|
||||
state.bus.emit(crate::events::LiveEvent::Note {
|
||||
text: "live stream attached".into(),
|
||||
});
|
||||
let stream = BroadcastStream::new(rx).filter_map(|res| {
|
||||
let ev = res.ok()?;
|
||||
let json = serde_json::to_string(&ev).ok()?;
|
||||
|
|
@ -448,9 +448,9 @@ async fn post_set_model(State(state): State<AppState>, Form(form): Form<ModelFor
|
|||
return error_response("model: name required");
|
||||
}
|
||||
state.bus.set_model(name);
|
||||
state.bus.emit(crate::events::LiveEvent::Note(format!(
|
||||
"operator: /model — claude model set to '{name}' for future turns"
|
||||
)));
|
||||
state.bus.emit(crate::events::LiveEvent::Note {
|
||||
text: format!("operator: /model — claude model set to '{name}' for future turns"),
|
||||
});
|
||||
tracing::info!(%name, "operator set model");
|
||||
Redirect::to("/").into_response()
|
||||
}
|
||||
|
|
@ -471,16 +471,16 @@ async fn post_compact(State(state): State<AppState>) -> Response {
|
|||
let files = state.files.clone();
|
||||
tokio::spawn(async move {
|
||||
let _guard = guard; // keep lock alive for the duration of compaction
|
||||
bus.emit(crate::events::LiveEvent::Note(
|
||||
"operator: /compact — running on persistent session".into(),
|
||||
));
|
||||
bus.emit(crate::events::LiveEvent::Note {
|
||||
text: "operator: /compact — running on persistent session".into(),
|
||||
});
|
||||
bus.set_state(crate::events::TurnState::Compacting);
|
||||
let r = crate::turn::compact_session(&files, &bus).await;
|
||||
bus.set_state(crate::events::TurnState::Idle);
|
||||
if let Err(e) = r {
|
||||
bus.emit(crate::events::LiveEvent::Note(format!(
|
||||
"/compact failed: {e:#}"
|
||||
)));
|
||||
bus.emit(crate::events::LiveEvent::Note {
|
||||
text: format!("/compact failed: {e:#}"),
|
||||
});
|
||||
}
|
||||
});
|
||||
Redirect::to("/").into_response()
|
||||
|
|
@ -501,9 +501,9 @@ async fn post_compact(State(state): State<AppState>) -> Response {
|
|||
/// than asking claude to forget mid-stream.
|
||||
async fn post_new_session(State(state): State<AppState>) -> Response {
|
||||
state.bus.request_new_session();
|
||||
state.bus.emit(crate::events::LiveEvent::Note(
|
||||
"operator: new session armed — next turn runs without --continue".into(),
|
||||
));
|
||||
state.bus.emit(crate::events::LiveEvent::Note {
|
||||
text: "operator: new session armed — next turn runs without --continue".into(),
|
||||
});
|
||||
Redirect::to("/").into_response()
|
||||
}
|
||||
|
||||
|
|
@ -524,7 +524,7 @@ async fn post_cancel_turn(State(state): State<AppState>) -> Response {
|
|||
),
|
||||
Err(e) => format!("operator: /cancel — pkill failed: {e}"),
|
||||
};
|
||||
state.bus.emit(crate::events::LiveEvent::Note(note));
|
||||
state.bus.emit(crate::events::LiveEvent::Note { text: note });
|
||||
Redirect::to("/").into_response()
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue