systemprompt-identifiers 0.2.1

Typed newtype identifiers (UserId, TraceId, AgentId, McpServerId…) for systemprompt.io AI governance infrastructure. Enforces type-safe IDs across every boundary in the MCP governance pipeline.
Documentation

systemprompt-identifiers

Core identifier types for systemprompt.io OS.

Crates.io Documentation License: BUSL-1.1

Overview

Part of the Shared layer in the systemprompt.io architecture. Infrastructure · Self-Hosted Deployment

Provides strongly-typed wrappers for all domain identifiers, ensuring type safety and preventing accidental mixing of different ID types.

Installation

Add to your Cargo.toml:

[dependencies]
systemprompt-identifiers = "0.0.1"

Quick Example

use systemprompt_identifiers::{UserId, TaskId, ContextId};

let user_id = UserId::new();
let task_id = TaskId::new();
let context_id = ContextId::new();

println!("User: {}, Task: {}, Context: {}", user_id, task_id, context_id);

Types

  • SessionId - User session identifier
  • UserId - User identifier
  • AgentId - Agent UUID identifier
  • AgentName - Agent name string
  • TaskId - Task identifier
  • ContextId - Conversation context identifier
  • TraceId - Distributed tracing identifier
  • ClientId - OAuth client identifier
  • McpExecutionId - MCP execution tracking ID
  • McpServerId - MCP server name
  • SkillId - Skill identifier
  • SourceId - Content source identifier
  • CategoryId - Content category identifier
  • JwtToken - JWT token wrapper

Usage

All ID types implement:

  • Clone, Debug, PartialEq, Eq, Hash
  • Serialize, Deserialize (with #[serde(transparent)])
  • AsRef<str>, Display

Feature Flags

Feature Default Description
sqlx No SQLx type implementations for database queries

Dependencies

  • serde - Serialization
  • uuid - UUID generation
  • schemars - JSON schema generation

Usage

use systemprompt_identifiers::{AgentId, UserId};

fn main() {
    let agent = AgentId::new("developer_agent");
    let user = UserId::new("user_42");

    // Mixing newtype IDs is a compile error — the types are distinct.
    // let broken: AgentId = user; // error[E0308]: mismatched types

    println!("agent = {agent}, user = {user}");
}

License

Business Source License 1.1 - See LICENSE for details.