{
  "name": "com.l1fe.forge:forge-agent",
  "language": "kotlin",
  "version": "0.1.0",
  "description": "Kotlin/JVM forge-agent module.",
  "manifest": "forge-kt/forge-agent/build.gradle.kts",
  "manifestSha256": "f4544ece38cee2901527b0188d050f9263c344e449c8f28555e1e3636032f696",
  "status": "source-reference",
  "registryPublicationVerified": false,
  "route": "/libraries/kotlin/forge-agent",
  "features": {},
  "files": [
    {
      "path": "forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/Agent.kt",
      "sha256": "940f6972a8fd4e98d8e5a0c1dee09241c7fe29e681b141b5dbf3534895e1e6a0",
      "artifactSha256": "bf3077b4efa3932d544a516d0303587f1f1828ffdcab0af94ba9cb42569a1a7f",
      "url": "/reference/source/forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/Agent.kt.txt",
      "declarations": [
        {
          "name": "public data class AgentConfig(",
          "line": 42,
          "signature": "public data class AgentConfig(\nval name: String,\nval model: LanguageModel,\nval tools: List<ToolDefinition>;",
          "documentation": ""
        },
        {
          "name": "public data class AgentSummary(",
          "line": 63,
          "signature": "public data class AgentSummary(\nval name: String,\nval state: LifecycleState,\nval healthStatus: HealthStatus,\n)\n\n/**\n* An agent that wraps the ANVIL tool loop with lifecycle management.\n*\n* Manages the full lifecycle per ANVIL Spec Section 13.2:\n* Initializing -> Ready -> Running -> Ready (idle) or Terminated.\n* The agent must be initialized before running, and can be terminated\n* when no longer needed.\n*\n* ANVIL Spec Section 10.2\n*\n* @param config The agent configuration.\n*/\npublic class ToolLoopAgent(\nprivate val config: AgentConfig,\n)",
          "documentation": ""
        },
        {
          "name": "public class ToolLoopAgent(",
          "line": 81,
          "signature": "public class ToolLoopAgent(\nprivate val config: AgentConfig,\n)",
          "documentation": ""
        },
        {
          "name": "public val name: String get();",
          "line": 89,
          "signature": "public val name: String get();",
          "documentation": ""
        },
        {
          "name": "public val state: LifecycleState get();",
          "line": 92,
          "signature": "public val state: LifecycleState get();",
          "documentation": ""
        },
        {
          "name": "public val health: HealthProfile get();",
          "line": 95,
          "signature": "public val health: HealthProfile get();",
          "documentation": ""
        },
        {
          "name": "public fun initialize()",
          "line": 106,
          "signature": "public fun initialize()",
          "documentation": ""
        },
        {
          "name": "public suspend fun run(",
          "line": 125,
          "signature": "public suspend fun run(\nmessages: List<ModelMessage>,\nadditionalStopConditions: List<StopCondition>;",
          "documentation": ""
        },
        {
          "name": "public fun pause()",
          "line": 171,
          "signature": "public fun pause()",
          "documentation": ""
        },
        {
          "name": "public fun resume()",
          "line": 184,
          "signature": "public fun resume()",
          "documentation": ""
        },
        {
          "name": "public fun terminate(reason: String;",
          "line": 198,
          "signature": "public fun terminate(reason: String;",
          "documentation": ""
        },
        {
          "name": "public fun summary(): AgentSummary;",
          "line": 207,
          "signature": "public fun summary(): AgentSummary;",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/AgentError.kt",
      "sha256": "c85a5cad949c74af1f7984d174d2eed0e01a895e4fdf5a6f693225714668432b",
      "artifactSha256": "81b650d983905f7447068355bd93bd41185e1e7ae4854174b4c5fa26085734e8",
      "url": "/reference/source/forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/AgentError.kt.txt",
      "declarations": [
        {
          "name": "public sealed class ForgeAgentError(",
          "line": 18,
          "signature": "public sealed class ForgeAgentError(\nmessage: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class MaxIterationsExceeded(",
          "line": 31,
          "signature": "public class MaxIterationsExceeded(\npublic val maxIterations: Int,\npublic val completedIterations: Int,\n) : ForgeAgentError(\n\"tool loop exceeded maximum iterations: completed $completedIterations \" +\n\"of $maxIterations allowed (see ANVIL Spec SS10.1)\"\n)\n\n/**\n* The tool loop exceeded the maximum total token budget.\n*\n* @property maxTokens The configured maximum token budget.\n* @property consumedTokens The number of tokens consumed before the limit.\n*/\npublic class MaxTokensExceeded(\npublic val maxTokens: Long,\npublic val consumedTokens: Long,\n) : ForgeAgentError(\n\"tool loop exceeded maximum token budget: consumed $consumedTokens \" +\n\"tokens of $maxTokens allowed\"\n)\n\n/**\n* A tool referenced by the model was not found in the registry.\n*\n* @property toolName The name of the tool that was not found.",
          "documentation": ""
        },
        {
          "name": "public val maxIterations: Int,",
          "line": 32,
          "signature": "public val maxIterations: Int,\npublic val completedIterations: Int,\n) : ForgeAgentError(\n\"tool loop exceeded maximum iterations: completed $completedIterations \" +\n\"of $maxIterations allowed (see ANVIL Spec SS10.1)\"\n)\n\n/**\n* The tool loop exceeded the maximum total token budget.\n*\n* @property maxTokens The configured maximum token budget.\n* @property consumedTokens The number of tokens consumed before the limit.\n*/\npublic class MaxTokensExceeded(\npublic val maxTokens: Long,\npublic val consumedTokens: Long,\n) : ForgeAgentError(\n\"tool loop exceeded maximum token budget: consumed $consumedTokens \" +\n\"tokens of $maxTokens allowed\"\n)\n\n/**\n* A tool referenced by the model was not found in the registry.\n*\n* @property toolName The name of the tool that was not found.\n* @property available The list of registered tool names.",
          "documentation": ""
        },
        {
          "name": "public val completedIterations: Int,",
          "line": 33,
          "signature": "public val completedIterations: Int,\n) : ForgeAgentError(\n\"tool loop exceeded maximum iterations: completed $completedIterations \" +\n\"of $maxIterations allowed (see ANVIL Spec SS10.1)\"\n)\n\n/**\n* The tool loop exceeded the maximum total token budget.\n*\n* @property maxTokens The configured maximum token budget.\n* @property consumedTokens The number of tokens consumed before the limit.\n*/\npublic class MaxTokensExceeded(\npublic val maxTokens: Long,\npublic val consumedTokens: Long,\n) : ForgeAgentError(\n\"tool loop exceeded maximum token budget: consumed $consumedTokens \" +\n\"tokens of $maxTokens allowed\"\n)\n\n/**\n* A tool referenced by the model was not found in the registry.\n*\n* @property toolName The name of the tool that was not found.\n* @property available The list of registered tool names.\n*/",
          "documentation": ""
        },
        {
          "name": "public class MaxTokensExceeded(",
          "line": 45,
          "signature": "public class MaxTokensExceeded(\npublic val maxTokens: Long,\npublic val consumedTokens: Long,\n) : ForgeAgentError(\n\"tool loop exceeded maximum token budget: consumed $consumedTokens \" +\n\"tokens of $maxTokens allowed\"\n)\n\n/**\n* A tool referenced by the model was not found in the registry.\n*\n* @property toolName The name of the tool that was not found.\n* @property available The list of registered tool names.\n*/\npublic class ToolNotFound(\npublic val toolName: String,\npublic val available: List<String>,\n) : ForgeAgentError(\n\"tool '$toolName' not found in registry; \" +",
          "documentation": ""
        },
        {
          "name": "public val maxTokens: Long,",
          "line": 46,
          "signature": "public val maxTokens: Long,\npublic val consumedTokens: Long,\n) : ForgeAgentError(\n\"tool loop exceeded maximum token budget: consumed $consumedTokens \" +\n\"tokens of $maxTokens allowed\"\n)\n\n/**\n* A tool referenced by the model was not found in the registry.\n*\n* @property toolName The name of the tool that was not found.\n* @property available The list of registered tool names.\n*/\npublic class ToolNotFound(\npublic val toolName: String,\npublic val available: List<String>,\n) : ForgeAgentError(\n\"tool '$toolName' not found in registry; \" +",
          "documentation": ""
        },
        {
          "name": "public val consumedTokens: Long,",
          "line": 47,
          "signature": "public val consumedTokens: Long,\n) : ForgeAgentError(\n\"tool loop exceeded maximum token budget: consumed $consumedTokens \" +\n\"tokens of $maxTokens allowed\"\n)\n\n/**\n* A tool referenced by the model was not found in the registry.\n*\n* @property toolName The name of the tool that was not found.\n* @property available The list of registered tool names.\n*/\npublic class ToolNotFound(\npublic val toolName: String,\npublic val available: List<String>,\n) : ForgeAgentError(\n\"tool '$toolName' not found in registry; \" +",
          "documentation": ""
        },
        {
          "name": "public class ToolNotFound(",
          "line": 59,
          "signature": "public class ToolNotFound(\npublic val toolName: String,\npublic val available: List<String>,\n) : ForgeAgentError(\n\"tool '$toolName' not found in registry; \" +",
          "documentation": ""
        },
        {
          "name": "public val toolName: String,",
          "line": 60,
          "signature": "public val toolName: String,\npublic val available: List<String>,\n) : ForgeAgentError(\n\"tool '$toolName' not found in registry; \" +",
          "documentation": ""
        },
        {
          "name": "public val available: List<String>,",
          "line": 61,
          "signature": "public val available: List<String>,\n) : ForgeAgentError(\n\"tool '$toolName' not found in registry; \" +",
          "documentation": ""
        },
        {
          "name": "public class ToolExecutionFailed(",
          "line": 73,
          "signature": "public class ToolExecutionFailed(\npublic val toolName: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val toolName: String,",
          "line": 74,
          "signature": "public val toolName: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 75,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class ModelError(",
          "line": 84,
          "signature": "public class ModelError(\npublic val detail: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val detail: String,",
          "line": 85,
          "signature": "public val detail: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class InvalidState(",
          "line": 95,
          "signature": "public class InvalidState(\npublic val currentState: String,\npublic val requiredState: String,\n) : ForgeAgentError(\n\"agent is in state '$currentState' but must be in '$requiredState' to perform this operation\"\n)\n\n/**\n* A workflow step failed.\n*\n* @property stepIndex The index of the failed step.\n* @property stepName The name of the failed step (if available).\n* @property reason The failure reason.\n*/\npublic class WorkflowStepFailed(\npublic val stepIndex: Int,\npublic val stepName: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val currentState: String,",
          "line": 96,
          "signature": "public val currentState: String,\npublic val requiredState: String,\n) : ForgeAgentError(\n\"agent is in state '$currentState' but must be in '$requiredState' to perform this operation\"\n)\n\n/**\n* A workflow step failed.\n*\n* @property stepIndex The index of the failed step.\n* @property stepName The name of the failed step (if available).\n* @property reason The failure reason.\n*/\npublic class WorkflowStepFailed(\npublic val stepIndex: Int,\npublic val stepName: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val requiredState: String,",
          "line": 97,
          "signature": "public val requiredState: String,\n) : ForgeAgentError(\n\"agent is in state '$currentState' but must be in '$requiredState' to perform this operation\"\n)\n\n/**\n* A workflow step failed.\n*\n* @property stepIndex The index of the failed step.\n* @property stepName The name of the failed step (if available).\n* @property reason The failure reason.\n*/\npublic class WorkflowStepFailed(\npublic val stepIndex: Int,\npublic val stepName: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class WorkflowStepFailed(",
          "line": 109,
          "signature": "public class WorkflowStepFailed(\npublic val stepIndex: Int,\npublic val stepName: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val stepIndex: Int,",
          "line": 110,
          "signature": "public val stepIndex: Int,\npublic val stepName: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val stepName: String,",
          "line": 111,
          "signature": "public val stepName: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 112,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class DelegationFailed(",
          "line": 125,
          "signature": "public class DelegationFailed(\npublic val parentDid: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val parentDid: String,",
          "line": 126,
          "signature": "public val parentDid: String,\npublic val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 127,
          "signature": "public val reason: String,\ncause: Throwable?;",
          "documentation": ""
        },
        {
          "name": "public class MessagingError(",
          "line": 140,
          "signature": "public class MessagingError(\npublic val channelId: String,\npublic val reason: String,\n) : ForgeAgentError(\"messaging error on channel '$channelId': $reason\")\n}",
          "documentation": ""
        },
        {
          "name": "public val channelId: String,",
          "line": 141,
          "signature": "public val channelId: String,\npublic val reason: String,\n) : ForgeAgentError(\"messaging error on channel '$channelId': $reason\")\n}",
          "documentation": ""
        },
        {
          "name": "public val reason: String,",
          "line": 142,
          "signature": "public val reason: String,\n) : ForgeAgentError(\"messaging error on channel '$channelId': $reason\")\n}",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/LoopControl.kt",
      "sha256": "86d3e47502db31a78448383da401fd0edbb6439871bcaa272e975e6a765ae2d2",
      "artifactSha256": "9bd95341c4f05d386c3edacd1ac1f4042fe75b4d7bc62c77effb2000fa2c40ce",
      "url": "/reference/source/forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/LoopControl.kt.txt",
      "declarations": [
        {
          "name": "public enum class AgentStopReason",
          "line": 21,
          "signature": "public enum class AgentStopReason",
          "documentation": ""
        },
        {
          "name": "public fun interface StopCondition",
          "line": 55,
          "signature": "public fun interface StopCondition",
          "documentation": ""
        },
        {
          "name": "public fun evaluate(context: LoopContext): StopDecision",
          "line": 63,
          "signature": "public fun evaluate(context: LoopContext): StopDecision\n}\n\n/**\n* The decision from a [StopCondition] evaluation.\n*\n* @property shouldStop Whether the loop should stop.\n* @property reason The stop reason (only meaningful if [shouldStop] is `true`).\n* @property detail A human-readable detail message.\n*/\npublic data class StopDecision(\nval shouldStop: Boolean,\nval reason: AgentStopReason,\nval detail: String;",
          "documentation": ""
        },
        {
          "name": "public data class StopDecision(",
          "line": 73,
          "signature": "public data class StopDecision(\nval shouldStop: Boolean,\nval reason: AgentStopReason,\nval detail: String;",
          "documentation": ""
        },
        {
          "name": "public fun continueLoop(): StopDecision =",
          "line": 80,
          "signature": "public fun continueLoop(): StopDecision =",
          "documentation": ""
        },
        {
          "name": "public fun stop(reason: AgentStopReason, detail: String;",
          "line": 84,
          "signature": "public fun stop(reason: AgentStopReason, detail: String;",
          "documentation": ""
        },
        {
          "name": "public data class LoopContext(",
          "line": 97,
          "signature": "public data class LoopContext(\nval iteration: Int,\nval totalTokens: Long,\nval lastFinishReason: FinishReason?,\nval terminated: Boolean;",
          "documentation": ""
        },
        {
          "name": "public fun maxIterations(max: Int): StopCondition;",
          "line": 110,
          "signature": "public fun maxIterations(max: Int): StopCondition;",
          "documentation": ""
        },
        {
          "name": "public fun maxTotalTokens(max: Long): StopCondition;",
          "line": 127,
          "signature": "public fun maxTotalTokens(max: Long): StopCondition;",
          "documentation": ""
        },
        {
          "name": "public fun modelStopsNaturally(): StopCondition;",
          "line": 147,
          "signature": "public fun modelStopsNaturally(): StopCondition;",
          "documentation": ""
        },
        {
          "name": "public fun evaluateStopConditions(",
          "line": 169,
          "signature": "public fun evaluateStopConditions(\nconditions: List<StopCondition>,\ncontext: LoopContext,\n): StopDecision",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/Messaging.kt",
      "sha256": "e584137b86d6282fcab707a5672b817514bf0617a05c753625a2706cfed4fa47",
      "artifactSha256": "0e8d6c7d4a032fb32e1b62a6d443dc69626edfa7302cd256903c906ff3e6c317",
      "url": "/reference/source/forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/Messaging.kt.txt",
      "declarations": [
        {
          "name": "public data class AgentMessage<T>(",
          "line": 22,
          "signature": "public data class AgentMessage<T>(\nval senderId: String,\nval recipientId: String,\nval payload: T,\nval correlationId: String?;",
          "documentation": ""
        },
        {
          "name": "public class AgentChannel<T>(",
          "line": 41,
          "signature": "public class AgentChannel<T>(\npublic val channelId: String,\ncapacity: Int;",
          "documentation": ""
        },
        {
          "name": "public val channelId: String,",
          "line": 42,
          "signature": "public val channelId: String,\ncapacity: Int;",
          "documentation": ""
        },
        {
          "name": "public suspend fun send(message: AgentMessage<T>)",
          "line": 55,
          "signature": "public suspend fun send(message: AgentMessage<T>)",
          "documentation": ""
        },
        {
          "name": "public suspend fun receive(): AgentMessage<T>",
          "line": 74,
          "signature": "public suspend fun receive(): AgentMessage<T>",
          "documentation": ""
        },
        {
          "name": "public suspend fun receiveOrNull(timeoutMs: Long): AgentMessage<T>?",
          "line": 91,
          "signature": "public suspend fun receiveOrNull(timeoutMs: Long): AgentMessage<T>?",
          "documentation": ""
        },
        {
          "name": "public fun trySend(message: AgentMessage<T>): Boolean",
          "line": 103,
          "signature": "public fun trySend(message: AgentMessage<T>): Boolean",
          "documentation": ""
        },
        {
          "name": "public fun tryReceive(): AgentMessage<T>?",
          "line": 112,
          "signature": "public fun tryReceive(): AgentMessage<T>?",
          "documentation": ""
        },
        {
          "name": "public fun close()",
          "line": 122,
          "signature": "public fun close()",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/SubAgent.kt",
      "sha256": "85a8ee799d2ea914ebfc3967e4a397902fea5f69b3f7295d81273a0eed8b1940",
      "artifactSha256": "08b32cef2643efa40fbfbb526f18f1ff28265a20b015624ee30f076557c21b38",
      "url": "/reference/source/forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/SubAgent.kt.txt",
      "declarations": [
        {
          "name": "public data class SubAgentConfig(",
          "line": 34,
          "signature": "public data class SubAgentConfig(\nval name: String,\nval model: LanguageModel,\nval tools: List<ToolDefinition>;",
          "documentation": ""
        },
        {
          "name": "public fun createSubAgent(",
          "line": 60,
          "signature": "public fun createSubAgent(\nparent: ToolLoopAgent,\nconfig: SubAgentConfig,\n): ToolLoopAgent",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/ToolLoop.kt",
      "sha256": "41bb32ed8314cfec483fcd4e2b8aec87e81028268a70d1372e8a82cc085a8c33",
      "artifactSha256": "8150e5b4acf17d16c1cecdd9fb33523fa8c6a2a91c8dd97abced0a88f70b0efe",
      "url": "/reference/source/forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/ToolLoop.kt.txt",
      "declarations": [
        {
          "name": "public data class ToolLoopConfig(",
          "line": 42,
          "signature": "public data class ToolLoopConfig(\nval maxIterations: Int;",
          "documentation": ""
        },
        {
          "name": "public data class ToolLoopIteration(",
          "line": 58,
          "signature": "public data class ToolLoopIteration(\nval iteration: Int,\nval modelResult: GenerateResult,\nval toolResults: List<ToolResult>,\n)\n\n/**\n* The complete output of a tool loop execution.\n*\n* @property iterations The list of iterations executed.\n* @property stopReason Why the tool loop stopped.\n* @property totalUsage Cumulative token usage across all iterations.\n* @property finalMessage The final model response message.\n*/\npublic data class ToolLoopOutput(\nval iterations: List<ToolLoopIteration>,\nval stopReason: AgentStopReason,\nval totalUsage: Usage,\nval finalMessage: ModelMessage?,\n)",
          "documentation": ""
        },
        {
          "name": "public data class ToolLoopOutput(",
          "line": 72,
          "signature": "public data class ToolLoopOutput(\nval iterations: List<ToolLoopIteration>,\nval stopReason: AgentStopReason,\nval totalUsage: Usage,\nval finalMessage: ModelMessage?,\n)",
          "documentation": ""
        },
        {
          "name": "public fun text(): String?;",
          "line": 83,
          "signature": "public fun text(): String?;",
          "documentation": ""
        },
        {
          "name": "public val iterationCount: Int get();",
          "line": 88,
          "signature": "public val iterationCount: Int get();",
          "documentation": ""
        },
        {
          "name": "public suspend fun runToolLoop(",
          "line": 114,
          "signature": "public suspend fun runToolLoop(\nmodel: LanguageModel,\nmessages: List<ModelMessage>,\ntools: List<ToolDefinition>,\nexecutors: Map<String, ToolExecutor>,\nconfig: ToolLoopConfig;",
          "documentation": ""
        }
      ]
    },
    {
      "path": "forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/Workflow.kt",
      "sha256": "251296eeb2c0af25b695dada18b4995d683ee924722691cd227ac7c50e1b1cce",
      "artifactSha256": "24523d9addee69d1398c848ee3aa677320b19eff58ec0724e1feed0921b3db70",
      "url": "/reference/source/forge-kt/forge-agent/src/main/kotlin/com/l1fe/forge/agent/Workflow.kt.txt",
      "declarations": [
        {
          "name": "public data class WorkflowStep<T>(",
          "line": 21,
          "signature": "public data class WorkflowStep<T>(\nval name: String,\nval execute: suspend (T) -> T,\n)\n\n/**\n* A sequential workflow that executes steps in order.\n*\n* Each step receives the output of the previous step. If any step\n* fails, the workflow fails at that point.\n*\n* ANVIL Spec Section 10.3.1 -- Sequential Workflow\n*\n* @param T The type flowing through the workflow steps.\n* @property name A human-readable name for the workflow.\n* @property steps The ordered list of steps.\n*/\npublic class SequentialWorkflow<T>(\npublic val name: String,\nprivate val steps: List<WorkflowStep<T>>,\n)",
          "documentation": ""
        },
        {
          "name": "public class SequentialWorkflow<T>(",
          "line": 38,
          "signature": "public class SequentialWorkflow<T>(\npublic val name: String,\nprivate val steps: List<WorkflowStep<T>>,\n)",
          "documentation": ""
        },
        {
          "name": "public val name: String,",
          "line": 39,
          "signature": "public val name: String,\nprivate val steps: List<WorkflowStep<T>>,\n)",
          "documentation": ""
        },
        {
          "name": "public suspend fun execute(input: T): T",
          "line": 50,
          "signature": "public suspend fun execute(input: T): T",
          "documentation": ""
        },
        {
          "name": "public val stepCount: Int get();",
          "line": 70,
          "signature": "public val stepCount: Int get();",
          "documentation": ""
        },
        {
          "name": "public class ParallelWorkflow<I, O>(",
          "line": 86,
          "signature": "public class ParallelWorkflow<I, O>(\npublic val name: String,\nprivate val steps: List<ParallelStep<I, O>>,\n)",
          "documentation": ""
        },
        {
          "name": "public val name: String,",
          "line": 87,
          "signature": "public val name: String,\nprivate val steps: List<ParallelStep<I, O>>,\n)",
          "documentation": ""
        },
        {
          "name": "public suspend fun execute(input: I): List<O>;",
          "line": 98,
          "signature": "public suspend fun execute(input: I): List<O>;",
          "documentation": ""
        },
        {
          "name": "public val stepCount: Int get();",
          "line": 116,
          "signature": "public val stepCount: Int get();",
          "documentation": ""
        },
        {
          "name": "public data class ParallelStep<I, O>(",
          "line": 127,
          "signature": "public data class ParallelStep<I, O>(\nval name: String,\nval execute: suspend (I) -> O,\n)\n\n/**\n* A router workflow that selects a branch based on the input.\n*\n* The router function examines the input and returns a branch key.\n* The corresponding step is then executed.\n*\n* ANVIL Spec Section 10.3.3 -- Router Workflow\n*\n* @param T The type flowing through the workflow.\n* @property name A human-readable name for the workflow.\n* @property router A function that selects a branch key from the input.\n* @property branches A map of branch key to workflow step.\n* @property fallback An optional default step if no branch matches.\n*/\npublic class RouterWorkflow<T>(\npublic val name: String,\nprivate val router: suspend (T) -> String,\nprivate val branches: Map<String, WorkflowStep<T>>,\nprivate val fallback: WorkflowStep<T>?;",
          "documentation": ""
        },
        {
          "name": "public class RouterWorkflow<T>(",
          "line": 146,
          "signature": "public class RouterWorkflow<T>(\npublic val name: String,\nprivate val router: suspend (T) -> String,\nprivate val branches: Map<String, WorkflowStep<T>>,\nprivate val fallback: WorkflowStep<T>?;",
          "documentation": ""
        },
        {
          "name": "public val name: String,",
          "line": 147,
          "signature": "public val name: String,\nprivate val router: suspend (T) -> String,\nprivate val branches: Map<String, WorkflowStep<T>>,\nprivate val fallback: WorkflowStep<T>?;",
          "documentation": ""
        },
        {
          "name": "public suspend fun execute(input: T): T",
          "line": 160,
          "signature": "public suspend fun execute(input: T): T",
          "documentation": ""
        },
        {
          "name": "public val branchCount: Int get();",
          "line": 195,
          "signature": "public val branchCount: Int get();",
          "documentation": ""
        }
      ]
    }
  ]
}
