systemprompt-identifiers 0.2.2

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

Production infrastructure for AI agents

Website · Documentation · Guides · Core · Template · Discord


systemprompt-identifiers

Crates.io Docs.rs License: BSL-1.1

Typed newtype identifiers (UserId, TraceId, AgentId, McpServerId, and more) for systemprompt.io AI governance infrastructure. Enforces type-safe IDs across every boundary in the MCP governance pipeline, preventing accidental mixing of different ID types at compile time.

Layer: Shared — foundational types/traits with no dependencies on other layers. Part of the systemprompt-core workspace.

Overview

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

Architecture

  • 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

[dependencies]
systemprompt-identifiers = "0.2.1"
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);
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}");
}

Types

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

License

BSL-1.1 (Business Source License). Source-available for evaluation, testing, and non-production use. Production use requires a commercial license. Each version converts to Apache 2.0 four years after publication. See LICENSE.


systemprompt.io · Documentation · Guides · Live Demo · Template · crates.io · docs.rs · Discord

Shared layer · Own how your organization uses AI.