{
  "name": "harness-sdk-forge",
  "language": "rust",
  "version": "0.1.0-alpha.1",
  "description": "Forge \u2194 Harness bridge \u2014 implements harness-sdk's AgentAdapter for forge-rs agents and re-exports the full forge SDK so harness apps get every Forge primitive in one import.",
  "manifest": "harness-sdk-forge/Cargo.toml",
  "manifestSha256": "1fb38773f70a4e118ace0ded7a1e5d40914bef273dbb28edd919b6955da59fc5",
  "status": "source-reference",
  "registryPublicationVerified": false,
  "route": "/libraries/rust/harness-sdk-forge",
  "features": {},
  "files": [
    {
      "path": "harness-sdk-forge/src/adapter.rs",
      "sha256": "b2bb0f4c0c9cecaf1991ffa49291463d1973fe63c80d5f99d882f86de7052e8b",
      "artifactSha256": "f644348db2f898bb519173d3124b81018299a253464141c8145919083f1b512f",
      "url": "/reference/source/harness-sdk-forge/src/adapter.rs.txt",
      "declarations": [
        {
          "name": "::ForgeAdapter",
          "line": 63,
          "signature": "pub struct ForgeAdapter {\n\n}",
          "documentation": "Bridges a [`StreamingToolLoopAgent`] into a [`harness_sdk::AgentAdapter`].\n\nOne adapter wraps one Forge agent. To expose multiple Forge agents in\nthe same harness, build multiple adapters or compose a router adapter\nover them \u2014 the harness's multi-agent panel system handles either shape.\n\n# Example\n\n```no_run\nuse std::sync::Arc;\nuse harness_sdk_forge::prelude::*;\n\n# async fn example() -> Result<(), Box<dyn std::error::Error>> {\n# let model: Arc<dyn LanguageModel> = todo!();\nlet registry = ToolRegistry::new();\nlet approval = Arc::new(AutoApprove);\nlet config = AgentConfig::new(\"data-analyst\", \"anthropic:claude-sonnet-4-5-20250929\");\n\nlet agent = Arc::new(StreamingToolLoopAgent::new(\n    config,\n    StreamingLoopConfig::default(),\n    model,\n    registry,\n    approval,\n));\n\nlet adapter: Arc<dyn AgentAdapter> = Arc::new(ForgeAdapter::new(agent));\n# Ok(())\n# }\n```"
        },
        {
          "name": "::ForgeAdapter::new",
          "line": 87,
          "signature": "pub fn new(agent: Arc<StreamingToolLoopAgent>) -> Self;",
          "documentation": "Wraps a Forge `StreamingToolLoopAgent` as a Harness adapter.\n\nDefaults:\n- `agent_id` = `agent.config().name()`\n- `display_name` = `agent.config().name()`\n- `model_label` = `agent.config().model().to_string()`\n- `capabilities` = chat + autonomy + tool-call/metrics streaming"
        },
        {
          "name": "::ForgeAdapter::with_id",
          "line": 109,
          "signature": "#[must_use]\npub fn with_id(mut self, id: impl Into<String>) -> Self;",
          "documentation": "Override the agent id surfaced to the harness."
        },
        {
          "name": "::ForgeAdapter::with_display_name",
          "line": 116,
          "signature": "#[must_use]\npub fn with_display_name(mut self, name: impl Into<String>) -> Self;",
          "documentation": "Override the display name shown in the harness's agent panel."
        },
        {
          "name": "::ForgeAdapter::with_model_label",
          "line": 123,
          "signature": "#[must_use]\npub fn with_model_label(mut self, label: impl Into<String>) -> Self;",
          "documentation": "Override the model label shown in the harness's status footer."
        },
        {
          "name": "::ForgeAdapter::with_capabilities",
          "line": 134,
          "signature": "#[must_use]\npub fn with_capabilities(mut self, caps: AdapterCapabilities) -> Self;",
          "documentation": "Override the capabilities advertised to the harness.\n\nBy default the adapter advertises chat, autonomy, metrics, tool calls,\nand streaming. Override this only when the wrapped agent has a narrower\noperational contract than a standard Forge streaming tool-loop agent."
        },
        {
          "name": "::ForgeAdapter::forge_agent",
          "line": 140,
          "signature": "pub fn forge_agent(&self) -> &Arc<StreamingToolLoopAgent>;",
          "documentation": "Returns a reference to the wrapped Forge agent."
        }
      ]
    },
    {
      "path": "harness-sdk-forge/src/lib.rs",
      "sha256": "021fc2a42c49188b0ef9a49e6b18a80f070e275570b161225c3dfb3c34b3f1ae",
      "artifactSha256": "2717866db6a5b6faed5c43b7fef52745c70b9dd79c53e344fe7b541a1221fbd5",
      "url": "/reference/source/harness-sdk-forge/src/lib.rs.txt",
      "declarations": [
        {
          "name": "adapter",
          "line": 71,
          "signature": "pub mod adapter;",
          "documentation": ""
        },
        {
          "name": "translate",
          "line": 72,
          "signature": "pub mod translate;",
          "documentation": ""
        },
        {
          "name": "pub use adapter::ForgeAdapter;",
          "line": 74,
          "signature": "pub use adapter::ForgeAdapter;",
          "documentation": ""
        },
        {
          "name": "prelude",
          "line": 84,
          "signature": "pub mod prelude;",
          "documentation": "Convenient single-import prelude that re-exports the most-used items\nfrom `harness_sdk`, `harness_tui_kit`, and the Forge SDK family.\n\n# Examples\n\n```no_run\nuse harness_sdk_forge::prelude::*;\n```"
        },
        {
          "name": "pub use crate::adapter::ForgeAdapter;",
          "line": 86,
          "signature": "pub use crate::adapter::ForgeAdapter;",
          "documentation": ""
        },
        {
          "name": "pub use harness_sdk::adapter::AgentAdapter;",
          "line": 89,
          "signature": "pub use harness_sdk::adapter::AgentAdapter;",
          "documentation": ""
        },
        {
          "name": "pub use harness_sdk::error::AdapterError;",
          "line": 90,
          "signature": "pub use harness_sdk::error::AdapterError;",
          "documentation": ""
        },
        {
          "name": "pub use harness_sdk::types::{\n        ActivityLevel, AdapterCapabilities, AutonomyEvent, HumanInterjection, InterjectionAck,\n        ResponseChunk, SdkAgentInfo, SdkAgentStatus,\n    };",
          "line": 91,
          "signature": "pub use harness_sdk::types::{\n        ActivityLevel, AdapterCapabilities, AutonomyEvent, HumanInterjection, InterjectionAck,\n        ResponseChunk, SdkAgentInfo, SdkAgentStatus,\n    };",
          "documentation": ""
        },
        {
          "name": "pub use harness_sdk::AgentApp;",
          "line": 95,
          "signature": "pub use harness_sdk::AgentApp;",
          "documentation": ""
        },
        {
          "name": "pub use forge_core::config::GenerateOptions;",
          "line": 98,
          "signature": "pub use forge_core::config::GenerateOptions;",
          "documentation": ""
        },
        {
          "name": "pub use forge_core::error::{ForgeError, ForgeResult};",
          "line": 99,
          "signature": "pub use forge_core::error::{ForgeError, ForgeResult};",
          "documentation": ""
        },
        {
          "name": "pub use forge_core::message::{MessagePart, ModelMessage, Role};",
          "line": 100,
          "signature": "pub use forge_core::message::{MessagePart, ModelMessage, Role};",
          "documentation": ""
        },
        {
          "name": "pub use forge_core::model::{ChunkStream, LanguageModel, ModelCapabilities, StreamChunkResult};",
          "line": 101,
          "signature": "pub use forge_core::model::{ChunkStream, LanguageModel, ModelCapabilities, StreamChunkResult};",
          "documentation": ""
        },
        {
          "name": "pub use forge_core::output::{FinishReason, GenerateResult, StreamChunk, Usage};",
          "line": 102,
          "signature": "pub use forge_core::output::{FinishReason, GenerateResult, StreamChunk, Usage};",
          "documentation": ""
        },
        {
          "name": "pub use forge_core::tool::{ToolCall, ToolDefinition, ToolResult, ToolTier};",
          "line": 103,
          "signature": "pub use forge_core::tool::{ToolCall, ToolDefinition, ToolResult, ToolTier};",
          "documentation": ""
        },
        {
          "name": "pub use forge_agent::agent::{\n        Agent, AgentConfig, AgentEvent, AgentOutput, ToolInvocationRecord, ToolInvocationStatus,\n    };",
          "line": 106,
          "signature": "pub use forge_agent::agent::{\n        Agent, AgentConfig, AgentEvent, AgentOutput, ToolInvocationRecord, ToolInvocationStatus,\n    };",
          "documentation": ""
        },
        {
          "name": "pub use forge_agent::observer::{AgentLoopObserver, NoOpObserver};",
          "line": 109,
          "signature": "pub use forge_agent::observer::{AgentLoopObserver, NoOpObserver};",
          "documentation": ""
        },
        {
          "name": "pub use forge_agent::streaming_tool_loop::{StreamingLoopConfig, StreamingToolLoopAgent};",
          "line": 110,
          "signature": "pub use forge_agent::streaming_tool_loop::{StreamingLoopConfig, StreamingToolLoopAgent};",
          "documentation": ""
        },
        {
          "name": "pub use forge_agent::tool_loop::ToolLoopAgent;",
          "line": 111,
          "signature": "pub use forge_agent::tool_loop::ToolLoopAgent;",
          "documentation": ""
        },
        {
          "name": "pub use forge_tool::approval::{ApprovalHandler, AutoApprove};",
          "line": 114,
          "signature": "pub use forge_tool::approval::{ApprovalHandler, AutoApprove};",
          "documentation": ""
        },
        {
          "name": "pub use forge_tool::execution::FnToolExecutor;",
          "line": 115,
          "signature": "pub use forge_tool::execution::FnToolExecutor;",
          "documentation": ""
        },
        {
          "name": "pub use forge_tool::registry::ToolRegistry;",
          "line": 116,
          "signature": "pub use forge_tool::registry::ToolRegistry;",
          "documentation": ""
        },
        {
          "name": "pub use forge_identity::lineage::{\n        create_hmr_identity, create_hmr_with_seed, create_mhr_identity, create_mhr_with_seed,\n        derive_agent_identity,\n    };",
          "line": 119,
          "signature": "pub use forge_identity::lineage::{\n        create_hmr_identity, create_hmr_with_seed, create_mhr_identity, create_mhr_with_seed,\n        derive_agent_identity,\n    };",
          "documentation": ""
        },
        {
          "name": "pub use forge_generate::{stream_text, stream_text_chunks, TextStreamResult};",
          "line": 125,
          "signature": "pub use forge_generate::{stream_text, stream_text_chunks, TextStreamResult};",
          "documentation": ""
        }
      ]
    },
    {
      "path": "harness-sdk-forge/src/translate.rs",
      "sha256": "08fcd9a68b1e2ce12ae781ed57da36b41da5c07370a303101fc4b6e5122c6f71",
      "artifactSha256": "f556b58d54080847eb631b9bf274edb0c3b4f9f575e7613cecb14858d308a02c",
      "url": "/reference/source/harness-sdk-forge/src/translate.rs.txt",
      "declarations": [
        {
          "name": "::ChunkTranslator",
          "line": 23,
          "signature": "pub struct ChunkTranslator {\n\n}",
          "documentation": "Stateful translator from Forge `StreamChunk` to Harness `ResponseChunk`.\n\nOne translator per logical agent run. Buffers tool-call accumulation so\nthe harness only sees a complete `ToolCallStart` (with the full JSON\ninput) when the Forge stream's `ToolCallDelta` chunks have all been\nobserved."
        },
        {
          "name": "::ChunkTranslator::new",
          "line": 45,
          "signature": "pub fn new(agent_id: impl Into<String>) -> Self;",
          "documentation": "Create a translator for the agent with the given id."
        },
        {
          "name": "::ChunkTranslator::agent_id",
          "line": 53,
          "signature": "pub fn agent_id(&self) -> &str;",
          "documentation": "The agent id this translator is stamping onto every emitted chunk."
        },
        {
          "name": "::ChunkTranslator::translate",
          "line": 59,
          "signature": "pub fn translate(&mut self, chunk: StreamChunk) -> Vec<ResponseChunk>;",
          "documentation": "Translate a single Forge `StreamChunk` into zero or more Harness\n`ResponseChunk` values."
        },
        {
          "name": "::ChunkTranslator::finish",
          "line": 173,
          "signature": "pub fn finish(&mut self) -> Vec<ResponseChunk>;",
          "documentation": "Drain any in-flight state at end-of-stream. Emits `ToolCallEnd`\nchunks for any tool call that started but never received an\nexplicit `ToolCallEnd` (defensive \u2014 shouldn't happen with native\nproviders, but handles malformed streams gracefully)."
        }
      ]
    }
  ]
}
