feat(proto,config): runtime ready handshake proto 스키마 및 재연결 설정
- NodeReadyRequest/Response: 노드→엣지 연결 준비 확인 핸드셰이크 추가 - ReconnectConf: interval_sec, max_attempts 명시적 설정 지원 - node_config_test: 재연결 설정 로드 검증
This commit is contained in:
parent
4a76851254
commit
cc6e71db79
6 changed files with 370 additions and 93 deletions
3
go.mod
3
go.mod
|
|
@ -14,6 +14,7 @@ require (
|
||||||
google.golang.org/protobuf v1.36.5
|
google.golang.org/protobuf v1.36.5
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
modernc.org/sqlite v1.33.1
|
modernc.org/sqlite v1.33.1
|
||||||
|
nhooyr.io/websocket v1.8.17
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
|
@ -25,6 +26,7 @@ require (
|
||||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||||
github.com/klauspost/compress v1.17.9 // indirect
|
github.com/klauspost/compress v1.17.9 // indirect
|
||||||
|
github.com/kylelemons/godebug v1.1.0 // indirect
|
||||||
github.com/magiconair/properties v1.8.7 // indirect
|
github.com/magiconair/properties v1.8.7 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||||
|
|
@ -54,7 +56,6 @@ require (
|
||||||
modernc.org/memory v1.8.0 // indirect
|
modernc.org/memory v1.8.0 // indirect
|
||||||
modernc.org/strutil v1.2.0 // indirect
|
modernc.org/strutil v1.2.0 // indirect
|
||||||
modernc.org/token v1.1.0 // indirect
|
modernc.org/token v1.1.0 // indirect
|
||||||
nhooyr.io/websocket v1.8.17 // indirect
|
|
||||||
)
|
)
|
||||||
|
|
||||||
replace git.toki-labs.com/toki/proto-socket/go => ../proto-socket/go
|
replace git.toki-labs.com/toki/proto-socket/go => ../proto-socket/go
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,30 @@ func Load(cfgFile string) (*NodeConfig, error) {
|
||||||
if err := v.Unmarshal(&cfg); err != nil {
|
if err := v.Unmarshal(&cfg); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if err := validateReconnect(cfg.Reconnect); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
return &cfg, nil
|
return &cfg, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// validateReconnect enforces the reconnect policy contract (SDD S17). setDefaults
|
||||||
|
// supplies the omitted defaults (interval_sec=10, max_attempts=10) before this
|
||||||
|
// runs, so an omitted max_attempts is already 10 here while an explicit 0 stays
|
||||||
|
// 0 (unlimited). Negative max_attempts or interval_sec are rejected, and an
|
||||||
|
// unlimited policy requires a positive interval so it cannot hot-loop.
|
||||||
|
func validateReconnect(rc ReconnectConf) error {
|
||||||
|
if rc.MaxAttempts < 0 {
|
||||||
|
return fmt.Errorf("reconnect.max_attempts must not be negative")
|
||||||
|
}
|
||||||
|
if rc.IntervalSec < 0 {
|
||||||
|
return fmt.Errorf("reconnect.interval_sec must not be negative")
|
||||||
|
}
|
||||||
|
if rc.MaxAttempts == 0 && rc.IntervalSec <= 0 {
|
||||||
|
return fmt.Errorf("reconnect.interval_sec must be positive when reconnect.max_attempts=0 (unlimited)")
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func LoadEdge(cfgFile string) (*EdgeConfig, error) {
|
func LoadEdge(cfgFile string) (*EdgeConfig, error) {
|
||||||
v := viper.New()
|
v := viper.New()
|
||||||
v.SetConfigFile(cfgFile)
|
v.SetConfigFile(cfgFile)
|
||||||
|
|
|
||||||
|
|
@ -275,6 +275,118 @@ func TestLoad_NodeReconnectOverride(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestLoadReconnectPolicy verifies that config load distinguishes an omitted
|
||||||
|
// max_attempts (default 10), an explicit 0 (unlimited), and a positive finite
|
||||||
|
// limit, and preserves an explicit interval alongside each. SDD S16/S17.
|
||||||
|
func TestLoadReconnectPolicy(t *testing.T) {
|
||||||
|
cases := []struct {
|
||||||
|
name string
|
||||||
|
reconnectYAML string
|
||||||
|
wantInterval int
|
||||||
|
wantMax int
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "omitted keeps defaults",
|
||||||
|
reconnectYAML: "",
|
||||||
|
wantInterval: 10,
|
||||||
|
wantMax: 10,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "explicit zero max is unlimited with default interval",
|
||||||
|
reconnectYAML: "reconnect:\n max_attempts: 0\n",
|
||||||
|
wantInterval: 10,
|
||||||
|
wantMax: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "explicit zero max with positive interval stays unlimited",
|
||||||
|
reconnectYAML: "reconnect:\n max_attempts: 0\n interval_sec: 5\n",
|
||||||
|
wantInterval: 5,
|
||||||
|
wantMax: 0,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "positive finite limit is preserved",
|
||||||
|
reconnectYAML: "reconnect:\n max_attempts: 3\n interval_sec: 30\n",
|
||||||
|
wantInterval: 30,
|
||||||
|
wantMax: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "positive finite limit allows zero interval",
|
||||||
|
reconnectYAML: "reconnect:\n max_attempts: 3\n interval_sec: 0\n",
|
||||||
|
wantInterval: 0,
|
||||||
|
wantMax: 3,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tc := range cases {
|
||||||
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
dir := t.TempDir()
|
||||||
|
f := filepath.Join(dir, "node.yaml")
|
||||||
|
yaml := "transport:\n edge_addr: \"localhost:9090\"\n token: \"tok\"\n" + tc.reconnectYAML
|
||||||
|
if err := os.WriteFile(f, []byte(yaml), 0o600); err != nil {
|
||||||
|
t.Fatalf("write yaml: %v", err)
|
||||||
|
}
|
||||||
|
cfg, err := config.Load(f)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("load: %v", err)
|
||||||
|
}
|
||||||
|
if cfg.Reconnect.IntervalSec != tc.wantInterval {
|
||||||
|
t.Errorf("interval_sec: got %d want %d", cfg.Reconnect.IntervalSec, tc.wantInterval)
|
||||||
|
}
|
||||||
|
if cfg.Reconnect.MaxAttempts != tc.wantMax {
|
||||||
|
t.Errorf("max_attempts: got %d want %d", cfg.Reconnect.MaxAttempts, tc.wantMax)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestLoadRejectsInvalidReconnectPolicy verifies that negative attempts/interval
|
||||||
|
// and an unlimited policy with a non-positive interval are rejected at load with
|
||||||
|
// a clear config error. SDD S17.
|
||||||
|
func TestLoadRejectsInvalidReconnectPolicy(t *testing.T) {
|
||||||
|
cases := []struct {
|
||||||
|
name string
|
||||||
|
reconnectYAML string
|
||||||
|
wantSubstr string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "negative max_attempts",
|
||||||
|
reconnectYAML: "reconnect:\n max_attempts: -1\n",
|
||||||
|
wantSubstr: "reconnect.max_attempts must not be negative",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "negative interval_sec",
|
||||||
|
reconnectYAML: "reconnect:\n max_attempts: 3\n interval_sec: -1\n",
|
||||||
|
wantSubstr: "reconnect.interval_sec must not be negative",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "unlimited with zero interval",
|
||||||
|
reconnectYAML: "reconnect:\n max_attempts: 0\n interval_sec: 0\n",
|
||||||
|
wantSubstr: "reconnect.interval_sec must be positive",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "unlimited with negative interval",
|
||||||
|
reconnectYAML: "reconnect:\n max_attempts: 0\n interval_sec: -5\n",
|
||||||
|
wantSubstr: "reconnect.interval_sec must not be negative",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tc := range cases {
|
||||||
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
dir := t.TempDir()
|
||||||
|
f := filepath.Join(dir, "node.yaml")
|
||||||
|
yaml := "transport:\n edge_addr: \"localhost:9090\"\n token: \"tok\"\n" + tc.reconnectYAML
|
||||||
|
if err := os.WriteFile(f, []byte(yaml), 0o600); err != nil {
|
||||||
|
t.Fatalf("write yaml: %v", err)
|
||||||
|
}
|
||||||
|
_, err := config.Load(f)
|
||||||
|
if err == nil {
|
||||||
|
t.Fatalf("expected error for %s", tc.name)
|
||||||
|
}
|
||||||
|
if !strings.Contains(err.Error(), tc.wantSubstr) {
|
||||||
|
t.Fatalf("expected error containing %q, got %v", tc.wantSubstr, err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TestLoadEdge_NodeProviderPriorityOmittedDefaultsZero verifies that when
|
// TestLoadEdge_NodeProviderPriorityOmittedDefaultsZero verifies that when
|
||||||
// priority is omitted from a provider entry, it defaults to zero.
|
// priority is omitted from a provider entry, it defaults to zero.
|
||||||
func TestLoadEdge_NodeProviderPriorityOmittedDefaultsZero(t *testing.T) {
|
func TestLoadEdge_NodeProviderPriorityOmittedDefaultsZero(t *testing.T) {
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,18 @@ type NodeConfig struct {
|
||||||
Metrics MetricsConf `mapstructure:"metrics" yaml:"metrics"`
|
Metrics MetricsConf `mapstructure:"metrics" yaml:"metrics"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// ReconnectConf controls Edge reconnect behaviour after a disconnect.
|
// ReconnectConf controls how the Node connectivity supervisor retries the
|
||||||
|
// initial dial and post-disconnect reconnects to Edge. The same policy applies
|
||||||
|
// to both the initial connect and established-session reconnect paths.
|
||||||
type ReconnectConf struct {
|
type ReconnectConf struct {
|
||||||
|
// IntervalSec is the delay between connect attempts. An omitted value keeps
|
||||||
|
// the default 10s; it must be positive when MaxAttempts is 0 (unlimited) so
|
||||||
|
// the supervisor cannot hot-loop. Negative values are a config error.
|
||||||
IntervalSec int `mapstructure:"interval_sec" yaml:"interval_sec"`
|
IntervalSec int `mapstructure:"interval_sec" yaml:"interval_sec"`
|
||||||
|
// MaxAttempts bounds retries per connect episode. An omitted value keeps the
|
||||||
|
// default 10; an explicit 0 means unlimited retries until local shutdown; a
|
||||||
|
// positive value is a finite limit whose exhaustion terminates the Node with
|
||||||
|
// a non-zero exit code. Negative values are a config error.
|
||||||
MaxAttempts int `mapstructure:"max_attempts" yaml:"max_attempts"`
|
MaxAttempts int `mapstructure:"max_attempts" yaml:"max_attempts"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1764,6 +1764,113 @@ func (x *RegisterResponse) GetConfig() *NodeConfigPayload {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NodeReadyRequest is sent by node to edge after it has applied the config from
|
||||||
|
// RegisterResponse and installed its message handler, signalling that it can now
|
||||||
|
// receive run/tunnel/command dispatch. Accepted registration only claims
|
||||||
|
// ownership and delivers config; edge opens dispatch eligibility and pumps the
|
||||||
|
// node's stranded waiters only on this ready handshake, never before. node_id
|
||||||
|
// carries the identity edge assigned in RegisterResponse so the ready transition
|
||||||
|
// binds to the exact accepted connection.
|
||||||
|
type NodeReadyRequest struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NodeReadyRequest) Reset() {
|
||||||
|
*x = NodeReadyRequest{}
|
||||||
|
mi := &file_proto_iop_runtime_proto_msgTypes[15]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NodeReadyRequest) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*NodeReadyRequest) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *NodeReadyRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_proto_iop_runtime_proto_msgTypes[15]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use NodeReadyRequest.ProtoReflect.Descriptor instead.
|
||||||
|
func (*NodeReadyRequest) Descriptor() ([]byte, []int) {
|
||||||
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{15}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NodeReadyRequest) GetNodeId() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.NodeId
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
// NodeReadyResponse acknowledges a NodeReadyRequest. ready is true once edge has
|
||||||
|
// marked the connection dispatch-ready (idempotent for the current owner); it is
|
||||||
|
// false when the connection is stale — superseded by a reconnect or already gone
|
||||||
|
// — in which case the node closes and reconnects. reason describes a rejection.
|
||||||
|
type NodeReadyResponse struct {
|
||||||
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
Ready bool `protobuf:"varint,1,opt,name=ready,proto3" json:"ready,omitempty"`
|
||||||
|
Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"`
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NodeReadyResponse) Reset() {
|
||||||
|
*x = NodeReadyResponse{}
|
||||||
|
mi := &file_proto_iop_runtime_proto_msgTypes[16]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NodeReadyResponse) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*NodeReadyResponse) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *NodeReadyResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_proto_iop_runtime_proto_msgTypes[16]
|
||||||
|
if x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use NodeReadyResponse.ProtoReflect.Descriptor instead.
|
||||||
|
func (*NodeReadyResponse) Descriptor() ([]byte, []int) {
|
||||||
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{16}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NodeReadyResponse) GetReady() bool {
|
||||||
|
if x != nil {
|
||||||
|
return x.Ready
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NodeReadyResponse) GetReason() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Reason
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
// NodeConfigPayload carries all configuration edge pushes to the node.
|
// NodeConfigPayload carries all configuration edge pushes to the node.
|
||||||
type NodeConfigPayload struct {
|
type NodeConfigPayload struct {
|
||||||
state protoimpl.MessageState `protogen:"open.v1"`
|
state protoimpl.MessageState `protogen:"open.v1"`
|
||||||
|
|
@ -1775,7 +1882,7 @@ type NodeConfigPayload struct {
|
||||||
|
|
||||||
func (x *NodeConfigPayload) Reset() {
|
func (x *NodeConfigPayload) Reset() {
|
||||||
*x = NodeConfigPayload{}
|
*x = NodeConfigPayload{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[15]
|
mi := &file_proto_iop_runtime_proto_msgTypes[17]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -1787,7 +1894,7 @@ func (x *NodeConfigPayload) String() string {
|
||||||
func (*NodeConfigPayload) ProtoMessage() {}
|
func (*NodeConfigPayload) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *NodeConfigPayload) ProtoReflect() protoreflect.Message {
|
func (x *NodeConfigPayload) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[15]
|
mi := &file_proto_iop_runtime_proto_msgTypes[17]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -1800,7 +1907,7 @@ func (x *NodeConfigPayload) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use NodeConfigPayload.ProtoReflect.Descriptor instead.
|
// Deprecated: Use NodeConfigPayload.ProtoReflect.Descriptor instead.
|
||||||
func (*NodeConfigPayload) Descriptor() ([]byte, []int) {
|
func (*NodeConfigPayload) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{15}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{17}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *NodeConfigPayload) GetAdapters() []*AdapterConfig {
|
func (x *NodeConfigPayload) GetAdapters() []*AdapterConfig {
|
||||||
|
|
@ -1842,7 +1949,7 @@ type AdapterConfig struct {
|
||||||
|
|
||||||
func (x *AdapterConfig) Reset() {
|
func (x *AdapterConfig) Reset() {
|
||||||
*x = AdapterConfig{}
|
*x = AdapterConfig{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[16]
|
mi := &file_proto_iop_runtime_proto_msgTypes[18]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -1854,7 +1961,7 @@ func (x *AdapterConfig) String() string {
|
||||||
func (*AdapterConfig) ProtoMessage() {}
|
func (*AdapterConfig) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *AdapterConfig) ProtoReflect() protoreflect.Message {
|
func (x *AdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[16]
|
mi := &file_proto_iop_runtime_proto_msgTypes[18]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -1867,7 +1974,7 @@ func (x *AdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use AdapterConfig.ProtoReflect.Descriptor instead.
|
// Deprecated: Use AdapterConfig.ProtoReflect.Descriptor instead.
|
||||||
func (*AdapterConfig) Descriptor() ([]byte, []int) {
|
func (*AdapterConfig) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{16}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{18}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *AdapterConfig) GetType() string {
|
func (x *AdapterConfig) GetType() string {
|
||||||
|
|
@ -1999,7 +2106,7 @@ type MockAdapterConfig struct {
|
||||||
|
|
||||||
func (x *MockAdapterConfig) Reset() {
|
func (x *MockAdapterConfig) Reset() {
|
||||||
*x = MockAdapterConfig{}
|
*x = MockAdapterConfig{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[17]
|
mi := &file_proto_iop_runtime_proto_msgTypes[19]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -2011,7 +2118,7 @@ func (x *MockAdapterConfig) String() string {
|
||||||
func (*MockAdapterConfig) ProtoMessage() {}
|
func (*MockAdapterConfig) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *MockAdapterConfig) ProtoReflect() protoreflect.Message {
|
func (x *MockAdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[17]
|
mi := &file_proto_iop_runtime_proto_msgTypes[19]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -2024,7 +2131,7 @@ func (x *MockAdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use MockAdapterConfig.ProtoReflect.Descriptor instead.
|
// Deprecated: Use MockAdapterConfig.ProtoReflect.Descriptor instead.
|
||||||
func (*MockAdapterConfig) Descriptor() ([]byte, []int) {
|
func (*MockAdapterConfig) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{17}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{19}
|
||||||
}
|
}
|
||||||
|
|
||||||
type CLIAdapterConfig struct {
|
type CLIAdapterConfig struct {
|
||||||
|
|
@ -2036,7 +2143,7 @@ type CLIAdapterConfig struct {
|
||||||
|
|
||||||
func (x *CLIAdapterConfig) Reset() {
|
func (x *CLIAdapterConfig) Reset() {
|
||||||
*x = CLIAdapterConfig{}
|
*x = CLIAdapterConfig{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[18]
|
mi := &file_proto_iop_runtime_proto_msgTypes[20]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -2048,7 +2155,7 @@ func (x *CLIAdapterConfig) String() string {
|
||||||
func (*CLIAdapterConfig) ProtoMessage() {}
|
func (*CLIAdapterConfig) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *CLIAdapterConfig) ProtoReflect() protoreflect.Message {
|
func (x *CLIAdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[18]
|
mi := &file_proto_iop_runtime_proto_msgTypes[20]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -2061,7 +2168,7 @@ func (x *CLIAdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use CLIAdapterConfig.ProtoReflect.Descriptor instead.
|
// Deprecated: Use CLIAdapterConfig.ProtoReflect.Descriptor instead.
|
||||||
func (*CLIAdapterConfig) Descriptor() ([]byte, []int) {
|
func (*CLIAdapterConfig) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{18}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{20}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CLIAdapterConfig) GetProfiles() map[string]*CLIProfileConfig {
|
func (x *CLIAdapterConfig) GetProfiles() map[string]*CLIProfileConfig {
|
||||||
|
|
@ -2090,7 +2197,7 @@ type CLIProfileConfig struct {
|
||||||
|
|
||||||
func (x *CLIProfileConfig) Reset() {
|
func (x *CLIProfileConfig) Reset() {
|
||||||
*x = CLIProfileConfig{}
|
*x = CLIProfileConfig{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[19]
|
mi := &file_proto_iop_runtime_proto_msgTypes[21]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -2102,7 +2209,7 @@ func (x *CLIProfileConfig) String() string {
|
||||||
func (*CLIProfileConfig) ProtoMessage() {}
|
func (*CLIProfileConfig) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *CLIProfileConfig) ProtoReflect() protoreflect.Message {
|
func (x *CLIProfileConfig) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[19]
|
mi := &file_proto_iop_runtime_proto_msgTypes[21]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -2115,7 +2222,7 @@ func (x *CLIProfileConfig) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use CLIProfileConfig.ProtoReflect.Descriptor instead.
|
// Deprecated: Use CLIProfileConfig.ProtoReflect.Descriptor instead.
|
||||||
func (*CLIProfileConfig) Descriptor() ([]byte, []int) {
|
func (*CLIProfileConfig) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{19}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{21}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CLIProfileConfig) GetCommand() string {
|
func (x *CLIProfileConfig) GetCommand() string {
|
||||||
|
|
@ -2205,7 +2312,7 @@ type CLICompletionMarker struct {
|
||||||
|
|
||||||
func (x *CLICompletionMarker) Reset() {
|
func (x *CLICompletionMarker) Reset() {
|
||||||
*x = CLICompletionMarker{}
|
*x = CLICompletionMarker{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[20]
|
mi := &file_proto_iop_runtime_proto_msgTypes[22]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -2217,7 +2324,7 @@ func (x *CLICompletionMarker) String() string {
|
||||||
func (*CLICompletionMarker) ProtoMessage() {}
|
func (*CLICompletionMarker) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *CLICompletionMarker) ProtoReflect() protoreflect.Message {
|
func (x *CLICompletionMarker) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[20]
|
mi := &file_proto_iop_runtime_proto_msgTypes[22]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -2230,7 +2337,7 @@ func (x *CLICompletionMarker) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use CLICompletionMarker.ProtoReflect.Descriptor instead.
|
// Deprecated: Use CLICompletionMarker.ProtoReflect.Descriptor instead.
|
||||||
func (*CLICompletionMarker) Descriptor() ([]byte, []int) {
|
func (*CLICompletionMarker) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{20}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{22}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CLICompletionMarker) GetLine() string {
|
func (x *CLICompletionMarker) GetLine() string {
|
||||||
|
|
@ -2261,7 +2368,7 @@ type OllamaAdapterConfig struct {
|
||||||
|
|
||||||
func (x *OllamaAdapterConfig) Reset() {
|
func (x *OllamaAdapterConfig) Reset() {
|
||||||
*x = OllamaAdapterConfig{}
|
*x = OllamaAdapterConfig{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[21]
|
mi := &file_proto_iop_runtime_proto_msgTypes[23]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -2273,7 +2380,7 @@ func (x *OllamaAdapterConfig) String() string {
|
||||||
func (*OllamaAdapterConfig) ProtoMessage() {}
|
func (*OllamaAdapterConfig) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *OllamaAdapterConfig) ProtoReflect() protoreflect.Message {
|
func (x *OllamaAdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[21]
|
mi := &file_proto_iop_runtime_proto_msgTypes[23]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -2286,7 +2393,7 @@ func (x *OllamaAdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use OllamaAdapterConfig.ProtoReflect.Descriptor instead.
|
// Deprecated: Use OllamaAdapterConfig.ProtoReflect.Descriptor instead.
|
||||||
func (*OllamaAdapterConfig) Descriptor() ([]byte, []int) {
|
func (*OllamaAdapterConfig) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{21}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{23}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *OllamaAdapterConfig) GetBaseUrl() string {
|
func (x *OllamaAdapterConfig) GetBaseUrl() string {
|
||||||
|
|
@ -2344,7 +2451,7 @@ type VllmAdapterConfig struct {
|
||||||
|
|
||||||
func (x *VllmAdapterConfig) Reset() {
|
func (x *VllmAdapterConfig) Reset() {
|
||||||
*x = VllmAdapterConfig{}
|
*x = VllmAdapterConfig{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[22]
|
mi := &file_proto_iop_runtime_proto_msgTypes[24]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -2356,7 +2463,7 @@ func (x *VllmAdapterConfig) String() string {
|
||||||
func (*VllmAdapterConfig) ProtoMessage() {}
|
func (*VllmAdapterConfig) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *VllmAdapterConfig) ProtoReflect() protoreflect.Message {
|
func (x *VllmAdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[22]
|
mi := &file_proto_iop_runtime_proto_msgTypes[24]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -2369,7 +2476,7 @@ func (x *VllmAdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use VllmAdapterConfig.ProtoReflect.Descriptor instead.
|
// Deprecated: Use VllmAdapterConfig.ProtoReflect.Descriptor instead.
|
||||||
func (*VllmAdapterConfig) Descriptor() ([]byte, []int) {
|
func (*VllmAdapterConfig) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{22}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{24}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *VllmAdapterConfig) GetEndpoint() string {
|
func (x *VllmAdapterConfig) GetEndpoint() string {
|
||||||
|
|
@ -2422,7 +2529,7 @@ type OpenAICompatAdapterConfig struct {
|
||||||
|
|
||||||
func (x *OpenAICompatAdapterConfig) Reset() {
|
func (x *OpenAICompatAdapterConfig) Reset() {
|
||||||
*x = OpenAICompatAdapterConfig{}
|
*x = OpenAICompatAdapterConfig{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[23]
|
mi := &file_proto_iop_runtime_proto_msgTypes[25]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -2434,7 +2541,7 @@ func (x *OpenAICompatAdapterConfig) String() string {
|
||||||
func (*OpenAICompatAdapterConfig) ProtoMessage() {}
|
func (*OpenAICompatAdapterConfig) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *OpenAICompatAdapterConfig) ProtoReflect() protoreflect.Message {
|
func (x *OpenAICompatAdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[23]
|
mi := &file_proto_iop_runtime_proto_msgTypes[25]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -2447,7 +2554,7 @@ func (x *OpenAICompatAdapterConfig) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use OpenAICompatAdapterConfig.ProtoReflect.Descriptor instead.
|
// Deprecated: Use OpenAICompatAdapterConfig.ProtoReflect.Descriptor instead.
|
||||||
func (*OpenAICompatAdapterConfig) Descriptor() ([]byte, []int) {
|
func (*OpenAICompatAdapterConfig) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{23}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{25}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *OpenAICompatAdapterConfig) GetProvider() string {
|
func (x *OpenAICompatAdapterConfig) GetProvider() string {
|
||||||
|
|
@ -2511,7 +2618,7 @@ type NodeRuntimeConfig struct {
|
||||||
|
|
||||||
func (x *NodeRuntimeConfig) Reset() {
|
func (x *NodeRuntimeConfig) Reset() {
|
||||||
*x = NodeRuntimeConfig{}
|
*x = NodeRuntimeConfig{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[24]
|
mi := &file_proto_iop_runtime_proto_msgTypes[26]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -2523,7 +2630,7 @@ func (x *NodeRuntimeConfig) String() string {
|
||||||
func (*NodeRuntimeConfig) ProtoMessage() {}
|
func (*NodeRuntimeConfig) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *NodeRuntimeConfig) ProtoReflect() protoreflect.Message {
|
func (x *NodeRuntimeConfig) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[24]
|
mi := &file_proto_iop_runtime_proto_msgTypes[26]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -2536,7 +2643,7 @@ func (x *NodeRuntimeConfig) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use NodeRuntimeConfig.ProtoReflect.Descriptor instead.
|
// Deprecated: Use NodeRuntimeConfig.ProtoReflect.Descriptor instead.
|
||||||
func (*NodeRuntimeConfig) Descriptor() ([]byte, []int) {
|
func (*NodeRuntimeConfig) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{24}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{26}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *NodeRuntimeConfig) GetConcurrency() int32 {
|
func (x *NodeRuntimeConfig) GetConcurrency() int32 {
|
||||||
|
|
@ -2558,7 +2665,7 @@ type NodeConfigRefreshRequest struct {
|
||||||
|
|
||||||
func (x *NodeConfigRefreshRequest) Reset() {
|
func (x *NodeConfigRefreshRequest) Reset() {
|
||||||
*x = NodeConfigRefreshRequest{}
|
*x = NodeConfigRefreshRequest{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[25]
|
mi := &file_proto_iop_runtime_proto_msgTypes[27]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -2570,7 +2677,7 @@ func (x *NodeConfigRefreshRequest) String() string {
|
||||||
func (*NodeConfigRefreshRequest) ProtoMessage() {}
|
func (*NodeConfigRefreshRequest) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *NodeConfigRefreshRequest) ProtoReflect() protoreflect.Message {
|
func (x *NodeConfigRefreshRequest) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[25]
|
mi := &file_proto_iop_runtime_proto_msgTypes[27]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -2583,7 +2690,7 @@ func (x *NodeConfigRefreshRequest) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use NodeConfigRefreshRequest.ProtoReflect.Descriptor instead.
|
// Deprecated: Use NodeConfigRefreshRequest.ProtoReflect.Descriptor instead.
|
||||||
func (*NodeConfigRefreshRequest) Descriptor() ([]byte, []int) {
|
func (*NodeConfigRefreshRequest) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{25}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{27}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *NodeConfigRefreshRequest) GetRequestId() string {
|
func (x *NodeConfigRefreshRequest) GetRequestId() string {
|
||||||
|
|
@ -2620,7 +2727,7 @@ type NodeConfigRefreshResponse struct {
|
||||||
|
|
||||||
func (x *NodeConfigRefreshResponse) Reset() {
|
func (x *NodeConfigRefreshResponse) Reset() {
|
||||||
*x = NodeConfigRefreshResponse{}
|
*x = NodeConfigRefreshResponse{}
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[26]
|
mi := &file_proto_iop_runtime_proto_msgTypes[28]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -2632,7 +2739,7 @@ func (x *NodeConfigRefreshResponse) String() string {
|
||||||
func (*NodeConfigRefreshResponse) ProtoMessage() {}
|
func (*NodeConfigRefreshResponse) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *NodeConfigRefreshResponse) ProtoReflect() protoreflect.Message {
|
func (x *NodeConfigRefreshResponse) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_proto_iop_runtime_proto_msgTypes[26]
|
mi := &file_proto_iop_runtime_proto_msgTypes[28]
|
||||||
if x != nil {
|
if x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -2645,7 +2752,7 @@ func (x *NodeConfigRefreshResponse) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use NodeConfigRefreshResponse.ProtoReflect.Descriptor instead.
|
// Deprecated: Use NodeConfigRefreshResponse.ProtoReflect.Descriptor instead.
|
||||||
func (*NodeConfigRefreshResponse) Descriptor() ([]byte, []int) {
|
func (*NodeConfigRefreshResponse) Descriptor() ([]byte, []int) {
|
||||||
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{26}
|
return file_proto_iop_runtime_proto_rawDescGZIP(), []int{28}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *NodeConfigRefreshResponse) GetRequestId() string {
|
func (x *NodeConfigRefreshResponse) GetRequestId() string {
|
||||||
|
|
@ -2867,7 +2974,12 @@ const file_proto_iop_runtime_proto_rawDesc = "" +
|
||||||
"\anode_id\x18\x02 \x01(\tR\x06nodeId\x12\x14\n" +
|
"\anode_id\x18\x02 \x01(\tR\x06nodeId\x12\x14\n" +
|
||||||
"\x05alias\x18\x03 \x01(\tR\x05alias\x12\x16\n" +
|
"\x05alias\x18\x03 \x01(\tR\x05alias\x12\x16\n" +
|
||||||
"\x06reason\x18\x04 \x01(\tR\x06reason\x12.\n" +
|
"\x06reason\x18\x04 \x01(\tR\x06reason\x12.\n" +
|
||||||
"\x06config\x18\x05 \x01(\v2\x16.iop.NodeConfigPayloadR\x06config\"u\n" +
|
"\x06config\x18\x05 \x01(\v2\x16.iop.NodeConfigPayloadR\x06config\"+\n" +
|
||||||
|
"\x10NodeReadyRequest\x12\x17\n" +
|
||||||
|
"\anode_id\x18\x01 \x01(\tR\x06nodeId\"A\n" +
|
||||||
|
"\x11NodeReadyResponse\x12\x14\n" +
|
||||||
|
"\x05ready\x18\x01 \x01(\bR\x05ready\x12\x16\n" +
|
||||||
|
"\x06reason\x18\x02 \x01(\tR\x06reason\"u\n" +
|
||||||
"\x11NodeConfigPayload\x12.\n" +
|
"\x11NodeConfigPayload\x12.\n" +
|
||||||
"\badapters\x18\x01 \x03(\v2\x12.iop.AdapterConfigR\badapters\x120\n" +
|
"\badapters\x18\x01 \x03(\v2\x12.iop.AdapterConfigR\badapters\x120\n" +
|
||||||
"\aruntime\x18\x02 \x01(\v2\x16.iop.NodeRuntimeConfigR\aruntime\"\xaa\x03\n" +
|
"\aruntime\x18\x02 \x01(\v2\x16.iop.NodeRuntimeConfigR\aruntime\"\xaa\x03\n" +
|
||||||
|
|
@ -2988,7 +3100,7 @@ func file_proto_iop_runtime_proto_rawDescGZIP() []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_proto_iop_runtime_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
|
var file_proto_iop_runtime_proto_enumTypes = make([]protoimpl.EnumInfo, 5)
|
||||||
var file_proto_iop_runtime_proto_msgTypes = make([]protoimpl.MessageInfo, 39)
|
var file_proto_iop_runtime_proto_msgTypes = make([]protoimpl.MessageInfo, 41)
|
||||||
var file_proto_iop_runtime_proto_goTypes = []any{
|
var file_proto_iop_runtime_proto_goTypes = []any{
|
||||||
(RunSessionMode)(0), // 0: iop.RunSessionMode
|
(RunSessionMode)(0), // 0: iop.RunSessionMode
|
||||||
(CancelAction)(0), // 1: iop.CancelAction
|
(CancelAction)(0), // 1: iop.CancelAction
|
||||||
|
|
@ -3010,69 +3122,71 @@ var file_proto_iop_runtime_proto_goTypes = []any{
|
||||||
(*Error)(nil), // 17: iop.Error
|
(*Error)(nil), // 17: iop.Error
|
||||||
(*RegisterRequest)(nil), // 18: iop.RegisterRequest
|
(*RegisterRequest)(nil), // 18: iop.RegisterRequest
|
||||||
(*RegisterResponse)(nil), // 19: iop.RegisterResponse
|
(*RegisterResponse)(nil), // 19: iop.RegisterResponse
|
||||||
(*NodeConfigPayload)(nil), // 20: iop.NodeConfigPayload
|
(*NodeReadyRequest)(nil), // 20: iop.NodeReadyRequest
|
||||||
(*AdapterConfig)(nil), // 21: iop.AdapterConfig
|
(*NodeReadyResponse)(nil), // 21: iop.NodeReadyResponse
|
||||||
(*MockAdapterConfig)(nil), // 22: iop.MockAdapterConfig
|
(*NodeConfigPayload)(nil), // 22: iop.NodeConfigPayload
|
||||||
(*CLIAdapterConfig)(nil), // 23: iop.CLIAdapterConfig
|
(*AdapterConfig)(nil), // 23: iop.AdapterConfig
|
||||||
(*CLIProfileConfig)(nil), // 24: iop.CLIProfileConfig
|
(*MockAdapterConfig)(nil), // 24: iop.MockAdapterConfig
|
||||||
(*CLICompletionMarker)(nil), // 25: iop.CLICompletionMarker
|
(*CLIAdapterConfig)(nil), // 25: iop.CLIAdapterConfig
|
||||||
(*OllamaAdapterConfig)(nil), // 26: iop.OllamaAdapterConfig
|
(*CLIProfileConfig)(nil), // 26: iop.CLIProfileConfig
|
||||||
(*VllmAdapterConfig)(nil), // 27: iop.VllmAdapterConfig
|
(*CLICompletionMarker)(nil), // 27: iop.CLICompletionMarker
|
||||||
(*OpenAICompatAdapterConfig)(nil), // 28: iop.OpenAICompatAdapterConfig
|
(*OllamaAdapterConfig)(nil), // 28: iop.OllamaAdapterConfig
|
||||||
(*NodeRuntimeConfig)(nil), // 29: iop.NodeRuntimeConfig
|
(*VllmAdapterConfig)(nil), // 29: iop.VllmAdapterConfig
|
||||||
(*NodeConfigRefreshRequest)(nil), // 30: iop.NodeConfigRefreshRequest
|
(*OpenAICompatAdapterConfig)(nil), // 30: iop.OpenAICompatAdapterConfig
|
||||||
(*NodeConfigRefreshResponse)(nil), // 31: iop.NodeConfigRefreshResponse
|
(*NodeRuntimeConfig)(nil), // 31: iop.NodeRuntimeConfig
|
||||||
nil, // 32: iop.RunRequest.MetadataEntry
|
(*NodeConfigRefreshRequest)(nil), // 32: iop.NodeConfigRefreshRequest
|
||||||
nil, // 33: iop.RunEvent.MetadataEntry
|
(*NodeConfigRefreshResponse)(nil), // 33: iop.NodeConfigRefreshResponse
|
||||||
nil, // 34: iop.ProviderTunnelRequest.HeadersEntry
|
nil, // 34: iop.RunRequest.MetadataEntry
|
||||||
nil, // 35: iop.ProviderTunnelRequest.MetadataEntry
|
nil, // 35: iop.RunEvent.MetadataEntry
|
||||||
nil, // 36: iop.ProviderTunnelFrame.HeadersEntry
|
nil, // 36: iop.ProviderTunnelRequest.HeadersEntry
|
||||||
nil, // 37: iop.ProviderTunnelFrame.MetadataEntry
|
nil, // 37: iop.ProviderTunnelRequest.MetadataEntry
|
||||||
nil, // 38: iop.EdgeNodeEvent.MetadataEntry
|
nil, // 38: iop.ProviderTunnelFrame.HeadersEntry
|
||||||
nil, // 39: iop.NodeCommandRequest.MetadataEntry
|
nil, // 39: iop.ProviderTunnelFrame.MetadataEntry
|
||||||
nil, // 40: iop.NodeCommandResponse.ResultEntry
|
nil, // 40: iop.EdgeNodeEvent.MetadataEntry
|
||||||
nil, // 41: iop.AgentUsageStatus.MetadataEntry
|
nil, // 41: iop.NodeCommandRequest.MetadataEntry
|
||||||
nil, // 42: iop.CLIAdapterConfig.ProfilesEntry
|
nil, // 42: iop.NodeCommandResponse.ResultEntry
|
||||||
nil, // 43: iop.OpenAICompatAdapterConfig.HeadersEntry
|
nil, // 43: iop.AgentUsageStatus.MetadataEntry
|
||||||
(*structpb.Struct)(nil), // 44: google.protobuf.Struct
|
nil, // 44: iop.CLIAdapterConfig.ProfilesEntry
|
||||||
|
nil, // 45: iop.OpenAICompatAdapterConfig.HeadersEntry
|
||||||
|
(*structpb.Struct)(nil), // 46: google.protobuf.Struct
|
||||||
}
|
}
|
||||||
var file_proto_iop_runtime_proto_depIdxs = []int32{
|
var file_proto_iop_runtime_proto_depIdxs = []int32{
|
||||||
44, // 0: iop.RunRequest.policy:type_name -> google.protobuf.Struct
|
46, // 0: iop.RunRequest.policy:type_name -> google.protobuf.Struct
|
||||||
44, // 1: iop.RunRequest.input:type_name -> google.protobuf.Struct
|
46, // 1: iop.RunRequest.input:type_name -> google.protobuf.Struct
|
||||||
32, // 2: iop.RunRequest.metadata:type_name -> iop.RunRequest.MetadataEntry
|
34, // 2: iop.RunRequest.metadata:type_name -> iop.RunRequest.MetadataEntry
|
||||||
0, // 3: iop.RunRequest.session_mode:type_name -> iop.RunSessionMode
|
0, // 3: iop.RunRequest.session_mode:type_name -> iop.RunSessionMode
|
||||||
10, // 4: iop.RunEvent.usage:type_name -> iop.Usage
|
10, // 4: iop.RunEvent.usage:type_name -> iop.Usage
|
||||||
33, // 5: iop.RunEvent.metadata:type_name -> iop.RunEvent.MetadataEntry
|
35, // 5: iop.RunEvent.metadata:type_name -> iop.RunEvent.MetadataEntry
|
||||||
34, // 6: iop.ProviderTunnelRequest.headers:type_name -> iop.ProviderTunnelRequest.HeadersEntry
|
36, // 6: iop.ProviderTunnelRequest.headers:type_name -> iop.ProviderTunnelRequest.HeadersEntry
|
||||||
35, // 7: iop.ProviderTunnelRequest.metadata:type_name -> iop.ProviderTunnelRequest.MetadataEntry
|
37, // 7: iop.ProviderTunnelRequest.metadata:type_name -> iop.ProviderTunnelRequest.MetadataEntry
|
||||||
2, // 8: iop.ProviderTunnelFrame.kind:type_name -> iop.ProviderTunnelFrameKind
|
2, // 8: iop.ProviderTunnelFrame.kind:type_name -> iop.ProviderTunnelFrameKind
|
||||||
36, // 9: iop.ProviderTunnelFrame.headers:type_name -> iop.ProviderTunnelFrame.HeadersEntry
|
38, // 9: iop.ProviderTunnelFrame.headers:type_name -> iop.ProviderTunnelFrame.HeadersEntry
|
||||||
10, // 10: iop.ProviderTunnelFrame.usage:type_name -> iop.Usage
|
10, // 10: iop.ProviderTunnelFrame.usage:type_name -> iop.Usage
|
||||||
37, // 11: iop.ProviderTunnelFrame.metadata:type_name -> iop.ProviderTunnelFrame.MetadataEntry
|
39, // 11: iop.ProviderTunnelFrame.metadata:type_name -> iop.ProviderTunnelFrame.MetadataEntry
|
||||||
38, // 12: iop.EdgeNodeEvent.metadata:type_name -> iop.EdgeNodeEvent.MetadataEntry
|
40, // 12: iop.EdgeNodeEvent.metadata:type_name -> iop.EdgeNodeEvent.MetadataEntry
|
||||||
1, // 13: iop.CancelRequest.action:type_name -> iop.CancelAction
|
1, // 13: iop.CancelRequest.action:type_name -> iop.CancelAction
|
||||||
3, // 14: iop.NodeCommandRequest.type:type_name -> iop.NodeCommandType
|
3, // 14: iop.NodeCommandRequest.type:type_name -> iop.NodeCommandType
|
||||||
39, // 15: iop.NodeCommandRequest.metadata:type_name -> iop.NodeCommandRequest.MetadataEntry
|
41, // 15: iop.NodeCommandRequest.metadata:type_name -> iop.NodeCommandRequest.MetadataEntry
|
||||||
3, // 16: iop.NodeCommandResponse.type:type_name -> iop.NodeCommandType
|
3, // 16: iop.NodeCommandResponse.type:type_name -> iop.NodeCommandType
|
||||||
16, // 17: iop.NodeCommandResponse.usage_status:type_name -> iop.AgentUsageStatus
|
16, // 17: iop.NodeCommandResponse.usage_status:type_name -> iop.AgentUsageStatus
|
||||||
40, // 18: iop.NodeCommandResponse.result:type_name -> iop.NodeCommandResponse.ResultEntry
|
42, // 18: iop.NodeCommandResponse.result:type_name -> iop.NodeCommandResponse.ResultEntry
|
||||||
15, // 19: iop.NodeCommandResponse.provider_snapshots:type_name -> iop.ProviderSnapshot
|
15, // 19: iop.NodeCommandResponse.provider_snapshots:type_name -> iop.ProviderSnapshot
|
||||||
41, // 20: iop.AgentUsageStatus.metadata:type_name -> iop.AgentUsageStatus.MetadataEntry
|
43, // 20: iop.AgentUsageStatus.metadata:type_name -> iop.AgentUsageStatus.MetadataEntry
|
||||||
20, // 21: iop.RegisterResponse.config:type_name -> iop.NodeConfigPayload
|
22, // 21: iop.RegisterResponse.config:type_name -> iop.NodeConfigPayload
|
||||||
21, // 22: iop.NodeConfigPayload.adapters:type_name -> iop.AdapterConfig
|
23, // 22: iop.NodeConfigPayload.adapters:type_name -> iop.AdapterConfig
|
||||||
29, // 23: iop.NodeConfigPayload.runtime:type_name -> iop.NodeRuntimeConfig
|
31, // 23: iop.NodeConfigPayload.runtime:type_name -> iop.NodeRuntimeConfig
|
||||||
44, // 24: iop.AdapterConfig.settings:type_name -> google.protobuf.Struct
|
46, // 24: iop.AdapterConfig.settings:type_name -> google.protobuf.Struct
|
||||||
23, // 25: iop.AdapterConfig.cli:type_name -> iop.CLIAdapterConfig
|
25, // 25: iop.AdapterConfig.cli:type_name -> iop.CLIAdapterConfig
|
||||||
26, // 26: iop.AdapterConfig.ollama:type_name -> iop.OllamaAdapterConfig
|
28, // 26: iop.AdapterConfig.ollama:type_name -> iop.OllamaAdapterConfig
|
||||||
27, // 27: iop.AdapterConfig.vllm:type_name -> iop.VllmAdapterConfig
|
29, // 27: iop.AdapterConfig.vllm:type_name -> iop.VllmAdapterConfig
|
||||||
22, // 28: iop.AdapterConfig.mock:type_name -> iop.MockAdapterConfig
|
24, // 28: iop.AdapterConfig.mock:type_name -> iop.MockAdapterConfig
|
||||||
28, // 29: iop.AdapterConfig.openai_compat:type_name -> iop.OpenAICompatAdapterConfig
|
30, // 29: iop.AdapterConfig.openai_compat:type_name -> iop.OpenAICompatAdapterConfig
|
||||||
42, // 30: iop.CLIAdapterConfig.profiles:type_name -> iop.CLIAdapterConfig.ProfilesEntry
|
44, // 30: iop.CLIAdapterConfig.profiles:type_name -> iop.CLIAdapterConfig.ProfilesEntry
|
||||||
25, // 31: iop.CLIProfileConfig.completion_marker:type_name -> iop.CLICompletionMarker
|
27, // 31: iop.CLIProfileConfig.completion_marker:type_name -> iop.CLICompletionMarker
|
||||||
43, // 32: iop.OpenAICompatAdapterConfig.headers:type_name -> iop.OpenAICompatAdapterConfig.HeadersEntry
|
45, // 32: iop.OpenAICompatAdapterConfig.headers:type_name -> iop.OpenAICompatAdapterConfig.HeadersEntry
|
||||||
20, // 33: iop.NodeConfigRefreshRequest.config:type_name -> iop.NodeConfigPayload
|
22, // 33: iop.NodeConfigRefreshRequest.config:type_name -> iop.NodeConfigPayload
|
||||||
4, // 34: iop.NodeConfigRefreshResponse.status:type_name -> iop.NodeConfigRefreshStatus
|
4, // 34: iop.NodeConfigRefreshResponse.status:type_name -> iop.NodeConfigRefreshStatus
|
||||||
24, // 35: iop.CLIAdapterConfig.ProfilesEntry.value:type_name -> iop.CLIProfileConfig
|
26, // 35: iop.CLIAdapterConfig.ProfilesEntry.value:type_name -> iop.CLIProfileConfig
|
||||||
36, // [36:36] is the sub-list for method output_type
|
36, // [36:36] is the sub-list for method output_type
|
||||||
36, // [36:36] is the sub-list for method input_type
|
36, // [36:36] is the sub-list for method input_type
|
||||||
36, // [36:36] is the sub-list for extension type_name
|
36, // [36:36] is the sub-list for extension type_name
|
||||||
|
|
@ -3085,7 +3199,7 @@ func file_proto_iop_runtime_proto_init() {
|
||||||
if File_proto_iop_runtime_proto != nil {
|
if File_proto_iop_runtime_proto != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
file_proto_iop_runtime_proto_msgTypes[16].OneofWrappers = []any{
|
file_proto_iop_runtime_proto_msgTypes[18].OneofWrappers = []any{
|
||||||
(*AdapterConfig_Cli)(nil),
|
(*AdapterConfig_Cli)(nil),
|
||||||
(*AdapterConfig_Ollama)(nil),
|
(*AdapterConfig_Ollama)(nil),
|
||||||
(*AdapterConfig_Vllm)(nil),
|
(*AdapterConfig_Vllm)(nil),
|
||||||
|
|
@ -3098,7 +3212,7 @@ func file_proto_iop_runtime_proto_init() {
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_iop_runtime_proto_rawDesc), len(file_proto_iop_runtime_proto_rawDesc)),
|
RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_iop_runtime_proto_rawDesc), len(file_proto_iop_runtime_proto_rawDesc)),
|
||||||
NumEnums: 5,
|
NumEnums: 5,
|
||||||
NumMessages: 39,
|
NumMessages: 41,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -233,6 +233,26 @@ message RegisterResponse {
|
||||||
NodeConfigPayload config = 5;
|
NodeConfigPayload config = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NodeReadyRequest is sent by node to edge after it has applied the config from
|
||||||
|
// RegisterResponse and installed its message handler, signalling that it can now
|
||||||
|
// receive run/tunnel/command dispatch. Accepted registration only claims
|
||||||
|
// ownership and delivers config; edge opens dispatch eligibility and pumps the
|
||||||
|
// node's stranded waiters only on this ready handshake, never before. node_id
|
||||||
|
// carries the identity edge assigned in RegisterResponse so the ready transition
|
||||||
|
// binds to the exact accepted connection.
|
||||||
|
message NodeReadyRequest {
|
||||||
|
string node_id = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// NodeReadyResponse acknowledges a NodeReadyRequest. ready is true once edge has
|
||||||
|
// marked the connection dispatch-ready (idempotent for the current owner); it is
|
||||||
|
// false when the connection is stale — superseded by a reconnect or already gone
|
||||||
|
// — in which case the node closes and reconnects. reason describes a rejection.
|
||||||
|
message NodeReadyResponse {
|
||||||
|
bool ready = 1;
|
||||||
|
string reason = 2;
|
||||||
|
}
|
||||||
|
|
||||||
// NodeConfigPayload carries all configuration edge pushes to the node.
|
// NodeConfigPayload carries all configuration edge pushes to the node.
|
||||||
message NodeConfigPayload {
|
message NodeConfigPayload {
|
||||||
repeated AdapterConfig adapters = 1;
|
repeated AdapterConfig adapters = 1;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue