///|
fn config_log_level(config : Json) -> String? {
  // Copied from the OpenCode TypeScript SDK log-level selection:
  // https://github.com/anomalyco/opencode/blob/66495a2a22cd0a57efcc4f721e65532f0987b4e8/packages/sdk/js/src/server.ts#L32-L33
  @lens.root().string("logLevel").optional().get(config) catch {
    _ => None
  }
}

///|
fn server_args(options : ServerOptions) -> Array[String] {
  // Copied from the OpenCode TypeScript SDK argument construction:
  // https://github.com/anomalyco/opencode/blob/66495a2a22cd0a57efcc4f721e65532f0987b4e8/packages/sdk/js/src/server.ts#L32-L33
  let args = [
    "serve",
    "--hostname=\{options.hostname}",
    "--port=\{options.port}",
  ]
  match config_log_level(options.config) {
    Some(log_level) => args.push("--log-level=\{log_level}")
    None => ()
  }
  args
}