{
  "name": "com.l1fe.forge:forge-tool",
  "language": "kotlin",
  "version": "0.1.0",
  "description": "Kotlin/JVM forge-tool module.",
  "manifest": "forge-kt/forge-tool/build.gradle.kts",
  "manifestSha256": "76088df15e33078c144e6cc831d4238bd81e52a4a30d8d00f6df135fa6e2123f",
  "status": "source-reference",
  "registryPublicationVerified": false,
  "route": "/libraries/kotlin/forge-tool",
  "features": {},
  "files": [
    {
      "path": "forge-kt/forge-tool/src/main/kotlin/com/l1fe/forge/tool/ToolApproval.kt",
      "sha256": "c0bcd2428d70adca0364c516713cab90575f6a95afbf87622a16054203c044d7",
      "artifactSha256": "038b1c6e71e38c8b8725e7f2c42c3e74a7a663300840a43e2837819a70d40f12",
      "url": "/reference/source/forge-kt/forge-tool/src/main/kotlin/com/l1fe/forge/tool/ToolApproval.kt.txt",
      "declarations": [
        {
          "name": "public interface ApprovalHandler",
          "line": 25,
          "signature": "public interface ApprovalHandler",
          "documentation": ""
        },
        {
          "name": "public suspend fun check(call: ToolCall, tier: ToolTier): ToolApproval",
          "line": 34,
          "signature": "public suspend fun check(call: ToolCall, tier: ToolTier): ToolApproval\n}\n\n/**\n* An approval handler that always approves tool calls.\n*\n* Useful for development, testing, and scenarios where all tools\n* are pre-authorized.\n*\n* Security consideration: Using [AutoApprove] in production means\n* every tool call is permitted. For production use with External-tier\n* tools, prefer [TierBasedApproval] or a custom handler.\n*/\npublic object AutoApprove : ApprovalHandler",
          "documentation": ""
        },
        {
          "name": "public object AutoApprove : ApprovalHandler",
          "line": 47,
          "signature": "public object AutoApprove : ApprovalHandler",
          "documentation": ""
        },
        {
          "name": "public class DenyAll(",
          "line": 68,
          "signature": "public class DenyAll(\nprivate val reason: String,\n) : ApprovalHandler",
          "documentation": ""
        },
        {
          "name": "public object TierBasedApproval : ApprovalHandler",
          "line": 97,
          "signature": "public object TierBasedApproval : ApprovalHandler",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-tool/src/main/kotlin/com/l1fe/forge/tool/ToolDefinition.kt",
      "sha256": "1a858af23cc2b48a592211ef01baa045b82e0a78da438177ada72d7e2addec60",
      "artifactSha256": "f0f5c7bf0ac302f308558808490f9e6c4d549a2c746d5e2a1227756dde9287ce",
      "url": "/reference/source/forge-kt/forge-tool/src/main/kotlin/com/l1fe/forge/tool/ToolDefinition.kt.txt",
      "declarations": [
        {
          "name": "public class ToolBuilder(private val name: String)",
          "line": 28,
          "signature": "public class ToolBuilder(private val name: String)",
          "documentation": ""
        },
        {
          "name": "public fun description(description: String): ToolBuilder;",
          "line": 40,
          "signature": "public fun description(description: String): ToolBuilder;",
          "documentation": ""
        },
        {
          "name": "public fun tier(tier: ToolTier): ToolBuilder;",
          "line": 52,
          "signature": "public fun tier(tier: ToolTier): ToolBuilder;",
          "documentation": ""
        },
        {
          "name": "public fun parameters(parameters: JsonSchema): ToolBuilder;",
          "line": 62,
          "signature": "public fun parameters(parameters: JsonSchema): ToolBuilder;",
          "documentation": ""
        },
        {
          "name": "public fun executor(executor: ToolExecutor): ToolBuilder;",
          "line": 72,
          "signature": "public fun executor(executor: ToolExecutor): ToolBuilder;",
          "documentation": ""
        },
        {
          "name": "public fun handler(handler: (ToolCall) -> ToolResult): ToolBuilder;",
          "line": 85,
          "signature": "public fun handler(handler: (ToolCall) -> ToolResult): ToolBuilder;",
          "documentation": ""
        },
        {
          "name": "public fun build(): Pair<ToolDefinition, ToolExecutor?>",
          "line": 94,
          "signature": "public fun build(): Pair<ToolDefinition, ToolExecutor?>",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-tool/src/main/kotlin/com/l1fe/forge/tool/ToolError.kt",
      "sha256": "21cfb13e92f2f61a1dfb2cfb3be38cb88fee74ccdcd0682c28bdeba08a430931",
      "artifactSha256": "a154f9b055c45b8f1fb85251f3ccfabed7ac6dc6f26cc2b537bf33c2953835b8",
      "url": "/reference/source/forge-kt/forge-tool/src/main/kotlin/com/l1fe/forge/tool/ToolError.kt.txt",
      "declarations": [
        {
          "name": "public sealed class ToolError(",
          "line": 18,
          "signature": "public sealed class ToolError(\nmessage: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class ToolNotFound(",
          "line": 28,
          "signature": "public class ToolNotFound(\npublic val name: String,\n) : ToolError(\n\"tool '$name' not found in registry; register it with ToolRegistry.register() before invoking\"",
          "documentation": ""
        },
        {
          "name": "public val name: String,",
          "line": 29,
          "signature": "public val name: String,\n) : ToolError(\n\"tool '$name' not found in registry; register it with ToolRegistry.register() before invoking\"",
          "documentation": ""
        },
        {
          "name": "public class ExecutionFailed(",
          "line": 40,
          "signature": "public class ExecutionFailed(\npublic val name: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val name: String,",
          "line": 41,
          "signature": "public val name: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 42,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class ApprovalDenied(",
          "line": 54,
          "signature": "public class ApprovalDenied(\npublic val name: String,\npublic val reason: String,\n) : ToolError(\"tool '$name' invocation denied by approval handler: $reason\")\n\n/**\n* Schema validation failed for tool arguments.\n*\n* @property name The tool whose schema was violated.\n* @property path JSON pointer path to the failing field.\n* @property reason Human-readable description of what was expected.\n*/\npublic class SchemaValidation(\npublic val name: String,\npublic val path: String,\npublic val reason: String,\n) : ToolError(\"schema validation failed for tool '$name' at path '$path': $reason\")\n\n/**\n* A tool was registered or invoked with an incorrect tier classification.\n*\n* ANVIL Spec Section 8.1 -- Tool Tier Classification\n*\n* @property name The tool whose tier is mismatched.\n* @property expected The expected tier classification.\n* @property actual The actual tier classification provided.",
          "documentation": ""
        },
        {
          "name": "public val name: String,",
          "line": 55,
          "signature": "public val name: String,\npublic val reason: String,\n) : ToolError(\"tool '$name' invocation denied by approval handler: $reason\")\n\n/**\n* Schema validation failed for tool arguments.\n*\n* @property name The tool whose schema was violated.\n* @property path JSON pointer path to the failing field.\n* @property reason Human-readable description of what was expected.\n*/\npublic class SchemaValidation(\npublic val name: String,\npublic val path: String,\npublic val reason: String,\n) : ToolError(\"schema validation failed for tool '$name' at path '$path': $reason\")\n\n/**\n* A tool was registered or invoked with an incorrect tier classification.\n*\n* ANVIL Spec Section 8.1 -- Tool Tier Classification\n*\n* @property name The tool whose tier is mismatched.\n* @property expected The expected tier classification.\n* @property actual The actual tier classification provided.\n*/",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 56,
          "signature": "public val reason: String,\n) : ToolError(\"tool '$name' invocation denied by approval handler: $reason\")\n\n/**\n* Schema validation failed for tool arguments.\n*\n* @property name The tool whose schema was violated.\n* @property path JSON pointer path to the failing field.\n* @property reason Human-readable description of what was expected.\n*/\npublic class SchemaValidation(\npublic val name: String,\npublic val path: String,\npublic val reason: String,\n) : ToolError(\"schema validation failed for tool '$name' at path '$path': $reason\")\n\n/**\n* A tool was registered or invoked with an incorrect tier classification.\n*\n* ANVIL Spec Section 8.1 -- Tool Tier Classification\n*\n* @property name The tool whose tier is mismatched.\n* @property expected The expected tier classification.\n* @property actual The actual tier classification provided.\n*/\npublic class InvalidTier(",
          "documentation": ""
        },
        {
          "name": "public class SchemaValidation(",
          "line": 66,
          "signature": "public class SchemaValidation(\npublic val name: String,\npublic val path: String,\npublic val reason: String,\n) : ToolError(\"schema validation failed for tool '$name' at path '$path': $reason\")\n\n/**\n* A tool was registered or invoked with an incorrect tier classification.\n*\n* ANVIL Spec Section 8.1 -- Tool Tier Classification\n*\n* @property name The tool whose tier is mismatched.\n* @property expected The expected tier classification.\n* @property actual The actual tier classification provided.\n*/\npublic class InvalidTier(\npublic val name: String,\npublic val expected: String,\npublic val actual: String,\n) : ToolError(\n\"tool '$name' has invalid tier: expected $expected, got $actual (see ANVIL Spec SS8.1)\"\n)\n\n/**\n* A registry operation failed (e.g., duplicate registration).\n*",
          "documentation": ""
        },
        {
          "name": "public val name: String,",
          "line": 67,
          "signature": "public val name: String,\npublic val path: String,\npublic val reason: String,\n) : ToolError(\"schema validation failed for tool '$name' at path '$path': $reason\")\n\n/**\n* A tool was registered or invoked with an incorrect tier classification.\n*\n* ANVIL Spec Section 8.1 -- Tool Tier Classification\n*\n* @property name The tool whose tier is mismatched.\n* @property expected The expected tier classification.\n* @property actual The actual tier classification provided.\n*/\npublic class InvalidTier(\npublic val name: String,\npublic val expected: String,\npublic val actual: String,\n) : ToolError(\n\"tool '$name' has invalid tier: expected $expected, got $actual (see ANVIL Spec SS8.1)\"\n)\n\n/**\n* A registry operation failed (e.g., duplicate registration).\n*\n* @property reason What went wrong with the registry operation.",
          "documentation": ""
        },
        {
          "name": "public val path: String,",
          "line": 68,
          "signature": "public val path: String,\npublic val reason: String,\n) : ToolError(\"schema validation failed for tool '$name' at path '$path': $reason\")\n\n/**\n* A tool was registered or invoked with an incorrect tier classification.\n*\n* ANVIL Spec Section 8.1 -- Tool Tier Classification\n*\n* @property name The tool whose tier is mismatched.\n* @property expected The expected tier classification.\n* @property actual The actual tier classification provided.\n*/\npublic class InvalidTier(\npublic val name: String,\npublic val expected: String,\npublic val actual: String,\n) : ToolError(\n\"tool '$name' has invalid tier: expected $expected, got $actual (see ANVIL Spec SS8.1)\"\n)\n\n/**\n* A registry operation failed (e.g., duplicate registration).\n*\n* @property reason What went wrong with the registry operation.\n*/",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 69,
          "signature": "public val reason: String,\n) : ToolError(\"schema validation failed for tool '$name' at path '$path': $reason\")\n\n/**\n* A tool was registered or invoked with an incorrect tier classification.\n*\n* ANVIL Spec Section 8.1 -- Tool Tier Classification\n*\n* @property name The tool whose tier is mismatched.\n* @property expected The expected tier classification.\n* @property actual The actual tier classification provided.\n*/\npublic class InvalidTier(\npublic val name: String,\npublic val expected: String,\npublic val actual: String,\n) : ToolError(\n\"tool '$name' has invalid tier: expected $expected, got $actual (see ANVIL Spec SS8.1)\"\n)\n\n/**\n* A registry operation failed (e.g., duplicate registration).\n*\n* @property reason What went wrong with the registry operation.\n*/\npublic class RegistryError(",
          "documentation": ""
        },
        {
          "name": "public class InvalidTier(",
          "line": 81,
          "signature": "public class InvalidTier(\npublic val name: String,\npublic val expected: String,\npublic val actual: String,\n) : ToolError(\n\"tool '$name' has invalid tier: expected $expected, got $actual (see ANVIL Spec SS8.1)\"\n)\n\n/**\n* A registry operation failed (e.g., duplicate registration).\n*\n* @property reason What went wrong with the registry operation.\n*/\npublic class RegistryError(\npublic val reason: String,\n) : ToolError(\"tool registry error: $reason\")\n}",
          "documentation": ""
        },
        {
          "name": "public val name: String,",
          "line": 82,
          "signature": "public val name: String,\npublic val expected: String,\npublic val actual: String,\n) : ToolError(\n\"tool '$name' has invalid tier: expected $expected, got $actual (see ANVIL Spec SS8.1)\"\n)\n\n/**\n* A registry operation failed (e.g., duplicate registration).\n*\n* @property reason What went wrong with the registry operation.\n*/\npublic class RegistryError(\npublic val reason: String,\n) : ToolError(\"tool registry error: $reason\")\n}",
          "documentation": ""
        },
        {
          "name": "public val expected: String,",
          "line": 83,
          "signature": "public val expected: String,\npublic val actual: String,\n) : ToolError(\n\"tool '$name' has invalid tier: expected $expected, got $actual (see ANVIL Spec SS8.1)\"\n)\n\n/**\n* A registry operation failed (e.g., duplicate registration).\n*\n* @property reason What went wrong with the registry operation.\n*/\npublic class RegistryError(\npublic val reason: String,\n) : ToolError(\"tool registry error: $reason\")\n}",
          "documentation": ""
        },
        {
          "name": "public val actual: String,",
          "line": 84,
          "signature": "public val actual: String,\n) : ToolError(\n\"tool '$name' has invalid tier: expected $expected, got $actual (see ANVIL Spec SS8.1)\"\n)\n\n/**\n* A registry operation failed (e.g., duplicate registration).\n*\n* @property reason What went wrong with the registry operation.\n*/\npublic class RegistryError(\npublic val reason: String,\n) : ToolError(\"tool registry error: $reason\")\n}",
          "documentation": ""
        },
        {
          "name": "public class RegistryError(",
          "line": 94,
          "signature": "public class RegistryError(\npublic val reason: String,\n) : ToolError(\"tool registry error: $reason\")\n}",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 95,
          "signature": "public val reason: String,\n) : ToolError(\"tool registry error: $reason\")\n}",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-tool/src/main/kotlin/com/l1fe/forge/tool/ToolExecution.kt",
      "sha256": "d02d42a1ca52e95b7e49cd387dc6d6d6babeedabf8336c80e137eedb684e43b6",
      "artifactSha256": "b02e3035fbd020ca4b84590720c26f77ec271d58817833a3062e8c705e9e9356",
      "url": "/reference/source/forge-kt/forge-tool/src/main/kotlin/com/l1fe/forge/tool/ToolExecution.kt.txt",
      "declarations": [
        {
          "name": "public interface ToolExecutor",
          "line": 25,
          "signature": "public interface ToolExecutor",
          "documentation": ""
        },
        {
          "name": "public suspend fun execute(call: ToolCall): ToolResult",
          "line": 33,
          "signature": "public suspend fun execute(call: ToolCall): ToolResult\n\n/**\n* Returns the name of the tool this executor handles.\n*/\npublic val name: String\n}\n\n/**\n* A tool executor that wraps a synchronous function.\n*\n* Allows defining simple tools as lambdas without implementing the\n* full [ToolExecutor] interface.\n*\n* @property name The tool name this executor handles.\n* @property handler The synchronous handler function.\n*/\npublic class FnToolExecutor(\noverride val name: String,\nprivate val handler: (ToolCall) -> ToolResult,\n) : ToolExecutor",
          "documentation": ""
        },
        {
          "name": "public val name: String",
          "line": 38,
          "signature": "public val name: String\n}\n\n/**\n* A tool executor that wraps a synchronous function.\n*\n* Allows defining simple tools as lambdas without implementing the\n* full [ToolExecutor] interface.\n*\n* @property name The tool name this executor handles.\n* @property handler The synchronous handler function.\n*/\npublic class FnToolExecutor(\noverride val name: String,\nprivate val handler: (ToolCall) -> ToolResult,\n) : ToolExecutor",
          "documentation": ""
        },
        {
          "name": "public class FnToolExecutor(",
          "line": 50,
          "signature": "public class FnToolExecutor(\noverride val name: String,\nprivate val handler: (ToolCall) -> ToolResult,\n) : ToolExecutor",
          "documentation": ""
        },
        {
          "name": "public suspend fun executeToolCall(",
          "line": 83,
          "signature": "public suspend fun executeToolCall(\ncall: ToolCall,\ndefinition: ToolDefinition,\nexecutor: ToolExecutor,\napprovalHandler: ApprovalHandler,\n): ToolResult",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-tool/src/main/kotlin/com/l1fe/forge/tool/ToolTier.kt",
      "sha256": "7c75a2e13679d583208eb37c06bf3f9d31272f5fab201884d4744e5cc9db2dc5",
      "artifactSha256": "0035cd05e53b0161a9997573cedafb8050795c2b278520a17862e134f776501b",
      "url": "/reference/source/forge-kt/forge-tool/src/main/kotlin/com/l1fe/forge/tool/ToolTier.kt.txt",
      "declarations": [
        {
          "name": "public enum class ExecutionContext",
          "line": 24,
          "signature": "public enum class ExecutionContext",
          "documentation": ""
        },
        {
          "name": "public data class TierClassification(",
          "line": 59,
          "signature": "public data class TierClassification(\nval toolName: String,\nval tier: ToolTier,\nval requiresAuthorization: Boolean,\nval executionContext: ExecutionContext,\n)\n\n/**\n* Classifies a tool by its tier, returning authorization requirements\n* and execution context.\n*\n* ANVIL Spec Section 8.1--8.4\n*\n* @param toolName The name of the tool being classified.\n* @param tier The tool's tier classification.\n* @return A [TierClassification] with the tool's requirements.\n*/\npublic fun classifyTier(toolName: String, tier: ToolTier): TierClassification;",
          "documentation": ""
        },
        {
          "name": "public fun classifyTier(toolName: String, tier: ToolTier): TierClassification;",
          "line": 76,
          "signature": "public fun classifyTier(toolName: String, tier: ToolTier): TierClassification;",
          "documentation": ""
        },
        {
          "name": "public fun requiresAuthorization(tier: ToolTier): Boolean;",
          "line": 103,
          "signature": "public fun requiresAuthorization(tier: ToolTier): Boolean;",
          "documentation": ""
        },
        {
          "name": "public fun executionContextFor(tier: ToolTier): ExecutionContext;",
          "line": 111,
          "signature": "public fun executionContextFor(tier: ToolTier): ExecutionContext;",
          "documentation": ""
        }
      ]
    }
  ]
}
