use tracing::Span;
use tracing::field::Empty;
use super::phase::Phase;
pub fn dispatch_span() -> Span {
tracing::info_span!("dispatch", phase = Phase::Dispatch.as_str(),)
}
pub fn stage_span(issue_identifier: &str, stage_name: &str, agent_profile: &str) -> Span {
tracing::info_span!(
"stage_run",
phase = Phase::StageRun.as_str(),
issue_identifier = issue_identifier,
stage_name = stage_name,
agent_profile = agent_profile,
runtime = Empty,
session_id = Empty,
duration_ms = Empty,
)
}
pub fn daemon_span() -> Span {
tracing::info_span!("daemon", phase = Phase::Daemon.as_str(),)
}
#[cfg(test)]
mod tests {
use super::*;
use tracing::subscriber::with_default;
use tracing_subscriber::Registry;
#[test]
fn stage_span_has_phase_field() {
with_default(Registry::default(), || {
let span = stage_span("ABC-1", "plan", "codex");
let _ = span.metadata().expect("metadata present");
});
}
}