Compare commits

...

2 Commits

Author SHA1 Message Date
nym21 903e69ff77 release: v0.0.71 2025-06-25 17:59:19 +02:00
nym21 c4167ddaad mcp: small changes 2025-06-25 10:44:24 +02:00
5 changed files with 101 additions and 74 deletions
Generated
+31 -30
View File
@@ -443,7 +443,7 @@ dependencies = [
[[package]] [[package]]
name = "brk" name = "brk"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"brk_bundler", "brk_bundler",
"brk_cli", "brk_cli",
@@ -464,7 +464,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_bundler" name = "brk_bundler"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"brk_rolldown", "brk_rolldown",
"log", "log",
@@ -475,7 +475,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_cli" name = "brk_cli"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"bitcoincore-rpc", "bitcoincore-rpc",
"brk_computer", "brk_computer",
@@ -498,7 +498,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_computer" name = "brk_computer"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"bitcoin", "bitcoin",
"bitcoincore-rpc", "bitcoincore-rpc",
@@ -519,7 +519,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_core" name = "brk_core"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"bincode", "bincode",
"bitcoin", "bitcoin",
@@ -540,7 +540,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_exit" name = "brk_exit"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"brk_logger", "brk_logger",
"ctrlc", "ctrlc",
@@ -549,7 +549,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_fetcher" name = "brk_fetcher"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"brk_core", "brk_core",
"brk_logger", "brk_logger",
@@ -561,7 +561,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_indexer" name = "brk_indexer"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"bitcoin", "bitcoin",
"bitcoincore-rpc", "bitcoincore-rpc",
@@ -579,7 +579,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_interface" name = "brk_interface"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"brk_computer", "brk_computer",
"brk_core", "brk_core",
@@ -588,7 +588,7 @@ dependencies = [
"brk_vec", "brk_vec",
"color-eyre", "color-eyre",
"derive_deref", "derive_deref",
"schemars 1.0.0", "schemars 1.0.1",
"serde", "serde",
"serde_json", "serde_json",
"serde_with", "serde_with",
@@ -597,7 +597,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_logger" name = "brk_logger"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"color-eyre", "color-eyre",
"env_logger", "env_logger",
@@ -607,7 +607,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_mcp" name = "brk_mcp"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"axum", "axum",
"brk_interface", "brk_interface",
@@ -618,7 +618,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_parser" name = "brk_parser"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"bitcoin", "bitcoin",
"bitcoincore-rpc", "bitcoincore-rpc",
@@ -633,9 +633,9 @@ dependencies = [
[[package]] [[package]]
name = "brk_rmcp" name = "brk_rmcp"
version = "0.1.7" version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ecf167efab04b87a8850e12196228388733aa43adaeafd5b4d6f9e29d850263" checksum = "26db177d2933b727fe5f53b52d5ebead13d57f94ed8637717117a8bb1a3f1bae"
dependencies = [ dependencies = [
"base64 0.22.1", "base64 0.22.1",
"brk_rmcp-macros", "brk_rmcp-macros",
@@ -648,7 +648,7 @@ dependencies = [
"paste", "paste",
"pin-project-lite", "pin-project-lite",
"rand 0.9.1", "rand 0.9.1",
"schemars 1.0.0", "schemars 1.0.1",
"serde", "serde",
"serde_json", "serde_json",
"sse-stream", "sse-stream",
@@ -663,10 +663,11 @@ dependencies = [
[[package]] [[package]]
name = "brk_rmcp-macros" name = "brk_rmcp-macros"
version = "0.1.7" version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7e3a4b2b6bdb0508a756e9296321b6ce33234070060ad68f68c8372b7b53fc6" checksum = "4557e65ffea1466260a6ab13e3ba54bcee69c39576e4bfb8b81e50b375924540"
dependencies = [ dependencies = [
"darling",
"proc-macro2", "proc-macro2",
"quote", "quote",
"serde_json", "serde_json",
@@ -980,7 +981,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_server" name = "brk_server"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"axum", "axum",
"bitcoincore-rpc", "bitcoincore-rpc",
@@ -1010,7 +1011,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_state" name = "brk_state"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"bincode", "bincode",
"brk_core", "brk_core",
@@ -1022,7 +1023,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_store" name = "brk_store"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"brk_core", "brk_core",
"byteview", "byteview",
@@ -1043,7 +1044,7 @@ dependencies = [
[[package]] [[package]]
name = "brk_vec" name = "brk_vec"
version = "0.0.70" version = "0.0.71"
dependencies = [ dependencies = [
"arc-swap", "arc-swap",
"brk_core", "brk_core",
@@ -2849,9 +2850,9 @@ dependencies = [
[[package]] [[package]]
name = "oxc_resolver" name = "oxc_resolver"
version = "11.2.0" version = "11.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce097520c87cb9aae8b43b39b333a6709342db75b88e76b5c6bcadf0cccf16ea" checksum = "3e9fbd425311540ada87997dbec6e9a2e0bab00b7e82db8e6ef79a0d0a9cfce1"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"indexmap 2.9.0", "indexmap 2.9.0",
@@ -3012,9 +3013,9 @@ dependencies = [
[[package]] [[package]]
name = "papaya" name = "papaya"
version = "0.2.1" version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6827e3fc394523c21d4464d02c0bb1c19966ea4a58a9844ad6d746214179d2bc" checksum = "af228bb1296c9b044ee75e2a2325409c2d899bcfcc6150e5e41f148e0a87dd20"
dependencies = [ dependencies = [
"equivalent", "equivalent",
"seize", "seize",
@@ -3561,9 +3562,9 @@ dependencies = [
[[package]] [[package]]
name = "schemars" name = "schemars"
version = "1.0.0" version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "febc07c7e70b5db4f023485653c754d76e1bbe8d9dbfa20193ce13da9f9633f4" checksum = "fe8c9d1c68d67dd9f97ecbc6f932b60eb289c5dbddd8aa1405484a8fd2fcd984"
dependencies = [ dependencies = [
"dyn-clone", "dyn-clone",
"ref-cast", "ref-cast",
@@ -3574,9 +3575,9 @@ dependencies = [
[[package]] [[package]]
name = "schemars_derive" name = "schemars_derive"
version = "1.0.0" version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1eeedaab7b1e1d09b5b4661121f4d27f9e7487089b0117833ccd7a882ee1ecc" checksum = "6ca9fcb757952f8e8629b9ab066fc62da523c46c2b247b1708a3be06dd82530b"
dependencies = [ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
+19 -18
View File
@@ -4,7 +4,7 @@ members = ["crates/*"]
package.description = "The Bitcoin Research Kit is a suite of tools designed to extract, compute and display data stored on a Bitcoin Core node" package.description = "The Bitcoin Research Kit is a suite of tools designed to extract, compute and display data stored on a Bitcoin Core node"
package.license = "MIT" package.license = "MIT"
package.edition = "2024" package.edition = "2024"
package.version = "0.0.70" package.version = "0.0.71"
package.homepage = "https://bitcoinresearchkit.org" package.homepage = "https://bitcoinresearchkit.org"
package.repository = "https://github.com/bitcoinresearchkit/brk" package.repository = "https://github.com/bitcoinresearchkit/brk"
@@ -22,22 +22,23 @@ axum = "0.8.4"
bincode = { version = "2.0.1", features = ["serde"] } bincode = { version = "2.0.1", features = ["serde"] }
bitcoin = { version = "0.32.6", features = ["serde"] } bitcoin = { version = "0.32.6", features = ["serde"] }
bitcoincore-rpc = "0.19.0" bitcoincore-rpc = "0.19.0"
brk_bundler = { version = "0.0.70", path = "crates/brk_bundler" } brk_bundler = { version = "0.0.71", path = "crates/brk_bundler" }
brk_cli = { version = "0.0.70", path = "crates/brk_cli" } brk_cli = { version = "0.0.71", path = "crates/brk_cli" }
brk_computer = { version = "0.0.70", path = "crates/brk_computer" } brk_computer = { version = "0.0.71", path = "crates/brk_computer" }
brk_core = { version = "0.0.70", path = "crates/brk_core" } brk_core = { version = "0.0.71", path = "crates/brk_core" }
brk_exit = { version = "0.0.70", path = "crates/brk_exit" } brk_exit = { version = "0.0.71", path = "crates/brk_exit" }
brk_fetcher = { version = "0.0.70", path = "crates/brk_fetcher" } brk_fetcher = { version = "0.0.71", path = "crates/brk_fetcher" }
brk_indexer = { version = "0.0.70", path = "crates/brk_indexer" } brk_indexer = { version = "0.0.71", path = "crates/brk_indexer" }
brk_interface = { version = "0.0.70", path = "crates/brk_interface" } brk_interface = { version = "0.0.71", path = "crates/brk_interface" }
brk_logger = { version = "0.0.70", path = "crates/brk_logger" } brk_logger = { version = "0.0.71", path = "crates/brk_logger" }
brk_mcp = { version = "0.0.70", path = "crates/brk_mcp" } brk_mcp = { version = "0.0.71", path = "crates/brk_mcp" }
brk_parser = { version = "0.0.70", path = "crates/brk_parser" } brk_parser = { version = "0.0.71", path = "crates/brk_parser" }
brk_rmcp = { version = "0.1.7", features = ["transport-streamable-http-server", "transport-worker"]} brk_rmcp = { version = "0.1.8", features = ["transport-streamable-http-server", "transport-worker"]}
brk_server = { version = "0.0.70", path = "crates/brk_server" } # brk_rmcp = { path = "../rust-sdk/crates/rmcp", features = ["transport-streamable-http-server", "transport-worker"]}
brk_state = { version = "0.0.70", path = "crates/brk_state" } brk_server = { version = "0.0.71", path = "crates/brk_server" }
brk_store = { version = "0.0.70", path = "crates/brk_store" } brk_state = { version = "0.0.71", path = "crates/brk_state" }
brk_vec = { version = "0.0.70", path = "crates/brk_vec" } brk_store = { version = "0.0.71", path = "crates/brk_store" }
brk_vec = { version = "0.0.71", path = "crates/brk_vec" }
byteview = "=0.6.1" byteview = "=0.6.1"
clap = { version = "4.5.40", features = ["string"] } clap = { version = "4.5.40", features = ["string"] }
clap_derive = "4.5.40" clap_derive = "4.5.40"
@@ -48,7 +49,7 @@ jiff = "0.2.15"
log = { version = "0.4.27" } log = { version = "0.4.27" }
minreq = { version = "2.13.4", features = ["https", "serde_json"] } minreq = { version = "2.13.4", features = ["https", "serde_json"] }
rayon = "1.10.0" rayon = "1.10.0"
schemars = "1.0.0" schemars = "1.0.1"
serde = { version = "1.0.219" } serde = { version = "1.0.219" }
serde_bytes = "0.11.17" serde_bytes = "0.11.17"
serde_derive = "1.0.219" serde_derive = "1.0.219"
+24
View File
@@ -12,29 +12,53 @@ use serde::{Deserialize, de::Error};
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, JsonSchema)] #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, JsonSchema)]
pub enum Index { pub enum Index {
#[schemars(description = "Date/day index")]
DateIndex, DateIndex,
#[schemars(description = "Decade index")]
DecadeIndex, DecadeIndex,
#[schemars(description = "Difficulty epoch index (equivalent to ~2 weeks)")]
DifficultyEpoch, DifficultyEpoch,
#[schemars(description = "Empty output index")]
EmptyOutputIndex, EmptyOutputIndex,
#[schemars(description = "Halving epoch index (equivalent to ~4 years)")]
HalvingEpoch, HalvingEpoch,
#[schemars(description = "Height/block index")]
Height, Height,
#[schemars(description = "Transaction input index (based on total)")]
InputIndex, InputIndex,
#[schemars(description = "Month index")]
MonthIndex, MonthIndex,
#[schemars(description = "Op return index")]
OpReturnIndex, OpReturnIndex,
#[schemars(description = "Transaction output index (based on total)")]
OutputIndex, OutputIndex,
#[schemars(description = "Index of P2A address")]
P2AAddressIndex, P2AAddressIndex,
#[schemars(description = "Index of P2MS output")]
P2MSOutputIndex, P2MSOutputIndex,
#[schemars(description = "Index of P2PK (33 bytes) address")]
P2PK33AddressIndex, P2PK33AddressIndex,
#[schemars(description = "Index of P2PK (65 bytes) address")]
P2PK65AddressIndex, P2PK65AddressIndex,
#[schemars(description = "Index of P2PKH address")]
P2PKHAddressIndex, P2PKHAddressIndex,
#[schemars(description = "Index of P2SH address")]
P2SHAddressIndex, P2SHAddressIndex,
#[schemars(description = "Index of P2TR address")]
P2TRAddressIndex, P2TRAddressIndex,
#[schemars(description = "Index of P2WPKH address")]
P2WPKHAddressIndex, P2WPKHAddressIndex,
#[schemars(description = "Index of P2WSH address")]
P2WSHAddressIndex, P2WSHAddressIndex,
#[schemars(description = "Quarter index")]
QuarterIndex, QuarterIndex,
#[schemars(description = "Transaction index")]
TxIndex, TxIndex,
#[schemars(description = "Unknown output index")]
UnknownOutputIndex, UnknownOutputIndex,
#[schemars(description = "Week index")]
WeekIndex, WeekIndex,
#[schemars(description = "Year index")]
YearIndex, YearIndex,
} }
+10 -4
View File
@@ -12,11 +12,11 @@ use crate::{
#[derive(Debug, Deserialize, JsonSchema)] #[derive(Debug, Deserialize, JsonSchema)]
pub struct Params { pub struct Params {
#[serde(alias = "i")] #[serde(alias = "i")]
#[schemars(description = "Index of the values requested")] #[schemars(description = "Index of requested vecs")]
pub index: Index, pub index: Index,
#[serde(alias = "v")] #[serde(alias = "v")]
#[schemars(description = "Ids of the requested vecs")] #[schemars(description = "Ids of requested vecs")]
pub ids: MaybeIds, pub ids: MaybeIds,
#[serde(flatten)] #[serde(flatten)]
@@ -45,18 +45,24 @@ impl From<((Index, String), ParamsOpt)> for Params {
pub struct ParamsOpt { pub struct ParamsOpt {
#[serde(default, alias = "f", deserialize_with = "de_unquote_i64")] #[serde(default, alias = "f", deserialize_with = "de_unquote_i64")]
/// Inclusive starting index, if negative will be from the end /// Inclusive starting index, if negative will be from the end
#[schemars(description = "Inclusive starting index, if negative will be from the end")]
from: Option<i64>, from: Option<i64>,
#[serde(default, alias = "t", deserialize_with = "de_unquote_i64")] #[serde(default, alias = "t", deserialize_with = "de_unquote_i64")]
/// Exclusive ending index, if negative will be from the end, overrides 'count' /// Exclusive ending index, if negative will be from the end, overrides 'count'
#[schemars(
description = "Exclusive ending index, if negative will be from the end, overrides 'count'"
)]
to: Option<i64>, to: Option<i64>,
#[serde(default, alias = "c", deserialize_with = "de_unquote_usize")] #[serde(default, alias = "c", deserialize_with = "de_unquote_usize")]
/// Number of values /// Number of values requested
#[schemars(description = "Number of values requested")]
count: Option<usize>, count: Option<usize>,
/// Format of the output
#[serde(default)] #[serde(default)]
/// Format of the output
#[schemars(description = "Format of the output")]
format: Option<Format>, format: Option<Format>,
} }
+17 -22
View File
@@ -6,12 +6,10 @@
use brk_interface::{IdParam, Interface, PaginatedIndexParam, PaginationParam, Params}; use brk_interface::{IdParam, Interface, PaginatedIndexParam, PaginationParam, Params};
use brk_rmcp::{ use brk_rmcp::{
Error as McpError, RoleServer, ServerHandler, Error as McpError, RoleServer, ServerHandler,
model::{ handler::server::{router::tool::ToolRouter, tool::Parameters},
CallToolResult, Content, Implementation, InitializeRequestParam, InitializeResult, model::*,
ProtocolVersion, ServerCapabilities, ServerInfo,
},
service::RequestContext, service::RequestContext,
tool, tool, tool_handler, tool_router,
}; };
use log::info; use log::info;
@@ -20,14 +18,18 @@ pub mod route;
#[derive(Clone)] #[derive(Clone)]
pub struct MCP { pub struct MCP {
interface: &'static Interface<'static>, interface: &'static Interface<'static>,
tool_router: ToolRouter<MCP>,
} }
const VERSION: &str = env!("CARGO_PKG_VERSION"); const VERSION: &str = env!("CARGO_PKG_VERSION");
#[tool(tool_box)] #[tool_router]
impl MCP { impl MCP {
pub fn new(interface: &'static Interface<'static>) -> Self { pub fn new(interface: &'static Interface<'static>) -> Self {
Self { interface } Self {
interface,
tool_router: Self::tool_router(),
}
} }
#[tool(description = " #[tool(description = "
@@ -54,8 +56,8 @@ Get the count of all existing vec ids.
Get the count of all existing vecs. Get the count of all existing vecs.
Equals to the sum of supported Indexes of each vec id. Equals to the sum of supported Indexes of each vec id.
")] ")]
async fn get_variant_count(&self) -> Result<CallToolResult, McpError> { async fn get_vec_count(&self) -> Result<CallToolResult, McpError> {
info!("mcp: get_variant_count"); info!("mcp: get_vec_count");
Ok(CallToolResult::success(vec![ Ok(CallToolResult::success(vec![
Content::json(self.interface.get_vec_count()).unwrap(), Content::json(self.interface.get_vec_count()).unwrap(),
])) ]))
@@ -88,7 +90,7 @@ If the `page` param is omitted, it will default to the first page.
")] ")]
async fn get_vecids( async fn get_vecids(
&self, &self,
#[tool(aggr)] pagination: PaginationParam, Parameters(pagination): Parameters<PaginationParam>,
) -> Result<CallToolResult, McpError> { ) -> Result<CallToolResult, McpError> {
info!("mcp: get_vecids"); info!("mcp: get_vecids");
Ok(CallToolResult::success(vec![ Ok(CallToolResult::success(vec![
@@ -103,7 +105,7 @@ If the `page` param is omitted, it will default to the first page.
")] ")]
async fn get_index_to_vecids( async fn get_index_to_vecids(
&self, &self,
#[tool(aggr)] paginated_index: PaginatedIndexParam, Parameters(paginated_index): Parameters<PaginatedIndexParam>,
) -> Result<CallToolResult, McpError> { ) -> Result<CallToolResult, McpError> {
info!("mcp: get_index_to_vecids"); info!("mcp: get_index_to_vecids");
Ok(CallToolResult::success(vec![ Ok(CallToolResult::success(vec![
@@ -117,7 +119,7 @@ The list will be empty if the vec id isn't correct.
")] ")]
async fn get_vecid_to_indexes( async fn get_vecid_to_indexes(
&self, &self,
#[tool(aggr)] param: IdParam, Parameters(param): Parameters<IdParam>,
) -> Result<CallToolResult, McpError> { ) -> Result<CallToolResult, McpError> {
info!("mcp: get_vecid_to_indexes"); info!("mcp: get_vecid_to_indexes");
Ok(CallToolResult::success(vec![ Ok(CallToolResult::success(vec![
@@ -127,14 +129,12 @@ The list will be empty if the vec id isn't correct.
#[tool(description = " #[tool(description = "
Get one or multiple vecs depending on given parameters. Get one or multiple vecs depending on given parameters.
If you'd like to request multiple vec ids, simply separate them with a ','.
To get the last value set `-1` to the `from` parameter.
The response's format will depend on the given parameters, it will be: The response's format will depend on the given parameters, it will be:
- A value: If requested only one vec and the given range returns one value (for example: `from=-1`) - A value: If requested only one vec and the given range returns one value (for example: `from=-1`)
- A list: If requested only one vec and the given range returns multiple values (for example: `from=-1000&count=100` or `from=-444&to=-333`) - A list: If requested only one vec and the given range returns multiple values (for example: `from=-1000&count=100` or `from=-444&to=-333`)
- A matrix: When multiple vecs are requested, even if they each return one value. - A matrix: When multiple vecs are requested, even if they each return one value.
")] ")]
fn get_vecs(&self, #[tool(aggr)] params: Params) -> Result<CallToolResult, McpError> { fn get_vecs(&self, Parameters(params): Parameters<Params>) -> Result<CallToolResult, McpError> {
info!("mcp: get_vecs"); info!("mcp: get_vecs");
Ok(CallToolResult::success(vec![ Ok(CallToolResult::success(vec![
Content::json(self.interface.search_and_format(params).unwrap()).unwrap(), Content::json(self.interface.search_and_format(params).unwrap()).unwrap(),
@@ -152,7 +152,7 @@ Get the running version of the Bitcoin Research Kit.
} }
} }
#[tool(tool_box)] #[tool_handler]
impl ServerHandler for MCP { impl ServerHandler for MCP {
fn get_info(&self) -> ServerInfo { fn get_info(&self) -> ServerInfo {
ServerInfo { ServerInfo {
@@ -181,13 +181,8 @@ An 'Index' (or indexes) is the timeframe of a dataset.
async fn initialize( async fn initialize(
&self, &self,
_request: InitializeRequestParam, _request: InitializeRequestParam,
context: RequestContext<RoleServer>, _context: RequestContext<RoleServer>,
) -> Result<InitializeResult, McpError> { ) -> Result<InitializeResult, McpError> {
if let Some(http_request_part) = context.extensions.get::<axum::http::request::Parts>() {
let initialize_headers = &http_request_part.headers;
let initialize_uri = &http_request_part.uri;
tracing::info!(?initialize_headers, %initialize_uri, "initialize from http server");
}
Ok(self.get_info()) Ok(self.get_info())
} }
} }