// 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.

// If you change or add any fields in this file, update proto_visitors.h and
// potentially proto_enum_conversions.{h, cc}.

syntax = "proto2";

option java_multiple_files = true;
option java_package = "org.chromium.components.sync.protocol";

option optimize_for = LITE_RUNTIME;

package sync_pb;

// LINT.IfChange(SkillSource)
enum SkillSource {
  SKILL_SOURCE_UNKNOWN = 0;
  SKILL_SOURCE_FIRST_PARTY = 1;
  SKILL_SOURCE_USER_CREATED = 2;
  SKILL_SOURCE_DERIVED_FROM_FIRST_PARTY = 3;
  SKILL_SOURCE_ENTERPRISE = 4;
  SKILL_SOURCE_DERIVED_FROM_ENTERPRISE = 5;
}
// clang-format off
// LINT.ThenChange(//components/skills/public/skill.mojom:SkillSource, //chrome/browser/glic/host/glic.mojom:SkillSource, //tools/metrics/histograms/metadata/skills/enums.xml:SkillsDerivedSource)
// clang-format on

// LINT.IfChange(SkillSpecifics)
// Skills stored by the user.
message SkillSpecifics {
  // The unique identifier for the skill.
  optional string guid = 1;

  // The name of the skill.
  optional string name = 2;

  // Emoji icon for the skill.
  optional string icon = 3;

  optional SimpleSkill simple_skill = 4;

  // The time the skill was created.
  optional int64 creation_time_windows_epoch_micros = 5;

  // The time the skill was last updated.
  optional int64 last_update_time_windows_epoch_micros = 6;

  // The schema version of the skill, useful for migrations.
  optional int32 schema_version = 7;

  // The source of the skill.
  optional SkillSource skill_source = 8;

  // If set, the parent 1p skill that this skill is derived from. This field is
  // only present if the `skill_source` is
  // `SKILL_SOURCE_DERIVED_FROM_FIRST_PARTY`.
  optional string source_skill_id = 9;
}

// Represents a simple skill, primarily defined by a natural language prompt.
message SimpleSkill {
  // The core prompt text that instructs the model.
  optional string prompt = 1;

  // The description of the skill.
  optional string description = 2;
}
// LINT.ThenChange(//components/skills/internal/skills_sync_bridge.cc:TrimAllSupportedFieldsFromRemoteSpecifics)
