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

syntax = "proto3";

package optimization_guide.proto;

import "components/optimization_guide/proto/features/actor_login.proto";
import "components/optimization_guide/proto/features/amount_extraction.proto";
import "components/optimization_guide/proto/features/annotation_reducer_live_tab_resolver.proto";
import "components/optimization_guide/proto/features/annotation_reducer_one_p_resolver.proto";
import "components/optimization_guide/proto/features/annotation_reducer_query_classifier.proto";
import "components/optimization_guide/proto/features/at_memory.proto";
import "components/optimization_guide/proto/features/atmem_query_analyzer.proto";
import "components/optimization_guide/proto/features/bling_prototyping.proto";
import "components/optimization_guide/proto/features/classify_api.proto";
import "components/optimization_guide/proto/features/compose.proto";
import "components/optimization_guide/proto/features/content_annotation.proto";
import "components/optimization_guide/proto/features/context_hub.proto";
import "components/optimization_guide/proto/features/contextual_cueing.proto";
import "components/optimization_guide/proto/features/contextual_tasks_context.proto";
import "components/optimization_guide/proto/features/default.proto";
import "components/optimization_guide/proto/features/enhanced_calendar.proto";
import "components/optimization_guide/proto/features/finds.proto";
import "components/optimization_guide/proto/features/forms_classifications.proto";
import "components/optimization_guide/proto/features/gemini_antiscam_protection.proto";
import "components/optimization_guide/proto/features/history_answer.proto";
import "components/optimization_guide/proto/features/history_query.proto";
import "components/optimization_guide/proto/features/history_query_intent.proto";
import "components/optimization_guide/proto/features/ios_smart_tab_grouping.proto";
import "components/optimization_guide/proto/features/model_prototyping.proto";
import "components/optimization_guide/proto/features/notification_content_detection.proto";
import "components/optimization_guide/proto/features/password_change_submission.proto";
import "components/optimization_guide/proto/features/product_specifications.proto";
import "components/optimization_guide/proto/features/prompt_api.proto";
import "components/optimization_guide/proto/features/proofreader_api.proto";
import "components/optimization_guide/proto/features/read_aloud_generate_text.proto";
import "components/optimization_guide/proto/features/read_aloud_synthesize.proto";
import "components/optimization_guide/proto/features/scam_detection.proto";
import "components/optimization_guide/proto/features/skills.proto";
import "components/optimization_guide/proto/features/summarize.proto";
import "components/optimization_guide/proto/features/updater_chat.proto";
import "components/optimization_guide/proto/features/walletable_pass_extraction.proto";
import "components/optimization_guide/proto/features/wallpaper_search.proto";
import "components/optimization_guide/proto/features/writing_assistance_api.proto";
import "components/optimization_guide/proto/features/zero_state_suggestions.proto";
import "components/optimization_guide/proto/model_quality_metadata.proto";

option optimize_for = LITE_RUNTIME;
option java_package = "org.chromium.components.optimization_guide.proto";
option java_outer_classname = "ModelQualityServiceProto";

// A request to send AI data logs to the model quality server. Data logging for
// an AI feature with metadata specific to the logging.
message LogAiDataRequest {
  reserved 4, 10, 11, 18;

  // For the use of MQLS client ID in glic API.
  // LINT.IfChange(MQLSClientIdReservation)
  reserved 1002;
  // LINT.ThenChange(//components/optimization_guide/core/model_quality/model_quality_util.cc:MQLSClientIdReservation)

  // Information about a feature's AiLoggingData, such as training opt-outs.
  LoggingMetadata logging_metadata = 1;

  // Model execution data corresponding to the AiLoggingData of a feature.
  ModelExecutionInfo model_execution_info = 2;

  oneof feature {
    // Add feature specific LoggingData here.
    ComposeLoggingData compose = 3;

    WallpaperSearchLoggingData wallpaper_search = 5;

    HistoryQueryLoggingData history_query = 7;

    HistoryAnswerLoggingData history_answer = 8;

    HistoryQueryIntentLoggingData history_query_intent = 13;

    ProductSpecificationsLoggingData product_specifications = 9;

    ModelPrototypingLoggingData model_prototyping = 12;

    BlingPrototypingLoggingData bling_prototyping = 14;

    PasswordChangeSubmissionLoggingData password_change_submission = 16;

    ScamDetectionLoggingData scam_detection = 17;

    FormsClassificationsLoggingData forms_classifications = 19;

    NotificationContentDetectionLoggingData notification_content_detection = 20;

    EnhancedCalendarLoggingData enhanced_calendar = 21;

    ZeroStateSuggestionsLoggingData zero_state_suggestions = 22;

    WritingAssistanceApiLoggingData writing_assistance_api = 23;

    ProofreaderApiLoggingData proofreader_api = 25;

    PromptApiLoggingData prompt_api = 26;

    SummarizeLoggingData summarize = 27;

    WalletablePassExtractionLoggingData walletable_pass_extraction = 28;

    AmountExtractionLoggingData amount_extraction = 29;

    IosSmartTabGroupingLoggingData ios_smart_tab_grouping = 30;

    ActorLoginLoggingData actor_login = 31;

    ContextualTasksContextLoggingData contextual_tasks_context = 32;

    SkillsLoggingData skills = 33;

    GeminiAntiscamProtectionLoggingData gemini_antiscam_protection = 34;

    ClassifyApiLoggingData classify_api = 35;

    FindsLoggingData finds = 36;

    ContentAnnotationLoggingData content_annotation = 37;

    AnnotationReducerOnePResolverLoggingData annotation_reducer_one_p_resolver =
        38;

    AnnotationReducerQueryClassifierLoggingData
        annotation_reducer_query_classifier = 39;

    ContextualCueingLoggingData contextual_cueing = 40;

    AnnotationReducerLiveTabResolverLoggingData
        annotation_reducer_live_tab_resolver = 41;

    UpdaterChatLoggingData updater_chat = 42;

    AtmemQueryAnalyzerLoggingData atmem_query_analyzer = 43;

    AtMemoryLoggingData at_memory = 44;

    ReadAloudGenerateTextLoggingData read_aloud_generate_text = 45;

    ReadAloudSynthesizeLoggingData read_aloud_synthesize = 46;

    ContextHubLoggingData context_hub = 47;

    DefaultLoggingData default = 1000;
  }
}

// This is the response from the server.
// TODO(b/301302386): Send an error message or a status code from the server.
message LogAiDataResponse {}
