// Copyright 2026 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package google.cloud.ces.v1beta;

import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/ces/v1beta/toolset_tool.proto";
import "google/protobuf/struct.proto";

option go_package = "cloud.google.com/go/ces/apiv1beta/cespb;cespb";
option java_multiple_files = true;
option java_outer_classname = "MocksProto";
option java_package = "com.google.cloud.ces.v1beta";

// A mocked tool call.
//
// Expresses the target tool + a pattern to match against that tool's
// args / inputs. If the pattern matches, then the mock response will be
// returned.
message MockedToolCall {
  // The identifier of the tool to mock.
  oneof tool_identifier {
    // Optional. The name of the tool to mock.
    // Format: `projects/{project}/locations/{location}/apps/{app}/tools/{tool}`
    string tool_id = 4 [
      (google.api.field_behavior) = OPTIONAL,
      (google.api.resource_reference) = { type: "ces.googleapis.com/Tool" }
    ];

    // Optional. The toolset to mock.
    ToolsetTool toolset = 5 [(google.api.field_behavior) = OPTIONAL];
  }

  // Optional. Deprecated. Use tool_identifier instead.
  string tool = 1 [
    deprecated = true,
    (google.api.field_behavior) = OPTIONAL,
    (google.api.resource_reference) = { type: "ces.googleapis.com/Tool" }
  ];

  // Required. A pattern to match against the args / inputs of all dispatched
  // tool calls. If the tool call inputs match this pattern, then mock output
  // will be returned.
  google.protobuf.Struct expected_args_pattern = 2
      [(google.api.field_behavior) = REQUIRED];

  // Optional. The mock response / output to return if the tool call args /
  // inputs match the pattern.
  google.protobuf.Struct mock_response = 3
      [(google.api.field_behavior) = OPTIONAL];
}
