// Copyright 2026 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Do not edit this file manually. See README.chromium for details on
// how to edit this file.

syntax = 'proto3';

option optimize_for = LITE_RUNTIME;
option java_package = 'org.chromium.components.omnibox';
option java_outer_classname = 'ToolConfigProto';

package omnibox;

import "tool_rule.proto";
import "icon.proto";
import "tool_substate_config.proto";
import "tool_mode.proto";
import "url_param.proto";

// Configuration for a tool mode.
// Next ID: 14
// LINT.IfChange(ToolConfig)
message ToolConfig {
  // The tool mode.
  // Note: Clients should use the *Value accessor variant (e.g. getToolValue())
  // rather than enum accessors to be future-proof against new open enum values
  // served by the backend without requiring client updates.
  ToolMode tool = 1;
  // Disable model selection state when the tool is selected (e.g. no check mark
  // on model selection when the tool is selected). Some tools are not
  // associated with any of the selectable models (e.g. DeepSearch)
  bool disable_active_model_selection = 2;
  // The label for the tool in a menu.
  string menu_label = 3;
  // The label for the tool in a chip when the tool is selected.
  string chip_label = 4;
  // The hint text in the input text field when this tool is selected.
  string hint_text = 5;
  // The constraint rule for the tool.
  optional ToolRule rule = 6;
  // The URL params to be appended to the /search or /folif URLs when this tool
  // is chosen.
  repeated UrlParam aim_url_params = 7;
  // Substate configurations.
  repeated ToolSubstateConfig substate_configs = 8;
  // The icon for the tool.
  optional Icon icon = 9;
  // Whether to hide the tool from the tools menu (including tool chips).
  bool hide_from_menu = 10;

  // Optional tooltip for the tool in a menu.
  string menu_tooltip = 13;
}
// LINT.ThenChange(//components/omnibox/composebox/composebox_query.mojom:ToolConfig)
