// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v5.29.3
// source: proto/iop/runtime.proto

package iop

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	structpb "google.golang.org/protobuf/types/known/structpb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type ProviderTunnelFrameKind int32

const (
	ProviderTunnelFrameKind_PROVIDER_TUNNEL_FRAME_KIND_UNSPECIFIED    ProviderTunnelFrameKind = 0
	ProviderTunnelFrameKind_PROVIDER_TUNNEL_FRAME_KIND_RESPONSE_START ProviderTunnelFrameKind = 1
	ProviderTunnelFrameKind_PROVIDER_TUNNEL_FRAME_KIND_BODY           ProviderTunnelFrameKind = 2
	ProviderTunnelFrameKind_PROVIDER_TUNNEL_FRAME_KIND_END            ProviderTunnelFrameKind = 3
	ProviderTunnelFrameKind_PROVIDER_TUNNEL_FRAME_KIND_ERROR          ProviderTunnelFrameKind = 4
	ProviderTunnelFrameKind_PROVIDER_TUNNEL_FRAME_KIND_USAGE          ProviderTunnelFrameKind = 5
)

// Enum value maps for ProviderTunnelFrameKind.
var (
	ProviderTunnelFrameKind_name = map[int32]string{
		0: "PROVIDER_TUNNEL_FRAME_KIND_UNSPECIFIED",
		1: "PROVIDER_TUNNEL_FRAME_KIND_RESPONSE_START",
		2: "PROVIDER_TUNNEL_FRAME_KIND_BODY",
		3: "PROVIDER_TUNNEL_FRAME_KIND_END",
		4: "PROVIDER_TUNNEL_FRAME_KIND_ERROR",
		5: "PROVIDER_TUNNEL_FRAME_KIND_USAGE",
	}
	ProviderTunnelFrameKind_value = map[string]int32{
		"PROVIDER_TUNNEL_FRAME_KIND_UNSPECIFIED":    0,
		"PROVIDER_TUNNEL_FRAME_KIND_RESPONSE_START": 1,
		"PROVIDER_TUNNEL_FRAME_KIND_BODY":           2,
		"PROVIDER_TUNNEL_FRAME_KIND_END":            3,
		"PROVIDER_TUNNEL_FRAME_KIND_ERROR":          4,
		"PROVIDER_TUNNEL_FRAME_KIND_USAGE":          5,
	}
)

func (x ProviderTunnelFrameKind) Enum() *ProviderTunnelFrameKind {
	p := new(ProviderTunnelFrameKind)
	*p = x
	return p
}

func (x ProviderTunnelFrameKind) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (ProviderTunnelFrameKind) Descriptor() protoreflect.EnumDescriptor {
	return file_proto_iop_runtime_proto_enumTypes[0].Descriptor()
}

func (ProviderTunnelFrameKind) Type() protoreflect.EnumType {
	return &file_proto_iop_runtime_proto_enumTypes[0]
}

func (x ProviderTunnelFrameKind) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use ProviderTunnelFrameKind.Descriptor instead.
func (ProviderTunnelFrameKind) EnumDescriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{0}
}

type NodeCommandType int32

const (
	NodeCommandType_NODE_COMMAND_TYPE_UNSPECIFIED      NodeCommandType = 0
	NodeCommandType_NODE_COMMAND_TYPE_CAPABILITIES     NodeCommandType = 2
	NodeCommandType_NODE_COMMAND_TYPE_TRANSPORT_STATUS NodeCommandType = 4
	NodeCommandType_NODE_COMMAND_TYPE_OLLAMA_API       NodeCommandType = 5
)

// Enum value maps for NodeCommandType.
var (
	NodeCommandType_name = map[int32]string{
		0: "NODE_COMMAND_TYPE_UNSPECIFIED",
		2: "NODE_COMMAND_TYPE_CAPABILITIES",
		4: "NODE_COMMAND_TYPE_TRANSPORT_STATUS",
		5: "NODE_COMMAND_TYPE_OLLAMA_API",
	}
	NodeCommandType_value = map[string]int32{
		"NODE_COMMAND_TYPE_UNSPECIFIED":      0,
		"NODE_COMMAND_TYPE_CAPABILITIES":     2,
		"NODE_COMMAND_TYPE_TRANSPORT_STATUS": 4,
		"NODE_COMMAND_TYPE_OLLAMA_API":       5,
	}
)

func (x NodeCommandType) Enum() *NodeCommandType {
	p := new(NodeCommandType)
	*p = x
	return p
}

func (x NodeCommandType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (NodeCommandType) Descriptor() protoreflect.EnumDescriptor {
	return file_proto_iop_runtime_proto_enumTypes[1].Descriptor()
}

func (NodeCommandType) Type() protoreflect.EnumType {
	return &file_proto_iop_runtime_proto_enumTypes[1]
}

func (x NodeCommandType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use NodeCommandType.Descriptor instead.
func (NodeCommandType) EnumDescriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{1}
}

// WorkspaceOperation is the closed set of workspace operations admitted by
// Edge and implemented by the Node-private executor.
type WorkspaceOperation int32

const (
	WorkspaceOperation_WORKSPACE_OPERATION_UNSPECIFIED WorkspaceOperation = 0
	WorkspaceOperation_WORKSPACE_OPERATION_READ        WorkspaceOperation = 1
	WorkspaceOperation_WORKSPACE_OPERATION_LIST        WorkspaceOperation = 2
	WorkspaceOperation_WORKSPACE_OPERATION_WRITE       WorkspaceOperation = 3
	WorkspaceOperation_WORKSPACE_OPERATION_DELETE      WorkspaceOperation = 4
	WorkspaceOperation_WORKSPACE_OPERATION_COMMAND     WorkspaceOperation = 5
)

// Enum value maps for WorkspaceOperation.
var (
	WorkspaceOperation_name = map[int32]string{
		0: "WORKSPACE_OPERATION_UNSPECIFIED",
		1: "WORKSPACE_OPERATION_READ",
		2: "WORKSPACE_OPERATION_LIST",
		3: "WORKSPACE_OPERATION_WRITE",
		4: "WORKSPACE_OPERATION_DELETE",
		5: "WORKSPACE_OPERATION_COMMAND",
	}
	WorkspaceOperation_value = map[string]int32{
		"WORKSPACE_OPERATION_UNSPECIFIED": 0,
		"WORKSPACE_OPERATION_READ":        1,
		"WORKSPACE_OPERATION_LIST":        2,
		"WORKSPACE_OPERATION_WRITE":       3,
		"WORKSPACE_OPERATION_DELETE":      4,
		"WORKSPACE_OPERATION_COMMAND":     5,
	}
)

func (x WorkspaceOperation) Enum() *WorkspaceOperation {
	p := new(WorkspaceOperation)
	*p = x
	return p
}

func (x WorkspaceOperation) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (WorkspaceOperation) Descriptor() protoreflect.EnumDescriptor {
	return file_proto_iop_runtime_proto_enumTypes[2].Descriptor()
}

func (WorkspaceOperation) Type() protoreflect.EnumType {
	return &file_proto_iop_runtime_proto_enumTypes[2]
}

func (x WorkspaceOperation) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use WorkspaceOperation.Descriptor instead.
func (WorkspaceOperation) EnumDescriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{2}
}

type WorkspaceStatus int32

const (
	WorkspaceStatus_WORKSPACE_STATUS_UNSPECIFIED WorkspaceStatus = 0
	WorkspaceStatus_WORKSPACE_STATUS_SUCCESS     WorkspaceStatus = 1
	WorkspaceStatus_WORKSPACE_STATUS_ERROR       WorkspaceStatus = 2
	WorkspaceStatus_WORKSPACE_STATUS_TIMEOUT     WorkspaceStatus = 3
	WorkspaceStatus_WORKSPACE_STATUS_CANCELLED   WorkspaceStatus = 4
	WorkspaceStatus_WORKSPACE_STATUS_UNSUPPORTED WorkspaceStatus = 5
)

// Enum value maps for WorkspaceStatus.
var (
	WorkspaceStatus_name = map[int32]string{
		0: "WORKSPACE_STATUS_UNSPECIFIED",
		1: "WORKSPACE_STATUS_SUCCESS",
		2: "WORKSPACE_STATUS_ERROR",
		3: "WORKSPACE_STATUS_TIMEOUT",
		4: "WORKSPACE_STATUS_CANCELLED",
		5: "WORKSPACE_STATUS_UNSUPPORTED",
	}
	WorkspaceStatus_value = map[string]int32{
		"WORKSPACE_STATUS_UNSPECIFIED": 0,
		"WORKSPACE_STATUS_SUCCESS":     1,
		"WORKSPACE_STATUS_ERROR":       2,
		"WORKSPACE_STATUS_TIMEOUT":     3,
		"WORKSPACE_STATUS_CANCELLED":   4,
		"WORKSPACE_STATUS_UNSUPPORTED": 5,
	}
)

func (x WorkspaceStatus) Enum() *WorkspaceStatus {
	p := new(WorkspaceStatus)
	*p = x
	return p
}

func (x WorkspaceStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (WorkspaceStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_proto_iop_runtime_proto_enumTypes[3].Descriptor()
}

func (WorkspaceStatus) Type() protoreflect.EnumType {
	return &file_proto_iop_runtime_proto_enumTypes[3]
}

func (x WorkspaceStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use WorkspaceStatus.Descriptor instead.
func (WorkspaceStatus) EnumDescriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{3}
}

type WorkspaceErrorCode int32

const (
	WorkspaceErrorCode_WORKSPACE_ERROR_CODE_UNSPECIFIED     WorkspaceErrorCode = 0
	WorkspaceErrorCode_WORKSPACE_ERROR_CODE_NOT_READY       WorkspaceErrorCode = 1
	WorkspaceErrorCode_WORKSPACE_ERROR_CODE_UNSUPPORTED     WorkspaceErrorCode = 2
	WorkspaceErrorCode_WORKSPACE_ERROR_CODE_INVALID_REQUEST WorkspaceErrorCode = 3
	WorkspaceErrorCode_WORKSPACE_ERROR_CODE_NOT_FOUND       WorkspaceErrorCode = 4
	WorkspaceErrorCode_WORKSPACE_ERROR_CODE_TIMEOUT         WorkspaceErrorCode = 5
	WorkspaceErrorCode_WORKSPACE_ERROR_CODE_CANCELLED       WorkspaceErrorCode = 6
	WorkspaceErrorCode_WORKSPACE_ERROR_CODE_INTERNAL        WorkspaceErrorCode = 7
)

// Enum value maps for WorkspaceErrorCode.
var (
	WorkspaceErrorCode_name = map[int32]string{
		0: "WORKSPACE_ERROR_CODE_UNSPECIFIED",
		1: "WORKSPACE_ERROR_CODE_NOT_READY",
		2: "WORKSPACE_ERROR_CODE_UNSUPPORTED",
		3: "WORKSPACE_ERROR_CODE_INVALID_REQUEST",
		4: "WORKSPACE_ERROR_CODE_NOT_FOUND",
		5: "WORKSPACE_ERROR_CODE_TIMEOUT",
		6: "WORKSPACE_ERROR_CODE_CANCELLED",
		7: "WORKSPACE_ERROR_CODE_INTERNAL",
	}
	WorkspaceErrorCode_value = map[string]int32{
		"WORKSPACE_ERROR_CODE_UNSPECIFIED":     0,
		"WORKSPACE_ERROR_CODE_NOT_READY":       1,
		"WORKSPACE_ERROR_CODE_UNSUPPORTED":     2,
		"WORKSPACE_ERROR_CODE_INVALID_REQUEST": 3,
		"WORKSPACE_ERROR_CODE_NOT_FOUND":       4,
		"WORKSPACE_ERROR_CODE_TIMEOUT":         5,
		"WORKSPACE_ERROR_CODE_CANCELLED":       6,
		"WORKSPACE_ERROR_CODE_INTERNAL":        7,
	}
)

func (x WorkspaceErrorCode) Enum() *WorkspaceErrorCode {
	p := new(WorkspaceErrorCode)
	*p = x
	return p
}

func (x WorkspaceErrorCode) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (WorkspaceErrorCode) Descriptor() protoreflect.EnumDescriptor {
	return file_proto_iop_runtime_proto_enumTypes[4].Descriptor()
}

func (WorkspaceErrorCode) Type() protoreflect.EnumType {
	return &file_proto_iop_runtime_proto_enumTypes[4]
}

func (x WorkspaceErrorCode) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use WorkspaceErrorCode.Descriptor instead.
func (WorkspaceErrorCode) EnumDescriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{4}
}

// WorkspaceArtifactKind is a closed coordinator-only artifact selector. Node
// maps these values to fixed names inside .iop/job/<request_id>; no path crosses
// the wire or becomes available to public workspace tools.
type WorkspaceArtifactKind int32

const (
	WorkspaceArtifactKind_WORKSPACE_ARTIFACT_KIND_UNSPECIFIED WorkspaceArtifactKind = 0
	WorkspaceArtifactKind_WORKSPACE_ARTIFACT_KIND_PLAN        WorkspaceArtifactKind = 1
	WorkspaceArtifactKind_WORKSPACE_ARTIFACT_KIND_REVIEW      WorkspaceArtifactKind = 2
)

// Enum value maps for WorkspaceArtifactKind.
var (
	WorkspaceArtifactKind_name = map[int32]string{
		0: "WORKSPACE_ARTIFACT_KIND_UNSPECIFIED",
		1: "WORKSPACE_ARTIFACT_KIND_PLAN",
		2: "WORKSPACE_ARTIFACT_KIND_REVIEW",
	}
	WorkspaceArtifactKind_value = map[string]int32{
		"WORKSPACE_ARTIFACT_KIND_UNSPECIFIED": 0,
		"WORKSPACE_ARTIFACT_KIND_PLAN":        1,
		"WORKSPACE_ARTIFACT_KIND_REVIEW":      2,
	}
)

func (x WorkspaceArtifactKind) Enum() *WorkspaceArtifactKind {
	p := new(WorkspaceArtifactKind)
	*p = x
	return p
}

func (x WorkspaceArtifactKind) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (WorkspaceArtifactKind) Descriptor() protoreflect.EnumDescriptor {
	return file_proto_iop_runtime_proto_enumTypes[5].Descriptor()
}

func (WorkspaceArtifactKind) Type() protoreflect.EnumType {
	return &file_proto_iop_runtime_proto_enumTypes[5]
}

func (x WorkspaceArtifactKind) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use WorkspaceArtifactKind.Descriptor instead.
func (WorkspaceArtifactKind) EnumDescriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{5}
}

type WorkspaceArtifactOperation int32

const (
	WorkspaceArtifactOperation_WORKSPACE_ARTIFACT_OPERATION_UNSPECIFIED WorkspaceArtifactOperation = 0
	WorkspaceArtifactOperation_WORKSPACE_ARTIFACT_OPERATION_READ        WorkspaceArtifactOperation = 1
	WorkspaceArtifactOperation_WORKSPACE_ARTIFACT_OPERATION_WRITE       WorkspaceArtifactOperation = 2
)

// Enum value maps for WorkspaceArtifactOperation.
var (
	WorkspaceArtifactOperation_name = map[int32]string{
		0: "WORKSPACE_ARTIFACT_OPERATION_UNSPECIFIED",
		1: "WORKSPACE_ARTIFACT_OPERATION_READ",
		2: "WORKSPACE_ARTIFACT_OPERATION_WRITE",
	}
	WorkspaceArtifactOperation_value = map[string]int32{
		"WORKSPACE_ARTIFACT_OPERATION_UNSPECIFIED": 0,
		"WORKSPACE_ARTIFACT_OPERATION_READ":        1,
		"WORKSPACE_ARTIFACT_OPERATION_WRITE":       2,
	}
)

func (x WorkspaceArtifactOperation) Enum() *WorkspaceArtifactOperation {
	p := new(WorkspaceArtifactOperation)
	*p = x
	return p
}

func (x WorkspaceArtifactOperation) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (WorkspaceArtifactOperation) Descriptor() protoreflect.EnumDescriptor {
	return file_proto_iop_runtime_proto_enumTypes[6].Descriptor()
}

func (WorkspaceArtifactOperation) Type() protoreflect.EnumType {
	return &file_proto_iop_runtime_proto_enumTypes[6]
}

func (x WorkspaceArtifactOperation) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use WorkspaceArtifactOperation.Descriptor instead.
func (WorkspaceArtifactOperation) EnumDescriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{6}
}

type NodeConfigRefreshStatus int32

const (
	NodeConfigRefreshStatus_NODE_CONFIG_REFRESH_STATUS_UNSPECIFIED      NodeConfigRefreshStatus = 0
	NodeConfigRefreshStatus_NODE_CONFIG_REFRESH_STATUS_APPLIED          NodeConfigRefreshStatus = 1
	NodeConfigRefreshStatus_NODE_CONFIG_REFRESH_STATUS_RESTART_REQUIRED NodeConfigRefreshStatus = 2
	NodeConfigRefreshStatus_NODE_CONFIG_REFRESH_STATUS_FAILED           NodeConfigRefreshStatus = 3
	NodeConfigRefreshStatus_NODE_CONFIG_REFRESH_STATUS_SKIPPED          NodeConfigRefreshStatus = 4
)

// Enum value maps for NodeConfigRefreshStatus.
var (
	NodeConfigRefreshStatus_name = map[int32]string{
		0: "NODE_CONFIG_REFRESH_STATUS_UNSPECIFIED",
		1: "NODE_CONFIG_REFRESH_STATUS_APPLIED",
		2: "NODE_CONFIG_REFRESH_STATUS_RESTART_REQUIRED",
		3: "NODE_CONFIG_REFRESH_STATUS_FAILED",
		4: "NODE_CONFIG_REFRESH_STATUS_SKIPPED",
	}
	NodeConfigRefreshStatus_value = map[string]int32{
		"NODE_CONFIG_REFRESH_STATUS_UNSPECIFIED":      0,
		"NODE_CONFIG_REFRESH_STATUS_APPLIED":          1,
		"NODE_CONFIG_REFRESH_STATUS_RESTART_REQUIRED": 2,
		"NODE_CONFIG_REFRESH_STATUS_FAILED":           3,
		"NODE_CONFIG_REFRESH_STATUS_SKIPPED":          4,
	}
)

func (x NodeConfigRefreshStatus) Enum() *NodeConfigRefreshStatus {
	p := new(NodeConfigRefreshStatus)
	*p = x
	return p
}

func (x NodeConfigRefreshStatus) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (NodeConfigRefreshStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_proto_iop_runtime_proto_enumTypes[7].Descriptor()
}

func (NodeConfigRefreshStatus) Type() protoreflect.EnumType {
	return &file_proto_iop_runtime_proto_enumTypes[7]
}

func (x NodeConfigRefreshStatus) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use NodeConfigRefreshStatus.Descriptor instead.
func (NodeConfigRefreshStatus) EnumDescriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{7}
}

// RunRequest initiates an adapter execution on a node.
type RunRequest struct {
	state      protoimpl.MessageState `protogen:"open.v1"`
	RunId      string                 `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
	Adapter    string                 `protobuf:"bytes,2,opt,name=adapter,proto3" json:"adapter,omitempty"`
	Target     string                 `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
	Policy     *structpb.Struct       `protobuf:"bytes,5,opt,name=policy,proto3" json:"policy,omitempty"`
	Input      *structpb.Struct       `protobuf:"bytes,6,opt,name=input,proto3" json:"input,omitempty"`
	TimeoutSec int32                  `protobuf:"varint,7,opt,name=timeout_sec,json=timeoutSec,proto3" json:"timeout_sec,omitempty"`
	Metadata   map[string]string      `protobuf:"bytes,8,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	SessionId  string                 `protobuf:"bytes,9,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	Background bool                   `protobuf:"varint,11,opt,name=background,proto3" json:"background,omitempty"`
	// response_stall_timeout_ms is the selected provider's response-stall
	// timeout in milliseconds. Zero means the Node applies the documented
	// default (300000). Negative or overflow values are rejected at the Node
	// boundary before router/provider invocation.
	ResponseStallTimeoutMs int64 `protobuf:"varint,12,opt,name=response_stall_timeout_ms,json=responseStallTimeoutMs,proto3" json:"response_stall_timeout_ms,omitempty"`
	unknownFields          protoimpl.UnknownFields
	sizeCache              protoimpl.SizeCache
}

func (x *RunRequest) Reset() {
	*x = RunRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RunRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RunRequest) ProtoMessage() {}

func (x *RunRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[0]
	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 RunRequest.ProtoReflect.Descriptor instead.
func (*RunRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{0}
}

func (x *RunRequest) GetRunId() string {
	if x != nil {
		return x.RunId
	}
	return ""
}

func (x *RunRequest) GetAdapter() string {
	if x != nil {
		return x.Adapter
	}
	return ""
}

func (x *RunRequest) GetTarget() string {
	if x != nil {
		return x.Target
	}
	return ""
}

func (x *RunRequest) GetPolicy() *structpb.Struct {
	if x != nil {
		return x.Policy
	}
	return nil
}

func (x *RunRequest) GetInput() *structpb.Struct {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *RunRequest) GetTimeoutSec() int32 {
	if x != nil {
		return x.TimeoutSec
	}
	return 0
}

func (x *RunRequest) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *RunRequest) GetSessionId() string {
	if x != nil {
		return x.SessionId
	}
	return ""
}

func (x *RunRequest) GetBackground() bool {
	if x != nil {
		return x.Background
	}
	return false
}

func (x *RunRequest) GetResponseStallTimeoutMs() int64 {
	if x != nil {
		return x.ResponseStallTimeoutMs
	}
	return 0
}

// RunEvent is a streaming execution event.
type RunEvent struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RunId         string                 `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
	Type          string                 `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` // start | delta | complete | error | cancelled
	Delta         string                 `protobuf:"bytes,3,opt,name=delta,proto3" json:"delta,omitempty"`
	Message       string                 `protobuf:"bytes,4,opt,name=message,proto3" json:"message,omitempty"`
	Error         string                 `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
	Usage         *Usage                 `protobuf:"bytes,6,opt,name=usage,proto3" json:"usage,omitempty"`
	Metadata      map[string]string      `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Timestamp     int64                  `protobuf:"varint,8,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // unix nano
	SessionId     string                 `protobuf:"bytes,9,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	Background    bool                   `protobuf:"varint,10,opt,name=background,proto3" json:"background,omitempty"`
	NodeId        string                 `protobuf:"bytes,11,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
	NodeAlias     string                 `protobuf:"bytes,12,opt,name=node_alias,json=nodeAlias,proto3" json:"node_alias,omitempty"`
	Failure       *ExecutionFailure      `protobuf:"bytes,13,opt,name=failure,proto3" json:"failure,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RunEvent) Reset() {
	*x = RunEvent{}
	mi := &file_proto_iop_runtime_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RunEvent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RunEvent) ProtoMessage() {}

func (x *RunEvent) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[1]
	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 RunEvent.ProtoReflect.Descriptor instead.
func (*RunEvent) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{1}
}

func (x *RunEvent) GetRunId() string {
	if x != nil {
		return x.RunId
	}
	return ""
}

func (x *RunEvent) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *RunEvent) GetDelta() string {
	if x != nil {
		return x.Delta
	}
	return ""
}

func (x *RunEvent) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *RunEvent) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *RunEvent) GetUsage() *Usage {
	if x != nil {
		return x.Usage
	}
	return nil
}

func (x *RunEvent) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *RunEvent) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

func (x *RunEvent) GetSessionId() string {
	if x != nil {
		return x.SessionId
	}
	return ""
}

func (x *RunEvent) GetBackground() bool {
	if x != nil {
		return x.Background
	}
	return false
}

func (x *RunEvent) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *RunEvent) GetNodeAlias() string {
	if x != nil {
		return x.NodeAlias
	}
	return ""
}

func (x *RunEvent) GetFailure() *ExecutionFailure {
	if x != nil {
		return x.Failure
	}
	return nil
}

// ProviderTunnelRequest asks a node to open a provider HTTP request and relay
// the raw provider response over ProviderTunnelFrame messages on the existing
// Edge-Node socket. It is separate from RunRequest, which remains the
// normalized adapter execution path.
type ProviderTunnelRequest struct {
	state      protoimpl.MessageState `protogen:"open.v1"`
	RunId      string                 `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
	TunnelId   string                 `protobuf:"bytes,2,opt,name=tunnel_id,json=tunnelId,proto3" json:"tunnel_id,omitempty"`
	Adapter    string                 `protobuf:"bytes,3,opt,name=adapter,proto3" json:"adapter,omitempty"`
	Target     string                 `protobuf:"bytes,4,opt,name=target,proto3" json:"target,omitempty"`
	Method     string                 `protobuf:"bytes,5,opt,name=method,proto3" json:"method,omitempty"`
	Path       string                 `protobuf:"bytes,6,opt,name=path,proto3" json:"path,omitempty"`
	Headers    map[string]string      `protobuf:"bytes,7,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Body       []byte                 `protobuf:"bytes,8,opt,name=body,proto3" json:"body,omitempty"`
	Stream     bool                   `protobuf:"varint,9,opt,name=stream,proto3" json:"stream,omitempty"`
	TimeoutSec int32                  `protobuf:"varint,10,opt,name=timeout_sec,json=timeoutSec,proto3" json:"timeout_sec,omitempty"`
	Metadata   map[string]string      `protobuf:"bytes,11,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	SessionId  string                 `protobuf:"bytes,12,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	// operation is the protocol operation id (e.g. "chat_completions",
	// "messages", "models"). When set, the Node adapter resolves the request URL
	// from the concrete profile's operation path. When empty, the legacy Path
	// field is used as a mixed-version fallback.
	Operation string `protobuf:"bytes,13,opt,name=operation,proto3" json:"operation,omitempty"`
	// credential_lease is a signed, recipient-sealed credential envelope. It is
	// deliberately separate from headers/metadata so protobuf debug output and
	// generic forwarding paths cannot expose plaintext provider credentials.
	CredentialLease *SignedCredentialLease `protobuf:"bytes,14,opt,name=credential_lease,json=credentialLease,proto3" json:"credential_lease,omitempty"`
	// credential_binding is the independently resolved Edge dispatch binding
	// the Node compares byte-for-byte with the signed lease before consumption.
	CredentialBinding *CredentialLeaseBinding `protobuf:"bytes,15,opt,name=credential_binding,json=credentialBinding,proto3" json:"credential_binding,omitempty"`
	// response_stall_timeout_ms is the selected provider's response-stall
	// timeout in milliseconds. Zero means the Node applies the documented
	// default (300000). Negative or overflow values are rejected at the Node
	// boundary before router/provider invocation.
	ResponseStallTimeoutMs int64 `protobuf:"varint,16,opt,name=response_stall_timeout_ms,json=responseStallTimeoutMs,proto3" json:"response_stall_timeout_ms,omitempty"`
	unknownFields          protoimpl.UnknownFields
	sizeCache              protoimpl.SizeCache
}

func (x *ProviderTunnelRequest) Reset() {
	*x = ProviderTunnelRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProviderTunnelRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProviderTunnelRequest) ProtoMessage() {}

func (x *ProviderTunnelRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[2]
	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 ProviderTunnelRequest.ProtoReflect.Descriptor instead.
func (*ProviderTunnelRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{2}
}

func (x *ProviderTunnelRequest) GetRunId() string {
	if x != nil {
		return x.RunId
	}
	return ""
}

func (x *ProviderTunnelRequest) GetTunnelId() string {
	if x != nil {
		return x.TunnelId
	}
	return ""
}

func (x *ProviderTunnelRequest) GetAdapter() string {
	if x != nil {
		return x.Adapter
	}
	return ""
}

func (x *ProviderTunnelRequest) GetTarget() string {
	if x != nil {
		return x.Target
	}
	return ""
}

func (x *ProviderTunnelRequest) GetMethod() string {
	if x != nil {
		return x.Method
	}
	return ""
}

func (x *ProviderTunnelRequest) GetPath() string {
	if x != nil {
		return x.Path
	}
	return ""
}

func (x *ProviderTunnelRequest) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *ProviderTunnelRequest) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

func (x *ProviderTunnelRequest) GetStream() bool {
	if x != nil {
		return x.Stream
	}
	return false
}

func (x *ProviderTunnelRequest) GetTimeoutSec() int32 {
	if x != nil {
		return x.TimeoutSec
	}
	return 0
}

func (x *ProviderTunnelRequest) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *ProviderTunnelRequest) GetSessionId() string {
	if x != nil {
		return x.SessionId
	}
	return ""
}

func (x *ProviderTunnelRequest) GetOperation() string {
	if x != nil {
		return x.Operation
	}
	return ""
}

func (x *ProviderTunnelRequest) GetCredentialLease() *SignedCredentialLease {
	if x != nil {
		return x.CredentialLease
	}
	return nil
}

func (x *ProviderTunnelRequest) GetCredentialBinding() *CredentialLeaseBinding {
	if x != nil {
		return x.CredentialBinding
	}
	return nil
}

func (x *ProviderTunnelRequest) GetResponseStallTimeoutMs() int64 {
	if x != nil {
		return x.ResponseStallTimeoutMs
	}
	return 0
}

type CredentialLeaseScope struct {
	state                protoimpl.MessageState `protogen:"open.v1"`
	LeaseId              string                 `protobuf:"bytes,1,opt,name=lease_id,json=leaseId,proto3" json:"lease_id,omitempty"`
	PrincipalRef         string                 `protobuf:"bytes,2,opt,name=principal_ref,json=principalRef,proto3" json:"principal_ref,omitempty"`
	CredentialSlotRef    string                 `protobuf:"bytes,3,opt,name=credential_slot_ref,json=credentialSlotRef,proto3" json:"credential_slot_ref,omitempty"`
	RouteId              string                 `protobuf:"bytes,4,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"`
	ProfileId            string                 `protobuf:"bytes,5,opt,name=profile_id,json=profileId,proto3" json:"profile_id,omitempty"`
	UpstreamTarget       string                 `protobuf:"bytes,6,opt,name=upstream_target,json=upstreamTarget,proto3" json:"upstream_target,omitempty"`
	NodeId               string                 `protobuf:"bytes,7,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
	RecipientKeyId       string                 `protobuf:"bytes,8,opt,name=recipient_key_id,json=recipientKeyId,proto3" json:"recipient_key_id,omitempty"`
	HeaderName           string                 `protobuf:"bytes,9,opt,name=header_name,json=headerName,proto3" json:"header_name,omitempty"`
	Scheme               string                 `protobuf:"bytes,10,opt,name=scheme,proto3" json:"scheme,omitempty"`
	CredentialRevision   uint64                 `protobuf:"varint,11,opt,name=credential_revision,json=credentialRevision,proto3" json:"credential_revision,omitempty"`
	RouteRevision        uint64                 `protobuf:"varint,12,opt,name=route_revision,json=routeRevision,proto3" json:"route_revision,omitempty"`
	ProjectionGeneration uint64                 `protobuf:"varint,13,opt,name=projection_generation,json=projectionGeneration,proto3" json:"projection_generation,omitempty"`
	IssuedAtUnixNano     int64                  `protobuf:"varint,14,opt,name=issued_at_unix_nano,json=issuedAtUnixNano,proto3" json:"issued_at_unix_nano,omitempty"`
	ExpiresAtUnixNano    int64                  `protobuf:"varint,15,opt,name=expires_at_unix_nano,json=expiresAtUnixNano,proto3" json:"expires_at_unix_nano,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *CredentialLeaseScope) Reset() {
	*x = CredentialLeaseScope{}
	mi := &file_proto_iop_runtime_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CredentialLeaseScope) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CredentialLeaseScope) ProtoMessage() {}

func (x *CredentialLeaseScope) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[3]
	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 CredentialLeaseScope.ProtoReflect.Descriptor instead.
func (*CredentialLeaseScope) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{3}
}

func (x *CredentialLeaseScope) GetLeaseId() string {
	if x != nil {
		return x.LeaseId
	}
	return ""
}

func (x *CredentialLeaseScope) GetPrincipalRef() string {
	if x != nil {
		return x.PrincipalRef
	}
	return ""
}

func (x *CredentialLeaseScope) GetCredentialSlotRef() string {
	if x != nil {
		return x.CredentialSlotRef
	}
	return ""
}

func (x *CredentialLeaseScope) GetRouteId() string {
	if x != nil {
		return x.RouteId
	}
	return ""
}

func (x *CredentialLeaseScope) GetProfileId() string {
	if x != nil {
		return x.ProfileId
	}
	return ""
}

func (x *CredentialLeaseScope) GetUpstreamTarget() string {
	if x != nil {
		return x.UpstreamTarget
	}
	return ""
}

func (x *CredentialLeaseScope) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *CredentialLeaseScope) GetRecipientKeyId() string {
	if x != nil {
		return x.RecipientKeyId
	}
	return ""
}

func (x *CredentialLeaseScope) GetHeaderName() string {
	if x != nil {
		return x.HeaderName
	}
	return ""
}

func (x *CredentialLeaseScope) GetScheme() string {
	if x != nil {
		return x.Scheme
	}
	return ""
}

func (x *CredentialLeaseScope) GetCredentialRevision() uint64 {
	if x != nil {
		return x.CredentialRevision
	}
	return 0
}

func (x *CredentialLeaseScope) GetRouteRevision() uint64 {
	if x != nil {
		return x.RouteRevision
	}
	return 0
}

func (x *CredentialLeaseScope) GetProjectionGeneration() uint64 {
	if x != nil {
		return x.ProjectionGeneration
	}
	return 0
}

func (x *CredentialLeaseScope) GetIssuedAtUnixNano() int64 {
	if x != nil {
		return x.IssuedAtUnixNano
	}
	return 0
}

func (x *CredentialLeaseScope) GetExpiresAtUnixNano() int64 {
	if x != nil {
		return x.ExpiresAtUnixNano
	}
	return 0
}

type SignedCredentialLease struct {
	state              protoimpl.MessageState `protogen:"open.v1"`
	Version            uint32                 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
	IssuerKeyId        string                 `protobuf:"bytes,2,opt,name=issuer_key_id,json=issuerKeyId,proto3" json:"issuer_key_id,omitempty"`
	Scope              *CredentialLeaseScope  `protobuf:"bytes,3,opt,name=scope,proto3" json:"scope,omitempty"`
	EphemeralPublicKey []byte                 `protobuf:"bytes,4,opt,name=ephemeral_public_key,json=ephemeralPublicKey,proto3" json:"ephemeral_public_key,omitempty"`
	Nonce              []byte                 `protobuf:"bytes,5,opt,name=nonce,proto3" json:"nonce,omitempty"`
	Ciphertext         []byte                 `protobuf:"bytes,6,opt,name=ciphertext,proto3" json:"ciphertext,omitempty"`
	Signature          []byte                 `protobuf:"bytes,7,opt,name=signature,proto3" json:"signature,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *SignedCredentialLease) Reset() {
	*x = SignedCredentialLease{}
	mi := &file_proto_iop_runtime_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SignedCredentialLease) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SignedCredentialLease) ProtoMessage() {}

func (x *SignedCredentialLease) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[4]
	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 SignedCredentialLease.ProtoReflect.Descriptor instead.
func (*SignedCredentialLease) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{4}
}

func (x *SignedCredentialLease) GetVersion() uint32 {
	if x != nil {
		return x.Version
	}
	return 0
}

func (x *SignedCredentialLease) GetIssuerKeyId() string {
	if x != nil {
		return x.IssuerKeyId
	}
	return ""
}

func (x *SignedCredentialLease) GetScope() *CredentialLeaseScope {
	if x != nil {
		return x.Scope
	}
	return nil
}

func (x *SignedCredentialLease) GetEphemeralPublicKey() []byte {
	if x != nil {
		return x.EphemeralPublicKey
	}
	return nil
}

func (x *SignedCredentialLease) GetNonce() []byte {
	if x != nil {
		return x.Nonce
	}
	return nil
}

func (x *SignedCredentialLease) GetCiphertext() []byte {
	if x != nil {
		return x.Ciphertext
	}
	return nil
}

func (x *SignedCredentialLease) GetSignature() []byte {
	if x != nil {
		return x.Signature
	}
	return nil
}

type CredentialLeaseBinding struct {
	state                protoimpl.MessageState `protogen:"open.v1"`
	PrincipalRef         string                 `protobuf:"bytes,1,opt,name=principal_ref,json=principalRef,proto3" json:"principal_ref,omitempty"`
	CredentialSlotRef    string                 `protobuf:"bytes,2,opt,name=credential_slot_ref,json=credentialSlotRef,proto3" json:"credential_slot_ref,omitempty"`
	RouteId              string                 `protobuf:"bytes,3,opt,name=route_id,json=routeId,proto3" json:"route_id,omitempty"`
	ProfileId            string                 `protobuf:"bytes,4,opt,name=profile_id,json=profileId,proto3" json:"profile_id,omitempty"`
	UpstreamTarget       string                 `protobuf:"bytes,5,opt,name=upstream_target,json=upstreamTarget,proto3" json:"upstream_target,omitempty"`
	NodeId               string                 `protobuf:"bytes,6,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
	RecipientKeyId       string                 `protobuf:"bytes,7,opt,name=recipient_key_id,json=recipientKeyId,proto3" json:"recipient_key_id,omitempty"`
	CredentialRevision   uint64                 `protobuf:"varint,8,opt,name=credential_revision,json=credentialRevision,proto3" json:"credential_revision,omitempty"`
	RouteRevision        uint64                 `protobuf:"varint,9,opt,name=route_revision,json=routeRevision,proto3" json:"route_revision,omitempty"`
	ProjectionGeneration uint64                 `protobuf:"varint,10,opt,name=projection_generation,json=projectionGeneration,proto3" json:"projection_generation,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *CredentialLeaseBinding) Reset() {
	*x = CredentialLeaseBinding{}
	mi := &file_proto_iop_runtime_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CredentialLeaseBinding) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CredentialLeaseBinding) ProtoMessage() {}

func (x *CredentialLeaseBinding) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[5]
	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 CredentialLeaseBinding.ProtoReflect.Descriptor instead.
func (*CredentialLeaseBinding) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{5}
}

func (x *CredentialLeaseBinding) GetPrincipalRef() string {
	if x != nil {
		return x.PrincipalRef
	}
	return ""
}

func (x *CredentialLeaseBinding) GetCredentialSlotRef() string {
	if x != nil {
		return x.CredentialSlotRef
	}
	return ""
}

func (x *CredentialLeaseBinding) GetRouteId() string {
	if x != nil {
		return x.RouteId
	}
	return ""
}

func (x *CredentialLeaseBinding) GetProfileId() string {
	if x != nil {
		return x.ProfileId
	}
	return ""
}

func (x *CredentialLeaseBinding) GetUpstreamTarget() string {
	if x != nil {
		return x.UpstreamTarget
	}
	return ""
}

func (x *CredentialLeaseBinding) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *CredentialLeaseBinding) GetRecipientKeyId() string {
	if x != nil {
		return x.RecipientKeyId
	}
	return ""
}

func (x *CredentialLeaseBinding) GetCredentialRevision() uint64 {
	if x != nil {
		return x.CredentialRevision
	}
	return 0
}

func (x *CredentialLeaseBinding) GetRouteRevision() uint64 {
	if x != nil {
		return x.RouteRevision
	}
	return 0
}

func (x *CredentialLeaseBinding) GetProjectionGeneration() uint64 {
	if x != nil {
		return x.ProjectionGeneration
	}
	return 0
}

// AcquireLeaseRequest is sent only over the authenticated Control Plane-Edge
// channel after an exact Node candidate is chosen. It is a runtime delivery
// operation, not a credential-management or bootstrap API.
type AcquireLeaseRequest struct {
	state              protoimpl.MessageState  `protogen:"open.v1"`
	EdgeId             string                  `protobuf:"bytes,1,opt,name=edge_id,json=edgeId,proto3" json:"edge_id,omitempty"`
	Binding            *CredentialLeaseBinding `protobuf:"bytes,2,opt,name=binding,proto3" json:"binding,omitempty"`
	RecipientPublicKey []byte                  `protobuf:"bytes,3,opt,name=recipient_public_key,json=recipientPublicKey,proto3" json:"recipient_public_key,omitempty"`
	unknownFields      protoimpl.UnknownFields
	sizeCache          protoimpl.SizeCache
}

func (x *AcquireLeaseRequest) Reset() {
	*x = AcquireLeaseRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AcquireLeaseRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AcquireLeaseRequest) ProtoMessage() {}

func (x *AcquireLeaseRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[6]
	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 AcquireLeaseRequest.ProtoReflect.Descriptor instead.
func (*AcquireLeaseRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{6}
}

func (x *AcquireLeaseRequest) GetEdgeId() string {
	if x != nil {
		return x.EdgeId
	}
	return ""
}

func (x *AcquireLeaseRequest) GetBinding() *CredentialLeaseBinding {
	if x != nil {
		return x.Binding
	}
	return nil
}

func (x *AcquireLeaseRequest) GetRecipientPublicKey() []byte {
	if x != nil {
		return x.RecipientPublicKey
	}
	return nil
}

type AcquireLeaseResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Lease         *SignedCredentialLease `protobuf:"bytes,1,opt,name=lease,proto3" json:"lease,omitempty"`
	Error         string                 `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AcquireLeaseResponse) Reset() {
	*x = AcquireLeaseResponse{}
	mi := &file_proto_iop_runtime_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AcquireLeaseResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AcquireLeaseResponse) ProtoMessage() {}

func (x *AcquireLeaseResponse) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[7]
	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 AcquireLeaseResponse.ProtoReflect.Descriptor instead.
func (*AcquireLeaseResponse) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{7}
}

func (x *AcquireLeaseResponse) GetLease() *SignedCredentialLease {
	if x != nil {
		return x.Lease
	}
	return nil
}

func (x *AcquireLeaseResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

// ProviderTunnelFrame carries ordered raw provider response data back to Edge.
// Body bytes are the passthrough source of truth and must not be routed through
// RunEvent.delta or the lossy event bus fanout.
type ProviderTunnelFrame struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	RunId         string                  `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
	TunnelId      string                  `protobuf:"bytes,2,opt,name=tunnel_id,json=tunnelId,proto3" json:"tunnel_id,omitempty"`
	Sequence      int64                   `protobuf:"varint,3,opt,name=sequence,proto3" json:"sequence,omitempty"`
	Kind          ProviderTunnelFrameKind `protobuf:"varint,4,opt,name=kind,proto3,enum=iop.ProviderTunnelFrameKind" json:"kind,omitempty"`
	StatusCode    int32                   `protobuf:"varint,5,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"`
	Headers       map[string]string       `protobuf:"bytes,6,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Body          []byte                  `protobuf:"bytes,7,opt,name=body,proto3" json:"body,omitempty"`
	End           bool                    `protobuf:"varint,8,opt,name=end,proto3" json:"end,omitempty"`
	Error         string                  `protobuf:"bytes,9,opt,name=error,proto3" json:"error,omitempty"`
	Usage         *Usage                  `protobuf:"bytes,10,opt,name=usage,proto3" json:"usage,omitempty"`
	Metadata      map[string]string       `protobuf:"bytes,11,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Timestamp     int64                   `protobuf:"varint,12,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // unix nano
	NodeId        string                  `protobuf:"bytes,13,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
	NodeAlias     string                  `protobuf:"bytes,14,opt,name=node_alias,json=nodeAlias,proto3" json:"node_alias,omitempty"`
	Failure       *ExecutionFailure       `protobuf:"bytes,15,opt,name=failure,proto3" json:"failure,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ProviderTunnelFrame) Reset() {
	*x = ProviderTunnelFrame{}
	mi := &file_proto_iop_runtime_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProviderTunnelFrame) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProviderTunnelFrame) ProtoMessage() {}

func (x *ProviderTunnelFrame) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[8]
	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 ProviderTunnelFrame.ProtoReflect.Descriptor instead.
func (*ProviderTunnelFrame) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{8}
}

func (x *ProviderTunnelFrame) GetRunId() string {
	if x != nil {
		return x.RunId
	}
	return ""
}

func (x *ProviderTunnelFrame) GetTunnelId() string {
	if x != nil {
		return x.TunnelId
	}
	return ""
}

func (x *ProviderTunnelFrame) GetSequence() int64 {
	if x != nil {
		return x.Sequence
	}
	return 0
}

func (x *ProviderTunnelFrame) GetKind() ProviderTunnelFrameKind {
	if x != nil {
		return x.Kind
	}
	return ProviderTunnelFrameKind_PROVIDER_TUNNEL_FRAME_KIND_UNSPECIFIED
}

func (x *ProviderTunnelFrame) GetStatusCode() int32 {
	if x != nil {
		return x.StatusCode
	}
	return 0
}

func (x *ProviderTunnelFrame) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *ProviderTunnelFrame) GetBody() []byte {
	if x != nil {
		return x.Body
	}
	return nil
}

func (x *ProviderTunnelFrame) GetEnd() bool {
	if x != nil {
		return x.End
	}
	return false
}

func (x *ProviderTunnelFrame) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *ProviderTunnelFrame) GetUsage() *Usage {
	if x != nil {
		return x.Usage
	}
	return nil
}

func (x *ProviderTunnelFrame) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *ProviderTunnelFrame) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

func (x *ProviderTunnelFrame) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *ProviderTunnelFrame) GetNodeAlias() string {
	if x != nil {
		return x.NodeAlias
	}
	return ""
}

func (x *ProviderTunnelFrame) GetFailure() *ExecutionFailure {
	if x != nil {
		return x.Failure
	}
	return nil
}

// EdgeNodeEvent is a general edge-node lifecycle/control event envelope.
// It is separate from RunEvent, which is reserved for adapter execution streams.
type EdgeNodeEvent struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	EventId       string                 `protobuf:"bytes,1,opt,name=event_id,json=eventId,proto3" json:"event_id,omitempty"`
	Type          string                 `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"`     // node.connected | node.disconnected | edge.disconnected | ...
	Source        string                 `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"` // edge | node
	NodeId        string                 `protobuf:"bytes,4,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
	Alias         string                 `protobuf:"bytes,5,opt,name=alias,proto3" json:"alias,omitempty"`
	Reason        string                 `protobuf:"bytes,6,opt,name=reason,proto3" json:"reason,omitempty"`
	Metadata      map[string]string      `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Timestamp     int64                  `protobuf:"varint,8,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // unix nano
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *EdgeNodeEvent) Reset() {
	*x = EdgeNodeEvent{}
	mi := &file_proto_iop_runtime_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *EdgeNodeEvent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*EdgeNodeEvent) ProtoMessage() {}

func (x *EdgeNodeEvent) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[9]
	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 EdgeNodeEvent.ProtoReflect.Descriptor instead.
func (*EdgeNodeEvent) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{9}
}

func (x *EdgeNodeEvent) GetEventId() string {
	if x != nil {
		return x.EventId
	}
	return ""
}

func (x *EdgeNodeEvent) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *EdgeNodeEvent) GetSource() string {
	if x != nil {
		return x.Source
	}
	return ""
}

func (x *EdgeNodeEvent) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *EdgeNodeEvent) GetAlias() string {
	if x != nil {
		return x.Alias
	}
	return ""
}

func (x *EdgeNodeEvent) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *EdgeNodeEvent) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

func (x *EdgeNodeEvent) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

// ExecutionFailure is the typed failure payload carried by execution envelopes.
type ExecutionFailure struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          string                 `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	Retryable     bool                   `protobuf:"varint,3,opt,name=retryable,proto3" json:"retryable,omitempty"`
	Metadata      map[string]string      `protobuf:"bytes,4,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ExecutionFailure) Reset() {
	*x = ExecutionFailure{}
	mi := &file_proto_iop_runtime_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ExecutionFailure) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ExecutionFailure) ProtoMessage() {}

func (x *ExecutionFailure) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[10]
	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 ExecutionFailure.ProtoReflect.Descriptor instead.
func (*ExecutionFailure) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{10}
}

func (x *ExecutionFailure) GetCode() string {
	if x != nil {
		return x.Code
	}
	return ""
}

func (x *ExecutionFailure) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

func (x *ExecutionFailure) GetRetryable() bool {
	if x != nil {
		return x.Retryable
	}
	return false
}

func (x *ExecutionFailure) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

type Usage struct {
	state        protoimpl.MessageState `protogen:"open.v1"`
	InputTokens  int32                  `protobuf:"varint,1,opt,name=input_tokens,json=inputTokens,proto3" json:"input_tokens,omitempty"`
	OutputTokens int32                  `protobuf:"varint,2,opt,name=output_tokens,json=outputTokens,proto3" json:"output_tokens,omitempty"`
	// reasoning_tokens and cached_input_tokens are populated only when the
	// provider reports them. A zero value means "not reported"; downstream metric
	// emit never estimates reasoning tokens from observed reasoning text.
	ReasoningTokens   int32 `protobuf:"varint,3,opt,name=reasoning_tokens,json=reasoningTokens,proto3" json:"reasoning_tokens,omitempty"`
	CachedInputTokens int32 `protobuf:"varint,4,opt,name=cached_input_tokens,json=cachedInputTokens,proto3" json:"cached_input_tokens,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *Usage) Reset() {
	*x = Usage{}
	mi := &file_proto_iop_runtime_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Usage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Usage) ProtoMessage() {}

func (x *Usage) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[11]
	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 Usage.ProtoReflect.Descriptor instead.
func (*Usage) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{11}
}

func (x *Usage) GetInputTokens() int32 {
	if x != nil {
		return x.InputTokens
	}
	return 0
}

func (x *Usage) GetOutputTokens() int32 {
	if x != nil {
		return x.OutputTokens
	}
	return 0
}

func (x *Usage) GetReasoningTokens() int32 {
	if x != nil {
		return x.ReasoningTokens
	}
	return 0
}

func (x *Usage) GetCachedInputTokens() int32 {
	if x != nil {
		return x.CachedInputTokens
	}
	return 0
}

// Heartbeat is sent by both sides to keep the connection alive.
type Heartbeat struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Timestamp     int64                  `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Heartbeat) Reset() {
	*x = Heartbeat{}
	mi := &file_proto_iop_runtime_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Heartbeat) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Heartbeat) ProtoMessage() {}

func (x *Heartbeat) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[12]
	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 Heartbeat.ProtoReflect.Descriptor instead.
func (*Heartbeat) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{12}
}

func (x *Heartbeat) GetTimestamp() int64 {
	if x != nil {
		return x.Timestamp
	}
	return 0
}

// CancelRequest asks the node to cancel a running execution.
type CancelRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RunId         string                 `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CancelRequest) Reset() {
	*x = CancelRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *CancelRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*CancelRequest) ProtoMessage() {}

func (x *CancelRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[13]
	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 CancelRequest.ProtoReflect.Descriptor instead.
func (*CancelRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{13}
}

func (x *CancelRequest) GetRunId() string {
	if x != nil {
		return x.RunId
	}
	return ""
}

type NodeCommandRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Type          NodeCommandType        `protobuf:"varint,2,opt,name=type,proto3,enum=iop.NodeCommandType" json:"type,omitempty"`
	Adapter       string                 `protobuf:"bytes,3,opt,name=adapter,proto3" json:"adapter,omitempty"`
	Target        string                 `protobuf:"bytes,4,opt,name=target,proto3" json:"target,omitempty"`
	SessionId     string                 `protobuf:"bytes,5,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	TimeoutSec    int32                  `protobuf:"varint,6,opt,name=timeout_sec,json=timeoutSec,proto3" json:"timeout_sec,omitempty"`
	Metadata      map[string]string      `protobuf:"bytes,7,rep,name=metadata,proto3" json:"metadata,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NodeCommandRequest) Reset() {
	*x = NodeCommandRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NodeCommandRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NodeCommandRequest) ProtoMessage() {}

func (x *NodeCommandRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[14]
	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 NodeCommandRequest.ProtoReflect.Descriptor instead.
func (*NodeCommandRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{14}
}

func (x *NodeCommandRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *NodeCommandRequest) GetType() NodeCommandType {
	if x != nil {
		return x.Type
	}
	return NodeCommandType_NODE_COMMAND_TYPE_UNSPECIFIED
}

func (x *NodeCommandRequest) GetAdapter() string {
	if x != nil {
		return x.Adapter
	}
	return ""
}

func (x *NodeCommandRequest) GetTarget() string {
	if x != nil {
		return x.Target
	}
	return ""
}

func (x *NodeCommandRequest) GetSessionId() string {
	if x != nil {
		return x.SessionId
	}
	return ""
}

func (x *NodeCommandRequest) GetTimeoutSec() int32 {
	if x != nil {
		return x.TimeoutSec
	}
	return 0
}

func (x *NodeCommandRequest) GetMetadata() map[string]string {
	if x != nil {
		return x.Metadata
	}
	return nil
}

type NodeCommandResponse struct {
	state     protoimpl.MessageState `protogen:"open.v1"`
	RequestId string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Type      NodeCommandType        `protobuf:"varint,2,opt,name=type,proto3,enum=iop.NodeCommandType" json:"type,omitempty"`
	Adapter   string                 `protobuf:"bytes,3,opt,name=adapter,proto3" json:"adapter,omitempty"`
	Target    string                 `protobuf:"bytes,4,opt,name=target,proto3" json:"target,omitempty"`
	SessionId string                 `protobuf:"bytes,5,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"`
	Error     string                 `protobuf:"bytes,7,opt,name=error,proto3" json:"error,omitempty"`
	// result carries free-form key/value data for provider-only commands.
	Result            map[string]string   `protobuf:"bytes,8,rep,name=result,proto3" json:"result,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	ProviderSnapshots []*ProviderSnapshot `protobuf:"bytes,9,rep,name=provider_snapshots,json=providerSnapshots,proto3" json:"provider_snapshots,omitempty"`
	unknownFields     protoimpl.UnknownFields
	sizeCache         protoimpl.SizeCache
}

func (x *NodeCommandResponse) Reset() {
	*x = NodeCommandResponse{}
	mi := &file_proto_iop_runtime_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NodeCommandResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NodeCommandResponse) ProtoMessage() {}

func (x *NodeCommandResponse) 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 NodeCommandResponse.ProtoReflect.Descriptor instead.
func (*NodeCommandResponse) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{15}
}

func (x *NodeCommandResponse) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *NodeCommandResponse) GetType() NodeCommandType {
	if x != nil {
		return x.Type
	}
	return NodeCommandType_NODE_COMMAND_TYPE_UNSPECIFIED
}

func (x *NodeCommandResponse) GetAdapter() string {
	if x != nil {
		return x.Adapter
	}
	return ""
}

func (x *NodeCommandResponse) GetTarget() string {
	if x != nil {
		return x.Target
	}
	return ""
}

func (x *NodeCommandResponse) GetSessionId() string {
	if x != nil {
		return x.SessionId
	}
	return ""
}

func (x *NodeCommandResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *NodeCommandResponse) GetResult() map[string]string {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *NodeCommandResponse) GetProviderSnapshots() []*ProviderSnapshot {
	if x != nil {
		return x.ProviderSnapshots
	}
	return nil
}

// ProviderSnapshot is the stable wire name for a node provider status snapshot.
type ProviderSnapshot struct {
	state    protoimpl.MessageState `protogen:"open.v1"`
	Adapter  string                 `protobuf:"bytes,1,opt,name=adapter,proto3" json:"adapter,omitempty"`
	Status   string                 `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` // unknown|available|unavailable
	Capacity int32                  `protobuf:"varint,3,opt,name=capacity,proto3" json:"capacity,omitempty"`
	InFlight int32                  `protobuf:"varint,4,opt,name=in_flight,json=inFlight,proto3" json:"in_flight,omitempty"`
	Queued   int32                  `protobuf:"varint,5,opt,name=queued,proto3" json:"queued,omitempty"`
	// Provider catalog fields (MVP).
	// id uniquely identifies this provider within its node.
	Id string `protobuf:"bytes,6,opt,name=id,proto3" json:"id,omitempty"`
	// type is the runtime type (e.g. "ollama", "vllm", "lemonade", "sglang", "openai_api").
	Type string `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"`
	// category classifies the provider; values: api, local_inference.
	Category string `protobuf:"bytes,8,opt,name=category,proto3" json:"category,omitempty"`
	// served_models lists the model names this provider can actually serve.
	ServedModels []string `protobuf:"bytes,9,rep,name=served_models,json=servedModels,proto3" json:"served_models,omitempty"`
	// health is the observed provider health state (e.g. "healthy", "degraded", "unhealthy").
	Health string `protobuf:"bytes,10,opt,name=health,proto3" json:"health,omitempty"`
	// load_ratio is the computed in_flight / capacity value.  When capacity is 0
	// or unknown the provider is treated as unavailable for selection.
	LoadRatio float32 `protobuf:"fixed32,11,opt,name=load_ratio,json=loadRatio,proto3" json:"load_ratio,omitempty"`
	// lifecycle_capabilities lists coarse lifecycle capability flags (e.g.
	// "list_models", "load_model", "unload_model", "pull_model", "delete_model").
	LifecycleCapabilities []string `protobuf:"bytes,12,rep,name=lifecycle_capabilities,json=lifecycleCapabilities,proto3" json:"lifecycle_capabilities,omitempty"`
	// Long-context fields.
	LongContextCapacity int32 `protobuf:"varint,13,opt,name=long_context_capacity,json=longContextCapacity,proto3" json:"long_context_capacity,omitempty"`
	LongInFlight        int32 `protobuf:"varint,14,opt,name=long_in_flight,json=longInFlight,proto3" json:"long_in_flight,omitempty"`
	LongQueued          int32 `protobuf:"varint,15,opt,name=long_queued,json=longQueued,proto3" json:"long_queued,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *ProviderSnapshot) Reset() {
	*x = ProviderSnapshot{}
	mi := &file_proto_iop_runtime_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProviderSnapshot) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProviderSnapshot) ProtoMessage() {}

func (x *ProviderSnapshot) 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 ProviderSnapshot.ProtoReflect.Descriptor instead.
func (*ProviderSnapshot) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{16}
}

func (x *ProviderSnapshot) GetAdapter() string {
	if x != nil {
		return x.Adapter
	}
	return ""
}

func (x *ProviderSnapshot) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *ProviderSnapshot) GetCapacity() int32 {
	if x != nil {
		return x.Capacity
	}
	return 0
}

func (x *ProviderSnapshot) GetInFlight() int32 {
	if x != nil {
		return x.InFlight
	}
	return 0
}

func (x *ProviderSnapshot) GetQueued() int32 {
	if x != nil {
		return x.Queued
	}
	return 0
}

func (x *ProviderSnapshot) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ProviderSnapshot) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *ProviderSnapshot) GetCategory() string {
	if x != nil {
		return x.Category
	}
	return ""
}

func (x *ProviderSnapshot) GetServedModels() []string {
	if x != nil {
		return x.ServedModels
	}
	return nil
}

func (x *ProviderSnapshot) GetHealth() string {
	if x != nil {
		return x.Health
	}
	return ""
}

func (x *ProviderSnapshot) GetLoadRatio() float32 {
	if x != nil {
		return x.LoadRatio
	}
	return 0
}

func (x *ProviderSnapshot) GetLifecycleCapabilities() []string {
	if x != nil {
		return x.LifecycleCapabilities
	}
	return nil
}

func (x *ProviderSnapshot) GetLongContextCapacity() int32 {
	if x != nil {
		return x.LongContextCapacity
	}
	return 0
}

func (x *ProviderSnapshot) GetLongInFlight() int32 {
	if x != nil {
		return x.LongInFlight
	}
	return 0
}

func (x *ProviderSnapshot) GetLongQueued() int32 {
	if x != nil {
		return x.LongQueued
	}
	return 0
}

// Error is returned when a request fails at the transport layer.
type Error struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Code          string                 `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"`
	Message       string                 `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Error) Reset() {
	*x = Error{}
	mi := &file_proto_iop_runtime_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Error) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Error) ProtoMessage() {}

func (x *Error) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[17]
	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 Error.ProtoReflect.Descriptor instead.
func (*Error) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{17}
}

func (x *Error) GetCode() string {
	if x != nil {
		return x.Code
	}
	return ""
}

func (x *Error) GetMessage() string {
	if x != nil {
		return x.Message
	}
	return ""
}

// RegisterRequest is sent by node to edge immediately on connect.
type RegisterRequest struct {
	state                        protoimpl.MessageState `protogen:"open.v1"`
	Token                        string                 `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"`
	CredentialRecipientKeyId     string                 `protobuf:"bytes,2,opt,name=credential_recipient_key_id,json=credentialRecipientKeyId,proto3" json:"credential_recipient_key_id,omitempty"`
	CredentialRecipientPublicKey []byte                 `protobuf:"bytes,3,opt,name=credential_recipient_public_key,json=credentialRecipientPublicKey,proto3" json:"credential_recipient_public_key,omitempty"`
	unknownFields                protoimpl.UnknownFields
	sizeCache                    protoimpl.SizeCache
}

func (x *RegisterRequest) Reset() {
	*x = RegisterRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RegisterRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RegisterRequest) ProtoMessage() {}

func (x *RegisterRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[18]
	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 RegisterRequest.ProtoReflect.Descriptor instead.
func (*RegisterRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{18}
}

func (x *RegisterRequest) GetToken() string {
	if x != nil {
		return x.Token
	}
	return ""
}

func (x *RegisterRequest) GetCredentialRecipientKeyId() string {
	if x != nil {
		return x.CredentialRecipientKeyId
	}
	return ""
}

func (x *RegisterRequest) GetCredentialRecipientPublicKey() []byte {
	if x != nil {
		return x.CredentialRecipientPublicKey
	}
	return nil
}

// RegisterResponse is sent by edge to node in response to RegisterRequest.
type RegisterResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Accepted      bool                   `protobuf:"varint,1,opt,name=accepted,proto3" json:"accepted,omitempty"`
	NodeId        string                 `protobuf:"bytes,2,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
	Alias         string                 `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"`
	Reason        string                 `protobuf:"bytes,4,opt,name=reason,proto3" json:"reason,omitempty"` // rejection reason
	Config        *NodeConfigPayload     `protobuf:"bytes,5,opt,name=config,proto3" json:"config,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *RegisterResponse) Reset() {
	*x = RegisterResponse{}
	mi := &file_proto_iop_runtime_proto_msgTypes[19]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *RegisterResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*RegisterResponse) ProtoMessage() {}

func (x *RegisterResponse) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[19]
	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 RegisterResponse.ProtoReflect.Descriptor instead.
func (*RegisterResponse) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{19}
}

func (x *RegisterResponse) GetAccepted() bool {
	if x != nil {
		return x.Accepted
	}
	return false
}

func (x *RegisterResponse) GetNodeId() string {
	if x != nil {
		return x.NodeId
	}
	return ""
}

func (x *RegisterResponse) GetAlias() string {
	if x != nil {
		return x.Alias
	}
	return ""
}

func (x *RegisterResponse) GetReason() string {
	if x != nil {
		return x.Reason
	}
	return ""
}

func (x *RegisterResponse) GetConfig() *NodeConfigPayload {
	if x != nil {
		return x.Config
	}
	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[20]
	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[20]
	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{20}
}

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[21]
	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[21]
	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{21}
}

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.
type NodeConfigPayload struct {
	state    protoimpl.MessageState `protogen:"open.v1"`
	Adapters []*AdapterConfig       `protobuf:"bytes,1,rep,name=adapters,proto3" json:"adapters,omitempty"`
	Runtime  *NodeRuntimeConfig     `protobuf:"bytes,2,opt,name=runtime,proto3" json:"runtime,omitempty"`
	// workspaces is the Node-private, operator-approved workspace capability
	// catalog. It is deliberately separate from RunRequest metadata and from
	// the closed NodeCommand surface.
	Workspaces    []*WorkspaceConfig `protobuf:"bytes,3,rep,name=workspaces,proto3" json:"workspaces,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NodeConfigPayload) Reset() {
	*x = NodeConfigPayload{}
	mi := &file_proto_iop_runtime_proto_msgTypes[22]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NodeConfigPayload) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NodeConfigPayload) ProtoMessage() {}

func (x *NodeConfigPayload) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[22]
	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 NodeConfigPayload.ProtoReflect.Descriptor instead.
func (*NodeConfigPayload) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{22}
}

func (x *NodeConfigPayload) GetAdapters() []*AdapterConfig {
	if x != nil {
		return x.Adapters
	}
	return nil
}

func (x *NodeConfigPayload) GetRuntime() *NodeRuntimeConfig {
	if x != nil {
		return x.Runtime
	}
	return nil
}

func (x *NodeConfigPayload) GetWorkspaces() []*WorkspaceConfig {
	if x != nil {
		return x.Workspaces
	}
	return nil
}

type WorkspaceCommandConfig struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Executable    string                 `protobuf:"bytes,2,opt,name=executable,proto3" json:"executable,omitempty"`
	Args          []string               `protobuf:"bytes,3,rep,name=args,proto3" json:"args,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkspaceCommandConfig) Reset() {
	*x = WorkspaceCommandConfig{}
	mi := &file_proto_iop_runtime_proto_msgTypes[23]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceCommandConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceCommandConfig) ProtoMessage() {}

func (x *WorkspaceCommandConfig) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[23]
	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 WorkspaceCommandConfig.ProtoReflect.Descriptor instead.
func (*WorkspaceCommandConfig) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{23}
}

func (x *WorkspaceCommandConfig) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *WorkspaceCommandConfig) GetExecutable() string {
	if x != nil {
		return x.Executable
	}
	return ""
}

func (x *WorkspaceCommandConfig) GetArgs() []string {
	if x != nil {
		return x.Args
	}
	return nil
}

// WorkspaceConfig is delivered only inside the Edge-owned Node config payload.
// Roots, command templates, and environment names never appear in public API
// responses or in a caller-selected request field.
type WorkspaceConfig struct {
	state                protoimpl.MessageState    `protogen:"open.v1"`
	Ref                  string                    `protobuf:"bytes,1,opt,name=ref,proto3" json:"ref,omitempty"`
	Platform             string                    `protobuf:"bytes,2,opt,name=platform,proto3" json:"platform,omitempty"`
	Root                 string                    `protobuf:"bytes,3,opt,name=root,proto3" json:"root,omitempty"`
	Operations           []WorkspaceOperation      `protobuf:"varint,4,rep,packed,name=operations,proto3,enum=iop.WorkspaceOperation" json:"operations,omitempty"`
	Commands             []*WorkspaceCommandConfig `protobuf:"bytes,5,rep,name=commands,proto3" json:"commands,omitempty"`
	EnvironmentAllowlist []string                  `protobuf:"bytes,6,rep,name=environment_allowlist,json=environmentAllowlist,proto3" json:"environment_allowlist,omitempty"`
	MaxReadBytes         int64                     `protobuf:"varint,7,opt,name=max_read_bytes,json=maxReadBytes,proto3" json:"max_read_bytes,omitempty"`
	MaxWriteBytes        int64                     `protobuf:"varint,8,opt,name=max_write_bytes,json=maxWriteBytes,proto3" json:"max_write_bytes,omitempty"`
	MaxOutputBytes       int64                     `protobuf:"varint,9,opt,name=max_output_bytes,json=maxOutputBytes,proto3" json:"max_output_bytes,omitempty"`
	MaxCommandTimeoutMs  int64                     `protobuf:"varint,10,opt,name=max_command_timeout_ms,json=maxCommandTimeoutMs,proto3" json:"max_command_timeout_ms,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *WorkspaceConfig) Reset() {
	*x = WorkspaceConfig{}
	mi := &file_proto_iop_runtime_proto_msgTypes[24]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceConfig) ProtoMessage() {}

func (x *WorkspaceConfig) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[24]
	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 WorkspaceConfig.ProtoReflect.Descriptor instead.
func (*WorkspaceConfig) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{24}
}

func (x *WorkspaceConfig) GetRef() string {
	if x != nil {
		return x.Ref
	}
	return ""
}

func (x *WorkspaceConfig) GetPlatform() string {
	if x != nil {
		return x.Platform
	}
	return ""
}

func (x *WorkspaceConfig) GetRoot() string {
	if x != nil {
		return x.Root
	}
	return ""
}

func (x *WorkspaceConfig) GetOperations() []WorkspaceOperation {
	if x != nil {
		return x.Operations
	}
	return nil
}

func (x *WorkspaceConfig) GetCommands() []*WorkspaceCommandConfig {
	if x != nil {
		return x.Commands
	}
	return nil
}

func (x *WorkspaceConfig) GetEnvironmentAllowlist() []string {
	if x != nil {
		return x.EnvironmentAllowlist
	}
	return nil
}

func (x *WorkspaceConfig) GetMaxReadBytes() int64 {
	if x != nil {
		return x.MaxReadBytes
	}
	return 0
}

func (x *WorkspaceConfig) GetMaxWriteBytes() int64 {
	if x != nil {
		return x.MaxWriteBytes
	}
	return 0
}

func (x *WorkspaceConfig) GetMaxOutputBytes() int64 {
	if x != nil {
		return x.MaxOutputBytes
	}
	return 0
}

func (x *WorkspaceConfig) GetMaxCommandTimeoutMs() int64 {
	if x != nil {
		return x.MaxCommandTimeoutMs
	}
	return 0
}

// WorkspaceOpenRequest begins one request-owned workspace lifecycle. request_id
// is the immutable coordinator identity and later names .iop/job/<request_id>.
type WorkspaceOpenRequest struct {
	state               protoimpl.MessageState `protogen:"open.v1"`
	RequestId           string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	WorkspaceRef        string                 `protobuf:"bytes,2,opt,name=workspace_ref,json=workspaceRef,proto3" json:"workspace_ref,omitempty"`
	TimeoutMs           int64                  `protobuf:"varint,3,opt,name=timeout_ms,json=timeoutMs,proto3" json:"timeout_ms,omitempty"`
	Operations          []WorkspaceOperation   `protobuf:"varint,4,rep,packed,name=operations,proto3,enum=iop.WorkspaceOperation" json:"operations,omitempty"`
	CommandIds          []string               `protobuf:"bytes,5,rep,name=command_ids,json=commandIds,proto3" json:"command_ids,omitempty"`
	MaxReadBytes        int64                  `protobuf:"varint,6,opt,name=max_read_bytes,json=maxReadBytes,proto3" json:"max_read_bytes,omitempty"`
	MaxWriteBytes       int64                  `protobuf:"varint,7,opt,name=max_write_bytes,json=maxWriteBytes,proto3" json:"max_write_bytes,omitempty"`
	MaxOutputBytes      int64                  `protobuf:"varint,8,opt,name=max_output_bytes,json=maxOutputBytes,proto3" json:"max_output_bytes,omitempty"`
	MaxCommandTimeoutMs int64                  `protobuf:"varint,9,opt,name=max_command_timeout_ms,json=maxCommandTimeoutMs,proto3" json:"max_command_timeout_ms,omitempty"`
	unknownFields       protoimpl.UnknownFields
	sizeCache           protoimpl.SizeCache
}

func (x *WorkspaceOpenRequest) Reset() {
	*x = WorkspaceOpenRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[25]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceOpenRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceOpenRequest) ProtoMessage() {}

func (x *WorkspaceOpenRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[25]
	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 WorkspaceOpenRequest.ProtoReflect.Descriptor instead.
func (*WorkspaceOpenRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{25}
}

func (x *WorkspaceOpenRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *WorkspaceOpenRequest) GetWorkspaceRef() string {
	if x != nil {
		return x.WorkspaceRef
	}
	return ""
}

func (x *WorkspaceOpenRequest) GetTimeoutMs() int64 {
	if x != nil {
		return x.TimeoutMs
	}
	return 0
}

func (x *WorkspaceOpenRequest) GetOperations() []WorkspaceOperation {
	if x != nil {
		return x.Operations
	}
	return nil
}

func (x *WorkspaceOpenRequest) GetCommandIds() []string {
	if x != nil {
		return x.CommandIds
	}
	return nil
}

func (x *WorkspaceOpenRequest) GetMaxReadBytes() int64 {
	if x != nil {
		return x.MaxReadBytes
	}
	return 0
}

func (x *WorkspaceOpenRequest) GetMaxWriteBytes() int64 {
	if x != nil {
		return x.MaxWriteBytes
	}
	return 0
}

func (x *WorkspaceOpenRequest) GetMaxOutputBytes() int64 {
	if x != nil {
		return x.MaxOutputBytes
	}
	return 0
}

func (x *WorkspaceOpenRequest) GetMaxCommandTimeoutMs() int64 {
	if x != nil {
		return x.MaxCommandTimeoutMs
	}
	return 0
}

type WorkspaceOpenResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	WorkspaceRef  string                 `protobuf:"bytes,2,opt,name=workspace_ref,json=workspaceRef,proto3" json:"workspace_ref,omitempty"`
	Status        WorkspaceStatus        `protobuf:"varint,3,opt,name=status,proto3,enum=iop.WorkspaceStatus" json:"status,omitempty"`
	ErrorCode     WorkspaceErrorCode     `protobuf:"varint,4,opt,name=error_code,json=errorCode,proto3,enum=iop.WorkspaceErrorCode" json:"error_code,omitempty"`
	Error         string                 `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkspaceOpenResponse) Reset() {
	*x = WorkspaceOpenResponse{}
	mi := &file_proto_iop_runtime_proto_msgTypes[26]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceOpenResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceOpenResponse) ProtoMessage() {}

func (x *WorkspaceOpenResponse) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[26]
	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 WorkspaceOpenResponse.ProtoReflect.Descriptor instead.
func (*WorkspaceOpenResponse) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{26}
}

func (x *WorkspaceOpenResponse) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *WorkspaceOpenResponse) GetWorkspaceRef() string {
	if x != nil {
		return x.WorkspaceRef
	}
	return ""
}

func (x *WorkspaceOpenResponse) GetStatus() WorkspaceStatus {
	if x != nil {
		return x.Status
	}
	return WorkspaceStatus_WORKSPACE_STATUS_UNSPECIFIED
}

func (x *WorkspaceOpenResponse) GetErrorCode() WorkspaceErrorCode {
	if x != nil {
		return x.ErrorCode
	}
	return WorkspaceErrorCode_WORKSPACE_ERROR_CODE_UNSPECIFIED
}

func (x *WorkspaceOpenResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

type WorkspaceWriteInput struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RelativePath  string                 `protobuf:"bytes,1,opt,name=relative_path,json=relativePath,proto3" json:"relative_path,omitempty"`
	Content       []byte                 `protobuf:"bytes,2,opt,name=content,proto3" json:"content,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkspaceWriteInput) Reset() {
	*x = WorkspaceWriteInput{}
	mi := &file_proto_iop_runtime_proto_msgTypes[27]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceWriteInput) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceWriteInput) ProtoMessage() {}

func (x *WorkspaceWriteInput) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[27]
	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 WorkspaceWriteInput.ProtoReflect.Descriptor instead.
func (*WorkspaceWriteInput) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{27}
}

func (x *WorkspaceWriteInput) GetRelativePath() string {
	if x != nil {
		return x.RelativePath
	}
	return ""
}

func (x *WorkspaceWriteInput) GetContent() []byte {
	if x != nil {
		return x.Content
	}
	return nil
}

// WorkspaceToolRequest carries only closed operation input. A caller cannot
// select a Node, root, executable, argv, or arbitrary environment.
type WorkspaceToolRequest struct {
	state      protoimpl.MessageState `protogen:"open.v1"`
	RequestId  string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	StageId    string                 `protobuf:"bytes,2,opt,name=stage_id,json=stageId,proto3" json:"stage_id,omitempty"`
	ToolCallId string                 `protobuf:"bytes,3,opt,name=tool_call_id,json=toolCallId,proto3" json:"tool_call_id,omitempty"`
	Operation  WorkspaceOperation     `protobuf:"varint,4,opt,name=operation,proto3,enum=iop.WorkspaceOperation" json:"operation,omitempty"`
	TimeoutMs  int64                  `protobuf:"varint,5,opt,name=timeout_ms,json=timeoutMs,proto3" json:"timeout_ms,omitempty"`
	// Types that are valid to be assigned to Input:
	//
	//	*WorkspaceToolRequest_RelativePath
	//	*WorkspaceToolRequest_WriteContent
	//	*WorkspaceToolRequest_CommandId
	//	*WorkspaceToolRequest_Write
	Input         isWorkspaceToolRequest_Input `protobuf_oneof:"input"`
	Environment   map[string]string            `protobuf:"bytes,9,rep,name=environment,proto3" json:"environment,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkspaceToolRequest) Reset() {
	*x = WorkspaceToolRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[28]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceToolRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceToolRequest) ProtoMessage() {}

func (x *WorkspaceToolRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[28]
	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 WorkspaceToolRequest.ProtoReflect.Descriptor instead.
func (*WorkspaceToolRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{28}
}

func (x *WorkspaceToolRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *WorkspaceToolRequest) GetStageId() string {
	if x != nil {
		return x.StageId
	}
	return ""
}

func (x *WorkspaceToolRequest) GetToolCallId() string {
	if x != nil {
		return x.ToolCallId
	}
	return ""
}

func (x *WorkspaceToolRequest) GetOperation() WorkspaceOperation {
	if x != nil {
		return x.Operation
	}
	return WorkspaceOperation_WORKSPACE_OPERATION_UNSPECIFIED
}

func (x *WorkspaceToolRequest) GetTimeoutMs() int64 {
	if x != nil {
		return x.TimeoutMs
	}
	return 0
}

func (x *WorkspaceToolRequest) GetInput() isWorkspaceToolRequest_Input {
	if x != nil {
		return x.Input
	}
	return nil
}

func (x *WorkspaceToolRequest) GetRelativePath() string {
	if x != nil {
		if x, ok := x.Input.(*WorkspaceToolRequest_RelativePath); ok {
			return x.RelativePath
		}
	}
	return ""
}

func (x *WorkspaceToolRequest) GetWriteContent() []byte {
	if x != nil {
		if x, ok := x.Input.(*WorkspaceToolRequest_WriteContent); ok {
			return x.WriteContent
		}
	}
	return nil
}

func (x *WorkspaceToolRequest) GetCommandId() string {
	if x != nil {
		if x, ok := x.Input.(*WorkspaceToolRequest_CommandId); ok {
			return x.CommandId
		}
	}
	return ""
}

func (x *WorkspaceToolRequest) GetWrite() *WorkspaceWriteInput {
	if x != nil {
		if x, ok := x.Input.(*WorkspaceToolRequest_Write); ok {
			return x.Write
		}
	}
	return nil
}

func (x *WorkspaceToolRequest) GetEnvironment() map[string]string {
	if x != nil {
		return x.Environment
	}
	return nil
}

type isWorkspaceToolRequest_Input interface {
	isWorkspaceToolRequest_Input()
}

type WorkspaceToolRequest_RelativePath struct {
	RelativePath string `protobuf:"bytes,6,opt,name=relative_path,json=relativePath,proto3,oneof"`
}

type WorkspaceToolRequest_WriteContent struct {
	// Legacy source/wire-compatible field. WRITE requires the structured
	// write input because this field cannot carry a destination path.
	WriteContent []byte `protobuf:"bytes,7,opt,name=write_content,json=writeContent,proto3,oneof"`
}

type WorkspaceToolRequest_CommandId struct {
	CommandId string `protobuf:"bytes,8,opt,name=command_id,json=commandId,proto3,oneof"`
}

type WorkspaceToolRequest_Write struct {
	Write *WorkspaceWriteInput `protobuf:"bytes,10,opt,name=write,proto3,oneof"`
}

func (*WorkspaceToolRequest_RelativePath) isWorkspaceToolRequest_Input() {}

func (*WorkspaceToolRequest_WriteContent) isWorkspaceToolRequest_Input() {}

func (*WorkspaceToolRequest_CommandId) isWorkspaceToolRequest_Input() {}

func (*WorkspaceToolRequest_Write) isWorkspaceToolRequest_Input() {}

type WorkspaceToolResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	StageId       string                 `protobuf:"bytes,2,opt,name=stage_id,json=stageId,proto3" json:"stage_id,omitempty"`
	ToolCallId    string                 `protobuf:"bytes,3,opt,name=tool_call_id,json=toolCallId,proto3" json:"tool_call_id,omitempty"`
	Status        WorkspaceStatus        `protobuf:"varint,4,opt,name=status,proto3,enum=iop.WorkspaceStatus" json:"status,omitempty"`
	ErrorCode     WorkspaceErrorCode     `protobuf:"varint,5,opt,name=error_code,json=errorCode,proto3,enum=iop.WorkspaceErrorCode" json:"error_code,omitempty"`
	Error         string                 `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"`
	Content       []byte                 `protobuf:"bytes,7,opt,name=content,proto3" json:"content,omitempty"`
	Entries       []string               `protobuf:"bytes,8,rep,name=entries,proto3" json:"entries,omitempty"`
	Stdout        []byte                 `protobuf:"bytes,9,opt,name=stdout,proto3" json:"stdout,omitempty"`
	Stderr        []byte                 `protobuf:"bytes,10,opt,name=stderr,proto3" json:"stderr,omitempty"`
	ExitCode      int32                  `protobuf:"varint,11,opt,name=exit_code,json=exitCode,proto3" json:"exit_code,omitempty"`
	Truncated     bool                   `protobuf:"varint,12,opt,name=truncated,proto3" json:"truncated,omitempty"`
	DurationMs    int64                  `protobuf:"varint,13,opt,name=duration_ms,json=durationMs,proto3" json:"duration_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkspaceToolResponse) Reset() {
	*x = WorkspaceToolResponse{}
	mi := &file_proto_iop_runtime_proto_msgTypes[29]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceToolResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceToolResponse) ProtoMessage() {}

func (x *WorkspaceToolResponse) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[29]
	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 WorkspaceToolResponse.ProtoReflect.Descriptor instead.
func (*WorkspaceToolResponse) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{29}
}

func (x *WorkspaceToolResponse) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *WorkspaceToolResponse) GetStageId() string {
	if x != nil {
		return x.StageId
	}
	return ""
}

func (x *WorkspaceToolResponse) GetToolCallId() string {
	if x != nil {
		return x.ToolCallId
	}
	return ""
}

func (x *WorkspaceToolResponse) GetStatus() WorkspaceStatus {
	if x != nil {
		return x.Status
	}
	return WorkspaceStatus_WORKSPACE_STATUS_UNSPECIFIED
}

func (x *WorkspaceToolResponse) GetErrorCode() WorkspaceErrorCode {
	if x != nil {
		return x.ErrorCode
	}
	return WorkspaceErrorCode_WORKSPACE_ERROR_CODE_UNSPECIFIED
}

func (x *WorkspaceToolResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *WorkspaceToolResponse) GetContent() []byte {
	if x != nil {
		return x.Content
	}
	return nil
}

func (x *WorkspaceToolResponse) GetEntries() []string {
	if x != nil {
		return x.Entries
	}
	return nil
}

func (x *WorkspaceToolResponse) GetStdout() []byte {
	if x != nil {
		return x.Stdout
	}
	return nil
}

func (x *WorkspaceToolResponse) GetStderr() []byte {
	if x != nil {
		return x.Stderr
	}
	return nil
}

func (x *WorkspaceToolResponse) GetExitCode() int32 {
	if x != nil {
		return x.ExitCode
	}
	return 0
}

func (x *WorkspaceToolResponse) GetTruncated() bool {
	if x != nil {
		return x.Truncated
	}
	return false
}

func (x *WorkspaceToolResponse) GetDurationMs() int64 {
	if x != nil {
		return x.DurationMs
	}
	return 0
}

type WorkspaceArtifactRequest struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	RequestId     string                     `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Kind          WorkspaceArtifactKind      `protobuf:"varint,2,opt,name=kind,proto3,enum=iop.WorkspaceArtifactKind" json:"kind,omitempty"`
	Operation     WorkspaceArtifactOperation `protobuf:"varint,3,opt,name=operation,proto3,enum=iop.WorkspaceArtifactOperation" json:"operation,omitempty"`
	Content       []byte                     `protobuf:"bytes,4,opt,name=content,proto3" json:"content,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkspaceArtifactRequest) Reset() {
	*x = WorkspaceArtifactRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[30]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceArtifactRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceArtifactRequest) ProtoMessage() {}

func (x *WorkspaceArtifactRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[30]
	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 WorkspaceArtifactRequest.ProtoReflect.Descriptor instead.
func (*WorkspaceArtifactRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{30}
}

func (x *WorkspaceArtifactRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *WorkspaceArtifactRequest) GetKind() WorkspaceArtifactKind {
	if x != nil {
		return x.Kind
	}
	return WorkspaceArtifactKind_WORKSPACE_ARTIFACT_KIND_UNSPECIFIED
}

func (x *WorkspaceArtifactRequest) GetOperation() WorkspaceArtifactOperation {
	if x != nil {
		return x.Operation
	}
	return WorkspaceArtifactOperation_WORKSPACE_ARTIFACT_OPERATION_UNSPECIFIED
}

func (x *WorkspaceArtifactRequest) GetContent() []byte {
	if x != nil {
		return x.Content
	}
	return nil
}

type WorkspaceArtifactResponse struct {
	state         protoimpl.MessageState     `protogen:"open.v1"`
	RequestId     string                     `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Kind          WorkspaceArtifactKind      `protobuf:"varint,2,opt,name=kind,proto3,enum=iop.WorkspaceArtifactKind" json:"kind,omitempty"`
	Operation     WorkspaceArtifactOperation `protobuf:"varint,3,opt,name=operation,proto3,enum=iop.WorkspaceArtifactOperation" json:"operation,omitempty"`
	Status        WorkspaceStatus            `protobuf:"varint,4,opt,name=status,proto3,enum=iop.WorkspaceStatus" json:"status,omitempty"`
	ErrorCode     WorkspaceErrorCode         `protobuf:"varint,5,opt,name=error_code,json=errorCode,proto3,enum=iop.WorkspaceErrorCode" json:"error_code,omitempty"`
	Error         string                     `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"`
	Content       []byte                     `protobuf:"bytes,7,opt,name=content,proto3" json:"content,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkspaceArtifactResponse) Reset() {
	*x = WorkspaceArtifactResponse{}
	mi := &file_proto_iop_runtime_proto_msgTypes[31]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceArtifactResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceArtifactResponse) ProtoMessage() {}

func (x *WorkspaceArtifactResponse) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[31]
	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 WorkspaceArtifactResponse.ProtoReflect.Descriptor instead.
func (*WorkspaceArtifactResponse) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{31}
}

func (x *WorkspaceArtifactResponse) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *WorkspaceArtifactResponse) GetKind() WorkspaceArtifactKind {
	if x != nil {
		return x.Kind
	}
	return WorkspaceArtifactKind_WORKSPACE_ARTIFACT_KIND_UNSPECIFIED
}

func (x *WorkspaceArtifactResponse) GetOperation() WorkspaceArtifactOperation {
	if x != nil {
		return x.Operation
	}
	return WorkspaceArtifactOperation_WORKSPACE_ARTIFACT_OPERATION_UNSPECIFIED
}

func (x *WorkspaceArtifactResponse) GetStatus() WorkspaceStatus {
	if x != nil {
		return x.Status
	}
	return WorkspaceStatus_WORKSPACE_STATUS_UNSPECIFIED
}

func (x *WorkspaceArtifactResponse) GetErrorCode() WorkspaceErrorCode {
	if x != nil {
		return x.ErrorCode
	}
	return WorkspaceErrorCode_WORKSPACE_ERROR_CODE_UNSPECIFIED
}

func (x *WorkspaceArtifactResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *WorkspaceArtifactResponse) GetContent() []byte {
	if x != nil {
		return x.Content
	}
	return nil
}

type WorkspaceCancelRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	StageId       string                 `protobuf:"bytes,2,opt,name=stage_id,json=stageId,proto3" json:"stage_id,omitempty"`
	ToolCallId    string                 `protobuf:"bytes,3,opt,name=tool_call_id,json=toolCallId,proto3" json:"tool_call_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkspaceCancelRequest) Reset() {
	*x = WorkspaceCancelRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[32]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceCancelRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceCancelRequest) ProtoMessage() {}

func (x *WorkspaceCancelRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[32]
	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 WorkspaceCancelRequest.ProtoReflect.Descriptor instead.
func (*WorkspaceCancelRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{32}
}

func (x *WorkspaceCancelRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *WorkspaceCancelRequest) GetStageId() string {
	if x != nil {
		return x.StageId
	}
	return ""
}

func (x *WorkspaceCancelRequest) GetToolCallId() string {
	if x != nil {
		return x.ToolCallId
	}
	return ""
}

type WorkspaceCancelResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	StageId       string                 `protobuf:"bytes,2,opt,name=stage_id,json=stageId,proto3" json:"stage_id,omitempty"`
	ToolCallId    string                 `protobuf:"bytes,3,opt,name=tool_call_id,json=toolCallId,proto3" json:"tool_call_id,omitempty"`
	Status        WorkspaceStatus        `protobuf:"varint,4,opt,name=status,proto3,enum=iop.WorkspaceStatus" json:"status,omitempty"`
	ErrorCode     WorkspaceErrorCode     `protobuf:"varint,5,opt,name=error_code,json=errorCode,proto3,enum=iop.WorkspaceErrorCode" json:"error_code,omitempty"`
	Error         string                 `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkspaceCancelResponse) Reset() {
	*x = WorkspaceCancelResponse{}
	mi := &file_proto_iop_runtime_proto_msgTypes[33]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceCancelResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceCancelResponse) ProtoMessage() {}

func (x *WorkspaceCancelResponse) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[33]
	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 WorkspaceCancelResponse.ProtoReflect.Descriptor instead.
func (*WorkspaceCancelResponse) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{33}
}

func (x *WorkspaceCancelResponse) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *WorkspaceCancelResponse) GetStageId() string {
	if x != nil {
		return x.StageId
	}
	return ""
}

func (x *WorkspaceCancelResponse) GetToolCallId() string {
	if x != nil {
		return x.ToolCallId
	}
	return ""
}

func (x *WorkspaceCancelResponse) GetStatus() WorkspaceStatus {
	if x != nil {
		return x.Status
	}
	return WorkspaceStatus_WORKSPACE_STATUS_UNSPECIFIED
}

func (x *WorkspaceCancelResponse) GetErrorCode() WorkspaceErrorCode {
	if x != nil {
		return x.ErrorCode
	}
	return WorkspaceErrorCode_WORKSPACE_ERROR_CODE_UNSPECIFIED
}

func (x *WorkspaceCancelResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

// WorkspaceCleanupRequest is explicit and request-owned. It removes only
// request artifacts/processes; user workspace results remain outside cleanup.
type WorkspaceCleanupRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *WorkspaceCleanupRequest) Reset() {
	*x = WorkspaceCleanupRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[34]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceCleanupRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceCleanupRequest) ProtoMessage() {}

func (x *WorkspaceCleanupRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[34]
	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 WorkspaceCleanupRequest.ProtoReflect.Descriptor instead.
func (*WorkspaceCleanupRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{34}
}

func (x *WorkspaceCleanupRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

type WorkspaceCleanupResponse struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	RequestId        string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Status           WorkspaceStatus        `protobuf:"varint,2,opt,name=status,proto3,enum=iop.WorkspaceStatus" json:"status,omitempty"`
	ErrorCode        WorkspaceErrorCode     `protobuf:"varint,3,opt,name=error_code,json=errorCode,proto3,enum=iop.WorkspaceErrorCode" json:"error_code,omitempty"`
	Error            string                 `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"`
	CleanedProcesses int32                  `protobuf:"varint,5,opt,name=cleaned_processes,json=cleanedProcesses,proto3" json:"cleaned_processes,omitempty"`
	CleanedArtifacts int32                  `protobuf:"varint,6,opt,name=cleaned_artifacts,json=cleanedArtifacts,proto3" json:"cleaned_artifacts,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *WorkspaceCleanupResponse) Reset() {
	*x = WorkspaceCleanupResponse{}
	mi := &file_proto_iop_runtime_proto_msgTypes[35]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *WorkspaceCleanupResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*WorkspaceCleanupResponse) ProtoMessage() {}

func (x *WorkspaceCleanupResponse) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[35]
	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 WorkspaceCleanupResponse.ProtoReflect.Descriptor instead.
func (*WorkspaceCleanupResponse) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{35}
}

func (x *WorkspaceCleanupResponse) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *WorkspaceCleanupResponse) GetStatus() WorkspaceStatus {
	if x != nil {
		return x.Status
	}
	return WorkspaceStatus_WORKSPACE_STATUS_UNSPECIFIED
}

func (x *WorkspaceCleanupResponse) GetErrorCode() WorkspaceErrorCode {
	if x != nil {
		return x.ErrorCode
	}
	return WorkspaceErrorCode_WORKSPACE_ERROR_CODE_UNSPECIFIED
}

func (x *WorkspaceCleanupResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

func (x *WorkspaceCleanupResponse) GetCleanedProcesses() int32 {
	if x != nil {
		return x.CleanedProcesses
	}
	return 0
}

func (x *WorkspaceCleanupResponse) GetCleanedArtifacts() int32 {
	if x != nil {
		return x.CleanedArtifacts
	}
	return 0
}

// AdapterConfig describes one adapter to enable on the node.
// name is the stable instance identity within a node; for single-instance
// adapters it may be empty (equivalent to the type name). When a node carries
// multiple instances of the same adapter type each must have a unique name.
type AdapterConfig struct {
	state    protoimpl.MessageState `protogen:"open.v1"`
	Type     string                 `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` // "mock" | "ollama" | "vllm" | "openai_compat"
	Enabled  bool                   `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"`
	Settings *structpb.Struct       `protobuf:"bytes,3,opt,name=settings,proto3" json:"settings,omitempty"` // legacy/compat path; new adapters use oneof
	// Types that are valid to be assigned to Config:
	//
	//	*AdapterConfig_Ollama
	//	*AdapterConfig_Vllm
	//	*AdapterConfig_Mock
	//	*AdapterConfig_OpenaiCompat
	Config        isAdapterConfig_Config `protobuf_oneof:"config"`
	Name          string                 `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"`     // stable instance identity; empty = legacy single-instance
	Target        string                 `protobuf:"bytes,9,opt,name=target,proto3" json:"target,omitempty"` // optional default target/route hint for this instance
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *AdapterConfig) Reset() {
	*x = AdapterConfig{}
	mi := &file_proto_iop_runtime_proto_msgTypes[36]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *AdapterConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*AdapterConfig) ProtoMessage() {}

func (x *AdapterConfig) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[36]
	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 AdapterConfig.ProtoReflect.Descriptor instead.
func (*AdapterConfig) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{36}
}

func (x *AdapterConfig) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *AdapterConfig) GetEnabled() bool {
	if x != nil {
		return x.Enabled
	}
	return false
}

func (x *AdapterConfig) GetSettings() *structpb.Struct {
	if x != nil {
		return x.Settings
	}
	return nil
}

func (x *AdapterConfig) GetConfig() isAdapterConfig_Config {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *AdapterConfig) GetOllama() *OllamaAdapterConfig {
	if x != nil {
		if x, ok := x.Config.(*AdapterConfig_Ollama); ok {
			return x.Ollama
		}
	}
	return nil
}

func (x *AdapterConfig) GetVllm() *VllmAdapterConfig {
	if x != nil {
		if x, ok := x.Config.(*AdapterConfig_Vllm); ok {
			return x.Vllm
		}
	}
	return nil
}

func (x *AdapterConfig) GetMock() *MockAdapterConfig {
	if x != nil {
		if x, ok := x.Config.(*AdapterConfig_Mock); ok {
			return x.Mock
		}
	}
	return nil
}

func (x *AdapterConfig) GetOpenaiCompat() *OpenAICompatAdapterConfig {
	if x != nil {
		if x, ok := x.Config.(*AdapterConfig_OpenaiCompat); ok {
			return x.OpenaiCompat
		}
	}
	return nil
}

func (x *AdapterConfig) GetName() string {
	if x != nil {
		return x.Name
	}
	return ""
}

func (x *AdapterConfig) GetTarget() string {
	if x != nil {
		return x.Target
	}
	return ""
}

type isAdapterConfig_Config interface {
	isAdapterConfig_Config()
}

type AdapterConfig_Ollama struct {
	Ollama *OllamaAdapterConfig `protobuf:"bytes,5,opt,name=ollama,proto3,oneof"`
}

type AdapterConfig_Vllm struct {
	Vllm *VllmAdapterConfig `protobuf:"bytes,6,opt,name=vllm,proto3,oneof"`
}

type AdapterConfig_Mock struct {
	Mock *MockAdapterConfig `protobuf:"bytes,7,opt,name=mock,proto3,oneof"`
}

type AdapterConfig_OpenaiCompat struct {
	OpenaiCompat *OpenAICompatAdapterConfig `protobuf:"bytes,10,opt,name=openai_compat,json=openaiCompat,proto3,oneof"`
}

func (*AdapterConfig_Ollama) isAdapterConfig_Config() {}

func (*AdapterConfig_Vllm) isAdapterConfig_Config() {}

func (*AdapterConfig_Mock) isAdapterConfig_Config() {}

func (*AdapterConfig_OpenaiCompat) isAdapterConfig_Config() {}

type MockAdapterConfig struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *MockAdapterConfig) Reset() {
	*x = MockAdapterConfig{}
	mi := &file_proto_iop_runtime_proto_msgTypes[37]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *MockAdapterConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*MockAdapterConfig) ProtoMessage() {}

func (x *MockAdapterConfig) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[37]
	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 MockAdapterConfig.ProtoReflect.Descriptor instead.
func (*MockAdapterConfig) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{37}
}

type OllamaAdapterConfig struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	BaseUrl          string                 `protobuf:"bytes,1,opt,name=base_url,json=baseUrl,proto3" json:"base_url,omitempty"`
	ContextSize      int32                  `protobuf:"varint,2,opt,name=context_size,json=contextSize,proto3" json:"context_size,omitempty"`
	Capacity         int32                  `protobuf:"varint,3,opt,name=capacity,proto3" json:"capacity,omitempty"`
	MaxQueue         int32                  `protobuf:"varint,4,opt,name=max_queue,json=maxQueue,proto3" json:"max_queue,omitempty"`
	QueueTimeoutMs   int32                  `protobuf:"varint,5,opt,name=queue_timeout_ms,json=queueTimeoutMs,proto3" json:"queue_timeout_ms,omitempty"`
	RequestTimeoutMs int32                  `protobuf:"varint,6,opt,name=request_timeout_ms,json=requestTimeoutMs,proto3" json:"request_timeout_ms,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *OllamaAdapterConfig) Reset() {
	*x = OllamaAdapterConfig{}
	mi := &file_proto_iop_runtime_proto_msgTypes[38]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *OllamaAdapterConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*OllamaAdapterConfig) ProtoMessage() {}

func (x *OllamaAdapterConfig) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[38]
	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 OllamaAdapterConfig.ProtoReflect.Descriptor instead.
func (*OllamaAdapterConfig) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{38}
}

func (x *OllamaAdapterConfig) GetBaseUrl() string {
	if x != nil {
		return x.BaseUrl
	}
	return ""
}

func (x *OllamaAdapterConfig) GetContextSize() int32 {
	if x != nil {
		return x.ContextSize
	}
	return 0
}

func (x *OllamaAdapterConfig) GetCapacity() int32 {
	if x != nil {
		return x.Capacity
	}
	return 0
}

func (x *OllamaAdapterConfig) GetMaxQueue() int32 {
	if x != nil {
		return x.MaxQueue
	}
	return 0
}

func (x *OllamaAdapterConfig) GetQueueTimeoutMs() int32 {
	if x != nil {
		return x.QueueTimeoutMs
	}
	return 0
}

func (x *OllamaAdapterConfig) GetRequestTimeoutMs() int32 {
	if x != nil {
		return x.RequestTimeoutMs
	}
	return 0
}

type VllmAdapterConfig struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	Endpoint         string                 `protobuf:"bytes,1,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	Capacity         int32                  `protobuf:"varint,2,opt,name=capacity,proto3" json:"capacity,omitempty"`
	MaxQueue         int32                  `protobuf:"varint,3,opt,name=max_queue,json=maxQueue,proto3" json:"max_queue,omitempty"`
	QueueTimeoutMs   int32                  `protobuf:"varint,4,opt,name=queue_timeout_ms,json=queueTimeoutMs,proto3" json:"queue_timeout_ms,omitempty"`
	RequestTimeoutMs int32                  `protobuf:"varint,5,opt,name=request_timeout_ms,json=requestTimeoutMs,proto3" json:"request_timeout_ms,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *VllmAdapterConfig) Reset() {
	*x = VllmAdapterConfig{}
	mi := &file_proto_iop_runtime_proto_msgTypes[39]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *VllmAdapterConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*VllmAdapterConfig) ProtoMessage() {}

func (x *VllmAdapterConfig) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[39]
	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 VllmAdapterConfig.ProtoReflect.Descriptor instead.
func (*VllmAdapterConfig) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{39}
}

func (x *VllmAdapterConfig) GetEndpoint() string {
	if x != nil {
		return x.Endpoint
	}
	return ""
}

func (x *VllmAdapterConfig) GetCapacity() int32 {
	if x != nil {
		return x.Capacity
	}
	return 0
}

func (x *VllmAdapterConfig) GetMaxQueue() int32 {
	if x != nil {
		return x.MaxQueue
	}
	return 0
}

func (x *VllmAdapterConfig) GetQueueTimeoutMs() int32 {
	if x != nil {
		return x.QueueTimeoutMs
	}
	return 0
}

func (x *VllmAdapterConfig) GetRequestTimeoutMs() int32 {
	if x != nil {
		return x.RequestTimeoutMs
	}
	return 0
}

type OpenAICompatAdapterConfig struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	Provider         string                 `protobuf:"bytes,1,opt,name=provider,proto3" json:"provider,omitempty"`
	Endpoint         string                 `protobuf:"bytes,2,opt,name=endpoint,proto3" json:"endpoint,omitempty"`
	Headers          map[string]string      `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Capacity         int32                  `protobuf:"varint,4,opt,name=capacity,proto3" json:"capacity,omitempty"`
	MaxQueue         int32                  `protobuf:"varint,5,opt,name=max_queue,json=maxQueue,proto3" json:"max_queue,omitempty"`
	QueueTimeoutMs   int32                  `protobuf:"varint,6,opt,name=queue_timeout_ms,json=queueTimeoutMs,proto3" json:"queue_timeout_ms,omitempty"`
	RequestTimeoutMs int32                  `protobuf:"varint,7,opt,name=request_timeout_ms,json=requestTimeoutMs,proto3" json:"request_timeout_ms,omitempty"`
	// protocol_profile is the resolved concrete protocol profile snapshot.
	// When set, the adapter uses the profile's operation paths for URL
	// resolution instead of the legacy endpoint + /v1 suffix heuristic.
	ProtocolProfile *ConcreteProtocolProfile `protobuf:"bytes,8,opt,name=protocol_profile,json=protocolProfile,proto3" json:"protocol_profile,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

func (x *OpenAICompatAdapterConfig) Reset() {
	*x = OpenAICompatAdapterConfig{}
	mi := &file_proto_iop_runtime_proto_msgTypes[40]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *OpenAICompatAdapterConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*OpenAICompatAdapterConfig) ProtoMessage() {}

func (x *OpenAICompatAdapterConfig) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[40]
	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 OpenAICompatAdapterConfig.ProtoReflect.Descriptor instead.
func (*OpenAICompatAdapterConfig) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{40}
}

func (x *OpenAICompatAdapterConfig) GetProvider() string {
	if x != nil {
		return x.Provider
	}
	return ""
}

func (x *OpenAICompatAdapterConfig) GetEndpoint() string {
	if x != nil {
		return x.Endpoint
	}
	return ""
}

func (x *OpenAICompatAdapterConfig) GetHeaders() map[string]string {
	if x != nil {
		return x.Headers
	}
	return nil
}

func (x *OpenAICompatAdapterConfig) GetCapacity() int32 {
	if x != nil {
		return x.Capacity
	}
	return 0
}

func (x *OpenAICompatAdapterConfig) GetMaxQueue() int32 {
	if x != nil {
		return x.MaxQueue
	}
	return 0
}

func (x *OpenAICompatAdapterConfig) GetQueueTimeoutMs() int32 {
	if x != nil {
		return x.QueueTimeoutMs
	}
	return 0
}

func (x *OpenAICompatAdapterConfig) GetRequestTimeoutMs() int32 {
	if x != nil {
		return x.RequestTimeoutMs
	}
	return 0
}

func (x *OpenAICompatAdapterConfig) GetProtocolProfile() *ConcreteProtocolProfile {
	if x != nil {
		return x.ProtocolProfile
	}
	return nil
}

// ProtocolAuth declares how a concrete protocol profile authenticates to its
// upstream. It is the wire representation of config.ProtocolAuthConf.
type ProtocolAuth struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Header        string                 `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"` // request header name (e.g. "Authorization", "x-api-key")
	Scheme        string                 `protobuf:"bytes,2,opt,name=scheme,proto3" json:"scheme,omitempty"` // auth scheme prefix (e.g. "Bearer"); empty means raw header value
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ProtocolAuth) Reset() {
	*x = ProtocolAuth{}
	mi := &file_proto_iop_runtime_proto_msgTypes[41]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ProtocolAuth) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ProtocolAuth) ProtoMessage() {}

func (x *ProtocolAuth) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[41]
	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 ProtocolAuth.ProtoReflect.Descriptor instead.
func (*ProtocolAuth) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{41}
}

func (x *ProtocolAuth) GetHeader() string {
	if x != nil {
		return x.Header
	}
	return ""
}

func (x *ProtocolAuth) GetScheme() string {
	if x != nil {
		return x.Scheme
	}
	return ""
}

// ConcreteProtocolProfile is the immutable, resolved snapshot of a protocol
// profile carried over the wire. It never contains a Base reference.
type ConcreteProtocolProfile struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Id            string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Driver        string                 `protobuf:"bytes,2,opt,name=driver,proto3" json:"driver,omitempty"`
	BaseUrl       string                 `protobuf:"bytes,3,opt,name=base_url,json=baseUrl,proto3" json:"base_url,omitempty"`
	Operations    map[string]string      `protobuf:"bytes,4,rep,name=operations,proto3" json:"operations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Auth          *ProtocolAuth          `protobuf:"bytes,5,opt,name=auth,proto3" json:"auth,omitempty"`
	Capabilities  []string               `protobuf:"bytes,6,rep,name=capabilities,proto3" json:"capabilities,omitempty"`
	ModelMapping  map[string]string      `protobuf:"bytes,7,rep,name=model_mapping,json=modelMapping,proto3" json:"model_mapping,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
	Extensions    *structpb.Struct       `protobuf:"bytes,8,opt,name=extensions,proto3" json:"extensions,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ConcreteProtocolProfile) Reset() {
	*x = ConcreteProtocolProfile{}
	mi := &file_proto_iop_runtime_proto_msgTypes[42]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ConcreteProtocolProfile) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ConcreteProtocolProfile) ProtoMessage() {}

func (x *ConcreteProtocolProfile) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[42]
	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 ConcreteProtocolProfile.ProtoReflect.Descriptor instead.
func (*ConcreteProtocolProfile) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{42}
}

func (x *ConcreteProtocolProfile) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *ConcreteProtocolProfile) GetDriver() string {
	if x != nil {
		return x.Driver
	}
	return ""
}

func (x *ConcreteProtocolProfile) GetBaseUrl() string {
	if x != nil {
		return x.BaseUrl
	}
	return ""
}

func (x *ConcreteProtocolProfile) GetOperations() map[string]string {
	if x != nil {
		return x.Operations
	}
	return nil
}

func (x *ConcreteProtocolProfile) GetAuth() *ProtocolAuth {
	if x != nil {
		return x.Auth
	}
	return nil
}

func (x *ConcreteProtocolProfile) GetCapabilities() []string {
	if x != nil {
		return x.Capabilities
	}
	return nil
}

func (x *ConcreteProtocolProfile) GetModelMapping() map[string]string {
	if x != nil {
		return x.ModelMapping
	}
	return nil
}

func (x *ConcreteProtocolProfile) GetExtensions() *structpb.Struct {
	if x != nil {
		return x.Extensions
	}
	return nil
}

// NodeRuntimeConfig carries legacy node runtime metadata. Execution admission
// must not use this as a node-wide global gate; provider/resource capacity owns
// concurrency.
type NodeRuntimeConfig struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Concurrency   int32                  `protobuf:"varint,1,opt,name=concurrency,proto3" json:"concurrency,omitempty"` // legacy compatibility, 0/unset means no node-wide limit
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NodeRuntimeConfig) Reset() {
	*x = NodeRuntimeConfig{}
	mi := &file_proto_iop_runtime_proto_msgTypes[43]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NodeRuntimeConfig) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NodeRuntimeConfig) ProtoMessage() {}

func (x *NodeRuntimeConfig) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[43]
	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 NodeRuntimeConfig.ProtoReflect.Descriptor instead.
func (*NodeRuntimeConfig) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{43}
}

func (x *NodeRuntimeConfig) GetConcurrency() int32 {
	if x != nil {
		return x.Concurrency
	}
	return 0
}

// NodeConfigRefreshRequest is sent by edge to a connected node to push a new config payload.
type NodeConfigRefreshRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RequestId     string                 `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Config        *NodeConfigPayload     `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"`
	ChangedPaths  []string               `protobuf:"bytes,3,rep,name=changed_paths,json=changedPaths,proto3" json:"changed_paths,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *NodeConfigRefreshRequest) Reset() {
	*x = NodeConfigRefreshRequest{}
	mi := &file_proto_iop_runtime_proto_msgTypes[44]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NodeConfigRefreshRequest) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NodeConfigRefreshRequest) ProtoMessage() {}

func (x *NodeConfigRefreshRequest) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[44]
	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 NodeConfigRefreshRequest.ProtoReflect.Descriptor instead.
func (*NodeConfigRefreshRequest) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{44}
}

func (x *NodeConfigRefreshRequest) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *NodeConfigRefreshRequest) GetConfig() *NodeConfigPayload {
	if x != nil {
		return x.Config
	}
	return nil
}

func (x *NodeConfigRefreshRequest) GetChangedPaths() []string {
	if x != nil {
		return x.ChangedPaths
	}
	return nil
}

// NodeConfigRefreshResponse is returned by the node to acknowledge or report failure.
type NodeConfigRefreshResponse struct {
	state                protoimpl.MessageState  `protogen:"open.v1"`
	RequestId            string                  `protobuf:"bytes,1,opt,name=request_id,json=requestId,proto3" json:"request_id,omitempty"`
	Status               NodeConfigRefreshStatus `protobuf:"varint,2,opt,name=status,proto3,enum=iop.NodeConfigRefreshStatus" json:"status,omitempty"`
	RestartRequiredPaths []string                `protobuf:"bytes,3,rep,name=restart_required_paths,json=restartRequiredPaths,proto3" json:"restart_required_paths,omitempty"`
	Error                string                  `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields        protoimpl.UnknownFields
	sizeCache            protoimpl.SizeCache
}

func (x *NodeConfigRefreshResponse) Reset() {
	*x = NodeConfigRefreshResponse{}
	mi := &file_proto_iop_runtime_proto_msgTypes[45]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *NodeConfigRefreshResponse) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*NodeConfigRefreshResponse) ProtoMessage() {}

func (x *NodeConfigRefreshResponse) ProtoReflect() protoreflect.Message {
	mi := &file_proto_iop_runtime_proto_msgTypes[45]
	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 NodeConfigRefreshResponse.ProtoReflect.Descriptor instead.
func (*NodeConfigRefreshResponse) Descriptor() ([]byte, []int) {
	return file_proto_iop_runtime_proto_rawDescGZIP(), []int{45}
}

func (x *NodeConfigRefreshResponse) GetRequestId() string {
	if x != nil {
		return x.RequestId
	}
	return ""
}

func (x *NodeConfigRefreshResponse) GetStatus() NodeConfigRefreshStatus {
	if x != nil {
		return x.Status
	}
	return NodeConfigRefreshStatus_NODE_CONFIG_REFRESH_STATUS_UNSPECIFIED
}

func (x *NodeConfigRefreshResponse) GetRestartRequiredPaths() []string {
	if x != nil {
		return x.RestartRequiredPaths
	}
	return nil
}

func (x *NodeConfigRefreshResponse) GetError() string {
	if x != nil {
		return x.Error
	}
	return ""
}

var File_proto_iop_runtime_proto protoreflect.FileDescriptor

const file_proto_iop_runtime_proto_rawDesc = "" +
	"\n" +
	"\x17proto/iop/runtime.proto\x12\x03iop\x1a\x1cgoogle/protobuf/struct.proto\"\xed\x03\n" +
	"\n" +
	"RunRequest\x12\x15\n" +
	"\x06run_id\x18\x01 \x01(\tR\x05runId\x12\x18\n" +
	"\aadapter\x18\x02 \x01(\tR\aadapter\x12\x16\n" +
	"\x06target\x18\x03 \x01(\tR\x06target\x12/\n" +
	"\x06policy\x18\x05 \x01(\v2\x17.google.protobuf.StructR\x06policy\x12-\n" +
	"\x05input\x18\x06 \x01(\v2\x17.google.protobuf.StructR\x05input\x12\x1f\n" +
	"\vtimeout_sec\x18\a \x01(\x05R\n" +
	"timeoutSec\x129\n" +
	"\bmetadata\x18\b \x03(\v2\x1d.iop.RunRequest.MetadataEntryR\bmetadata\x12\x1d\n" +
	"\n" +
	"session_id\x18\t \x01(\tR\tsessionId\x12\x1e\n" +
	"\n" +
	"background\x18\v \x01(\bR\n" +
	"background\x129\n" +
	"\x19response_stall_timeout_ms\x18\f \x01(\x03R\x16responseStallTimeoutMs\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01J\x04\b\x04\x10\x05J\x04\b\n" +
	"\x10\vR\tworkspaceR\fsession_mode\"\xd9\x03\n" +
	"\bRunEvent\x12\x15\n" +
	"\x06run_id\x18\x01 \x01(\tR\x05runId\x12\x12\n" +
	"\x04type\x18\x02 \x01(\tR\x04type\x12\x14\n" +
	"\x05delta\x18\x03 \x01(\tR\x05delta\x12\x18\n" +
	"\amessage\x18\x04 \x01(\tR\amessage\x12\x14\n" +
	"\x05error\x18\x05 \x01(\tR\x05error\x12 \n" +
	"\x05usage\x18\x06 \x01(\v2\n" +
	".iop.UsageR\x05usage\x127\n" +
	"\bmetadata\x18\a \x03(\v2\x1b.iop.RunEvent.MetadataEntryR\bmetadata\x12\x1c\n" +
	"\ttimestamp\x18\b \x01(\x03R\ttimestamp\x12\x1d\n" +
	"\n" +
	"session_id\x18\t \x01(\tR\tsessionId\x12\x1e\n" +
	"\n" +
	"background\x18\n" +
	" \x01(\bR\n" +
	"background\x12\x17\n" +
	"\anode_id\x18\v \x01(\tR\x06nodeId\x12\x1d\n" +
	"\n" +
	"node_alias\x18\f \x01(\tR\tnodeAlias\x12/\n" +
	"\afailure\x18\r \x01(\v2\x15.iop.ExecutionFailureR\afailure\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x83\x06\n" +
	"\x15ProviderTunnelRequest\x12\x15\n" +
	"\x06run_id\x18\x01 \x01(\tR\x05runId\x12\x1b\n" +
	"\ttunnel_id\x18\x02 \x01(\tR\btunnelId\x12\x18\n" +
	"\aadapter\x18\x03 \x01(\tR\aadapter\x12\x16\n" +
	"\x06target\x18\x04 \x01(\tR\x06target\x12\x16\n" +
	"\x06method\x18\x05 \x01(\tR\x06method\x12\x12\n" +
	"\x04path\x18\x06 \x01(\tR\x04path\x12A\n" +
	"\aheaders\x18\a \x03(\v2'.iop.ProviderTunnelRequest.HeadersEntryR\aheaders\x12\x12\n" +
	"\x04body\x18\b \x01(\fR\x04body\x12\x16\n" +
	"\x06stream\x18\t \x01(\bR\x06stream\x12\x1f\n" +
	"\vtimeout_sec\x18\n" +
	" \x01(\x05R\n" +
	"timeoutSec\x12D\n" +
	"\bmetadata\x18\v \x03(\v2(.iop.ProviderTunnelRequest.MetadataEntryR\bmetadata\x12\x1d\n" +
	"\n" +
	"session_id\x18\f \x01(\tR\tsessionId\x12\x1c\n" +
	"\toperation\x18\r \x01(\tR\toperation\x12E\n" +
	"\x10credential_lease\x18\x0e \x01(\v2\x1a.iop.SignedCredentialLeaseR\x0fcredentialLease\x12J\n" +
	"\x12credential_binding\x18\x0f \x01(\v2\x1b.iop.CredentialLeaseBindingR\x11credentialBinding\x129\n" +
	"\x19response_stall_timeout_ms\x18\x10 \x01(\x03R\x16responseStallTimeoutMs\x1a:\n" +
	"\fHeadersEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xd2\x04\n" +
	"\x14CredentialLeaseScope\x12\x19\n" +
	"\blease_id\x18\x01 \x01(\tR\aleaseId\x12#\n" +
	"\rprincipal_ref\x18\x02 \x01(\tR\fprincipalRef\x12.\n" +
	"\x13credential_slot_ref\x18\x03 \x01(\tR\x11credentialSlotRef\x12\x19\n" +
	"\broute_id\x18\x04 \x01(\tR\arouteId\x12\x1d\n" +
	"\n" +
	"profile_id\x18\x05 \x01(\tR\tprofileId\x12'\n" +
	"\x0fupstream_target\x18\x06 \x01(\tR\x0eupstreamTarget\x12\x17\n" +
	"\anode_id\x18\a \x01(\tR\x06nodeId\x12(\n" +
	"\x10recipient_key_id\x18\b \x01(\tR\x0erecipientKeyId\x12\x1f\n" +
	"\vheader_name\x18\t \x01(\tR\n" +
	"headerName\x12\x16\n" +
	"\x06scheme\x18\n" +
	" \x01(\tR\x06scheme\x12/\n" +
	"\x13credential_revision\x18\v \x01(\x04R\x12credentialRevision\x12%\n" +
	"\x0eroute_revision\x18\f \x01(\x04R\rrouteRevision\x123\n" +
	"\x15projection_generation\x18\r \x01(\x04R\x14projectionGeneration\x12-\n" +
	"\x13issued_at_unix_nano\x18\x0e \x01(\x03R\x10issuedAtUnixNano\x12/\n" +
	"\x14expires_at_unix_nano\x18\x0f \x01(\x03R\x11expiresAtUnixNano\"\x8c\x02\n" +
	"\x15SignedCredentialLease\x12\x18\n" +
	"\aversion\x18\x01 \x01(\rR\aversion\x12\"\n" +
	"\rissuer_key_id\x18\x02 \x01(\tR\vissuerKeyId\x12/\n" +
	"\x05scope\x18\x03 \x01(\v2\x19.iop.CredentialLeaseScopeR\x05scope\x120\n" +
	"\x14ephemeral_public_key\x18\x04 \x01(\fR\x12ephemeralPublicKey\x12\x14\n" +
	"\x05nonce\x18\x05 \x01(\fR\x05nonce\x12\x1e\n" +
	"\n" +
	"ciphertext\x18\x06 \x01(\fR\n" +
	"ciphertext\x12\x1c\n" +
	"\tsignature\x18\a \x01(\fR\tsignature\"\xa0\x03\n" +
	"\x16CredentialLeaseBinding\x12#\n" +
	"\rprincipal_ref\x18\x01 \x01(\tR\fprincipalRef\x12.\n" +
	"\x13credential_slot_ref\x18\x02 \x01(\tR\x11credentialSlotRef\x12\x19\n" +
	"\broute_id\x18\x03 \x01(\tR\arouteId\x12\x1d\n" +
	"\n" +
	"profile_id\x18\x04 \x01(\tR\tprofileId\x12'\n" +
	"\x0fupstream_target\x18\x05 \x01(\tR\x0eupstreamTarget\x12\x17\n" +
	"\anode_id\x18\x06 \x01(\tR\x06nodeId\x12(\n" +
	"\x10recipient_key_id\x18\a \x01(\tR\x0erecipientKeyId\x12/\n" +
	"\x13credential_revision\x18\b \x01(\x04R\x12credentialRevision\x12%\n" +
	"\x0eroute_revision\x18\t \x01(\x04R\rrouteRevision\x123\n" +
	"\x15projection_generation\x18\n" +
	" \x01(\x04R\x14projectionGeneration\"\x97\x01\n" +
	"\x13AcquireLeaseRequest\x12\x17\n" +
	"\aedge_id\x18\x01 \x01(\tR\x06edgeId\x125\n" +
	"\abinding\x18\x02 \x01(\v2\x1b.iop.CredentialLeaseBindingR\abinding\x120\n" +
	"\x14recipient_public_key\x18\x03 \x01(\fR\x12recipientPublicKey\"^\n" +
	"\x14AcquireLeaseResponse\x120\n" +
	"\x05lease\x18\x01 \x01(\v2\x1a.iop.SignedCredentialLeaseR\x05lease\x12\x14\n" +
	"\x05error\x18\x02 \x01(\tR\x05error\"\x9b\x05\n" +
	"\x13ProviderTunnelFrame\x12\x15\n" +
	"\x06run_id\x18\x01 \x01(\tR\x05runId\x12\x1b\n" +
	"\ttunnel_id\x18\x02 \x01(\tR\btunnelId\x12\x1a\n" +
	"\bsequence\x18\x03 \x01(\x03R\bsequence\x120\n" +
	"\x04kind\x18\x04 \x01(\x0e2\x1c.iop.ProviderTunnelFrameKindR\x04kind\x12\x1f\n" +
	"\vstatus_code\x18\x05 \x01(\x05R\n" +
	"statusCode\x12?\n" +
	"\aheaders\x18\x06 \x03(\v2%.iop.ProviderTunnelFrame.HeadersEntryR\aheaders\x12\x12\n" +
	"\x04body\x18\a \x01(\fR\x04body\x12\x10\n" +
	"\x03end\x18\b \x01(\bR\x03end\x12\x14\n" +
	"\x05error\x18\t \x01(\tR\x05error\x12 \n" +
	"\x05usage\x18\n" +
	" \x01(\v2\n" +
	".iop.UsageR\x05usage\x12B\n" +
	"\bmetadata\x18\v \x03(\v2&.iop.ProviderTunnelFrame.MetadataEntryR\bmetadata\x12\x1c\n" +
	"\ttimestamp\x18\f \x01(\x03R\ttimestamp\x12\x17\n" +
	"\anode_id\x18\r \x01(\tR\x06nodeId\x12\x1d\n" +
	"\n" +
	"node_alias\x18\x0e \x01(\tR\tnodeAlias\x12/\n" +
	"\afailure\x18\x0f \x01(\v2\x15.iop.ExecutionFailureR\afailure\x1a:\n" +
	"\fHeadersEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xb6\x02\n" +
	"\rEdgeNodeEvent\x12\x19\n" +
	"\bevent_id\x18\x01 \x01(\tR\aeventId\x12\x12\n" +
	"\x04type\x18\x02 \x01(\tR\x04type\x12\x16\n" +
	"\x06source\x18\x03 \x01(\tR\x06source\x12\x17\n" +
	"\anode_id\x18\x04 \x01(\tR\x06nodeId\x12\x14\n" +
	"\x05alias\x18\x05 \x01(\tR\x05alias\x12\x16\n" +
	"\x06reason\x18\x06 \x01(\tR\x06reason\x12<\n" +
	"\bmetadata\x18\a \x03(\v2 .iop.EdgeNodeEvent.MetadataEntryR\bmetadata\x12\x1c\n" +
	"\ttimestamp\x18\b \x01(\x03R\ttimestamp\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xdc\x01\n" +
	"\x10ExecutionFailure\x12\x12\n" +
	"\x04code\x18\x01 \x01(\tR\x04code\x12\x18\n" +
	"\amessage\x18\x02 \x01(\tR\amessage\x12\x1c\n" +
	"\tretryable\x18\x03 \x01(\bR\tretryable\x12?\n" +
	"\bmetadata\x18\x04 \x03(\v2#.iop.ExecutionFailure.MetadataEntryR\bmetadata\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\xaa\x01\n" +
	"\x05Usage\x12!\n" +
	"\finput_tokens\x18\x01 \x01(\x05R\vinputTokens\x12#\n" +
	"\routput_tokens\x18\x02 \x01(\x05R\foutputTokens\x12)\n" +
	"\x10reasoning_tokens\x18\x03 \x01(\x05R\x0freasoningTokens\x12.\n" +
	"\x13cached_input_tokens\x18\x04 \x01(\x05R\x11cachedInputTokens\")\n" +
	"\tHeartbeat\x12\x1c\n" +
	"\ttimestamp\x18\x01 \x01(\x03R\ttimestamp\"c\n" +
	"\rCancelRequest\x12\x15\n" +
	"\x06run_id\x18\x01 \x01(\tR\x05runIdJ\x04\b\x02\x10\x03J\x04\b\x03\x10\x04J\x04\b\x04\x10\x05J\x04\b\x05\x10\x06R\aadapterR\x06targetR\n" +
	"session_idR\x06action\"\xcf\x02\n" +
	"\x12NodeCommandRequest\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12(\n" +
	"\x04type\x18\x02 \x01(\x0e2\x14.iop.NodeCommandTypeR\x04type\x12\x18\n" +
	"\aadapter\x18\x03 \x01(\tR\aadapter\x12\x16\n" +
	"\x06target\x18\x04 \x01(\tR\x06target\x12\x1d\n" +
	"\n" +
	"session_id\x18\x05 \x01(\tR\tsessionId\x12\x1f\n" +
	"\vtimeout_sec\x18\x06 \x01(\x05R\n" +
	"timeoutSec\x12A\n" +
	"\bmetadata\x18\a \x03(\v2%.iop.NodeCommandRequest.MetadataEntryR\bmetadata\x1a;\n" +
	"\rMetadataEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"\x98\x03\n" +
	"\x13NodeCommandResponse\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12(\n" +
	"\x04type\x18\x02 \x01(\x0e2\x14.iop.NodeCommandTypeR\x04type\x12\x18\n" +
	"\aadapter\x18\x03 \x01(\tR\aadapter\x12\x16\n" +
	"\x06target\x18\x04 \x01(\tR\x06target\x12\x1d\n" +
	"\n" +
	"session_id\x18\x05 \x01(\tR\tsessionId\x12\x14\n" +
	"\x05error\x18\a \x01(\tR\x05error\x12<\n" +
	"\x06result\x18\b \x03(\v2$.iop.NodeCommandResponse.ResultEntryR\x06result\x12D\n" +
	"\x12provider_snapshots\x18\t \x03(\v2\x15.iop.ProviderSnapshotR\x11providerSnapshots\x1a9\n" +
	"\vResultEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01J\x04\b\x06\x10\aR\fusage_status\"\xe3\x03\n" +
	"\x10ProviderSnapshot\x12\x18\n" +
	"\aadapter\x18\x01 \x01(\tR\aadapter\x12\x16\n" +
	"\x06status\x18\x02 \x01(\tR\x06status\x12\x1a\n" +
	"\bcapacity\x18\x03 \x01(\x05R\bcapacity\x12\x1b\n" +
	"\tin_flight\x18\x04 \x01(\x05R\binFlight\x12\x16\n" +
	"\x06queued\x18\x05 \x01(\x05R\x06queued\x12\x0e\n" +
	"\x02id\x18\x06 \x01(\tR\x02id\x12\x12\n" +
	"\x04type\x18\a \x01(\tR\x04type\x12\x1a\n" +
	"\bcategory\x18\b \x01(\tR\bcategory\x12#\n" +
	"\rserved_models\x18\t \x03(\tR\fservedModels\x12\x16\n" +
	"\x06health\x18\n" +
	" \x01(\tR\x06health\x12\x1d\n" +
	"\n" +
	"load_ratio\x18\v \x01(\x02R\tloadRatio\x125\n" +
	"\x16lifecycle_capabilities\x18\f \x03(\tR\x15lifecycleCapabilities\x122\n" +
	"\x15long_context_capacity\x18\r \x01(\x05R\x13longContextCapacity\x12$\n" +
	"\x0elong_in_flight\x18\x0e \x01(\x05R\flongInFlight\x12\x1f\n" +
	"\vlong_queued\x18\x0f \x01(\x05R\n" +
	"longQueued\"5\n" +
	"\x05Error\x12\x12\n" +
	"\x04code\x18\x01 \x01(\tR\x04code\x12\x18\n" +
	"\amessage\x18\x02 \x01(\tR\amessage\"\xad\x01\n" +
	"\x0fRegisterRequest\x12\x14\n" +
	"\x05token\x18\x01 \x01(\tR\x05token\x12=\n" +
	"\x1bcredential_recipient_key_id\x18\x02 \x01(\tR\x18credentialRecipientKeyId\x12E\n" +
	"\x1fcredential_recipient_public_key\x18\x03 \x01(\fR\x1ccredentialRecipientPublicKey\"\xa5\x01\n" +
	"\x10RegisterResponse\x12\x1a\n" +
	"\baccepted\x18\x01 \x01(\bR\baccepted\x12\x17\n" +
	"\anode_id\x18\x02 \x01(\tR\x06nodeId\x12\x14\n" +
	"\x05alias\x18\x03 \x01(\tR\x05alias\x12\x16\n" +
	"\x06reason\x18\x04 \x01(\tR\x06reason\x12.\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\"\xab\x01\n" +
	"\x11NodeConfigPayload\x12.\n" +
	"\badapters\x18\x01 \x03(\v2\x12.iop.AdapterConfigR\badapters\x120\n" +
	"\aruntime\x18\x02 \x01(\v2\x16.iop.NodeRuntimeConfigR\aruntime\x124\n" +
	"\n" +
	"workspaces\x18\x03 \x03(\v2\x14.iop.WorkspaceConfigR\n" +
	"workspaces\"\\\n" +
	"\x16WorkspaceCommandConfig\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x1e\n" +
	"\n" +
	"executable\x18\x02 \x01(\tR\n" +
	"executable\x12\x12\n" +
	"\x04args\x18\x03 \x03(\tR\x04args\"\xa7\x03\n" +
	"\x0fWorkspaceConfig\x12\x10\n" +
	"\x03ref\x18\x01 \x01(\tR\x03ref\x12\x1a\n" +
	"\bplatform\x18\x02 \x01(\tR\bplatform\x12\x12\n" +
	"\x04root\x18\x03 \x01(\tR\x04root\x127\n" +
	"\n" +
	"operations\x18\x04 \x03(\x0e2\x17.iop.WorkspaceOperationR\n" +
	"operations\x127\n" +
	"\bcommands\x18\x05 \x03(\v2\x1b.iop.WorkspaceCommandConfigR\bcommands\x123\n" +
	"\x15environment_allowlist\x18\x06 \x03(\tR\x14environmentAllowlist\x12$\n" +
	"\x0emax_read_bytes\x18\a \x01(\x03R\fmaxReadBytes\x12&\n" +
	"\x0fmax_write_bytes\x18\b \x01(\x03R\rmaxWriteBytes\x12(\n" +
	"\x10max_output_bytes\x18\t \x01(\x03R\x0emaxOutputBytes\x123\n" +
	"\x16max_command_timeout_ms\x18\n" +
	" \x01(\x03R\x13maxCommandTimeoutMs\"\x80\x03\n" +
	"\x14WorkspaceOpenRequest\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12#\n" +
	"\rworkspace_ref\x18\x02 \x01(\tR\fworkspaceRef\x12\x1d\n" +
	"\n" +
	"timeout_ms\x18\x03 \x01(\x03R\ttimeoutMs\x127\n" +
	"\n" +
	"operations\x18\x04 \x03(\x0e2\x17.iop.WorkspaceOperationR\n" +
	"operations\x12\x1f\n" +
	"\vcommand_ids\x18\x05 \x03(\tR\n" +
	"commandIds\x12$\n" +
	"\x0emax_read_bytes\x18\x06 \x01(\x03R\fmaxReadBytes\x12&\n" +
	"\x0fmax_write_bytes\x18\a \x01(\x03R\rmaxWriteBytes\x12(\n" +
	"\x10max_output_bytes\x18\b \x01(\x03R\x0emaxOutputBytes\x123\n" +
	"\x16max_command_timeout_ms\x18\t \x01(\x03R\x13maxCommandTimeoutMs\"\xd7\x01\n" +
	"\x15WorkspaceOpenResponse\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12#\n" +
	"\rworkspace_ref\x18\x02 \x01(\tR\fworkspaceRef\x12,\n" +
	"\x06status\x18\x03 \x01(\x0e2\x14.iop.WorkspaceStatusR\x06status\x126\n" +
	"\n" +
	"error_code\x18\x04 \x01(\x0e2\x17.iop.WorkspaceErrorCodeR\terrorCode\x12\x14\n" +
	"\x05error\x18\x05 \x01(\tR\x05error\"T\n" +
	"\x13WorkspaceWriteInput\x12#\n" +
	"\rrelative_path\x18\x01 \x01(\tR\frelativePath\x12\x18\n" +
	"\acontent\x18\x02 \x01(\fR\acontent\"\x80\x04\n" +
	"\x14WorkspaceToolRequest\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x19\n" +
	"\bstage_id\x18\x02 \x01(\tR\astageId\x12 \n" +
	"\ftool_call_id\x18\x03 \x01(\tR\n" +
	"toolCallId\x125\n" +
	"\toperation\x18\x04 \x01(\x0e2\x17.iop.WorkspaceOperationR\toperation\x12\x1d\n" +
	"\n" +
	"timeout_ms\x18\x05 \x01(\x03R\ttimeoutMs\x12%\n" +
	"\rrelative_path\x18\x06 \x01(\tH\x00R\frelativePath\x12%\n" +
	"\rwrite_content\x18\a \x01(\fH\x00R\fwriteContent\x12\x1f\n" +
	"\n" +
	"command_id\x18\b \x01(\tH\x00R\tcommandId\x120\n" +
	"\x05write\x18\n" +
	" \x01(\v2\x18.iop.WorkspaceWriteInputH\x00R\x05write\x12L\n" +
	"\venvironment\x18\t \x03(\v2*.iop.WorkspaceToolRequest.EnvironmentEntryR\venvironment\x1a>\n" +
	"\x10EnvironmentEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01B\a\n" +
	"\x05input\"\xaf\x03\n" +
	"\x15WorkspaceToolResponse\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x19\n" +
	"\bstage_id\x18\x02 \x01(\tR\astageId\x12 \n" +
	"\ftool_call_id\x18\x03 \x01(\tR\n" +
	"toolCallId\x12,\n" +
	"\x06status\x18\x04 \x01(\x0e2\x14.iop.WorkspaceStatusR\x06status\x126\n" +
	"\n" +
	"error_code\x18\x05 \x01(\x0e2\x17.iop.WorkspaceErrorCodeR\terrorCode\x12\x14\n" +
	"\x05error\x18\x06 \x01(\tR\x05error\x12\x18\n" +
	"\acontent\x18\a \x01(\fR\acontent\x12\x18\n" +
	"\aentries\x18\b \x03(\tR\aentries\x12\x16\n" +
	"\x06stdout\x18\t \x01(\fR\x06stdout\x12\x16\n" +
	"\x06stderr\x18\n" +
	" \x01(\fR\x06stderr\x12\x1b\n" +
	"\texit_code\x18\v \x01(\x05R\bexitCode\x12\x1c\n" +
	"\ttruncated\x18\f \x01(\bR\ttruncated\x12\x1f\n" +
	"\vduration_ms\x18\r \x01(\x03R\n" +
	"durationMs\"\xc2\x01\n" +
	"\x18WorkspaceArtifactRequest\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12.\n" +
	"\x04kind\x18\x02 \x01(\x0e2\x1a.iop.WorkspaceArtifactKindR\x04kind\x12=\n" +
	"\toperation\x18\x03 \x01(\x0e2\x1f.iop.WorkspaceArtifactOperationR\toperation\x12\x18\n" +
	"\acontent\x18\x04 \x01(\fR\acontent\"\xbf\x02\n" +
	"\x19WorkspaceArtifactResponse\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12.\n" +
	"\x04kind\x18\x02 \x01(\x0e2\x1a.iop.WorkspaceArtifactKindR\x04kind\x12=\n" +
	"\toperation\x18\x03 \x01(\x0e2\x1f.iop.WorkspaceArtifactOperationR\toperation\x12,\n" +
	"\x06status\x18\x04 \x01(\x0e2\x14.iop.WorkspaceStatusR\x06status\x126\n" +
	"\n" +
	"error_code\x18\x05 \x01(\x0e2\x17.iop.WorkspaceErrorCodeR\terrorCode\x12\x14\n" +
	"\x05error\x18\x06 \x01(\tR\x05error\x12\x18\n" +
	"\acontent\x18\a \x01(\fR\acontent\"t\n" +
	"\x16WorkspaceCancelRequest\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x19\n" +
	"\bstage_id\x18\x02 \x01(\tR\astageId\x12 \n" +
	"\ftool_call_id\x18\x03 \x01(\tR\n" +
	"toolCallId\"\xf1\x01\n" +
	"\x17WorkspaceCancelResponse\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12\x19\n" +
	"\bstage_id\x18\x02 \x01(\tR\astageId\x12 \n" +
	"\ftool_call_id\x18\x03 \x01(\tR\n" +
	"toolCallId\x12,\n" +
	"\x06status\x18\x04 \x01(\x0e2\x14.iop.WorkspaceStatusR\x06status\x126\n" +
	"\n" +
	"error_code\x18\x05 \x01(\x0e2\x17.iop.WorkspaceErrorCodeR\terrorCode\x12\x14\n" +
	"\x05error\x18\x06 \x01(\tR\x05error\"8\n" +
	"\x17WorkspaceCleanupRequest\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\"\x8f\x02\n" +
	"\x18WorkspaceCleanupResponse\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12,\n" +
	"\x06status\x18\x02 \x01(\x0e2\x14.iop.WorkspaceStatusR\x06status\x126\n" +
	"\n" +
	"error_code\x18\x03 \x01(\x0e2\x17.iop.WorkspaceErrorCodeR\terrorCode\x12\x14\n" +
	"\x05error\x18\x04 \x01(\tR\x05error\x12+\n" +
	"\x11cleaned_processes\x18\x05 \x01(\x05R\x10cleanedProcesses\x12+\n" +
	"\x11cleaned_artifacts\x18\x06 \x01(\x05R\x10cleanedArtifacts\"\x8a\x03\n" +
	"\rAdapterConfig\x12\x12\n" +
	"\x04type\x18\x01 \x01(\tR\x04type\x12\x18\n" +
	"\aenabled\x18\x02 \x01(\bR\aenabled\x123\n" +
	"\bsettings\x18\x03 \x01(\v2\x17.google.protobuf.StructR\bsettings\x122\n" +
	"\x06ollama\x18\x05 \x01(\v2\x18.iop.OllamaAdapterConfigH\x00R\x06ollama\x12,\n" +
	"\x04vllm\x18\x06 \x01(\v2\x16.iop.VllmAdapterConfigH\x00R\x04vllm\x12,\n" +
	"\x04mock\x18\a \x01(\v2\x16.iop.MockAdapterConfigH\x00R\x04mock\x12E\n" +
	"\ropenai_compat\x18\n" +
	" \x01(\v2\x1e.iop.OpenAICompatAdapterConfigH\x00R\fopenaiCompat\x12\x12\n" +
	"\x04name\x18\b \x01(\tR\x04name\x12\x16\n" +
	"\x06target\x18\t \x01(\tR\x06targetB\b\n" +
	"\x06configJ\x04\b\x04\x10\x05R\x03cli\"\x13\n" +
	"\x11MockAdapterConfig\"\xe4\x01\n" +
	"\x13OllamaAdapterConfig\x12\x19\n" +
	"\bbase_url\x18\x01 \x01(\tR\abaseUrl\x12!\n" +
	"\fcontext_size\x18\x02 \x01(\x05R\vcontextSize\x12\x1a\n" +
	"\bcapacity\x18\x03 \x01(\x05R\bcapacity\x12\x1b\n" +
	"\tmax_queue\x18\x04 \x01(\x05R\bmaxQueue\x12(\n" +
	"\x10queue_timeout_ms\x18\x05 \x01(\x05R\x0equeueTimeoutMs\x12,\n" +
	"\x12request_timeout_ms\x18\x06 \x01(\x05R\x10requestTimeoutMs\"\xc0\x01\n" +
	"\x11VllmAdapterConfig\x12\x1a\n" +
	"\bendpoint\x18\x01 \x01(\tR\bendpoint\x12\x1a\n" +
	"\bcapacity\x18\x02 \x01(\x05R\bcapacity\x12\x1b\n" +
	"\tmax_queue\x18\x03 \x01(\x05R\bmaxQueue\x12(\n" +
	"\x10queue_timeout_ms\x18\x04 \x01(\x05R\x0equeueTimeoutMs\x12,\n" +
	"\x12request_timeout_ms\x18\x05 \x01(\x05R\x10requestTimeoutMs\"\xb0\x03\n" +
	"\x19OpenAICompatAdapterConfig\x12\x1a\n" +
	"\bprovider\x18\x01 \x01(\tR\bprovider\x12\x1a\n" +
	"\bendpoint\x18\x02 \x01(\tR\bendpoint\x12E\n" +
	"\aheaders\x18\x03 \x03(\v2+.iop.OpenAICompatAdapterConfig.HeadersEntryR\aheaders\x12\x1a\n" +
	"\bcapacity\x18\x04 \x01(\x05R\bcapacity\x12\x1b\n" +
	"\tmax_queue\x18\x05 \x01(\x05R\bmaxQueue\x12(\n" +
	"\x10queue_timeout_ms\x18\x06 \x01(\x05R\x0equeueTimeoutMs\x12,\n" +
	"\x12request_timeout_ms\x18\a \x01(\x05R\x10requestTimeoutMs\x12G\n" +
	"\x10protocol_profile\x18\b \x01(\v2\x1c.iop.ConcreteProtocolProfileR\x0fprotocolProfile\x1a:\n" +
	"\fHeadersEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\">\n" +
	"\fProtocolAuth\x12\x16\n" +
	"\x06header\x18\x01 \x01(\tR\x06header\x12\x16\n" +
	"\x06scheme\x18\x02 \x01(\tR\x06scheme\"\x83\x04\n" +
	"\x17ConcreteProtocolProfile\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" +
	"\x06driver\x18\x02 \x01(\tR\x06driver\x12\x19\n" +
	"\bbase_url\x18\x03 \x01(\tR\abaseUrl\x12L\n" +
	"\n" +
	"operations\x18\x04 \x03(\v2,.iop.ConcreteProtocolProfile.OperationsEntryR\n" +
	"operations\x12%\n" +
	"\x04auth\x18\x05 \x01(\v2\x11.iop.ProtocolAuthR\x04auth\x12\"\n" +
	"\fcapabilities\x18\x06 \x03(\tR\fcapabilities\x12S\n" +
	"\rmodel_mapping\x18\a \x03(\v2..iop.ConcreteProtocolProfile.ModelMappingEntryR\fmodelMapping\x127\n" +
	"\n" +
	"extensions\x18\b \x01(\v2\x17.google.protobuf.StructR\n" +
	"extensions\x1a=\n" +
	"\x0fOperationsEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\x1a?\n" +
	"\x11ModelMappingEntry\x12\x10\n" +
	"\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" +
	"\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\";\n" +
	"\x11NodeRuntimeConfig\x12 \n" +
	"\vconcurrency\x18\x01 \x01(\x05R\vconcurrencyJ\x04\b\x02\x10\x03\"\x8e\x01\n" +
	"\x18NodeConfigRefreshRequest\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x12.\n" +
	"\x06config\x18\x02 \x01(\v2\x16.iop.NodeConfigPayloadR\x06config\x12#\n" +
	"\rchanged_paths\x18\x03 \x03(\tR\fchangedPaths\"\xbc\x01\n" +
	"\x19NodeConfigRefreshResponse\x12\x1d\n" +
	"\n" +
	"request_id\x18\x01 \x01(\tR\trequestId\x124\n" +
	"\x06status\x18\x02 \x01(\x0e2\x1c.iop.NodeConfigRefreshStatusR\x06status\x124\n" +
	"\x16restart_required_paths\x18\x03 \x03(\tR\x14restartRequiredPaths\x12\x14\n" +
	"\x05error\x18\x04 \x01(\tR\x05error*\x89\x02\n" +
	"\x17ProviderTunnelFrameKind\x12*\n" +
	"&PROVIDER_TUNNEL_FRAME_KIND_UNSPECIFIED\x10\x00\x12-\n" +
	")PROVIDER_TUNNEL_FRAME_KIND_RESPONSE_START\x10\x01\x12#\n" +
	"\x1fPROVIDER_TUNNEL_FRAME_KIND_BODY\x10\x02\x12\"\n" +
	"\x1ePROVIDER_TUNNEL_FRAME_KIND_END\x10\x03\x12$\n" +
	" PROVIDER_TUNNEL_FRAME_KIND_ERROR\x10\x04\x12$\n" +
	" PROVIDER_TUNNEL_FRAME_KIND_USAGE\x10\x05*\xee\x01\n" +
	"\x0fNodeCommandType\x12!\n" +
	"\x1dNODE_COMMAND_TYPE_UNSPECIFIED\x10\x00\x12\"\n" +
	"\x1eNODE_COMMAND_TYPE_CAPABILITIES\x10\x02\x12&\n" +
	"\"NODE_COMMAND_TYPE_TRANSPORT_STATUS\x10\x04\x12 \n" +
	"\x1cNODE_COMMAND_TYPE_OLLAMA_API\x10\x05\"\x04\b\x01\x10\x01\"\x04\b\x03\x10\x03*\x1eNODE_COMMAND_TYPE_USAGE_STATUS*\x1eNODE_COMMAND_TYPE_SESSION_LIST*\xd5\x01\n" +
	"\x12WorkspaceOperation\x12#\n" +
	"\x1fWORKSPACE_OPERATION_UNSPECIFIED\x10\x00\x12\x1c\n" +
	"\x18WORKSPACE_OPERATION_READ\x10\x01\x12\x1c\n" +
	"\x18WORKSPACE_OPERATION_LIST\x10\x02\x12\x1d\n" +
	"\x19WORKSPACE_OPERATION_WRITE\x10\x03\x12\x1e\n" +
	"\x1aWORKSPACE_OPERATION_DELETE\x10\x04\x12\x1f\n" +
	"\x1bWORKSPACE_OPERATION_COMMAND\x10\x05*\xcd\x01\n" +
	"\x0fWorkspaceStatus\x12 \n" +
	"\x1cWORKSPACE_STATUS_UNSPECIFIED\x10\x00\x12\x1c\n" +
	"\x18WORKSPACE_STATUS_SUCCESS\x10\x01\x12\x1a\n" +
	"\x16WORKSPACE_STATUS_ERROR\x10\x02\x12\x1c\n" +
	"\x18WORKSPACE_STATUS_TIMEOUT\x10\x03\x12\x1e\n" +
	"\x1aWORKSPACE_STATUS_CANCELLED\x10\x04\x12 \n" +
	"\x1cWORKSPACE_STATUS_UNSUPPORTED\x10\x05*\xbb\x02\n" +
	"\x12WorkspaceErrorCode\x12$\n" +
	" WORKSPACE_ERROR_CODE_UNSPECIFIED\x10\x00\x12\"\n" +
	"\x1eWORKSPACE_ERROR_CODE_NOT_READY\x10\x01\x12$\n" +
	" WORKSPACE_ERROR_CODE_UNSUPPORTED\x10\x02\x12(\n" +
	"$WORKSPACE_ERROR_CODE_INVALID_REQUEST\x10\x03\x12\"\n" +
	"\x1eWORKSPACE_ERROR_CODE_NOT_FOUND\x10\x04\x12 \n" +
	"\x1cWORKSPACE_ERROR_CODE_TIMEOUT\x10\x05\x12\"\n" +
	"\x1eWORKSPACE_ERROR_CODE_CANCELLED\x10\x06\x12!\n" +
	"\x1dWORKSPACE_ERROR_CODE_INTERNAL\x10\a*\x86\x01\n" +
	"\x15WorkspaceArtifactKind\x12'\n" +
	"#WORKSPACE_ARTIFACT_KIND_UNSPECIFIED\x10\x00\x12 \n" +
	"\x1cWORKSPACE_ARTIFACT_KIND_PLAN\x10\x01\x12\"\n" +
	"\x1eWORKSPACE_ARTIFACT_KIND_REVIEW\x10\x02*\x99\x01\n" +
	"\x1aWorkspaceArtifactOperation\x12,\n" +
	"(WORKSPACE_ARTIFACT_OPERATION_UNSPECIFIED\x10\x00\x12%\n" +
	"!WORKSPACE_ARTIFACT_OPERATION_READ\x10\x01\x12&\n" +
	"\"WORKSPACE_ARTIFACT_OPERATION_WRITE\x10\x02*\xed\x01\n" +
	"\x17NodeConfigRefreshStatus\x12*\n" +
	"&NODE_CONFIG_REFRESH_STATUS_UNSPECIFIED\x10\x00\x12&\n" +
	"\"NODE_CONFIG_REFRESH_STATUS_APPLIED\x10\x01\x12/\n" +
	"+NODE_CONFIG_REFRESH_STATUS_RESTART_REQUIRED\x10\x02\x12%\n" +
	"!NODE_CONFIG_REFRESH_STATUS_FAILED\x10\x03\x12&\n" +
	"\"NODE_CONFIG_REFRESH_STATUS_SKIPPED\x10\x04B\x13Z\x11iop/proto/gen/iopb\x06proto3"

var (
	file_proto_iop_runtime_proto_rawDescOnce sync.Once
	file_proto_iop_runtime_proto_rawDescData []byte
)

func file_proto_iop_runtime_proto_rawDescGZIP() []byte {
	file_proto_iop_runtime_proto_rawDescOnce.Do(func() {
		file_proto_iop_runtime_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_proto_iop_runtime_proto_rawDesc), len(file_proto_iop_runtime_proto_rawDesc)))
	})
	return file_proto_iop_runtime_proto_rawDescData
}

var file_proto_iop_runtime_proto_enumTypes = make([]protoimpl.EnumInfo, 8)
var file_proto_iop_runtime_proto_msgTypes = make([]protoimpl.MessageInfo, 60)
var file_proto_iop_runtime_proto_goTypes = []any{
	(ProviderTunnelFrameKind)(0),      // 0: iop.ProviderTunnelFrameKind
	(NodeCommandType)(0),              // 1: iop.NodeCommandType
	(WorkspaceOperation)(0),           // 2: iop.WorkspaceOperation
	(WorkspaceStatus)(0),              // 3: iop.WorkspaceStatus
	(WorkspaceErrorCode)(0),           // 4: iop.WorkspaceErrorCode
	(WorkspaceArtifactKind)(0),        // 5: iop.WorkspaceArtifactKind
	(WorkspaceArtifactOperation)(0),   // 6: iop.WorkspaceArtifactOperation
	(NodeConfigRefreshStatus)(0),      // 7: iop.NodeConfigRefreshStatus
	(*RunRequest)(nil),                // 8: iop.RunRequest
	(*RunEvent)(nil),                  // 9: iop.RunEvent
	(*ProviderTunnelRequest)(nil),     // 10: iop.ProviderTunnelRequest
	(*CredentialLeaseScope)(nil),      // 11: iop.CredentialLeaseScope
	(*SignedCredentialLease)(nil),     // 12: iop.SignedCredentialLease
	(*CredentialLeaseBinding)(nil),    // 13: iop.CredentialLeaseBinding
	(*AcquireLeaseRequest)(nil),       // 14: iop.AcquireLeaseRequest
	(*AcquireLeaseResponse)(nil),      // 15: iop.AcquireLeaseResponse
	(*ProviderTunnelFrame)(nil),       // 16: iop.ProviderTunnelFrame
	(*EdgeNodeEvent)(nil),             // 17: iop.EdgeNodeEvent
	(*ExecutionFailure)(nil),          // 18: iop.ExecutionFailure
	(*Usage)(nil),                     // 19: iop.Usage
	(*Heartbeat)(nil),                 // 20: iop.Heartbeat
	(*CancelRequest)(nil),             // 21: iop.CancelRequest
	(*NodeCommandRequest)(nil),        // 22: iop.NodeCommandRequest
	(*NodeCommandResponse)(nil),       // 23: iop.NodeCommandResponse
	(*ProviderSnapshot)(nil),          // 24: iop.ProviderSnapshot
	(*Error)(nil),                     // 25: iop.Error
	(*RegisterRequest)(nil),           // 26: iop.RegisterRequest
	(*RegisterResponse)(nil),          // 27: iop.RegisterResponse
	(*NodeReadyRequest)(nil),          // 28: iop.NodeReadyRequest
	(*NodeReadyResponse)(nil),         // 29: iop.NodeReadyResponse
	(*NodeConfigPayload)(nil),         // 30: iop.NodeConfigPayload
	(*WorkspaceCommandConfig)(nil),    // 31: iop.WorkspaceCommandConfig
	(*WorkspaceConfig)(nil),           // 32: iop.WorkspaceConfig
	(*WorkspaceOpenRequest)(nil),      // 33: iop.WorkspaceOpenRequest
	(*WorkspaceOpenResponse)(nil),     // 34: iop.WorkspaceOpenResponse
	(*WorkspaceWriteInput)(nil),       // 35: iop.WorkspaceWriteInput
	(*WorkspaceToolRequest)(nil),      // 36: iop.WorkspaceToolRequest
	(*WorkspaceToolResponse)(nil),     // 37: iop.WorkspaceToolResponse
	(*WorkspaceArtifactRequest)(nil),  // 38: iop.WorkspaceArtifactRequest
	(*WorkspaceArtifactResponse)(nil), // 39: iop.WorkspaceArtifactResponse
	(*WorkspaceCancelRequest)(nil),    // 40: iop.WorkspaceCancelRequest
	(*WorkspaceCancelResponse)(nil),   // 41: iop.WorkspaceCancelResponse
	(*WorkspaceCleanupRequest)(nil),   // 42: iop.WorkspaceCleanupRequest
	(*WorkspaceCleanupResponse)(nil),  // 43: iop.WorkspaceCleanupResponse
	(*AdapterConfig)(nil),             // 44: iop.AdapterConfig
	(*MockAdapterConfig)(nil),         // 45: iop.MockAdapterConfig
	(*OllamaAdapterConfig)(nil),       // 46: iop.OllamaAdapterConfig
	(*VllmAdapterConfig)(nil),         // 47: iop.VllmAdapterConfig
	(*OpenAICompatAdapterConfig)(nil), // 48: iop.OpenAICompatAdapterConfig
	(*ProtocolAuth)(nil),              // 49: iop.ProtocolAuth
	(*ConcreteProtocolProfile)(nil),   // 50: iop.ConcreteProtocolProfile
	(*NodeRuntimeConfig)(nil),         // 51: iop.NodeRuntimeConfig
	(*NodeConfigRefreshRequest)(nil),  // 52: iop.NodeConfigRefreshRequest
	(*NodeConfigRefreshResponse)(nil), // 53: iop.NodeConfigRefreshResponse
	nil,                               // 54: iop.RunRequest.MetadataEntry
	nil,                               // 55: iop.RunEvent.MetadataEntry
	nil,                               // 56: iop.ProviderTunnelRequest.HeadersEntry
	nil,                               // 57: iop.ProviderTunnelRequest.MetadataEntry
	nil,                               // 58: iop.ProviderTunnelFrame.HeadersEntry
	nil,                               // 59: iop.ProviderTunnelFrame.MetadataEntry
	nil,                               // 60: iop.EdgeNodeEvent.MetadataEntry
	nil,                               // 61: iop.ExecutionFailure.MetadataEntry
	nil,                               // 62: iop.NodeCommandRequest.MetadataEntry
	nil,                               // 63: iop.NodeCommandResponse.ResultEntry
	nil,                               // 64: iop.WorkspaceToolRequest.EnvironmentEntry
	nil,                               // 65: iop.OpenAICompatAdapterConfig.HeadersEntry
	nil,                               // 66: iop.ConcreteProtocolProfile.OperationsEntry
	nil,                               // 67: iop.ConcreteProtocolProfile.ModelMappingEntry
	(*structpb.Struct)(nil),           // 68: google.protobuf.Struct
}
var file_proto_iop_runtime_proto_depIdxs = []int32{
	68, // 0: iop.RunRequest.policy:type_name -> google.protobuf.Struct
	68, // 1: iop.RunRequest.input:type_name -> google.protobuf.Struct
	54, // 2: iop.RunRequest.metadata:type_name -> iop.RunRequest.MetadataEntry
	19, // 3: iop.RunEvent.usage:type_name -> iop.Usage
	55, // 4: iop.RunEvent.metadata:type_name -> iop.RunEvent.MetadataEntry
	18, // 5: iop.RunEvent.failure:type_name -> iop.ExecutionFailure
	56, // 6: iop.ProviderTunnelRequest.headers:type_name -> iop.ProviderTunnelRequest.HeadersEntry
	57, // 7: iop.ProviderTunnelRequest.metadata:type_name -> iop.ProviderTunnelRequest.MetadataEntry
	12, // 8: iop.ProviderTunnelRequest.credential_lease:type_name -> iop.SignedCredentialLease
	13, // 9: iop.ProviderTunnelRequest.credential_binding:type_name -> iop.CredentialLeaseBinding
	11, // 10: iop.SignedCredentialLease.scope:type_name -> iop.CredentialLeaseScope
	13, // 11: iop.AcquireLeaseRequest.binding:type_name -> iop.CredentialLeaseBinding
	12, // 12: iop.AcquireLeaseResponse.lease:type_name -> iop.SignedCredentialLease
	0,  // 13: iop.ProviderTunnelFrame.kind:type_name -> iop.ProviderTunnelFrameKind
	58, // 14: iop.ProviderTunnelFrame.headers:type_name -> iop.ProviderTunnelFrame.HeadersEntry
	19, // 15: iop.ProviderTunnelFrame.usage:type_name -> iop.Usage
	59, // 16: iop.ProviderTunnelFrame.metadata:type_name -> iop.ProviderTunnelFrame.MetadataEntry
	18, // 17: iop.ProviderTunnelFrame.failure:type_name -> iop.ExecutionFailure
	60, // 18: iop.EdgeNodeEvent.metadata:type_name -> iop.EdgeNodeEvent.MetadataEntry
	61, // 19: iop.ExecutionFailure.metadata:type_name -> iop.ExecutionFailure.MetadataEntry
	1,  // 20: iop.NodeCommandRequest.type:type_name -> iop.NodeCommandType
	62, // 21: iop.NodeCommandRequest.metadata:type_name -> iop.NodeCommandRequest.MetadataEntry
	1,  // 22: iop.NodeCommandResponse.type:type_name -> iop.NodeCommandType
	63, // 23: iop.NodeCommandResponse.result:type_name -> iop.NodeCommandResponse.ResultEntry
	24, // 24: iop.NodeCommandResponse.provider_snapshots:type_name -> iop.ProviderSnapshot
	30, // 25: iop.RegisterResponse.config:type_name -> iop.NodeConfigPayload
	44, // 26: iop.NodeConfigPayload.adapters:type_name -> iop.AdapterConfig
	51, // 27: iop.NodeConfigPayload.runtime:type_name -> iop.NodeRuntimeConfig
	32, // 28: iop.NodeConfigPayload.workspaces:type_name -> iop.WorkspaceConfig
	2,  // 29: iop.WorkspaceConfig.operations:type_name -> iop.WorkspaceOperation
	31, // 30: iop.WorkspaceConfig.commands:type_name -> iop.WorkspaceCommandConfig
	2,  // 31: iop.WorkspaceOpenRequest.operations:type_name -> iop.WorkspaceOperation
	3,  // 32: iop.WorkspaceOpenResponse.status:type_name -> iop.WorkspaceStatus
	4,  // 33: iop.WorkspaceOpenResponse.error_code:type_name -> iop.WorkspaceErrorCode
	2,  // 34: iop.WorkspaceToolRequest.operation:type_name -> iop.WorkspaceOperation
	35, // 35: iop.WorkspaceToolRequest.write:type_name -> iop.WorkspaceWriteInput
	64, // 36: iop.WorkspaceToolRequest.environment:type_name -> iop.WorkspaceToolRequest.EnvironmentEntry
	3,  // 37: iop.WorkspaceToolResponse.status:type_name -> iop.WorkspaceStatus
	4,  // 38: iop.WorkspaceToolResponse.error_code:type_name -> iop.WorkspaceErrorCode
	5,  // 39: iop.WorkspaceArtifactRequest.kind:type_name -> iop.WorkspaceArtifactKind
	6,  // 40: iop.WorkspaceArtifactRequest.operation:type_name -> iop.WorkspaceArtifactOperation
	5,  // 41: iop.WorkspaceArtifactResponse.kind:type_name -> iop.WorkspaceArtifactKind
	6,  // 42: iop.WorkspaceArtifactResponse.operation:type_name -> iop.WorkspaceArtifactOperation
	3,  // 43: iop.WorkspaceArtifactResponse.status:type_name -> iop.WorkspaceStatus
	4,  // 44: iop.WorkspaceArtifactResponse.error_code:type_name -> iop.WorkspaceErrorCode
	3,  // 45: iop.WorkspaceCancelResponse.status:type_name -> iop.WorkspaceStatus
	4,  // 46: iop.WorkspaceCancelResponse.error_code:type_name -> iop.WorkspaceErrorCode
	3,  // 47: iop.WorkspaceCleanupResponse.status:type_name -> iop.WorkspaceStatus
	4,  // 48: iop.WorkspaceCleanupResponse.error_code:type_name -> iop.WorkspaceErrorCode
	68, // 49: iop.AdapterConfig.settings:type_name -> google.protobuf.Struct
	46, // 50: iop.AdapterConfig.ollama:type_name -> iop.OllamaAdapterConfig
	47, // 51: iop.AdapterConfig.vllm:type_name -> iop.VllmAdapterConfig
	45, // 52: iop.AdapterConfig.mock:type_name -> iop.MockAdapterConfig
	48, // 53: iop.AdapterConfig.openai_compat:type_name -> iop.OpenAICompatAdapterConfig
	65, // 54: iop.OpenAICompatAdapterConfig.headers:type_name -> iop.OpenAICompatAdapterConfig.HeadersEntry
	50, // 55: iop.OpenAICompatAdapterConfig.protocol_profile:type_name -> iop.ConcreteProtocolProfile
	66, // 56: iop.ConcreteProtocolProfile.operations:type_name -> iop.ConcreteProtocolProfile.OperationsEntry
	49, // 57: iop.ConcreteProtocolProfile.auth:type_name -> iop.ProtocolAuth
	67, // 58: iop.ConcreteProtocolProfile.model_mapping:type_name -> iop.ConcreteProtocolProfile.ModelMappingEntry
	68, // 59: iop.ConcreteProtocolProfile.extensions:type_name -> google.protobuf.Struct
	30, // 60: iop.NodeConfigRefreshRequest.config:type_name -> iop.NodeConfigPayload
	7,  // 61: iop.NodeConfigRefreshResponse.status:type_name -> iop.NodeConfigRefreshStatus
	62, // [62:62] is the sub-list for method output_type
	62, // [62:62] is the sub-list for method input_type
	62, // [62:62] is the sub-list for extension type_name
	62, // [62:62] is the sub-list for extension extendee
	0,  // [0:62] is the sub-list for field type_name
}

func init() { file_proto_iop_runtime_proto_init() }
func file_proto_iop_runtime_proto_init() {
	if File_proto_iop_runtime_proto != nil {
		return
	}
	file_proto_iop_runtime_proto_msgTypes[28].OneofWrappers = []any{
		(*WorkspaceToolRequest_RelativePath)(nil),
		(*WorkspaceToolRequest_WriteContent)(nil),
		(*WorkspaceToolRequest_CommandId)(nil),
		(*WorkspaceToolRequest_Write)(nil),
	}
	file_proto_iop_runtime_proto_msgTypes[36].OneofWrappers = []any{
		(*AdapterConfig_Ollama)(nil),
		(*AdapterConfig_Vllm)(nil),
		(*AdapterConfig_Mock)(nil),
		(*AdapterConfig_OpenaiCompat)(nil),
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_proto_iop_runtime_proto_rawDesc), len(file_proto_iop_runtime_proto_rawDesc)),
			NumEnums:      8,
			NumMessages:   60,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_proto_iop_runtime_proto_goTypes,
		DependencyIndexes: file_proto_iop_runtime_proto_depIdxs,
		EnumInfos:         file_proto_iop_runtime_proto_enumTypes,
		MessageInfos:      file_proto_iop_runtime_proto_msgTypes,
	}.Build()
	File_proto_iop_runtime_proto = out.File
	file_proto_iop_runtime_proto_goTypes = nil
	file_proto_iop_runtime_proto_depIdxs = nil
}
