use serde::{Deserialize, Serialize};
use crate::execution::{
ClientId, ConversationSurface, OperationId, RunId, ScopeId, TenantId, ThreadId, UserId,
};
#[derive(Clone, Debug, Eq, Hash, PartialEq, Serialize, Deserialize)]
pub struct Scope {
pub tenant_id: Option<TenantId>,
pub scope_id: ScopeId,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
pub struct Actor {
pub user_id: UserId,
pub client_id: Option<ClientId>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
pub struct InvocationContext {
pub scope: Scope,
pub actor: Actor,
pub surface_id: ConversationSurface,
pub thread_id: ThreadId,
pub run_id: RunId,
pub operation_id: OperationId,
pub deadline_unix_ms: Option<u64>,
pub traceparent: Option<String>,
}