/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2024-2025. All rights reserved.
 */
package magic.core.tool

import std.collection.{HashMap, map, collectArray}
import encoding.json.JsonValue

public struct ToolRequest <: ToString {
    public ToolRequest(
        public let name!: String,                    // Tool name
        public let args!: HashMap<String, JsonValue> // Tool arguments
    ) { }

    override public func toString(): String {
        let a: Iterable<(String, JsonValue)> = this.args.iterator()
        let xs = a |>
            map { kv: (String, JsonValue) =>
                return "${kv[0]}: ${kv[1].toString()}"
            } |>
            collectArray
        return "${this.name}(${String.join(xs, delimiter: ", ")})"
    }
}