// SDK-wrapper annotation extension types.
//
// The TARS Go SDK (sdks/go) ships hand-written ergonomic wrappers in
// services.go and PROTO-DRIVEN wrappers generated by tools/sdkgen into
// services_gen.go + client_gen.go. The generated shape is deterministic from
// the proto contract: the accessor (handle) name defaults to the service name
// minus the "Service" suffix (AdminService -> Admin) and each wrapper method
// name defaults to the RPC name. These two extensions let a proto author
// override those defaults IN the proto, so the ergonomic name lives next to
// the contract instead of in generator config.
//
// Field-number allocation (google.protobuf.{Service,Method}Options):
//   50001 -- tars.auth.v1.auth          (MethodOptions)
//   50002 -- tars.cli.v1.command        (MethodOptions)
//   50003 -- tars.cli.v1.field          (FieldOptions)
//   50004 -- tars.docs.v1.title         (MethodOptions) / tars.docs.v1.internal (ServiceOptions)
//   50005 -- tars.docs.v1.group         (MethodOptions)
//   50006 -- tars.sdk.v1.handle         (ServiceOptions)  <- allocated here
//   50006 -- tars.sdk.v1.method         (MethodOptions)   <- allocated here
//
// 50006 is free in BOTH MethodOptions and ServiceOptions (the docs extension's
// only ServiceOptions use, `internal`, sits at 50004), so the same number is
// reused across the two distinct option message types without collision.
syntax = "proto3";

package tars.sdk.v1;

import "google/protobuf/descriptor.proto";

option go_package = "github.com/tetrateio/fraser/api/tars/sdk/v1;sdkv1";

extend google.protobuf.ServiceOptions {
  // handle overrides the generated SDK accessor / wrapper-type stem for this
  // service. Default (when empty) is the service name with the trailing
  // "Service" stripped: AdminService -> "Admin" (accessor Client.Admin(),
  // wrapper type AdminClient). Set this when the ergonomic name should differ
  // from that default, e.g. handle = "Insights" on RequestLogsService.
  string handle = 50006;
}

extend google.protobuf.MethodOptions {
  // method overrides the generated SDK wrapper-method name for this RPC.
  // Default (when empty) is the RPC name verbatim: AdminService.CreateWorkspace
  // -> func (x *AdminClient) CreateWorkspace(...). Set this for a shorter or
  // more idiomatic name, e.g. method = "Create" on CreateWorkspace.
  string method = 50006;
}
