Convert Rust CommandContext to JavaScript object.
(
env: &napi::Env,
ctx: &RustCommandContext,
)
| 59 | |
| 60 | /// Convert Rust CommandContext to JavaScript object. |
| 61 | pub fn js_command_context_to_object( |
| 62 | env: &napi::Env, |
| 63 | ctx: &RustCommandContext, |
| 64 | ) -> napi::Result<napi::JsObject> { |
| 65 | let mut obj = env.create_object()?; |
| 66 | obj.set_named_property("sessionId", env.create_string(&ctx.session_id)?)?; |
| 67 | obj.set_named_property("workspace", env.create_string(&ctx.workspace)?)?; |
| 68 | obj.set_named_property("model", env.create_string(&ctx.model)?)?; |
| 69 | obj.set_named_property("historyLen", env.create_uint32(ctx.history_len as u32)?)?; |
| 70 | obj.set_named_property("totalTokens", env.create_int64(ctx.total_tokens as i64)?)?; |
| 71 | obj.set_named_property("totalCost", env.create_double(ctx.total_cost)?)?; |
| 72 | |
| 73 | let mut tool_names_arr = env.create_array(ctx.tool_names.len() as u32)?; |
| 74 | for (i, name) in ctx.tool_names.iter().enumerate() { |
| 75 | tool_names_arr.set(i as u32, env.create_string(name)?)?; |
| 76 | } |
| 77 | obj.set_named_property("toolNames", tool_names_arr)?; |
| 78 | |
| 79 | let mut mcp_servers_arr = env.create_array(ctx.mcp_servers.len() as u32)?; |
| 80 | for (i, (name, count)) in ctx.mcp_servers.iter().enumerate() { |
| 81 | let mut server_obj = env.create_object()?; |
| 82 | server_obj.set_named_property("name", env.create_string(name)?)?; |
| 83 | server_obj.set_named_property("toolCount", env.create_uint32(*count as u32)?)?; |
| 84 | mcp_servers_arr.set(i as u32, server_obj)?; |
| 85 | } |
| 86 | obj.set_named_property("mcpServers", mcp_servers_arr)?; |
| 87 | |
| 88 | Ok(obj) |
| 89 | } |
no test coverage detected