{
  "name": "com.l1fe.forge:forge-identity",
  "language": "kotlin",
  "version": "0.1.0",
  "description": "Kotlin/JVM forge-identity module.",
  "manifest": "forge-kt/forge-identity/build.gradle.kts",
  "manifestSha256": "5a2240f82fe5a81d9fa51c45215e4d4a914b22f71bf432eed9ad63e47f2c2eee",
  "status": "source-reference",
  "registryPublicationVerified": false,
  "route": "/libraries/kotlin/forge-identity",
  "features": {},
  "files": [
    {
      "path": "forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/AgentIdentity.kt",
      "sha256": "05bf717a4eb24c1c23389b4b47ec420590a57b451aa7c71d5bc8c268718224d7",
      "artifactSha256": "e5e80ca5bd64b7b8f997af4a663ccf51ef5e8ed5f07d8c5bd7f47c484b5528d8",
      "url": "/reference/source/forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/AgentIdentity.kt.txt",
      "declarations": [
        {
          "name": "public interface CryptoBridge",
          "line": 26,
          "signature": "public interface CryptoBridge",
          "documentation": ""
        },
        {
          "name": "public fun generateKeypair(): Pair<String, String>",
          "line": 33,
          "signature": "public fun generateKeypair(): Pair<String, String>\n\n/**\n* Derive a child keypair from a parent using HKDF-SHA256.\n*\n* @param parentPrivateKeyHex The parent's private key in hex.\n* @param derivationPath The derivation path string.\n* @return A pair of (childPublicKeyHex, childPrivateKeyHex).\n*/\npublic fun deriveChildKeypair(\nparentPrivateKeyHex: String,\nderivationPath: String,\n): Pair<String, String>\n\n/**\n* Sign a message with an Ed25519 private key.\n*\n* @param messageBytes The message bytes to sign.\n* @param privateKeyHex The private key in hex.\n* @return The signature bytes in hex.\n*/\npublic fun sign(messageBytes: ByteArray, privateKeyHex: String): String\n\n/**\n* Verify an Ed25519 signature.\n*",
          "documentation": ""
        },
        {
          "name": "public fun deriveChildKeypair(",
          "line": 42,
          "signature": "public fun deriveChildKeypair(\nparentPrivateKeyHex: String,\nderivationPath: String,\n): Pair<String, String>\n\n/**\n* Sign a message with an Ed25519 private key.\n*\n* @param messageBytes The message bytes to sign.\n* @param privateKeyHex The private key in hex.\n* @return The signature bytes in hex.\n*/\npublic fun sign(messageBytes: ByteArray, privateKeyHex: String): String\n\n/**\n* Verify an Ed25519 signature.\n*\n* @param messageBytes The original message bytes.\n* @param signatureHex The signature in hex.\n* @param publicKeyHex The public key in hex.\n* @return `true` if the signature is valid.\n*/\npublic fun verify(messageBytes: ByteArray, signatureHex: String, publicKeyHex: String): Boolean\n}\n\n/**",
          "documentation": ""
        },
        {
          "name": "public fun sign(messageBytes: ByteArray, privateKeyHex: String): String",
          "line": 54,
          "signature": "public fun sign(messageBytes: ByteArray, privateKeyHex: String): String\n\n/**\n* Verify an Ed25519 signature.\n*\n* @param messageBytes The original message bytes.\n* @param signatureHex The signature in hex.\n* @param publicKeyHex The public key in hex.\n* @return `true` if the signature is valid.\n*/\npublic fun verify(messageBytes: ByteArray, signatureHex: String, publicKeyHex: String): Boolean\n}\n\n/**\n* A verification method entry in the OAS document.\n*\n* @property id The verification method ID.\n* @property type The verification method type (e.g., \"Ed25519VerificationKey2020\").\n* @property controller The DID of the controller.\n* @property publicKeyHex The public key in hex encoding.\n*/\n@Serializable\npublic data class VerificationMethod(\nval id: String,\nval type: String;",
          "documentation": ""
        },
        {
          "name": "public fun verify(messageBytes: ByteArray, signatureHex: String, publicKeyHex: String): Boolean",
          "line": 64,
          "signature": "public fun verify(messageBytes: ByteArray, signatureHex: String, publicKeyHex: String): Boolean\n}\n\n/**\n* A verification method entry in the OAS document.\n*\n* @property id The verification method ID.\n* @property type The verification method type (e.g., \"Ed25519VerificationKey2020\").\n* @property controller The DID of the controller.\n* @property publicKeyHex The public key in hex encoding.\n*/\n@Serializable\npublic data class VerificationMethod(\nval id: String,\nval type: String;",
          "documentation": ""
        },
        {
          "name": "public data class VerificationMethod(",
          "line": 76,
          "signature": "public data class VerificationMethod(\nval id: String,\nval type: String;",
          "documentation": ""
        },
        {
          "name": "public data class LineageProof(",
          "line": 94,
          "signature": "public data class LineageProof(\n@SerialName(\"parent_did\")\nval parentDid: String,\n@SerialName(\"child_did\")\nval childDid: String,\n@SerialName(\"derivation_path\")\nval derivationPath: String,\nval signature: String,\nval timestamp: Timestamp,\n)\n\n/**\n* The lineage section of an OAS document.\n*\n* @property proofs The ordered list of lineage proofs from root to this agent.\n* @property depth The depth of this agent in the lineage chain.\n*/\n@Serializable\npublic data class LineageSection(\nval proofs: List<LineageProof>,\nval depth: Int,\n)\n\n/**\n* A simplified OAS document for the agent.\n*",
          "documentation": ""
        },
        {
          "name": "public data class LineageSection(",
          "line": 112,
          "signature": "public data class LineageSection(\nval proofs: List<LineageProof>,\nval depth: Int,\n)\n\n/**\n* A simplified OAS document for the agent.\n*\n* @property id The agent's DID.\n* @property verificationMethods The agent's verification methods.\n* @property lineage The lineage section.\n* @property created When the document was created.\n*/\n@Serializable\npublic data class OasDocument(\nval id: String,\n@SerialName(\"verification_methods\")\nval verificationMethods: List<VerificationMethod>,\nval lineage: LineageSection,\nval created: Timestamp,\n)\n\n/**\n* An agent's complete cryptographic identity.\n*\n* Contains the OAS DID, keypair (managed via [CryptoBridge]), OAS document,",
          "documentation": ""
        },
        {
          "name": "public data class OasDocument(",
          "line": 126,
          "signature": "public data class OasDocument(\nval id: String,\n@SerialName(\"verification_methods\")\nval verificationMethods: List<VerificationMethod>,\nval lineage: LineageSection,\nval created: Timestamp,\n)\n\n/**\n* An agent's complete cryptographic identity.\n*\n* Contains the OAS DID, keypair (managed via [CryptoBridge]), OAS document,\n* and lineage chain. The private key is NEVER exposed in toString() or\n* any serialized form.\n*\n* ANVIL Spec Section 11.1\n*\n* @property did The agent's OAS DID.\n* @property publicKeyHex The agent's Ed25519 public key in hex.\n* @property document The agent's OAS document.\n* @property lineageDepth The depth of this agent in the lineage chain.\n*/\npublic class ForgeAgentIdentity private constructor(\npublic val did: AgentDid,\npublic val publicKeyHex: String,\nprivate val privateKeyHex: String,",
          "documentation": ""
        },
        {
          "name": "public class ForgeAgentIdentity private constructor(",
          "line": 148,
          "signature": "public class ForgeAgentIdentity private constructor(\npublic val did: AgentDid,\npublic val publicKeyHex: String,\nprivate val privateKeyHex: String,\npublic val document: OasDocument,\npublic val lineageDepth: Int,\n)",
          "documentation": ""
        },
        {
          "name": "public val did: AgentDid,",
          "line": 149,
          "signature": "public val did: AgentDid,\npublic val publicKeyHex: String,\nprivate val privateKeyHex: String,\npublic val document: OasDocument,\npublic val lineageDepth: Int,\n)",
          "documentation": ""
        },
        {
          "name": "public val publicKeyHex: String,",
          "line": 150,
          "signature": "public val publicKeyHex: String,\nprivate val privateKeyHex: String,\npublic val document: OasDocument,\npublic val lineageDepth: Int,\n)",
          "documentation": ""
        },
        {
          "name": "public val document: OasDocument,",
          "line": 152,
          "signature": "public val document: OasDocument,\npublic val lineageDepth: Int,\n)",
          "documentation": ""
        },
        {
          "name": "public val lineageDepth: Int,",
          "line": 153,
          "signature": "public val lineageDepth: Int,\n)",
          "documentation": ""
        },
        {
          "name": "public fun sign(message: ByteArray): String",
          "line": 162,
          "signature": "public fun sign(message: ByteArray): String",
          "documentation": ""
        },
        {
          "name": "public fun verify(message: ByteArray, signatureHex: String): Boolean",
          "line": 175,
          "signature": "public fun verify(message: ByteArray, signatureHex: String): Boolean",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/Glyph.kt",
      "sha256": "3b1ee49fabc23c886a78250f670671291767f3bc9f52532dc54a639b64344cc9",
      "artifactSha256": "fac703ab7ca751acfeebe7eb2ea4b00ec061b4033d3bb518c8ae4078f35c7c65",
      "url": "/reference/source/forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/Glyph.kt.txt",
      "declarations": [
        {
          "name": "public enum class GlyphEntityKind",
          "line": 29,
          "signature": "public enum class GlyphEntityKind",
          "documentation": ""
        },
        {
          "name": "public fun asStr(): String;",
          "line": 55,
          "signature": "public fun asStr(): String;",
          "documentation": ""
        },
        {
          "name": "public fun asU8(): Int;",
          "line": 68,
          "signature": "public fun asU8(): Int;",
          "documentation": ""
        },
        {
          "name": "public fun parseKind(s: String): GlyphEntityKind?;",
          "line": 83,
          "signature": "public fun parseKind(s: String): GlyphEntityKind?;",
          "documentation": ""
        },
        {
          "name": "public fun fromU8(v: Int): GlyphEntityKind?;",
          "line": 98,
          "signature": "public fun fromU8(v: Int): GlyphEntityKind?;",
          "documentation": ""
        },
        {
          "name": "public data class GlyphColor(val r: Int, val g: Int, val b: Int)",
          "line": 119,
          "signature": "public data class GlyphColor(val r: Int, val g: Int, val b: Int)",
          "documentation": ""
        },
        {
          "name": "public fun toHex(): String =",
          "line": 126,
          "signature": "public fun toHex(): String =",
          "documentation": ""
        },
        {
          "name": "public fun rgb(r: Int, g: Int, b: Int): GlyphColor;",
          "line": 131,
          "signature": "public fun rgb(r: Int, g: Int, b: Int): GlyphColor;",
          "documentation": ""
        },
        {
          "name": "public fun lerp(a: GlyphColor, b: GlyphColor, t: Double): GlyphColor",
          "line": 141,
          "signature": "public fun lerp(a: GlyphColor, b: GlyphColor, t: Double): GlyphColor",
          "documentation": ""
        },
        {
          "name": "public data class GlyphPalette(",
          "line": 167,
          "signature": "public data class GlyphPalette(\nval primary: GlyphColor,\nval secondary: GlyphColor,\nval accent: GlyphColor,\nval background: GlyphColor,\n)\n\n/**\n* The glyph input contract: describes what to render.\n*\n* @property did The agent's DID string.\n* @property kind The entity kind that determines the kind-region visual motif.\n* @property label Optional human-readable label rendered below the glyph.\n*/\n@Serializable\npublic data class GlyphDescriptor(\nval did: String,\nval kind: GlyphEntityKind,\nval label: String?;",
          "documentation": ""
        },
        {
          "name": "public data class GlyphDescriptor(",
          "line": 182,
          "signature": "public data class GlyphDescriptor(\nval did: String,\nval kind: GlyphEntityKind,\nval label: String?;",
          "documentation": ""
        },
        {
          "name": "public fun derivePaletteFromDid(did: String, kind: GlyphEntityKind): GlyphPalette",
          "line": 198,
          "signature": "public fun derivePaletteFromDid(did: String, kind: GlyphEntityKind): GlyphPalette",
          "documentation": ""
        },
        {
          "name": "public fun renderGlyph(descriptor: GlyphDescriptor): String",
          "line": 240,
          "signature": "public fun renderGlyph(descriptor: GlyphDescriptor): String",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/IdentityError.kt",
      "sha256": "8177d1f2acf62a26f11a248a4e99e7001c968fe52ec9042b41e332322c8be4ca",
      "artifactSha256": "277c1a7e4445ef17d379264b4d9699525791eeaf0475b2ef5fb1175e9ae21e60",
      "url": "/reference/source/forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/IdentityError.kt.txt",
      "declarations": [
        {
          "name": "public sealed class ForgeIdentityError(",
          "line": 16,
          "signature": "public sealed class ForgeIdentityError(\nmessage: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class DerivationFailed(",
          "line": 30,
          "signature": "public class DerivationFailed(\npublic val parentDid: String,\npublic val path: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val parentDid: String,",
          "line": 31,
          "signature": "public val parentDid: String,\npublic val path: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val path: String,",
          "line": 32,
          "signature": "public val path: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 33,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class ChainTooDeep(",
          "line": 48,
          "signature": "public class ChainTooDeep(\npublic val depth: Int,\npublic val maxDepth: Int,\n) : ForgeIdentityError(\n\"lineage chain depth $depth exceeds ANVIL maximum $maxDepth (ANVIL Spec SS11.2)\"\n)\n\n/**\n* An identity is malformed or invalid.\n*\n* @property did The DID that is invalid.\n* @property reason The validation failure reason.\n*/\npublic class InvalidIdentity(\npublic val did: String,\npublic val reason: String,\n) : ForgeIdentityError(\"invalid identity '$did': $reason\")\n\n/**\n* The WASM crypto bridge is not available or failed.\n*\n* Non-Rust languages use the Rust WASM module for all cryptographic\n* operations. This error indicates the bridge is missing or broken.\n*\n* @property operation The operation that failed.\n* @property reason The failure reason.",
          "documentation": ""
        },
        {
          "name": "public val depth: Int,",
          "line": 49,
          "signature": "public val depth: Int,\npublic val maxDepth: Int,\n) : ForgeIdentityError(\n\"lineage chain depth $depth exceeds ANVIL maximum $maxDepth (ANVIL Spec SS11.2)\"\n)\n\n/**\n* An identity is malformed or invalid.\n*\n* @property did The DID that is invalid.\n* @property reason The validation failure reason.\n*/\npublic class InvalidIdentity(\npublic val did: String,\npublic val reason: String,\n) : ForgeIdentityError(\"invalid identity '$did': $reason\")\n\n/**\n* The WASM crypto bridge is not available or failed.\n*\n* Non-Rust languages use the Rust WASM module for all cryptographic\n* operations. This error indicates the bridge is missing or broken.\n*\n* @property operation The operation that failed.\n* @property reason The failure reason.\n*/",
          "documentation": ""
        },
        {
          "name": "public val maxDepth: Int,",
          "line": 50,
          "signature": "public val maxDepth: Int,\n) : ForgeIdentityError(\n\"lineage chain depth $depth exceeds ANVIL maximum $maxDepth (ANVIL Spec SS11.2)\"\n)\n\n/**\n* An identity is malformed or invalid.\n*\n* @property did The DID that is invalid.\n* @property reason The validation failure reason.\n*/\npublic class InvalidIdentity(\npublic val did: String,\npublic val reason: String,\n) : ForgeIdentityError(\"invalid identity '$did': $reason\")\n\n/**\n* The WASM crypto bridge is not available or failed.\n*\n* Non-Rust languages use the Rust WASM module for all cryptographic\n* operations. This error indicates the bridge is missing or broken.\n*\n* @property operation The operation that failed.\n* @property reason The failure reason.\n*/\npublic class WasmBridgeError(",
          "documentation": ""
        },
        {
          "name": "public class InvalidIdentity(",
          "line": 61,
          "signature": "public class InvalidIdentity(\npublic val did: String,\npublic val reason: String,\n) : ForgeIdentityError(\"invalid identity '$did': $reason\")\n\n/**\n* The WASM crypto bridge is not available or failed.\n*\n* Non-Rust languages use the Rust WASM module for all cryptographic\n* operations. This error indicates the bridge is missing or broken.\n*\n* @property operation The operation that failed.\n* @property reason The failure reason.\n*/\npublic class WasmBridgeError(\npublic val operation: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val did: String,",
          "line": 62,
          "signature": "public val did: String,\npublic val reason: String,\n) : ForgeIdentityError(\"invalid identity '$did': $reason\")\n\n/**\n* The WASM crypto bridge is not available or failed.\n*\n* Non-Rust languages use the Rust WASM module for all cryptographic\n* operations. This error indicates the bridge is missing or broken.\n*\n* @property operation The operation that failed.\n* @property reason The failure reason.\n*/\npublic class WasmBridgeError(\npublic val operation: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 63,
          "signature": "public val reason: String,\n) : ForgeIdentityError(\"invalid identity '$did': $reason\")\n\n/**\n* The WASM crypto bridge is not available or failed.\n*\n* Non-Rust languages use the Rust WASM module for all cryptographic\n* operations. This error indicates the bridge is missing or broken.\n*\n* @property operation The operation that failed.\n* @property reason The failure reason.\n*/\npublic class WasmBridgeError(\npublic val operation: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class WasmBridgeError(",
          "line": 75,
          "signature": "public class WasmBridgeError(\npublic val operation: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val operation: String,",
          "line": 76,
          "signature": "public val operation: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 77,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class PersistenceError(",
          "line": 90,
          "signature": "public class PersistenceError(\npublic val operation: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val operation: String,",
          "line": 91,
          "signature": "public val operation: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 92,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/Lineage.kt",
      "sha256": "e67c050ea59d525b032cf0d8620a97c285f11acecbcfd7a707451dada955e52b",
      "artifactSha256": "2c997555d7e3255c07af8e7ec8c6f8afb8d7c9ab0acf780103b64ca5b113a0ee",
      "url": "/reference/source/forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/Lineage.kt.txt",
      "declarations": [
        {
          "name": "public const val DEFAULT_MAX_LINEAGE_DEPTH: Int;",
          "line": 16,
          "signature": "public const val DEFAULT_MAX_LINEAGE_DEPTH: Int;",
          "documentation": ""
        },
        {
          "name": "public fun setCryptoBridge(bridge: CryptoBridge)",
          "line": 29,
          "signature": "public fun setCryptoBridge(bridge: CryptoBridge)",
          "documentation": ""
        },
        {
          "name": "public fun getCryptoBridge(): CryptoBridge =",
          "line": 38,
          "signature": "public fun getCryptoBridge(): CryptoBridge =",
          "documentation": ""
        },
        {
          "name": "public fun createHmrIdentity(",
          "line": 60,
          "signature": "public fun createHmrIdentity(\nnamespace: String;",
          "documentation": ""
        },
        {
          "name": "public fun createMhrIdentity(",
          "line": 103,
          "signature": "public fun createMhrIdentity(\nnamespace: String;",
          "documentation": ""
        },
        {
          "name": "public fun deriveAgentIdentity(",
          "line": 153,
          "signature": "public fun deriveAgentIdentity(\nparent: ForgeAgentIdentity,\nagentName: String,\nnamespace: String;",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/LocalDev.kt",
      "sha256": "0b540167e7bdef95cbaf700bdbd99f62dd851df7dd6ae4665673b21d9f2b185d",
      "artifactSha256": "7c8432b9eafebd24b1cc4fb96dd90dd5b33e92816bfd0f19646c87fa0878ddae",
      "url": "/reference/source/forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/LocalDev.kt.txt",
      "declarations": [
        {
          "name": "public const val FORGE_DEV_METHOD: String;",
          "line": 21,
          "signature": "public const val FORGE_DEV_METHOD: String;",
          "documentation": ""
        },
        {
          "name": "public data class LocalDevProfile(",
          "line": 35,
          "signature": "public data class LocalDevProfile(\nval machineId: String,\nval hostname: String,\nval username: String,\nval profileName: String,\n)\n\n/**\n* Constructs a local dev DID string.\n*\n* Format: `did:forge-dev:<machine-id>:<kind>:<identifier>`\n*\n* @param machineId The 16-char hex machine identifier from the profile.\n* @param kind One of `\"mhr\"`, `\"hmr\"`, `\"agent\"`, `\"org\"`.\n* @param identifier The entity name or derived fingerprint.\n* @return The formatted DID string.\n*/\npublic fun forgeDevDid(machineId: String, kind: String, identifier: String): String =",
          "documentation": ""
        },
        {
          "name": "public fun forgeDevDid(machineId: String, kind: String, identifier: String): String =",
          "line": 52,
          "signature": "public fun forgeDevDid(machineId: String, kind: String, identifier: String): String =",
          "documentation": ""
        },
        {
          "name": "public fun deriveMachineIdFromParts(hostname: String, username: String, profileName: String): String",
          "line": 70,
          "signature": "public fun deriveMachineIdFromParts(hostname: String, username: String, profileName: String): String",
          "documentation": ""
        },
        {
          "name": "public fun deriveMachineId(profileName: String): String",
          "line": 84,
          "signature": "public fun deriveMachineId(profileName: String): String",
          "documentation": ""
        },
        {
          "name": "public fun validateForgeDevDid(did: String)",
          "line": 96,
          "signature": "public fun validateForgeDevDid(did: String)",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/Persistence.kt",
      "sha256": "6289d8de9de46191c64691d711afd6dd8d0c5f2e4529bd285bffb476107eda86",
      "artifactSha256": "912b85f56329e70226b90c11ef344c04878052a8261d8d91d99a3da4c0322130",
      "url": "/reference/source/forge-kt/forge-identity/src/main/kotlin/com/l1fe/forge/identity/Persistence.kt.txt",
      "declarations": [
        {
          "name": "public data class ProtectedPrivateKey(",
          "line": 19,
          "signature": "public data class ProtectedPrivateKey(\nval scheme: String,\nval payload: String,\n@SerialName(\"key_id\")\nval keyId: String?;",
          "documentation": ""
        },
        {
          "name": "public interface IdentityKeyProtector",
          "line": 26,
          "signature": "public interface IdentityKeyProtector",
          "documentation": ""
        },
        {
          "name": "public fun protect(privateKeyHex: String): ProtectedPrivateKey",
          "line": 27,
          "signature": "public fun protect(privateKeyHex: String): ProtectedPrivateKey\n\npublic fun unprotect(protectedPrivateKey: ProtectedPrivateKey): String\n}\n\n/**\n* A serializable identity envelope for persistence.\n*\n* Contains all data needed to reconstruct a [ForgeAgentIdentity] without\n* storing raw private key material.\n*/\n@Serializable\ninternal data class IdentityEnvelope(\n@SerialName(\"format_version\")\nval formatVersion: Int;",
          "documentation": ""
        },
        {
          "name": "public fun unprotect(protectedPrivateKey: ProtectedPrivateKey): String",
          "line": 29,
          "signature": "public fun unprotect(protectedPrivateKey: ProtectedPrivateKey): String\n}\n\n/**\n* A serializable identity envelope for persistence.\n*\n* Contains all data needed to reconstruct a [ForgeAgentIdentity] without\n* storing raw private key material.\n*/\n@Serializable\ninternal data class IdentityEnvelope(\n@SerialName(\"format_version\")\nval formatVersion: Int;",
          "documentation": ""
        },
        {
          "name": "public fun saveIdentity(identity: ForgeAgentIdentity, file: File)",
          "line": 67,
          "signature": "public fun saveIdentity(identity: ForgeAgentIdentity, file: File)",
          "documentation": ""
        },
        {
          "name": "public fun saveIdentity(",
          "line": 74,
          "signature": "public fun saveIdentity(\nidentity: ForgeAgentIdentity,\nfile: File,\nprotector: IdentityKeyProtector,\n)",
          "documentation": ""
        },
        {
          "name": "public fun loadIdentity(file: File): ForgeAgentIdentity",
          "line": 107,
          "signature": "public fun loadIdentity(file: File): ForgeAgentIdentity",
          "documentation": ""
        },
        {
          "name": "public fun loadIdentity(",
          "line": 114,
          "signature": "public fun loadIdentity(\nfile: File,\nprotector: IdentityKeyProtector,\n): ForgeAgentIdentity",
          "documentation": ""
        }
      ]
    }
  ]
}
