fix(runtime): isolate agent state by project (#101)
This commit is contained in:
@ -115,3 +115,34 @@ typed_id!(
|
||||
/// Identifies a first-class background task.
|
||||
TaskId
|
||||
);
|
||||
|
||||
/// Runtime-only key for an agent scoped by its project.
|
||||
///
|
||||
/// `AgentId` is persisted inside a project and is not globally unique across
|
||||
/// simultaneously opened projects. Any app-wide in-memory registry that tracks
|
||||
/// live runtime state for an agent must use this key instead of `AgentId` alone.
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct RuntimeAgentKey {
|
||||
/// Project that owns the runtime agent.
|
||||
pub project_id: ProjectId,
|
||||
/// Agent inside that project.
|
||||
pub agent_id: AgentId,
|
||||
}
|
||||
|
||||
impl RuntimeAgentKey {
|
||||
/// Builds a scoped runtime key from its persisted identifiers.
|
||||
#[must_use]
|
||||
pub const fn new(project_id: ProjectId, agent_id: AgentId) -> Self {
|
||||
Self {
|
||||
project_id,
|
||||
agent_id,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl std::fmt::Display for RuntimeAgentKey {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{}:{}", self.project_id, self.agent_id)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user