Simplify SessionStart env outcome

This commit is contained in:
Abhinav Vedmala
2026-06-01 11:56:28 -07:00
parent 658d027e98
commit 235a035c69
2 changed files with 7 additions and 19 deletions

View File

@@ -128,9 +128,7 @@ pub(crate) async fn run_pending_session_start_hooks(
.run_session_start(request, Some(turn_context.sub_id.clone()))
.await;
emit_hook_completed_events(sess, turn_context, hook_events).await;
if let Some(env) = session_start_env {
sess.merge_session_start_env(env);
}
sess.merge_session_start_env(session_start_env);
record_additional_contexts(sess, turn_context, additional_contexts).await;
if should_stop {
return true;

View File

@@ -83,7 +83,7 @@ pub struct SessionStartOutcome {
pub should_stop: bool,
pub stop_reason: Option<String>,
pub additional_contexts: Vec<String>,
pub session_start_env: Option<HashMap<String, String>>,
pub session_start_env: HashMap<String, String>,
}
#[derive(Debug, PartialEq, Eq)]
@@ -123,7 +123,7 @@ pub(crate) async fn run(
should_stop: false,
stop_reason: None,
additional_contexts: Vec::new(),
session_start_env: session_start_env_for_event(event_name),
session_start_env: HashMap::new(),
};
}
@@ -145,7 +145,6 @@ pub(crate) async fn run(
turn_id,
format!("failed to serialize session start hook input: {error}"),
),
event_name,
);
}
};
@@ -176,7 +175,6 @@ pub(crate) async fn run(
Some(subagent_turn_id),
format!("failed to serialize subagent start hook input: {error}"),
),
event_name,
);
}
};
@@ -203,9 +201,8 @@ pub(crate) async fn run(
.iter()
.map(|result| result.data.additional_contexts_for_model.as_slice()),
);
let session_start_env = (event_name == HookEventName::SessionStart).then(|| {
merge_session_start_env(results.iter().map(|result| &result.data.session_start_env))
});
let session_start_env =
merge_session_start_env(results.iter().map(|result| &result.data.session_start_env));
SessionStartOutcome {
hook_events: results.into_iter().map(|result| result.completed).collect(),
@@ -353,23 +350,16 @@ fn parse_completed(
}
}
fn serialization_failure_outcome(
hook_events: Vec<HookCompletedEvent>,
event_name: HookEventName,
) -> SessionStartOutcome {
fn serialization_failure_outcome(hook_events: Vec<HookCompletedEvent>) -> SessionStartOutcome {
SessionStartOutcome {
hook_events,
should_stop: false,
stop_reason: None,
additional_contexts: Vec::new(),
session_start_env: session_start_env_for_event(event_name),
session_start_env: HashMap::new(),
}
}
fn session_start_env_for_event(event_name: HookEventName) -> Option<HashMap<String, String>> {
(event_name == HookEventName::SessionStart).then(HashMap::new)
}
fn merge_session_start_env<'a>(
envs: impl IntoIterator<Item = &'a HashMap<String, String>>,
) -> HashMap<String, String> {