v1alpha1

package
v0.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 21, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the core v1alpha1 API group. +kubebuilder:object:generate=true +groupName=core.orka.ai

Index

Constants

View Source
const (
	// ControlRecordArtifactRetentionFinalizer prevents deletion while a control
	// record can still retain or reconcile a content-addressed artifact.
	ControlRecordArtifactRetentionFinalizer = "core.orka.ai/artifact-retention"
	// ControlRecordLeaseProtectionFinalizer prevents deletion of a control record
	// while a Kubernetes Lease still fences mutations for that record.
	ControlRecordLeaseProtectionFinalizer = "core.orka.ai/lease-protection"

	// ControlRecordIDHashLabel stores a DNS-safe digest of the immutable logical
	// record ID so namespaced records can be found without trusting mutable data.
	ControlRecordIDHashLabel = "core.orka.ai/control-record-id-hash"
	// ControlRecordTaskUIDLabel associates a controller-owned record with the
	// immutable UID of the Task that caused it to be created.
	ControlRecordTaskUIDLabel = "core.orka.ai/task-uid"
)
View Source
const (
	OutboundAccessPolicyConditionAccepted     = "Accepted"
	OutboundAccessPolicyConditionResolvedRefs = "ResolvedRefs"

	OutboundGrantTokenExchange = "TokenExchange"
	OutboundGrantJWTBearer     = "JWTBearer"

	OutboundTokenSourceTransactionToken = "TransactionToken"
	OutboundTokenSourceServiceAccount   = "ServiceAccount"
	OutboundTokenSourceSecretRef        = "SecretRef"

	OutboundClientAuthNone          = "None"
	OutboundClientAuthSecretBasic   = "ClientSecretBasic"
	OutboundClientAuthSecretPost    = "ClientSecretPost"
	OutboundClientAuthPrivateKeyJWT = "PrivateKeyJWT"
)
View Source
const (
	// DefaultRuntimePoolDesiredReplicas keeps an idle pool scaled to zero until
	// durable demand is present.
	DefaultRuntimePoolDesiredReplicas int32 = 0
	// DefaultRuntimePoolMaxResidentSessions is the first-release per-pool
	// resident-session limit.
	DefaultRuntimePoolMaxResidentSessions int32 = 10
	// DefaultRuntimePoolMaxRunningPrompts is the first-release per-pool prompt
	// concurrency limit.
	DefaultRuntimePoolMaxRunningPrompts int32 = 4
	// DefaultRuntimePoolColdStartTimeoutSeconds bounds a 0 -> 1 pool startup.
	DefaultRuntimePoolColdStartTimeoutSeconds int32 = 120
	// MaxRuntimePoolCapacityReservations bounds the durable reservation list in
	// RuntimePool status. RuntimePool capacity is itself limited to 1000.
	MaxRuntimePoolCapacityReservations = 1000
)
View Source
const (
	// RuntimePoolConditionAdmissionReady reports whether new RuntimeSessions may
	// be admitted without violating lifecycle, fencing, or capacity rules.
	RuntimePoolConditionAdmissionReady = "AdmissionReady"
	// RuntimePoolConditionPodSecurityReady reports whether the runtime Pod passes
	// the selected namespace's Pod Security admission requirements.
	RuntimePoolConditionPodSecurityReady = "PodSecurityReady"
	// RuntimePoolConditionQuotaReady reports whether quota permits the pool's
	// controller-owned resources.
	RuntimePoolConditionQuotaReady = "QuotaReady"
	// RuntimePoolConditionSchedulingReady reports whether the selected runtime
	// Pod can be scheduled.
	RuntimePoolConditionSchedulingReady = "SchedulingReady"
	// RuntimePoolConditionRolloutReady reports whether the immutable runtime
	// profile has been installed without version skew.
	RuntimePoolConditionRolloutReady = "RolloutReady"
)
View Source
const (
	RuntimePoolReasonAdmissionClosed     = "AdmissionClosed"
	RuntimePoolReasonAtCapacity          = "AtCapacity"
	RuntimePoolReasonPodSecurityRejected = "PodSecurityRejected"
	RuntimePoolReasonQuotaRejected       = "QuotaRejected"
	RuntimePoolReasonSchedulingFailed    = "SchedulingFailed"
	RuntimePoolReasonRolloutFailed       = "RolloutFailed"
	RuntimePoolReasonRuntimeAmbiguous    = "RuntimeAmbiguous"
)
View Source
const (
	SubstrateActorPoolPhasePending SubstrateActorPoolPhase = "Pending"
	SubstrateActorPoolPhaseReady   SubstrateActorPoolPhase = "Ready"
	SubstrateActorPoolPhaseFailed  SubstrateActorPoolPhase = "Failed"

	// MaxSubstrateActorPoolTargetActors bounds per-pool actor reconciliation work.
	MaxSubstrateActorPoolTargetActors int32 = 1000
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects.
	GroupVersion = schema.GroupVersion{Group: "core.orka.ai", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme.
	SchemeBuilder = &schemeBuilder{groupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type AISpec

type AISpec struct {
	// ProviderRef references a Provider CRD for LLM configuration
	// If set, provider and model fields are optional (defaults from Provider)
	// +optional
	ProviderRef *ProviderReference `json:"providerRef,omitempty"`

	// Provider is the LLM provider (anthropic, openai) - required if providerRef not set
	// +kubebuilder:validation:Enum=anthropic;openai
	// +optional
	Provider string `json:"provider,omitempty"`

	// Model is the model identifier - required if providerRef not set
	// +optional
	Model string `json:"model,omitempty"`

	// Prompt is the user prompt for the AI task
	// +optional
	Prompt string `json:"prompt,omitempty"`

	// SystemPrompt is an optional system prompt
	// +optional
	SystemPrompt string `json:"systemPrompt,omitempty"`

	// Temperature controls randomness in generation
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=2
	// +optional
	Temperature *float64 `json:"temperature,omitempty"`

	// MaxTokens limits the response length
	// +optional
	MaxTokens *int32 `json:"maxTokens,omitempty"`

	// Skills references Skill CRDs to inject into the agent's system prompt
	// +optional
	Skills []SkillReference `json:"skills,omitempty"`

	// Tools lists the tools available for this task
	// +optional
	Tools []string `json:"tools,omitempty"`
}

AISpec defines AI-specific configuration

func (*AISpec) DeepCopy

func (in *AISpec) DeepCopy() *AISpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AISpec.

func (*AISpec) DeepCopyInto

func (in *AISpec) DeepCopyInto(out *AISpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Agent

type Agent struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   AgentSpec   `json:"spec,omitempty"`
	Status AgentStatus `json:"status,omitempty"`
}

Agent is the Schema for the agents API

func (*Agent) BuiltInContractVersion added in v0.2.0

func (in *Agent) BuiltInContractVersion() AgentRuntimeContractVersion

BuiltInContractVersion returns the Agent's explicit built-in harness protocol selector, or empty when unclassified. Callers must treat empty as neither protocol and fail closed; runtime.type alone is never protocol evidence.

func (*Agent) DeepCopy

func (in *Agent) DeepCopy() *Agent

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Agent.

func (*Agent) DeepCopyInto

func (in *Agent) DeepCopyInto(out *Agent)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Agent) DeepCopyObject

func (in *Agent) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AgentCLIRuntime

type AgentCLIRuntime struct {
	// Type specifies which built-in CLI runtime to use. Use runtimeRef for admin-registered custom runtimes.
	// +optional
	Type AgentRuntimeType `json:"type,omitempty"`

	// ContractVersion is the harness protocol selector for built-in runtime
	// types. It may be omitted: the namespace is bound to exactly one
	// execution mode, so an omitted selector means that mode. An explicit
	// value must match the namespace mode and, once written, never changes.
	// runtime.type alone (including opencode, which exists in both protocols)
	// is never protocol evidence.
	// +optional
	ContractVersion *AgentRuntimeContractVersion `json:"contractVersion,omitempty"`

	// RuntimeRef selects an admin-governed AgentRuntime for custom/BYO harness runtimes.
	// +optional
	RuntimeRef *AgentRuntimeReference `json:"runtimeRef,omitempty"`

	// DefaultMaxTurns is the default maximum agent loop iterations for tasks using this Agent
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=1000
	// +optional
	DefaultMaxTurns *int32 `json:"defaultMaxTurns,omitempty"`

	// DefaultAllowedTools lists the default tools allowed for tasks using this Agent
	// +optional
	DefaultAllowedTools []string `json:"defaultAllowedTools,omitempty"`

	// DefaultAllowBash controls whether bash is allowed by default for tasks using this Agent.
	// Defaults to true if not specified.
	// +optional
	DefaultAllowBash *bool `json:"defaultAllowBash,omitempty"`

	// DefaultReasoningEffort configures the CLI runtime reasoning effort for tasks using this Agent.
	// Runtime adapters reject values they do not support (for example, Codex does not support max).
	// +kubebuilder:validation:Enum=low;medium;high;xhigh;max
	// +optional
	DefaultReasoningEffort string `json:"defaultReasoningEffort,omitempty"`
}

AgentCLIRuntime defines agent CLI runtime configuration for an Agent. +kubebuilder:validation:XValidation:rule="has(self.type) != has(self.runtimeRef)",message="exactly one of type or runtimeRef is required" +kubebuilder:validation:XValidation:rule="!has(oldSelf.contractVersion) || (has(self.contractVersion) && self.contractVersion == oldSelf.contractVersion)",message="runtime.contractVersion is immutable once set" +kubebuilder:validation:XValidation:rule="!has(self.contractVersion) || has(self.type)",message="runtime.contractVersion applies only to built-in runtime types; runtimeRef derives the protocol from the referenced AgentRuntime"

func (*AgentCLIRuntime) DeepCopy

func (in *AgentCLIRuntime) DeepCopy() *AgentCLIRuntime

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentCLIRuntime.

func (*AgentCLIRuntime) DeepCopyInto

func (in *AgentCLIRuntime) DeepCopyInto(out *AgentCLIRuntime)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (AgentCLIRuntime) MarshalJSON added in v0.2.0

func (in AgentCLIRuntime) MarshalJSON() ([]byte, error)

MarshalJSON preserves the distinction between an omitted tool allowlist and an explicitly empty deny-all allowlist. The standard omitempty handling for slices would otherwise serialize both states as omission.

type AgentExecutionAgentRef added in v0.2.0

type AgentExecutionAgentRef struct {
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Namespace string `json:"namespace"`

	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// +kubebuilder:validation:Required
	UID types.UID `json:"uid"`

	// +kubebuilder:validation:Minimum=1
	Generation int64 `json:"generation"`
}

AgentExecutionAgentRef pins the exact Agent identity resolved at binding.

func (*AgentExecutionAgentRef) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentExecutionAgentRef.

func (*AgentExecutionAgentRef) DeepCopyInto added in v0.2.0

func (in *AgentExecutionAgentRef) DeepCopyInto(out *AgentExecutionAgentRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentExecutionBackend added in v0.2.0

type AgentExecutionBackend string

AgentExecutionBackend identifies the isolated execution dispatcher backend. +kubebuilder:validation:Enum=harness-wrapper;runtime-pool;external-endpoint

const (
	// AgentExecutionBackendHarnessWrapper is the built-in harness v1 wrapper.
	AgentExecutionBackendHarnessWrapper AgentExecutionBackend = "harness-wrapper"
	// AgentExecutionBackendRuntimePool is the managed ACP v2 RuntimePool path.
	AgentExecutionBackendRuntimePool AgentExecutionBackend = "runtime-pool"
	// AgentExecutionBackendExternalEndpoint is an external AgentRuntime endpoint.
	AgentExecutionBackendExternalEndpoint AgentExecutionBackend = "external-endpoint"
)

type AgentExecutionBinding added in v0.2.0

type AgentExecutionBinding struct {
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=1
	SchemaVersion int32 `json:"schemaVersion"`

	// ContractVersion is the frozen execution protocol for the Task lifetime.
	// +kubebuilder:validation:Required
	ContractVersion AgentRuntimeContractVersion `json:"contractVersion"`

	// +kubebuilder:validation:Required
	Backend AgentExecutionBackend `json:"backend"`

	// BindingDigest is the canonical digest of this binding; every durable
	// demand, attempt, turn, Session lease, publication, and cleanup record
	// copies it.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	BindingDigest string `json:"bindingDigest"`

	// +kubebuilder:validation:Required
	Task AgentExecutionBindingTaskRef `json:"task"`

	// +optional
	Agent *AgentExecutionAgentRef `json:"agent,omitempty"`

	// +kubebuilder:validation:Required
	Snapshot AgentExecutionSnapshotRef `json:"snapshot"`

	// RuntimeType is the built-in runtime type, empty for runtimeRef bindings.
	// +optional
	RuntimeType AgentRuntimeType `json:"runtimeType,omitempty"`

	// +optional
	RuntimeRef *AgentExecutionRuntimeRef `json:"runtimeRef,omitempty"`

	// +optional
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RuntimeProfileDigest string `json:"runtimeProfileDigest,omitempty"`

	// +optional
	// +kubebuilder:validation:Enum=1
	RuntimeProfileDigestSchemaVersion int32 `json:"runtimeProfileDigestSchemaVersion,omitempty"`

	// +kubebuilder:validation:Required
	BoundAt metav1.Time `json:"boundAt"`
}

AgentExecutionBinding is the controller-owned, write-once, immutable execution binding for one executable agent Task. It is authoritative for routing, recovery, cancellation, terminal settlement, and finalization, and is preserved across retries. Dispatchers build requests only from the referenced immutable snapshot. +kubebuilder:validation:XValidation:rule="self.backend != 'harness-wrapper' || self.contractVersion == 'orka.harness.v1'",message="the harness-wrapper backend requires an orka.harness.v1 binding" +kubebuilder:validation:XValidation:rule="self.backend != 'runtime-pool' || self.contractVersion == 'orka.harness.v2'",message="the runtime-pool backend requires an orka.harness.v2 binding"

func (*AgentExecutionBinding) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentExecutionBinding.

func (*AgentExecutionBinding) DeepCopyInto added in v0.2.0

func (in *AgentExecutionBinding) DeepCopyInto(out *AgentExecutionBinding)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentExecutionBindingTaskRef added in v0.2.0

type AgentExecutionBindingTaskRef struct {
	// NamespaceUID is the UID of the Task namespace, preventing same-name
	// namespace recreation from satisfying old identities.
	// +kubebuilder:validation:Required
	NamespaceUID types.UID `json:"namespaceUID"`

	// +kubebuilder:validation:Required
	UID types.UID `json:"uid"`

	// BoundSpecGeneration is the Task spec generation frozen into the snapshot.
	// +kubebuilder:validation:Minimum=1
	BoundSpecGeneration int64 `json:"boundSpecGeneration"`
}

AgentExecutionBindingTaskRef pins the bound Task identity.

func (*AgentExecutionBindingTaskRef) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentExecutionBindingTaskRef.

func (*AgentExecutionBindingTaskRef) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentExecutionRuntimeRef added in v0.2.0

type AgentExecutionRuntimeRef struct {
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// +kubebuilder:validation:Required
	UID types.UID `json:"uid"`

	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Minimum=1
	Generation int64 `json:"generation"`
}

AgentExecutionRuntimeRef pins a referenced AgentRuntime identity.

func (*AgentExecutionRuntimeRef) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentExecutionRuntimeRef.

func (*AgentExecutionRuntimeRef) DeepCopyInto added in v0.2.0

func (in *AgentExecutionRuntimeRef) DeepCopyInto(out *AgentExecutionRuntimeRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentExecutionSnapshotRef added in v0.2.0

type AgentExecutionSnapshotRef struct {
	// ID is the snapshot identity in the form <task-uid>/sha256:<digest>.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	ID string `json:"id"`

	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	Digest string `json:"digest"`

	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=1
	SchemaVersion int32 `json:"schemaVersion"`
}

AgentExecutionSnapshotRef links the immutable non-secret execution snapshot.

func (*AgentExecutionSnapshotRef) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentExecutionSnapshotRef.

func (*AgentExecutionSnapshotRef) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentList

type AgentList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Agent `json:"items"`
}

AgentList contains a list of Agent

func (*AgentList) DeepCopy

func (in *AgentList) DeepCopy() *AgentList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentList.

func (*AgentList) DeepCopyInto

func (in *AgentList) DeepCopyInto(out *AgentList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AgentList) DeepCopyObject

func (in *AgentList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AgentReference

type AgentReference struct {
	// Name is the name of the Agent
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Namespace is the namespace of the Agent (defaults to Task namespace)
	// +optional
	Namespace string `json:"namespace,omitempty"`
}

AgentReference references an Agent CRD

func (*AgentReference) DeepCopy

func (in *AgentReference) DeepCopy() *AgentReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentReference.

func (*AgentReference) DeepCopyInto

func (in *AgentReference) DeepCopyInto(out *AgentReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntime

type AgentRuntime struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   AgentRuntimeRegistrySpec `json:"spec,omitempty"`
	Status AgentRuntimeStatus       `json:"status,omitempty"`
}

AgentRuntime is the Schema for registered external Orka harness runtimes.

func (*AgentRuntime) DeepCopy

func (in *AgentRuntime) DeepCopy() *AgentRuntime

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntime.

func (*AgentRuntime) DeepCopyInto

func (in *AgentRuntime) DeepCopyInto(out *AgentRuntime)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AgentRuntime) DeepCopyObject

func (in *AgentRuntime) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*AgentRuntime) RegisteredContractVersion added in v0.2.0

func (in *AgentRuntime) RegisteredContractVersion() AgentRuntimeContractVersion

RegisteredContractVersion returns the explicit contract selector, or empty when the registration is still unclassified. Callers must treat empty as neither protocol and fail closed.

type AgentRuntimeBearerAuthReference

type AgentRuntimeBearerAuthReference struct {
	// Name is the Secret name.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// Key is the Secret data key containing the bearer token.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Key string `json:"key"`
}

AgentRuntimeBearerAuthReference identifies the Secret key holding a harness v1 bearer token. Preserved verbatim from the harness v1 schema.

func (*AgentRuntimeBearerAuthReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeBearerAuthReference.

func (*AgentRuntimeBearerAuthReference) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeBrokeredToolClass

type AgentRuntimeBrokeredToolClass string

AgentRuntimeBrokeredToolClass classifies Tool CRDs. It is shared by the Tool API and by harness v1 AgentRuntime capability declarations. +kubebuilder:validation:Enum=read;write;coordination

const (
	AgentRuntimeBrokeredToolClassRead         AgentRuntimeBrokeredToolClass = "read"
	AgentRuntimeBrokeredToolClassWrite        AgentRuntimeBrokeredToolClass = "write"
	AgentRuntimeBrokeredToolClassCoordination AgentRuntimeBrokeredToolClass = "coordination"
)

type AgentRuntimeCapabilitiesSpec

type AgentRuntimeCapabilitiesSpec struct {
	// RuntimeInstanceID is the immutable external supervisor instance expected from
	// authenticated /v2/status and every conformance response. v2 only.
	// +optional
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	RuntimeInstanceID string `json:"runtimeInstanceID,omitempty"`

	// Profile is the exact immutable profile accepted by v2 session creation.
	// +optional
	Profile *AgentRuntimeProfileSpec `json:"profile,omitempty"`

	// MCPPolicy materializes the exact policy represented by the profile's MCP
	// digests so readiness conformance and Task dispatch use identical inputs.
	// +optional
	MCPPolicy *AgentRuntimeMCPPolicySpec `json:"mcpPolicy,omitempty"`

	// Limits must exactly match /v2/capabilities. v2 only.
	// +optional
	Limits *AgentRuntimeProtocolLimits `json:"limits,omitempty"`

	// SupportsDrain must exactly match the static v2 capability claim.
	// +optional
	SupportsDrain bool `json:"supportsDrain,omitempty"`

	// SupportsPublicationFinalization must exactly match the static v2 capability claim.
	// +optional
	SupportsPublicationFinalization bool `json:"supportsPublicationFinalization,omitempty"`

	// WorkspaceGovernance must exactly match the static v2 capability claim.
	// +optional
	WorkspaceGovernance *AgentRuntimeWorkspaceGovernanceCapabilities `json:"workspaceGovernance,omitempty"`

	// ToolExecutionModes lists the harness v1 tool execution modes supported by
	// the runtime. v1 only; historically optional.
	// +listType=set
	// +optional
	ToolExecutionModes []AgentRuntimeToolExecutionMode `json:"toolExecutionModes,omitempty"`

	// BrokeredToolClasses lists the harness v1 brokered tool classes supported
	// by the runtime. v1 only; historically optional.
	// +listType=set
	// +optional
	BrokeredToolClasses []AgentRuntimeBrokeredToolClass `json:"brokeredToolClasses,omitempty"`

	// SupportsCancel declares harness v1 turn cancellation support. v1 only.
	// +optional
	SupportsCancel *bool `json:"supportsCancel,omitempty"`

	// SupportsRuntimeSessions declares harness v1 runtime session support. v1 only.
	// +optional
	SupportsRuntimeSessions *bool `json:"supportsRuntimeSessions,omitempty"`

	// SupportsContinuation declares harness v1 brokered continuation support. v1 only.
	// +optional
	SupportsContinuation *bool `json:"supportsContinuation,omitempty"`

	// SupportsArtifacts declares harness v1 artifact support. v1 only.
	// +optional
	SupportsArtifacts *bool `json:"supportsArtifacts,omitempty"`
}

AgentRuntimeCapabilitiesSpec pins runtime capability claims for both harness contracts. Variant-specific fields are optional in the shared schema; the contract discriminator CEL on the spec enforces the selected variant's shape.

func (*AgentRuntimeCapabilitiesSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeCapabilitiesSpec.

func (*AgentRuntimeCapabilitiesSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (AgentRuntimeCapabilitiesSpec) SupportsStrictWorkspaceIntent added in v0.2.0

func (c AgentRuntimeCapabilitiesSpec) SupportsStrictWorkspaceIntent(intent WorkspaceIntent) bool

SupportsStrictWorkspaceIntent returns true only for the exact intent pinned by a fully governed v2 profile. Trusted/non-governed and v1 runtimes always return false.

func (AgentRuntimeCapabilitiesSpec) ValidateStrictWorkspaceIntent added in v0.2.0

func (c AgentRuntimeCapabilitiesSpec) ValidateStrictWorkspaceIntent(intent WorkspaceIntent) error

ValidateStrictWorkspaceIntent rejects trusted/non-governed runtimes and exact-profile intent mismatches.

type AgentRuntimeClientAuth

type AgentRuntimeClientAuth struct {
	// BearerAuthRef points to the harness v1 bearer token Secret used for
	// mutating v1 harness endpoints. The referenced Secret must opt in with
	// label orka.ai/agent-runtime-auth=true, may set
	// orka.ai/agent-runtime-name=<runtime> to restrict use to one AgentRuntime,
	// and must set annotation orka.ai/agent-runtime-endpoint=<deployment.endpoint>
	// to bind the token to one endpoint.
	// +optional
	BearerAuthRef *AgentRuntimeBearerAuthReference `json:"bearerTokenSecretRef,omitempty"`

	// ControllerBearerTokenSecretRef supplies the controller bearer token used by
	// authenticated v2 status and mutation endpoints.
	// +optional
	ControllerBearerTokenSecretRef *AgentRuntimeSecretKeyReference `json:"controllerBearerTokenSecretRef,omitempty"`

	// OperationCapabilitySecretRef supplies the HMAC secret used to bind every
	// v2 mutation to its exact fence, operation identity, request digest, and expiry.
	// +optional
	OperationCapabilitySecretRef *AgentRuntimeSecretKeyReference `json:"operationCapabilitySecretRef,omitempty"`
}

AgentRuntimeClientAuth configures controller authentication and per-operation authorization. Exactly one contract-specific shape may be present: the legacy v1 bearer reference, or the v2 controller-bearer plus operation-capability pair. +kubebuilder:validation:XValidation:rule="!(has(self.bearerTokenSecretRef) && (has(self.controllerBearerTokenSecretRef) || has(self.operationCapabilitySecretRef)))",message="legacy v1 and v2 client auth shapes are mutually exclusive" +kubebuilder:validation:XValidation:rule="has(self.controllerBearerTokenSecretRef) == has(self.operationCapabilitySecretRef)",message="v2 client auth requires both controllerBearerTokenSecretRef and operationCapabilitySecretRef" +kubebuilder:validation:XValidation:rule="has(self.bearerTokenSecretRef) || has(self.controllerBearerTokenSecretRef)",message="client auth requires either the v1 or the v2 credential shape"

func (*AgentRuntimeClientAuth) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeClientAuth.

func (*AgentRuntimeClientAuth) DeepCopyInto

func (in *AgentRuntimeClientAuth) DeepCopyInto(out *AgentRuntimeClientAuth)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeContractVersion

type AgentRuntimeContractVersion string

AgentRuntimeContractVersion identifies the Orka-facing runtime contract. During harness coexistence both protocol values are schema-valid; omission is never protocol evidence and is tolerated only for stored objects awaiting the one-time bridge classification. +kubebuilder:validation:Enum=orka.harness.v1;orka.harness.v2

const (
	// AgentRuntimeContractHarnessV1 is the frozen harness v1 HTTP+SSE contract.
	AgentRuntimeContractHarnessV1 AgentRuntimeContractVersion = "orka.harness.v1"
	// AgentRuntimeContractHarnessV2 is the session-centric HTTP+NDJSON contract.
	AgentRuntimeContractHarnessV2 AgentRuntimeContractVersion = "orka.harness.v2"
)

type AgentRuntimeDeploymentMode

type AgentRuntimeDeploymentMode string

AgentRuntimeDeploymentMode selects how the runtime endpoint is provided. +kubebuilder:validation:Enum=external-endpoint

const (
	// AgentRuntimeDeploymentModeExternalEndpoint points at a pre-deployed harness endpoint.
	AgentRuntimeDeploymentModeExternalEndpoint AgentRuntimeDeploymentMode = "external-endpoint"
)

type AgentRuntimeDeploymentSpec

type AgentRuntimeDeploymentSpec struct {
	// Mode is the deployment mode. External AgentRuntime registrations are not
	// scaled or recycled by Orka unless KubernetesRecovery is explicitly enabled.
	// +kubebuilder:validation:Required
	Mode AgentRuntimeDeploymentMode `json:"mode"`

	// Endpoint is the base URL for an external harness service. It must not
	// contain credentials, query parameters, or fragments.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^https?://[^\s@?#]+$`
	Endpoint string `json:"endpoint"`

	// KubernetesRecovery opts an exact, same-namespace Deployment into fenced
	// drain and epoch replacement. The Deployment must independently consent
	// with annotation orka.ai/agent-runtime-recovery-uid=<AgentRuntime UID>.
	// Unmanaged endpoints retain the portable, fail-closed recovery contract.
	// +optional
	KubernetesRecovery *AgentRuntimeKubernetesRecoverySpec `json:"kubernetesRecovery,omitempty"`
}

AgentRuntimeDeploymentSpec configures where Orka reaches the harness runtime. +kubebuilder:validation:XValidation:rule="!has(oldSelf.kubernetesRecovery) || (has(self.kubernetesRecovery) && self.kubernetesRecovery == oldSelf.kubernetesRecovery)",message="Kubernetes recovery ownership is immutable once enabled"

func (*AgentRuntimeDeploymentSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeDeploymentSpec.

func (*AgentRuntimeDeploymentSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeKubernetesRecoverySpec added in v0.2.0

type AgentRuntimeKubernetesRecoverySpec struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	DeploymentName string `json:"deploymentName"`
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	DeploymentUID string `json:"deploymentUID"`
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=63
	ContainerName string `json:"containerName"`
}

AgentRuntimeKubernetesRecoverySpec identifies the sole container whose private Linux process namespace may prove retirement of an enrolled boot. Only single-replica Recreate Deployments are supported. Container termination cannot prove retirement of provider-hosted compute such as Foundry sessions.

func (*AgentRuntimeKubernetesRecoverySpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeKubernetesRecoverySpec.

func (*AgentRuntimeKubernetesRecoverySpec) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeList

type AgentRuntimeList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []AgentRuntime `json:"items"`
}

AgentRuntimeList contains a list of AgentRuntime.

func (*AgentRuntimeList) DeepCopy

func (in *AgentRuntimeList) DeepCopy() *AgentRuntimeList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeList.

func (*AgentRuntimeList) DeepCopyInto

func (in *AgentRuntimeList) DeepCopyInto(out *AgentRuntimeList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*AgentRuntimeList) DeepCopyObject

func (in *AgentRuntimeList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type AgentRuntimeMCPPolicySpec added in v0.2.0

type AgentRuntimeMCPPolicySpec struct {
	// AllowedTools is the canonical sorted allowlist exposed through the
	// prompt-scoped MCP broker.
	// +kubebuilder:validation:MaxItems=128
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=128
	AllowedTools []string `json:"allowedTools"`

	// DisallowedTools is the canonical sorted deny list applied after the allowlist.
	// +kubebuilder:validation:MaxItems=128
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=128
	DisallowedTools []string `json:"disallowedTools"`

	// AllowBash controls whether an allowed tool named Bash may execute.
	AllowBash bool `json:"allowBash"`

	// ApprovalRequiredTools must remain an explicit empty list until the
	// controller owns external-runtime permission review.
	// +kubebuilder:validation:MaxItems=0
	// +kubebuilder:validation:items:MinLength=1
	// +kubebuilder:validation:items:MaxLength=128
	ApprovalRequiredTools []string `json:"approvalRequiredTools"`
}

AgentRuntimeMCPPolicySpec materializes the exact non-secret MCP policy whose digests are pinned by the external runtime profile.

func (*AgentRuntimeMCPPolicySpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeMCPPolicySpec.

func (*AgentRuntimeMCPPolicySpec) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeObservedCapabilities

type AgentRuntimeObservedCapabilities struct {
	ProtocolVersion            string `json:"protocolVersion,omitempty"`
	Transport                  string `json:"transport,omitempty"`
	ACPVersion                 string `json:"acpVersion,omitempty"`
	RuntimeInstanceID          string `json:"runtimeInstanceID,omitempty"`
	SupervisorBootID           string `json:"supervisorBootID,omitempty"`
	ControllerEpoch            int64  `json:"controllerEpoch,omitempty"`
	RuntimePoolUID             string `json:"runtimePoolUID,omitempty"`
	RuntimePoolGeneration      int64  `json:"runtimePoolGeneration,omitempty"`
	RuntimeProfileDigest       string `json:"runtimeProfileDigest,omitempty"`
	ProfileDigestSchemaVersion int32  `json:"profileDigestSchemaVersion,omitempty"`
	AdapterName                string `json:"adapterName,omitempty"`
	AdapterDigest              string `json:"adapterDigest,omitempty"`
	ProviderKind               string `json:"providerKind,omitempty"`
	Model                      string `json:"model,omitempty"`
	// MCPToolDescriptorDigest records the exact derived descriptor set sent by
	// the controller during the most recent v2 conformance probe.
	MCPToolDescriptorDigest string `json:"mcpToolDescriptorDigest,omitempty"`
	// Limits records the v2 protocol bounds. It is absent for harness v1.
	// +optional
	Limits                          *AgentRuntimeProtocolLimits `json:"limits,omitempty"`
	SupportsDrain                   bool                        `json:"supportsDrain,omitempty"`
	SupportsPublicationFinalization bool                        `json:"supportsPublicationFinalization,omitempty"`
	// WorkspaceGovernance records the v2 workspace guarantees. It is absent for harness v1.
	// +optional
	WorkspaceGovernance *AgentRuntimeWorkspaceGovernanceCapabilities `json:"workspaceGovernance,omitempty"`
	Lifecycle           string                                       `json:"lifecycle,omitempty"`

	RuntimeName    string `json:"runtimeName,omitempty"`
	RuntimeVersion string `json:"runtimeVersion,omitempty"`

	// +listType=set
	// +optional
	ToolExecutionModes []AgentRuntimeToolExecutionMode `json:"toolExecutionModes,omitempty"`
	// +listType=set
	// +optional
	BrokeredToolClasses []AgentRuntimeBrokeredToolClass `json:"brokeredToolClasses,omitempty"`

	SupportsCancel            bool  `json:"supportsCancel,omitempty"`
	SupportsRuntimeSessions   bool  `json:"supportsRuntimeSessions,omitempty"`
	SupportsContinuation      bool  `json:"supportsContinuation,omitempty"`
	SupportsArtifacts         bool  `json:"supportsArtifacts,omitempty"`
	SupportsSuspend           bool  `json:"supportsSuspend,omitempty"`
	SupportsWorkspaceSnapshot bool  `json:"supportsWorkspaceSnapshot,omitempty"`
	MaxConcurrentTurns        int   `json:"maxConcurrentTurns,omitempty"`
	MaxTurnSeconds            int   `json:"maxTurnSeconds,omitempty"`
	MaxOutputBytes            int64 `json:"maxOutputBytes,omitempty"`
}

AgentRuntimeObservedCapabilities records sanitized conformance data for both contracts. Variant-specific observed fields are written only by the matching probe implementation.

func (*AgentRuntimeObservedCapabilities) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeObservedCapabilities.

func (*AgentRuntimeObservedCapabilities) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeProfileSpec added in v0.2.0

type AgentRuntimeProfileSpec struct {
	// Digest is the canonical orka.harness.v2 runtime-profile digest.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	Digest string `json:"digest"`

	// DigestSchemaVersion identifies the canonical profile digest schema.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=1
	DigestSchemaVersion int32 `json:"digestSchemaVersion"`

	// ACPProfile is the reviewed ACP profile.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=acp.v1
	ACPProfile string `json:"acpProfile"`

	// AdapterName identifies the sole adapter contained by this external profile.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	AdapterName string `json:"adapterName"`

	// AdapterDigest pins the adapter/CLI artifact set.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	AdapterDigest string `json:"adapterDigest"`

	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	ProviderKind string `json:"providerKind"`
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Model string `json:"model"`

	// ModelLimits pins optional reviewed model token capacities.
	// +optional
	ModelLimits *ModelTokenLimits `json:"modelLimits,omitempty"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	AgentConfigurationDigest string `json:"agentConfigurationDigest"`
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	ToolPolicyDigest string `json:"toolPolicyDigest"`
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	ApprovalPolicyDigest string `json:"approvalPolicyDigest"`
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	MCPConfigurationDigest string `json:"mcpConfigurationDigest"`

	// WorkspaceIntent is the one immutable strict intent represented by this profile.
	// +kubebuilder:validation:Required
	WorkspaceIntent WorkspaceIntent `json:"workspaceIntent"`

	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	ProxyCredentialRole string `json:"proxyCredentialRole"`
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	ProxyCredentialScope string `json:"proxyCredentialScope"`
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	ResourceClass string `json:"resourceClass"`
}

AgentRuntimeProfileSpec pins one immutable, single-adapter v2 runtime profile.

func (*AgentRuntimeProfileSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeProfileSpec.

func (*AgentRuntimeProfileSpec) DeepCopyInto added in v0.2.0

func (in *AgentRuntimeProfileSpec) DeepCopyInto(out *AgentRuntimeProfileSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeProtocolLimits added in v0.2.0

type AgentRuntimeProtocolLimits struct {
	// +kubebuilder:validation:Minimum=1
	MaxResidentSessions int32 `json:"maxResidentSessions"`
	// +kubebuilder:validation:Minimum=1
	MaxConcurrentPrompts int32 `json:"maxConcurrentPrompts"`
	// +kubebuilder:validation:Minimum=1
	MaxRequestBytes int32 `json:"maxRequestBytes"`
	// +kubebuilder:validation:Minimum=1
	MaxEventLineBytes int32 `json:"maxEventLineBytes"`
	// +kubebuilder:validation:Minimum=1
	MaxTerminalResultBytes int32 `json:"maxTerminalResultBytes"`
	// +kubebuilder:validation:Minimum=1
	MaxBufferedEvents int32 `json:"maxBufferedEvents"`
	// +kubebuilder:validation:Minimum=1
	MaxUpdateEventsPerSecond int32 `json:"maxUpdateEventsPerSecond"`
	// +kubebuilder:validation:Minimum=1
	MinPromptLeaseMillis int64 `json:"minPromptLeaseMillis"`
	// +kubebuilder:validation:Minimum=1
	MaxPromptLeaseMillis int64 `json:"maxPromptLeaseMillis"`
	// +kubebuilder:validation:Minimum=1
	MaxPendingPermissions int32 `json:"maxPendingPermissions"`
	// +kubebuilder:validation:Minimum=1
	MaxWorkspaceDeltaBytes int64 `json:"maxWorkspaceDeltaBytes"`
}

AgentRuntimeProtocolLimits pins the exact bounded v2 limits expected from the runtime.

func (*AgentRuntimeProtocolLimits) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeProtocolLimits.

func (*AgentRuntimeProtocolLimits) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeReference

type AgentRuntimeReference struct {
	// Name is the AgentRuntime name. RuntimeRefs are resolved in the task namespace.
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`
}

AgentRuntimeReference selects a registered AgentRuntime for a type: agent task.

func (*AgentRuntimeReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeReference.

func (*AgentRuntimeReference) DeepCopyInto

func (in *AgentRuntimeReference) DeepCopyInto(out *AgentRuntimeReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeRegistrySpec

type AgentRuntimeRegistrySpec struct {
	// ContractVersion is the Orka harness contract this runtime must implement.
	// It is immutable once set. Required for new registrations through
	// fail-closed admission; the bridge schema tolerates omission only on
	// unchanged stored objects while execution admission is closed.
	// +optional
	ContractVersion *AgentRuntimeContractVersion `json:"contractVersion,omitempty"`

	// Deployment identifies the runtime endpoint provider.
	// +kubebuilder:validation:Required
	Deployment AgentRuntimeDeploymentSpec `json:"deployment"`

	// ClientAuth configures controller authentication and mutation authorization.
	// +kubebuilder:validation:Required
	ClientAuth AgentRuntimeClientAuth `json:"clientAuth"`

	// Capabilities pins the runtime capability claims. Required with the exact
	// instance/profile/limits/governance shape for orka.harness.v2; historically
	// optional for orka.harness.v1.
	// +optional
	Capabilities *AgentRuntimeCapabilitiesSpec `json:"capabilities,omitempty"`
}

AgentRuntimeRegistrySpec defines the desired state of a registered Orka harness runtime. The dual schema has no contractVersion default: omission is tolerated only for stored objects awaiting the one-time bridge classification and is never interpreted as either protocol. Fail-closed admission requires an explicit value for new registrations. +kubebuilder:validation:XValidation:rule="!has(oldSelf.contractVersion) || (has(self.contractVersion) && self.contractVersion == oldSelf.contractVersion)",message="contractVersion is immutable once set" +kubebuilder:validation:XValidation:rule="!has(self.contractVersion) || self.contractVersion != 'orka.harness.v1' || (has(self.clientAuth.bearerTokenSecretRef) && !has(self.clientAuth.controllerBearerTokenSecretRef) && !has(self.clientAuth.operationCapabilitySecretRef))",message="orka.harness.v1 requires the legacy bearerTokenSecretRef client auth shape" +kubebuilder:validation:XValidation:rule="!has(self.contractVersion) || self.contractVersion != 'orka.harness.v1' || !has(self.capabilities) || (!has(self.capabilities.runtimeInstanceID) && !has(self.capabilities.profile) && !has(self.capabilities.mcpPolicy) && !has(self.capabilities.limits) && !has(self.capabilities.workspaceGovernance) && !has(self.capabilities.supportsDrain) && !has(self.capabilities.supportsPublicationFinalization))",message="orka.harness.v1 capabilities must not carry v2 capability fields" +kubebuilder:validation:XValidation:rule="!has(self.contractVersion) || self.contractVersion != 'orka.harness.v2' || (has(self.clientAuth.controllerBearerTokenSecretRef) && has(self.clientAuth.operationCapabilitySecretRef) && !has(self.clientAuth.bearerTokenSecretRef))",message="orka.harness.v2 requires the v2 controller bearer and operation capability client auth shape" +kubebuilder:validation:XValidation:rule="!has(self.contractVersion) || self.contractVersion != 'orka.harness.v2' || (has(self.capabilities) && has(self.capabilities.runtimeInstanceID) && has(self.capabilities.profile) && has(self.capabilities.mcpPolicy) && has(self.capabilities.limits) && has(self.capabilities.workspaceGovernance))",message="orka.harness.v2 requires pinned instance, profile, MCP policy, limits, and workspace governance capabilities" +kubebuilder:validation:XValidation:rule="!has(self.contractVersion) || self.contractVersion != 'orka.harness.v2' || !has(self.capabilities) || (!has(self.capabilities.toolExecutionModes) && !has(self.capabilities.brokeredToolClasses) && !has(self.capabilities.supportsCancel) && !has(self.capabilities.supportsRuntimeSessions) && !has(self.capabilities.supportsContinuation) && !has(self.capabilities.supportsArtifacts))",message="orka.harness.v2 capabilities must not carry v1 capability fields"

func (*AgentRuntimeRegistrySpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeRegistrySpec.

func (*AgentRuntimeRegistrySpec) DeepCopyInto

func (in *AgentRuntimeRegistrySpec) DeepCopyInto(out *AgentRuntimeRegistrySpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeSecretKeyReference added in v0.2.0

type AgentRuntimeSecretKeyReference struct {
	// Name is the Secret name in the AgentRuntime namespace.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$`
	Name string `json:"name"`

	// Key is the Secret data key.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Key string `json:"key"`
}

AgentRuntimeSecretKeyReference identifies one Secret key used for v2 control traffic.

func (*AgentRuntimeSecretKeyReference) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeSecretKeyReference.

func (*AgentRuntimeSecretKeyReference) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeSpec

type AgentRuntimeSpec struct {
	// Workspace is the legacy harness v1 agent workspace configuration at its
	// historical JSON path. It is a preserved compatibility read surface for
	// stored v1 Tasks only: it can never be introduced or changed, and it is
	// not an authority surface for new work.
	// +optional
	Workspace *LegacyAgentWorkspaceConfig `json:"workspace,omitempty"`

	// MaxTurns limits the number of agent loop iterations
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=1000
	// +optional
	MaxTurns *int32 `json:"maxTurns,omitempty"`

	// AllowedTools lists the tools the agent is allowed to use (overrides Agent defaults)
	// +optional
	AllowedTools []string `json:"allowedTools,omitempty"`

	// DisallowedTools lists tools the agent is not allowed to use
	// +optional
	DisallowedTools []string `json:"disallowedTools,omitempty"`

	// AllowBash enables the agent to run bash commands (overrides Agent default)
	// +optional
	AllowBash *bool `json:"allowBash,omitempty"`
}

AgentRuntimeSpec defines task-level overrides for agent runtime configuration. Runtime type and credentials come from the referenced Agent CRD. +kubebuilder:validation:XValidation:rule="!has(self.workspace) || (oldSelf.hasValue() && has(oldSelf.value().workspace) && self.workspace == oldSelf.value().workspace)",optionalOldSelf=true,message="legacy agentRuntime.workspace is a preserved harness v1 compatibility surface; new Tasks must use spec.workspace"

func (*AgentRuntimeSpec) DeepCopy

func (in *AgentRuntimeSpec) DeepCopy() *AgentRuntimeSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeSpec.

func (*AgentRuntimeSpec) DeepCopyInto

func (in *AgentRuntimeSpec) DeepCopyInto(out *AgentRuntimeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (AgentRuntimeSpec) MarshalJSON added in v0.2.0

func (in AgentRuntimeSpec) MarshalJSON() ([]byte, error)

MarshalJSON preserves the distinction between an omitted task tool override and an explicitly empty deny-all override.

type AgentRuntimeStatus

type AgentRuntimeStatus struct {
	// Ready indicates the runtime passed the configured Orka readiness checks.
	// +optional
	Ready bool `json:"ready,omitempty"`

	// ObservedGeneration is the latest generation reconciled into this status.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// ObservedCapabilities contains sanitized capabilities from the last probe.
	// +optional
	ObservedCapabilities *AgentRuntimeObservedCapabilities `json:"observedCapabilities,omitempty"`

	// LastValidated is the timestamp of the last readiness probe.
	// +optional
	LastValidated *metav1.Time `json:"lastValidated,omitempty"`

	// ObservedControllerAuthRefResourceVersion is the bearer Secret version used
	// by the last successful or failed authenticated conformance probe.
	// +optional
	ObservedControllerAuthRefResourceVersion string `json:"observedControllerAuthRefResourceVersion,omitempty"`

	// ObservedOperationCapabilityRefResourceVersion is the HMAC Secret version used
	// by the last mutation conformance probe.
	// +optional
	ObservedOperationCapabilityRefResourceVersion string `json:"observedOperationCapabilityRefResourceVersion,omitempty"`

	// ObservedAuthRefResourceVersion is the resourceVersion of the harness v1
	// bearer auth Secret used for the last v1 readiness probe. It is non-secret
	// metadata used to decide when token rotation requires a fresh authenticated
	// conformance turn. v2 probes use the two v2 auth resource-version fields.
	// +optional
	ObservedAuthRefResourceVersion string `json:"observedAuthRefResourceVersion,omitempty"`

	// Message provides sanitized readiness context.
	// +optional
	Message string `json:"message,omitempty"`

	// Conditions represent the current state of the AgentRuntime.
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

AgentRuntimeStatus defines the observed state of an AgentRuntime.

func (*AgentRuntimeStatus) DeepCopy

func (in *AgentRuntimeStatus) DeepCopy() *AgentRuntimeStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeStatus.

func (*AgentRuntimeStatus) DeepCopyInto

func (in *AgentRuntimeStatus) DeepCopyInto(out *AgentRuntimeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentRuntimeToolExecutionMode

type AgentRuntimeToolExecutionMode string

AgentRuntimeToolExecutionMode describes how a harness v1 runtime executes tools. +kubebuilder:validation:Enum=observed;brokered

const (
	// AgentRuntimeToolExecutionModeObserved marks runtimes that execute tools
	// themselves; Orka only observes emitted frames.
	AgentRuntimeToolExecutionModeObserved AgentRuntimeToolExecutionMode = "observed"
	// AgentRuntimeToolExecutionModeBrokered marks runtimes whose tool calls are
	// executed by Orka and continued back into the turn.
	AgentRuntimeToolExecutionModeBrokered AgentRuntimeToolExecutionMode = "brokered"
)

type AgentRuntimeType

type AgentRuntimeType string

AgentRuntimeType defines the agent runtime to use +kubebuilder:validation:Enum=claude;codex;copilot;opencode

const (
	// AgentRuntimeCopilot uses GitHub Copilot CLI as the agent runtime.
	AgentRuntimeCopilot AgentRuntimeType = "copilot"
	// AgentRuntimeClaude uses Claude Code CLI as the agent runtime
	AgentRuntimeClaude AgentRuntimeType = "claude"
	// AgentRuntimeCodex uses OpenAI Codex CLI as the agent runtime
	AgentRuntimeCodex AgentRuntimeType = "codex"
	// AgentRuntimeOpencode uses OpenCode CLI's native ACP server as the agent runtime.
	AgentRuntimeOpencode AgentRuntimeType = "opencode"
)

type AgentRuntimeWorkspaceGovernanceCapabilities added in v0.2.0

type AgentRuntimeWorkspaceGovernanceCapabilities struct {
	// Mode selects strict Orka governance or an explicit trusted escape hatch.
	// +kubebuilder:validation:Required
	Mode AgentRuntimeWorkspaceGovernanceMode `json:"mode"`

	// Trusted must be true only for trusted-non-governed runtimes. Such runtimes
	// are ineligible for Tasks requesting strict read or write guarantees.
	Trusted bool `json:"trusted"`

	OrkaOwnedWorkspaceDeltas        bool `json:"orkaOwnedWorkspaceDeltas"`
	PromptScopedBrokerAuthorization bool `json:"promptScopedBrokerAuthorization"`
	NoDirectSCMPublication          bool `json:"noDirectSCMPublication"`
	OrkaOwnedCleanRoomPublication   bool `json:"orkaOwnedCleanRoomPublication"`
	ExactInstanceFencing            bool `json:"exactInstanceFencing"`
	DuplicateSafeMutations          bool `json:"duplicateSafeMutations"`
	CancellationSettlement          bool `json:"cancellationSettlement"`
}

AgentRuntimeWorkspaceGovernanceCapabilities are static claims advertised by /v2/capabilities and exercised by the hostile conformance cycle. +kubebuilder:validation:XValidation:rule="self.mode != 'trusted-non-governed' || self.trusted",message="trusted-non-governed runtimes must be explicitly marked trusted" +kubebuilder:validation:XValidation:rule="self.mode != 'strict-governed' || !self.trusted",message="strict-governed runtimes must not use the trusted non-governed escape hatch" +kubebuilder:validation:XValidation:rule="self.mode != 'strict-governed' || (self.orkaOwnedWorkspaceDeltas && self.promptScopedBrokerAuthorization && self.noDirectSCMPublication && self.orkaOwnedCleanRoomPublication && self.exactInstanceFencing && self.duplicateSafeMutations && self.cancellationSettlement)",message="strict-governed runtimes must claim every strict workspace governance guarantee" +kubebuilder:validation:XValidation:rule="self.mode != 'trusted-non-governed' || (!self.orkaOwnedWorkspaceDeltas && !self.promptScopedBrokerAuthorization && !self.noDirectSCMPublication && !self.orkaOwnedCleanRoomPublication && !self.exactInstanceFencing && !self.duplicateSafeMutations && !self.cancellationSettlement)",message="trusted-non-governed runtimes must not claim strict workspace guarantees"

func (*AgentRuntimeWorkspaceGovernanceCapabilities) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeWorkspaceGovernanceCapabilities.

func (*AgentRuntimeWorkspaceGovernanceCapabilities) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (AgentRuntimeWorkspaceGovernanceCapabilities) Strict added in v0.2.0

Strict reports whether every strict workspace governance guarantee is claimed.

type AgentRuntimeWorkspaceGovernanceMode added in v0.2.0

type AgentRuntimeWorkspaceGovernanceMode string

AgentRuntimeWorkspaceGovernanceMode describes whether Orka may rely on the runtime for strict workspace guarantees. +kubebuilder:validation:Enum=strict-governed;trusted-non-governed

const (
	// AgentRuntimeWorkspaceGovernanceStrict is eligible only for the exact
	// workspace intent pinned in the immutable runtime profile.
	AgentRuntimeWorkspaceGovernanceStrict AgentRuntimeWorkspaceGovernanceMode = "strict-governed"
	// AgentRuntimeWorkspaceGovernanceTrusted marks an explicitly trusted runtime
	// whose tools and workspace behavior are outside Orka governance.
	AgentRuntimeWorkspaceGovernanceTrusted AgentRuntimeWorkspaceGovernanceMode = "trusted-non-governed"
)

type AgentSpec

type AgentSpec struct {
	// ProviderRef references a Provider CRD for LLM configuration
	// If set, model.provider is optional (inherited from Provider)
	// +optional
	ProviderRef *ProviderReference `json:"providerRef,omitempty"`

	// Model defines the LLM model configuration
	// Provider field is optional if providerRef is set
	// +optional
	Model *ModelConfig `json:"model,omitempty"`

	// SystemPrompt defines the system prompt configuration
	// +optional
	SystemPrompt *PromptSource `json:"systemPrompt,omitempty"`

	// Tools lists the default tools available to this agent
	// +optional
	Tools []ToolReference `json:"tools,omitempty"`

	// Skills lists the default skills for this agent
	// +optional
	Skills []SkillReference `json:"skills,omitempty"`

	// Resources defines the resource limits for tasks using this agent
	// +optional
	Resources corev1.ResourceRequirements `json:"resources,omitempty"`

	// Execution defines default worker pod runtime and placement settings.
	// +optional
	Execution *ExecutionSpec `json:"execution,omitempty"`

	// SecretRef references a Secret containing LLM API keys
	// +optional
	SecretRef *corev1.LocalObjectReference `json:"secretRef,omitempty"`

	// Session defines session configuration defaults
	// +optional
	Session *SessionConfig `json:"session,omitempty"`

	// Coordination enables agent-to-agent delegation
	// +optional
	Coordination *CoordinationConfig `json:"coordination,omitempty"`

	// Runtime configures this Agent for external CLI runtimes (type: agent tasks).
	// When set, this Agent is for type: agent tasks only (mutually exclusive with providerRef).
	// +optional
	Runtime *AgentCLIRuntime `json:"runtime,omitempty"`

	// TTLAfterLastTask defines how long the agent persists after its last task completes.
	// When set and no tasks are active, the agent is deleted after this duration.
	// Zero means the agent is never auto-deleted (permanent). Default is no TTL (permanent).
	// +optional
	TTLAfterLastTask *metav1.Duration `json:"ttlAfterLastTask,omitempty"`
}

AgentSpec defines the desired state of Agent +kubebuilder:validation:XValidation:rule="!has(self.execution) || !has(self.execution.workspace) || !has(self.execution.workspace.classRef)",message="execution.workspace.classRef is only supported on Task specs" +kubebuilder:validation:XValidation:rule="!(has(self.runtime) && has(self.runtime.type) && self.runtime.type == 'opencode' && has(self.runtime.contractVersion) && self.runtime.contractVersion == 'orka.harness.v2' && has(self.systemPrompt) && ((has(self.systemPrompt.inline) && self.systemPrompt.inline.size() > 0) || has(self.systemPrompt.configMapRef)))",message="opencode orka.harness.v2 runtime does not support spec.systemPrompt"

func (*AgentSpec) DeepCopy

func (in *AgentSpec) DeepCopy() *AgentSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentSpec.

func (*AgentSpec) DeepCopyInto

func (in *AgentSpec) DeepCopyInto(out *AgentSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AgentStatus

type AgentStatus struct {
	// Ready indicates whether the agent configuration is valid and usable
	// +optional
	Ready bool `json:"ready,omitempty"`

	// ActiveTasks is the number of active tasks using this agent
	ActiveTasks int32 `json:"activeTasks"`

	// LastUsed is the timestamp of when this agent was last used
	// +optional
	LastUsed *metav1.Time `json:"lastUsed,omitempty"`

	// Conditions represent the current state of the Agent
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

AgentStatus defines the observed state of Agent

func (*AgentStatus) DeepCopy

func (in *AgentStatus) DeepCopy() *AgentStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentStatus.

func (*AgentStatus) DeepCopyInto

func (in *AgentStatus) DeepCopyInto(out *AgentStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AllowedAgent

type AllowedAgent struct {
	// Name is the name of the agent
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Namespace is the namespace of the agent (defaults to same namespace)
	// +optional
	Namespace string `json:"namespace,omitempty"`
}

AllowedAgent defines an agent that can be delegated to

func (*AllowedAgent) DeepCopy

func (in *AllowedAgent) DeepCopy() *AllowedAgent

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AllowedAgent.

func (*AllowedAgent) DeepCopyInto

func (in *AllowedAgent) DeepCopyInto(out *AllowedAgent)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type AzureConfig

type AzureConfig struct {
	// DeploymentName is the Azure OpenAI deployment name
	// +kubebuilder:validation:Required
	DeploymentName string `json:"deploymentName"`

	// APIVersion is the Azure OpenAI API version
	// +kubebuilder:default="2024-02-15-preview"
	// +optional
	APIVersion string `json:"apiVersion,omitempty"`
}

AzureConfig contains Azure OpenAI specific configuration

func (*AzureConfig) DeepCopy

func (in *AzureConfig) DeepCopy() *AzureConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AzureConfig.

func (*AzureConfig) DeepCopyInto

func (in *AzureConfig) DeepCopyInto(out *AzureConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BranchClaim added in v0.2.0

type BranchClaim struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   BranchClaimSpec   `json:"spec"`
	Status BranchClaimStatus `json:"status,omitempty"`
}

BranchClaim is the cluster-wide Kubernetes-authoritative ownership and exact baseline record for one canonical repository branch.

func (*BranchClaim) DeepCopy added in v0.2.0

func (in *BranchClaim) DeepCopy() *BranchClaim

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BranchClaim.

func (*BranchClaim) DeepCopyInto added in v0.2.0

func (in *BranchClaim) DeepCopyInto(out *BranchClaim)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*BranchClaim) DeepCopyObject added in v0.2.0

func (in *BranchClaim) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type BranchClaimAvailability added in v0.2.0

type BranchClaimAvailability string

BranchClaimAvailability gates further branch mutation. +kubebuilder:validation:Enum=Available;ReconciliationBlocked

type BranchClaimList added in v0.2.0

type BranchClaimList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []BranchClaim `json:"items"`
}

BranchClaimList contains a list of BranchClaim.

func (*BranchClaimList) DeepCopy added in v0.2.0

func (in *BranchClaimList) DeepCopy() *BranchClaimList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BranchClaimList.

func (*BranchClaimList) DeepCopyInto added in v0.2.0

func (in *BranchClaimList) DeepCopyInto(out *BranchClaimList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*BranchClaimList) DeepCopyObject added in v0.2.0

func (in *BranchClaimList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type BranchClaimOwnerKind added in v0.2.0

type BranchClaimOwnerKind string

BranchClaimOwnerKind identifies the durable owner of an Orka-managed branch. +kubebuilder:validation:Enum=Task;Session

type BranchClaimSpec added in v0.2.0

type BranchClaimSpec struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	ID string `json:"id"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	RepositoryID string `json:"repositoryId"`

	// +kubebuilder:validation:Pattern=`^refs/heads/.+$`
	// +kubebuilder:validation:MaxLength=1024
	Ref string `json:"ref"`

	OwnerKind BranchClaimOwnerKind `json:"ownerKind"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	OwnerUID string `json:"ownerUid"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RequestDigest string `json:"requestDigest"`
}

BranchClaimSpec is the immutable repository/ref ownership identity. +kubebuilder:validation:XValidation:rule="self == oldSelf",message="branch claim spec is immutable"

func (*BranchClaimSpec) DeepCopy added in v0.2.0

func (in *BranchClaimSpec) DeepCopy() *BranchClaimSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BranchClaimSpec.

func (*BranchClaimSpec) DeepCopyInto added in v0.2.0

func (in *BranchClaimSpec) DeepCopyInto(out *BranchClaimSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type BranchClaimStatus added in v0.2.0

type BranchClaimStatus struct {
	// +optional
	// +kubebuilder:validation:Minimum=1
	Generation int64 `json:"generation,omitempty"`

	// LastVerified is the independently observed exact target ref.
	// +optional
	LastVerified *ControlRemoteRefState `json:"lastVerified,omitempty"`

	// +optional
	Availability BranchClaimAvailability `json:"availability,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=16384
	BlockedReason string `json:"blockedReason,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=1024
	RelatedPublicationID string `json:"relatedPublicationId,omitempty"`

	ControlRecordMutationStatus `json:",inline"`
}

BranchClaimStatus is the exact generation, baseline, and availability CAS. +kubebuilder:validation:XValidation:rule="!has(self.availability) || self.availability != 'Available' || ((!has(self.blockedReason) || size(self.blockedReason) == 0) && (!has(self.relatedPublicationId) || size(self.relatedPublicationId) == 0))",message="available branch claims must clear block metadata" +kubebuilder:validation:XValidation:rule="!has(self.availability) || self.availability != 'ReconciliationBlocked' || (has(self.blockedReason) && size(self.blockedReason) > 0)",message="reconciliation-blocked branch claims require a reason"

func (*BranchClaimStatus) DeepCopy added in v0.2.0

func (in *BranchClaimStatus) DeepCopy() *BranchClaimStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BranchClaimStatus.

func (*BranchClaimStatus) DeepCopyInto added in v0.2.0

func (in *BranchClaimStatus) DeepCopyInto(out *BranchClaimStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ChildTaskStatus

type ChildTaskStatus struct {
	// Name is the name of the child task
	Name string `json:"name"`

	// Agent is the agent handling the child task
	Agent string `json:"agent"`

	// Phase is the current phase of the child task
	Phase TaskPhase `json:"phase"`

	// Result is the result from the child task (if completed)
	// +optional
	Result string `json:"result,omitempty"`
}

ChildTaskStatus tracks the status of a delegated child task

func (*ChildTaskStatus) DeepCopy

func (in *ChildTaskStatus) DeepCopy() *ChildTaskStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChildTaskStatus.

func (*ChildTaskStatus) DeepCopyInto

func (in *ChildTaskStatus) DeepCopyInto(out *ChildTaskStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ConcurrencyPolicy

type ConcurrencyPolicy string

ConcurrencyPolicy describes how the controller will handle concurrent scheduled runs. +kubebuilder:validation:Enum=Allow;Forbid

const (
	// AllowConcurrent allows child tasks to run concurrently.
	AllowConcurrent ConcurrencyPolicy = "Allow"
	// ForbidConcurrent skips the new run if a previous run is still active.
	ForbidConcurrent ConcurrencyPolicy = "Forbid"
)

type ConfigMapKeySelector

type ConfigMapKeySelector struct {
	// Name is the name of the ConfigMap
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Key is the key within the ConfigMap
	// +kubebuilder:validation:Required
	Key string `json:"key"`
}

ConfigMapKeySelector selects a key from a ConfigMap

func (*ConfigMapKeySelector) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ConfigMapKeySelector.

func (*ConfigMapKeySelector) DeepCopyInto

func (in *ConfigMapKeySelector) DeepCopyInto(out *ConfigMapKeySelector)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControlRecordMutationStatus added in v0.2.0

type ControlRecordMutationStatus struct {
	// ControllerEpochName identifies the controller epoch domain checked before
	// the mutation.
	// +optional
	// +kubebuilder:validation:MaxLength=253
	ControllerEpochName string `json:"controllerEpochName,omitempty"`

	// ControllerEpoch is the exact epoch that performed the last mutation.
	// +optional
	// +kubebuilder:validation:Minimum=1
	ControllerEpoch int64 `json:"controllerEpoch,omitempty"`

	// ControllerEpochLeaseResourceVersion is the resourceVersion of the
	// authoritative controller-epoch Lease observed by the mutation.
	// +optional
	// +kubebuilder:validation:MaxLength=64
	ControllerEpochLeaseResourceVersion string `json:"controllerEpochLeaseResourceVersion,omitempty"`

	// LastOperationID is the last idempotent mutation identity applied.
	// +optional
	// +kubebuilder:validation:MaxLength=1024
	LastOperationID string `json:"lastOperationId,omitempty"`

	// LastOperationDigest binds LastOperationID to exact canonical input.
	// +optional
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	LastOperationDigest string `json:"lastOperationDigest,omitempty"`

	// Version is the monotonic domain CAS version. It advances once for each
	// successfully persisted logical mutation.
	// +optional
	// +kubebuilder:validation:Minimum=1
	Version int64 `json:"version,omitempty"`

	// CreatedAt is the normalized logical creation time.
	// +optional
	CreatedAt *metav1.Time `json:"createdAt,omitempty"`

	// UpdatedAt is the normalized logical mutation time.
	// +optional
	UpdatedAt *metav1.Time `json:"updatedAt,omitempty"`
}

ControlRecordMutationStatus is the common fenced mutation metadata embedded in Kubernetes-authoritative ACP control records. Kubernetes resourceVersion provides the storage CAS; Version is the monotonic domain version expected by DurableControlStore callers.

func (*ControlRecordMutationStatus) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlRecordMutationStatus.

func (*ControlRecordMutationStatus) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControlRecordOwner added in v0.2.0

type ControlRecordOwner struct {
	// +kubebuilder:validation:Enum=Task;Session;RuntimePool;PromptAttempt
	Kind string `json:"kind"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	UID string `json:"uid"`
}

ControlRecordOwner identifies an immutable namespaced owner when the Kubernetes object name is not part of the DurableControlStore interface.

func (*ControlRecordOwner) DeepCopy added in v0.2.0

func (in *ControlRecordOwner) DeepCopy() *ControlRecordOwner

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlRecordOwner.

func (*ControlRecordOwner) DeepCopyInto added in v0.2.0

func (in *ControlRecordOwner) DeepCopyInto(out *ControlRecordOwner)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControlRemoteRefState added in v0.2.0

type ControlRemoteRefState struct {
	Absent bool `json:"absent"`

	// +optional
	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	SHA string `json:"sha,omitempty"`
}

ControlRemoteRefState is an exact remote-ref observation. Absent and SHA are mutually exclusive. The all-zero value is reserved for an explicitly unknown observation in PublicationOutcomeUnknown receipts. +kubebuilder:validation:XValidation:rule="!(self.absent && has(self.sha) && size(self.sha) > 0)",message="absent and sha are mutually exclusive"

func (*ControlRemoteRefState) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlRemoteRefState.

func (*ControlRemoteRefState) DeepCopyInto added in v0.2.0

func (in *ControlRemoteRefState) DeepCopyInto(out *ControlRemoteRefState)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControlVerifiedBranchBaseline added in v0.2.0

type ControlVerifiedBranchBaseline struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	RepositoryID string `json:"repositoryId"`

	// +kubebuilder:validation:Pattern=`^refs/heads/.+$`
	// +kubebuilder:validation:MaxLength=1024
	Ref string `json:"ref"`

	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	SHA string `json:"sha"`
}

ControlVerifiedBranchBaseline is an independently verified branch baseline.

func (*ControlVerifiedBranchBaseline) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlVerifiedBranchBaseline.

func (*ControlVerifiedBranchBaseline) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControllerEpoch added in v0.2.0

type ControllerEpoch struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ControllerEpochSpec   `json:"spec"`
	Status ControllerEpochStatus `json:"status,omitempty"`
}

ControllerEpoch is the human-visible Kubernetes control record paired with an authoritative namespaced Lease.

func (*ControllerEpoch) DeepCopy added in v0.2.0

func (in *ControllerEpoch) DeepCopy() *ControllerEpoch

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerEpoch.

func (*ControllerEpoch) DeepCopyInto added in v0.2.0

func (in *ControllerEpoch) DeepCopyInto(out *ControllerEpoch)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ControllerEpoch) DeepCopyObject added in v0.2.0

func (in *ControllerEpoch) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ControllerEpochList added in v0.2.0

type ControllerEpochList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ControllerEpoch `json:"items"`
}

ControllerEpochList contains a list of ControllerEpoch.

func (*ControllerEpochList) DeepCopy added in v0.2.0

func (in *ControllerEpochList) DeepCopy() *ControllerEpochList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerEpochList.

func (*ControllerEpochList) DeepCopyInto added in v0.2.0

func (in *ControllerEpochList) DeepCopyInto(out *ControllerEpochList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ControllerEpochList) DeepCopyObject added in v0.2.0

func (in *ControllerEpochList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ControllerEpochSpec added in v0.2.0

type ControllerEpochSpec struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Name string `json:"name"`
}

ControllerEpochSpec is the immutable epoch-domain identity. The associated coordination.k8s.io Lease is the CAS authority for holder and epoch changes. +kubebuilder:validation:XValidation:rule="self == oldSelf",message="controller epoch spec is immutable"

func (*ControllerEpochSpec) DeepCopy added in v0.2.0

func (in *ControllerEpochSpec) DeepCopy() *ControllerEpochSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerEpochSpec.

func (*ControllerEpochSpec) DeepCopyInto added in v0.2.0

func (in *ControllerEpochSpec) DeepCopyInto(out *ControllerEpochSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControllerEpochStatus added in v0.2.0

type ControllerEpochStatus struct {
	// +optional
	// +kubebuilder:validation:Minimum=1
	Epoch int64 `json:"epoch,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=1024
	HolderID string `json:"holderId,omitempty"`

	// +optional
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RequestDigest string `json:"requestDigest,omitempty"`

	// +optional
	// +kubebuilder:validation:Minimum=1
	Version int64 `json:"version,omitempty"`

	// +optional
	AcquiredAt *metav1.Time `json:"acquiredAt,omitempty"`

	// +optional
	UpdatedAt *metav1.Time `json:"updatedAt,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=253
	LeaseName string `json:"leaseName,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=64
	LeaseResourceVersion string `json:"leaseResourceVersion,omitempty"`
}

ControllerEpochStatus mirrors the authoritative Lease state for inspection and recovery. LeaseResourceVersion identifies the exact Lease revision.

func (*ControllerEpochStatus) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControllerEpochStatus.

func (*ControllerEpochStatus) DeepCopyInto added in v0.2.0

func (in *ControllerEpochStatus) DeepCopyInto(out *ControllerEpochStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type CoordinationConfig

type CoordinationConfig struct {
	// Enabled indicates if coordination is enabled
	// +kubebuilder:default=false
	Enabled bool `json:"enabled"`

	// AllowedAgents lists agents this agent can delegate to
	// +optional
	AllowedAgents []AllowedAgent `json:"allowedAgents,omitempty"`

	// MaxConcurrentChildren limits concurrent child tasks
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:default=5
	// +optional
	MaxConcurrentChildren int32 `json:"maxConcurrentChildren,omitempty"`

	// MaxDepth limits delegation depth to prevent infinite loops
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=10
	// +kubebuilder:default=3
	// +optional
	MaxDepth int32 `json:"maxDepth,omitempty"`

	// Autonomous enables autonomous loop mode for coordinator agents using this config.
	// When enabled, the controller re-creates Jobs in a loop instead of marking the task as Succeeded.
	// +optional
	Autonomous bool `json:"autonomous,omitempty"`

	// MaxIterations limits the number of autonomous loop iterations (0 = unlimited).
	// Only used when Autonomous is true.
	// +kubebuilder:validation:Minimum=0
	// +optional
	MaxIterations int32 `json:"maxIterations,omitempty"`

	// ApprovalRequiredTools lists custom tool names that require a human approval before execution.
	// This field is only honored when coordination is enabled and autonomous mode is true.
	// Built-in tools such as request_approval, delegate_task, and web_search are rejected.
	// +optional
	ApprovalRequiredTools []string `json:"approvalRequiredTools,omitempty"`
}

CoordinationConfig enables agent-to-agent delegation

func (*CoordinationConfig) DeepCopy

func (in *CoordinationConfig) DeepCopy() *CoordinationConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CoordinationConfig.

func (*CoordinationConfig) DeepCopyInto

func (in *CoordinationConfig) DeepCopyInto(out *CoordinationConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type DirectOutboundAccess

type DirectOutboundAccess struct {
	// Grant selects RFC 8693 token exchange or RFC 7523 JWT bearer.
	// +kubebuilder:validation:Enum=TokenExchange;JWTBearer
	// +kubebuilder:default=TokenExchange
	// +optional
	Grant string `json:"grant,omitempty"`

	// TokenEndpoint is the exact OAuth token endpoint.
	// +kubebuilder:validation:Required
	TokenEndpoint OutboundTokenEndpoint `json:"tokenEndpoint"`

	// Subject resolves the subject token or JWT assertion.
	// +kubebuilder:validation:Required
	Subject OutboundTokenSource `json:"subject"`

	// Actor optionally resolves an RFC 8693 actor token.
	// +optional
	Actor *OutboundTokenSource `json:"actor,omitempty"`

	// Audiences are emitted as repeated OAuth audience parameters.
	// +optional
	Audiences []string `json:"audiences,omitempty"`

	// Scopes are emitted as a space-separated OAuth scope parameter.
	// TransactionToken subjects may request only a subset of the parent scope.
	// +optional
	Scopes []string `json:"scopes,omitempty"`

	// Resources are emitted as repeated RFC 8707 resource parameters.
	// +optional
	Resources []string `json:"resources,omitempty"`

	// RequestedTokenType is an arbitrary OAuth token-type URN.
	// +optional
	RequestedTokenType string `json:"requestedTokenType,omitempty"`

	// ExpectedIssuedTokenType is the exact issued_token_type required for RFC 8693.
	// RFC 7523 responses may omit issued_token_type.
	// +kubebuilder:validation:MinLength=1
	// +optional
	ExpectedIssuedTokenType string `json:"expectedIssuedTokenType,omitempty"`

	// AdditionalParameters are static form parameters. Reserved OAuth fields are rejected.
	// +kubebuilder:validation:MaxProperties=32
	// +optional
	AdditionalParameters map[string]string `json:"additionalParameters,omitempty"`

	// ClientAuthentication configures OAuth client authentication.
	// +optional
	ClientAuthentication *OutboundClientAuthentication `json:"clientAuthentication,omitempty"`

	// Output configures resource credential injection.
	// +optional
	Output *OutboundCredentialOutput `json:"output,omitempty"`
}

DirectOutboundAccess configures RFC 8693 or RFC 7523 resource credentials. +kubebuilder:validation:XValidation:rule="self.grant != 'JWTBearer' || !has(self.actor)",message="JWTBearer does not support actor" +kubebuilder:validation:XValidation:rule="self.grant != 'JWTBearer' || !has(self.subject.tokenType)",message="JWTBearer subject must not set tokenType" +kubebuilder:validation:XValidation:rule="self.grant != 'TokenExchange' || self.subject.source != 'SecretRef' || (has(self.subject.tokenType) && self.subject.tokenType.size() > 0)",message="SecretRef token exchange subjects require tokenType" +kubebuilder:validation:XValidation:rule="self.grant != 'TokenExchange' || !has(self.actor) || self.actor.source != 'SecretRef' || (has(self.actor.tokenType) && self.actor.tokenType.size() > 0)",message="SecretRef token exchange actors require tokenType" +kubebuilder:validation:XValidation:rule="self.grant != 'TokenExchange' || (has(self.expectedIssuedTokenType) && self.expectedIssuedTokenType.size() > 0)",message="TokenExchange requires expectedIssuedTokenType" +kubebuilder:validation:XValidation:rule="!has(self.additionalParameters) || self.additionalParameters.all(k, !(k.lowerAscii() in ['grant_type','subject_token','subject_token_type','actor_token','actor_token_type','assertion','scope','audience','resource','requested_token_type','client_id','client_secret','client_assertion','client_assertion_type']))",message="additionalParameters must not contain reserved OAuth fields"

func (*DirectOutboundAccess) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DirectOutboundAccess.

func (*DirectOutboundAccess) DeepCopyInto

func (in *DirectOutboundAccess) DeepCopyInto(out *DirectOutboundAccess)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExecutionSpec

type ExecutionSpec struct {
	// RuntimeClassName routes worker pods through a specific RuntimeClass.
	// +optional
	RuntimeClassName string `json:"runtimeClassName,omitempty"`

	// NodeSelector constrains worker pods to nodes with matching labels.
	// +optional
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// Tolerations allows worker pods to schedule onto tainted nodes.
	// +optional
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`

	// Affinity defines Kubernetes affinity and anti-affinity rules for worker pods.
	// +optional
	Affinity *corev1.Affinity `json:"affinity,omitempty"`

	// Workspace requests an execution workspace. Worker-backed Task types use
	// it directly. ACP agent Tasks may bind a workspace-provider-backed
	// RuntimeSession through it (a provider/templateRef request, or a classRef
	// with the workspace provider API enabled); these dispatch paths are
	// flag-gated behind --acp-workspace-dispatch-enabled plus the matching
	// provider flag and fail closed otherwise. Clean-room publication remains
	// owned by RuntimeSession lifecycle.
	// +optional
	Workspace *ExecutionWorkspaceSpec `json:"workspace,omitempty"`
}

ExecutionSpec defines worker pod runtime and placement controls.

func (*ExecutionSpec) DeepCopy

func (in *ExecutionSpec) DeepCopy() *ExecutionSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionSpec.

func (*ExecutionSpec) DeepCopyInto

func (in *ExecutionSpec) DeepCopyInto(out *ExecutionSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExecutionWorkspaceDensityStatus

type ExecutionWorkspaceDensityStatus struct {
	// WorkerCount is the number of workers reported by the provider.
	// +optional
	WorkerCount int32 `json:"workerCount,omitempty"`

	// ActorCount is the number of actors reported by the provider.
	// +optional
	ActorCount int32 `json:"actorCount,omitempty"`

	// RunningActorCount is the number of actors currently running on workers.
	// +optional
	RunningActorCount int32 `json:"runningActorCount,omitempty"`

	// SuspendedActorCount is the number of actors currently suspended.
	// +optional
	SuspendedActorCount int32 `json:"suspendedActorCount,omitempty"`

	// ActorsPerWorker is ActorCount divided by WorkerCount, formatted as a decimal string.
	// +optional
	ActorsPerWorker string `json:"actorsPerWorker,omitempty"`
}

ExecutionWorkspaceDensityStatus reports provider-level actor density.

func (*ExecutionWorkspaceDensityStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionWorkspaceDensityStatus.

func (*ExecutionWorkspaceDensityStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExecutionWorkspaceHibernationSpec

type ExecutionWorkspaceHibernationSpec struct {
	// ProcessMode controls whether each turn starts fresh or reuses a resident
	// process. Defaults to fresh.
	// +optional
	ProcessMode ExecutionWorkspaceProcessMode `json:"processMode,omitempty"`

	// ResidentKey selects the process slot for resident mode. When omitted, the
	// worker derives a stable key from namespace, template, and reuse key.
	// +optional
	ResidentKey string `json:"residentKey,omitempty"`
}

ExecutionWorkspaceHibernationSpec configures resident process reuse.

func (*ExecutionWorkspaceHibernationSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionWorkspaceHibernationSpec.

func (*ExecutionWorkspaceHibernationSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExecutionWorkspacePhase

type ExecutionWorkspacePhase string

ExecutionWorkspacePhase is Orka's provider-neutral workspace lifecycle phase. +kubebuilder:validation:Enum=Pending;Ready;Released;Retained;Deleted;Failed

const (
	ExecutionWorkspacePhasePending  ExecutionWorkspacePhase = "Pending"
	ExecutionWorkspacePhaseReady    ExecutionWorkspacePhase = "Ready"
	ExecutionWorkspacePhaseReleased ExecutionWorkspacePhase = "Released"
	ExecutionWorkspacePhaseRetained ExecutionWorkspacePhase = "Retained"
	ExecutionWorkspacePhaseDeleted  ExecutionWorkspacePhase = "Deleted"
	ExecutionWorkspacePhaseFailed   ExecutionWorkspacePhase = "Failed"
)

type ExecutionWorkspacePlacementStatus

type ExecutionWorkspacePlacementStatus struct {
	// WorkerNamespace is the namespace containing the selected worker pod.
	// +optional
	WorkerNamespace string `json:"workerNamespace,omitempty"`

	// WorkerPool is the provider's worker-pool name when available.
	// +optional
	WorkerPool string `json:"workerPool,omitempty"`

	// WorkerPodName is the selected worker pod name when available.
	// +optional
	WorkerPodName string `json:"workerPodName,omitempty"`
}

ExecutionWorkspacePlacementStatus is the safe placement surface for an execution workspace.

func (*ExecutionWorkspacePlacementStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionWorkspacePlacementStatus.

func (*ExecutionWorkspacePlacementStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExecutionWorkspaceProcessMode

type ExecutionWorkspaceProcessMode string

ExecutionWorkspaceProcessMode controls process lifetime inside a workspace. +kubebuilder:validation:Enum=fresh;resident

const (
	// ExecutionWorkspaceProcessModeFresh starts a fresh command for each task.
	ExecutionWorkspaceProcessModeFresh ExecutionWorkspaceProcessMode = "fresh"
	// ExecutionWorkspaceProcessModeResident reuses a long-lived process when the
	// runtime command supports a stdin-driven resident protocol.
	ExecutionWorkspaceProcessModeResident ExecutionWorkspaceProcessMode = "resident"
)

type ExecutionWorkspaceReason

type ExecutionWorkspaceReason string

ExecutionWorkspaceReason explains provider-neutral workspace lifecycle transitions. +kubebuilder:validation:Enum=WorkspacePending;WorkspaceClaimed;WorkspaceReady;WorkspaceReleased;WorkspaceRetained;WorkspaceDeleted;WorkspaceValidationFailed;WorkspaceAttachmentLocked;WorkspaceClaimFailed;WorkspaceReadinessFailed;WorkspaceHandoffFailed;WorkspaceCommandFailed;WorkspaceSecretScrubFailed;WorkspaceCleanupFailed;WorkspaceStatusUpdateFailed

const (
	ExecutionWorkspaceReasonPending            ExecutionWorkspaceReason = "WorkspacePending"
	ExecutionWorkspaceReasonClaimed            ExecutionWorkspaceReason = "WorkspaceClaimed"
	ExecutionWorkspaceReasonReady              ExecutionWorkspaceReason = "WorkspaceReady"
	ExecutionWorkspaceReasonReleased           ExecutionWorkspaceReason = "WorkspaceReleased"
	ExecutionWorkspaceReasonRetained           ExecutionWorkspaceReason = "WorkspaceRetained"
	ExecutionWorkspaceReasonDeleted            ExecutionWorkspaceReason = "WorkspaceDeleted"
	ExecutionWorkspaceReasonValidationFailed   ExecutionWorkspaceReason = "WorkspaceValidationFailed"
	ExecutionWorkspaceReasonAttachmentLocked   ExecutionWorkspaceReason = "WorkspaceAttachmentLocked"
	ExecutionWorkspaceReasonClaimFailed        ExecutionWorkspaceReason = "WorkspaceClaimFailed"
	ExecutionWorkspaceReasonReadinessFailed    ExecutionWorkspaceReason = "WorkspaceReadinessFailed"
	ExecutionWorkspaceReasonHandoffFailed      ExecutionWorkspaceReason = "WorkspaceHandoffFailed"
	ExecutionWorkspaceReasonCommandFailed      ExecutionWorkspaceReason = "WorkspaceCommandFailed"
	ExecutionWorkspaceReasonSecretScrubFailed  ExecutionWorkspaceReason = "WorkspaceSecretScrubFailed"
	ExecutionWorkspaceReasonCleanupFailed      ExecutionWorkspaceReason = "WorkspaceCleanupFailed"
	ExecutionWorkspaceReasonStatusUpdateFailed ExecutionWorkspaceReason = "WorkspaceStatusUpdateFailed"
)

type ExecutionWorkspaceSnapshotSpec

type ExecutionWorkspaceSnapshotSpec struct {
	// RestoreURI is a provider-native snapshot URI prefix to restore before the
	// workspace command runs.
	// +optional
	RestoreURI string `json:"restoreURI,omitempty"`

	// CheckpointURI is a provider-native snapshot URI prefix to write when the
	// workspace is retained or released.
	// +optional
	CheckpointURI string `json:"checkpointURI,omitempty"`

	// CheckpointOnRelease requests a checkpoint when cleanup releases or retains
	// the workspace. CheckpointURI must be set when this is true.
	// +optional
	CheckpointOnRelease bool `json:"checkpointOnRelease,omitempty"`
}

ExecutionWorkspaceSnapshotSpec selects explicit provider snapshots.

func (*ExecutionWorkspaceSnapshotSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionWorkspaceSnapshotSpec.

func (*ExecutionWorkspaceSnapshotSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExecutionWorkspaceSpec

type ExecutionWorkspaceSpec struct {
	// ClassRef selects an immutable ExecutionWorkspaceClass in the Task namespace. Setting
	// classRef implicitly enables the controller-first workspace path.
	// +optional
	ClassRef *WorkspaceClassReference `json:"classRef,omitempty"`

	// RestoreFrom seeds a new workspace from a retained Data checkpoint in the
	// Task namespace. This is a cold start with fresh credentials. It does not
	// replay a previous Task or restore process memory. Every continuation of
	// the new Session must keep this immutable origin reference.
	// +optional
	RestoreFrom *WorkspaceCheckpointReference `json:"restoreFrom,omitempty"`

	// Enabled requests use of a durable workspace for the task execution.
	// +kubebuilder:default=false
	// +optional
	Enabled bool `json:"enabled,omitempty"`

	// Provider selects the workspace backend. When omitted, the controller
	// resolves the configured default workspace provider; the built-in
	// compatibility default is agent-sandbox.
	// +optional
	Provider WorkspaceProvider `json:"provider,omitempty"`

	// TemplateRef references the workspace template to instantiate or reuse.
	// The template name is required when enabled is true unless the controller
	// is configured with a provider-specific default template.
	// +optional
	TemplateRef *WorkspaceTemplateReference `json:"templateRef,omitempty"`

	// ReusePolicy controls whether the workspace is fresh or session-scoped.
	// Defaults to none when omitted.
	// +kubebuilder:default=none
	// +optional
	ReusePolicy WorkspaceReusePolicy `json:"reusePolicy,omitempty"`

	// CleanupPolicy controls whether the workspace is deleted or retained after use.
	// Defaults to delete when omitted.
	// +optional
	CleanupPolicy WorkspaceCleanupPolicy `json:"cleanupPolicy,omitempty"`

	// WorkspaceSlot names one independently reusable workspace within a Session.
	// +kubebuilder:default=default
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=63
	// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?$`
	// +optional
	WorkspaceSlot string `json:"workspaceSlot,omitempty"`

	// OnDetach requests an action allowed by the selected class.
	// +optional
	OnDetach WorkspaceOnDetachPolicy `json:"onDetach,omitempty"`

	// Boot asks providers that support it to boot the workspace workload from scratch
	// instead of resuming from the provider's default snapshot. Currently supported
	// by the Substrate provider.
	// +optional
	Boot bool `json:"boot,omitempty"`

	// PoolRef references an operator-managed Substrate actor pool for placement,
	// density tracking, and oversubscription policy.
	// +optional
	PoolRef *SubstrateActorPoolReference `json:"poolRef,omitempty"`

	// Snapshot configures explicit provider snapshot restore/checkpoint behavior.
	// Non-empty settings are currently rejected until provider checkpoint/restore
	// support is available through Orka.
	// +optional
	Snapshot *ExecutionWorkspaceSnapshotSpec `json:"snapshot,omitempty"`

	// Hibernation configures process lifetime inside the workspace. Resident
	// mode is currently rejected until the worker protocol can report per-turn
	// completion separately from resident process lifetime.
	// +optional
	Hibernation *ExecutionWorkspaceHibernationSpec `json:"hibernation,omitempty"`
}

ExecutionWorkspaceSpec defines an optional durable execution workspace request. ClassRef selects the provider-neutral controller-first path. Legacy provider/template/pool fields remain served during migration. +kubebuilder:validation:XValidation:rule="!has(self.classRef) || (!has(self.provider) && !has(self.templateRef) && !has(self.poolRef) && (!has(self.enabled) || !self.enabled) && !has(self.cleanupPolicy) && (!has(self.boot) || !self.boot) && !has(self.snapshot) && !has(self.hibernation))",message="classRef cannot be combined with legacy enabled, provider, template, pool, cleanup, boot, snapshot, or hibernation settings" +kubebuilder:validation:XValidation:rule="!has(self.restoreFrom) || has(self.classRef)",message="restoreFrom requires classRef"

func (*ExecutionWorkspaceSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionWorkspaceSpec.

func (*ExecutionWorkspaceSpec) DeepCopyInto

func (in *ExecutionWorkspaceSpec) DeepCopyInto(out *ExecutionWorkspaceSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExecutionWorkspaceStatus

type ExecutionWorkspaceStatus struct {
	// ClassRef is the provider-neutral class selected for controller-first execution.
	// +optional
	ClassRef *WorkspaceClassReference `json:"classRef,omitempty"`

	// WorkspaceRef identifies the concrete ExecutionWorkspace in the Task namespace.
	// +optional
	WorkspaceRef *WorkspaceObjectReference `json:"workspaceRef,omitempty"`

	// State is the provider-neutral concrete workspace state.
	// +optional
	State string `json:"state,omitempty"`

	// AttachedEpoch is the attachment epoch enforced for this Task.
	// +optional
	AttachedEpoch int64 `json:"attachedEpoch,omitempty"`

	// Conditions project generic workspace admission, readiness, attachment, and finalization state.
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// Provider is the resolved legacy workspace backend.
	// +optional
	Provider WorkspaceProvider `json:"provider,omitempty"`

	// TemplateRef is the resolved workspace template.
	// +optional
	TemplateRef *WorkspaceTemplateReference `json:"templateRef,omitempty"`

	// Phase is the provider-neutral lifecycle phase.
	// +optional
	Phase ExecutionWorkspacePhase `json:"phase,omitempty"`

	// Reason is the provider-neutral lifecycle reason.
	// +optional
	Reason ExecutionWorkspaceReason `json:"reason,omitempty"`

	// ReusePolicy is the resolved reuse policy.
	// +optional
	ReusePolicy WorkspaceReusePolicy `json:"reusePolicy,omitempty"`

	// CleanupPolicy is the resolved cleanup policy.
	// +optional
	CleanupPolicy WorkspaceCleanupPolicy `json:"cleanupPolicy,omitempty"`

	// Reused reports whether an existing workspace was reattached.
	// +optional
	Reused bool `json:"reused,omitempty"`

	// Placement reports non-secret runtime placement metadata for the workspace.
	// +optional
	Placement *ExecutionWorkspacePlacementStatus `json:"placement,omitempty"`

	// Density reports non-secret actor and worker counts for the workspace provider.
	// +optional
	Density *ExecutionWorkspaceDensityStatus `json:"density,omitempty"`

	// ResumeLatency is the observed time spent resuming the workspace until it was ready.
	// +optional
	ResumeLatency *metav1.Duration `json:"resumeLatency,omitempty"`

	// Message contains sanitized lifecycle context.
	// +optional
	Message string `json:"message,omitempty"`

	// LastUpdateTime is the last time workspace status was updated.
	// +optional
	LastUpdateTime *metav1.Time `json:"lastUpdateTime,omitempty"`
}

ExecutionWorkspaceStatus is the safe status surface for execution workspace lifecycle.

func (*ExecutionWorkspaceStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionWorkspaceStatus.

func (*ExecutionWorkspaceStatus) DeepCopyInto

func (in *ExecutionWorkspaceStatus) DeepCopyInto(out *ExecutionWorkspaceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExternalEffect added in v0.2.0

type ExternalEffect struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ExternalEffectSpec   `json:"spec"`
	Status ExternalEffectStatus `json:"status,omitempty"`
}

ExternalEffect is the Kubernetes-authoritative canonical idempotency record for an operation outside SQLite.

func (*ExternalEffect) DeepCopy added in v0.2.0

func (in *ExternalEffect) DeepCopy() *ExternalEffect

DeepCopy creates an independent copy.

func (*ExternalEffect) DeepCopyInto added in v0.2.0

func (in *ExternalEffect) DeepCopyInto(out *ExternalEffect)

DeepCopyInto is hand-written so this new root type is usable before the repository owner regenerates zz_generated.deepcopy.go.

func (*ExternalEffect) DeepCopyObject added in v0.2.0

func (in *ExternalEffect) DeepCopyObject() runtime.Object

DeepCopyObject implements runtime.Object.

type ExternalEffectControlState added in v0.2.0

type ExternalEffectControlState string

ExternalEffectControlState is the durable state of one idempotent operation performed outside the controller's SQLite transaction boundary. +kubebuilder:validation:Enum=Pending;InFlight;Succeeded;Failed;OutcomeUnknown

type ExternalEffectList added in v0.2.0

type ExternalEffectList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ExternalEffect `json:"items"`
}

ExternalEffectList contains a list of ExternalEffect.

func (*ExternalEffectList) DeepCopy added in v0.2.0

func (in *ExternalEffectList) DeepCopy() *ExternalEffectList

DeepCopy creates an independent list copy.

func (*ExternalEffectList) DeepCopyInto added in v0.2.0

func (in *ExternalEffectList) DeepCopyInto(out *ExternalEffectList)

DeepCopyInto copies a list and all of its items.

func (*ExternalEffectList) DeepCopyObject added in v0.2.0

func (in *ExternalEffectList) DeepCopyObject() runtime.Object

DeepCopyObject implements runtime.Object.

type ExternalEffectSpec added in v0.2.0

type ExternalEffectSpec struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	ID string `json:"id"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	Kind string `json:"kind"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	IdentityNamespace string `json:"identityNamespace"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	AggregateID string `json:"aggregateId"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	OperationID string `json:"operationId"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RequestDigest string `json:"requestDigest"`
}

ExternalEffectSpec is the immutable canonical identity and request binding. The identity namespace intentionally duplicates metadata.namespace so a serialized record remains self-describing and can be checked fail-closed. +kubebuilder:validation:XValidation:rule="self == oldSelf",message="external effect spec is immutable"

func (*ExternalEffectSpec) DeepCopy added in v0.2.0

func (in *ExternalEffectSpec) DeepCopy() *ExternalEffectSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalEffectSpec.

func (*ExternalEffectSpec) DeepCopyInto added in v0.2.0

func (in *ExternalEffectSpec) DeepCopyInto(out *ExternalEffectSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ExternalEffectStatus added in v0.2.0

type ExternalEffectStatus struct {
	// +optional
	State ExternalEffectControlState `json:"state,omitempty"`

	// +optional
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	ResponseDigest string `json:"responseDigest,omitempty"`

	// Response stores a bounded JSON response for idempotent replay. Large
	// response bodies should remain in the artifact store and be referenced by
	// a compact receipt instead.
	// +optional
	Response *apiextensionsv1.JSON `json:"response,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=1024
	LeaseOwner string `json:"leaseOwner,omitempty"`

	// +optional
	LeaseExpiresAt *metav1.Time `json:"leaseExpiresAt,omitempty"`

	// +optional
	// +kubebuilder:validation:Minimum=0
	Attempts int64 `json:"attempts,omitempty"`

	ControlRecordMutationStatus `json:",inline"`
}

ExternalEffectStatus contains the mutable state, response, lease, and epoch fence for one canonical external effect. +kubebuilder:validation:XValidation:rule="!has(self.state) || self.state != 'InFlight' || (has(self.leaseOwner) && size(self.leaseOwner) > 0 && has(self.leaseExpiresAt))",message="in-flight external effects require a lease owner and expiry" +kubebuilder:validation:XValidation:rule="!has(self.state) || self.state == 'InFlight' || ((!has(self.leaseOwner) || size(self.leaseOwner) == 0) && !has(self.leaseExpiresAt))",message="non-in-flight external effects must clear lease fields"

func (*ExternalEffectStatus) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalEffectStatus.

func (*ExternalEffectStatus) DeepCopyInto added in v0.2.0

func (in *ExternalEffectStatus) DeepCopyInto(out *ExternalEffectStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type FindingCountsStatus

type FindingCountsStatus struct {
	Total    int32 `json:"total,omitempty"`
	Critical int32 `json:"critical,omitempty"`
	High     int32 `json:"high,omitempty"`
	Medium   int32 `json:"medium,omitempty"`
	Low      int32 `json:"low,omitempty"`
}

FindingCountsStatus summarizes open findings by severity.

func (*FindingCountsStatus) DeepCopy

func (in *FindingCountsStatus) DeepCopy() *FindingCountsStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FindingCountsStatus.

func (*FindingCountsStatus) DeepCopyInto

func (in *FindingCountsStatus) DeepCopyInto(out *FindingCountsStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GatewayOutboundAccess

type GatewayOutboundAccess struct {
	// ServiceRef selects the gateway Service.
	ServiceRef OutboundServiceReference `json:"serviceRef"`

	// Scheme defaults to http for in-cluster gateways.
	// +kubebuilder:validation:Enum=http;https
	// +kubebuilder:default=http
	// +optional
	Scheme string `json:"scheme,omitempty"`

	// TLS configures gateway verification when scheme is https.
	// +optional
	TLS *OutboundTLSConfig `json:"tls,omitempty"`
}

GatewayOutboundAccess routes Tool requests through a trusted Service.

func (*GatewayOutboundAccess) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayOutboundAccess.

func (*GatewayOutboundAccess) DeepCopyInto

func (in *GatewayOutboundAccess) DeepCopyInto(out *GatewayOutboundAccess)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HTTPExecution

type HTTPExecution struct {
	// URL is the endpoint to call when the tool is invoked
	// Required for plain HTTP tools. MCP actor-backed tools may omit it when
	// HTTP is present only for transport auth settings.
	// +optional
	URL string `json:"url,omitempty"`

	// Method is the HTTP method to use (default: POST)
	// +kubebuilder:validation:Enum=GET;POST;PUT;PATCH;DELETE
	// +kubebuilder:default=POST
	// +optional
	Method string `json:"method,omitempty"`

	// Headers are additional headers to include in requests
	// +optional
	Headers map[string]string `json:"headers,omitempty"`

	// Timeout is the request timeout (default: 30s)
	// Consequential (non-read) tools brokered to ACP runtimes execute under a
	// fixed external-effect ledger lease; their timeout must stay at or below
	// the controller's brokered call bound (currently four minutes). Longer
	// timeouts are rejected when the tool is exposed to an ACP prompt, and
	// brokered calls are always clamped to that bound at execution time.
	// +optional
	Timeout *metav1.Duration `json:"timeout,omitempty"`

	// AuthSecretRef references a Secret containing authentication token
	// Token is injected as Authorization: Bearer <token> (when AuthInject=header)
	// or into the request body (when AuthInject=body)
	// +optional
	AuthSecretRef *SecretKeySelector `json:"authSecretRef,omitempty"`

	// OutboundAccessPolicyRef references an OutboundAccessPolicy in the same namespace.
	// +optional
	OutboundAccessPolicyRef *LocalObjectReference `json:"outboundAccessPolicyRef,omitempty"`

	// AuthInject specifies where to inject the auth token: "header" (default) or "body"
	// When "header", the token is added as Authorization: Bearer <token>
	// When "body", the token is added to the JSON request body using AuthBodyKey
	// +kubebuilder:validation:Enum=header;body
	// +kubebuilder:default=header
	// +optional
	AuthInject string `json:"authInject,omitempty"`

	// AuthBodyKey is the JSON key name to use when AuthInject=body
	// For example, "api_key" would inject {"api_key": "<token>", ...}
	// Only used when AuthInject=body
	// +optional
	AuthBodyKey string `json:"authBodyKey,omitempty"`
}

HTTPExecution defines how to execute the tool via HTTP

func (*HTTPExecution) DeepCopy

func (in *HTTPExecution) DeepCopy() *HTTPExecution

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HTTPExecution.

func (*HTTPExecution) DeepCopyInto

func (in *HTTPExecution) DeepCopyInto(out *HTTPExecution)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HarnessRuntimeStatus

type HarnessRuntimeStatus struct {
	// RuntimeRefName is the AgentRuntime name for custom runtimeRef turns.
	// Empty means built-in CLI wrapper.
	// +optional
	RuntimeRefName string `json:"runtimeRefName,omitempty"`

	// RuntimeName is the runtime name advertised by the harness capabilities
	// and sent in turn metadata.
	// +optional
	RuntimeName string `json:"runtimeName,omitempty"`

	// ContractVersion is the Orka harness contract version used for the turn.
	// +optional
	ContractVersion string `json:"contractVersion,omitempty"`

	// Endpoint is the non-secret harness base URL selected when the turn started.
	// +optional
	Endpoint string `json:"endpoint,omitempty"`

	// RuntimeGeneration is the AgentRuntime generation selected when the turn started.
	// +optional
	RuntimeGeneration int64 `json:"runtimeGeneration,omitempty"`

	// AuthRefName is the Secret name selected when the turn started.
	// +optional
	AuthRefName string `json:"authRefName,omitempty"`

	// AuthRefField is the Secret data field selected when the turn started.
	// +optional
	AuthRefField string `json:"authRefField,omitempty"`

	// AuthRefResourceVersion is the auth Secret resourceVersion validated
	// before starting the turn.
	// +optional
	AuthRefResourceVersion string `json:"authRefResourceVersion,omitempty"`

	// Attempt is the durable harness v1 attempt number.
	// +kubebuilder:validation:Minimum=1
	// +optional
	Attempt int32 `json:"attempt,omitempty"`

	// TurnID is the deterministic, non-secret harness turn identity.
	// +optional
	TurnID string `json:"turnID,omitempty"`

	// RuntimeSessionID is the deterministic, non-secret v1 runtime-session identity.
	// +optional
	RuntimeSessionID string `json:"runtimeSessionID,omitempty"`

	// State is the durable harness v1 attempt state projected for operators.
	// +optional
	State TaskExecutionState `json:"state,omitempty"`

	// Outcome is set only for a terminal harness v1 attempt.
	// +optional
	Outcome TaskExecutionOutcome `json:"outcome,omitempty"`

	// Reason is a bounded machine-readable terminal reason code.
	// +kubebuilder:validation:MaxLength=256
	// +optional
	Reason string `json:"reason,omitempty"`

	// TerminalReceiptDigest identifies the authoritative terminal or unknown receipt.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	// +optional
	TerminalReceiptDigest string `json:"terminalReceiptDigest,omitempty"`

	// RequestDigest binds the canonical StartTurn request admitted by the
	// durable wrapper ledger.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	// +optional
	RequestDigest string `json:"requestDigest,omitempty"`

	// ControllerEpoch records the fenced controller epoch driving the attempt.
	// +kubebuilder:validation:Minimum=0
	// +optional
	ControllerEpoch int64 `json:"controllerEpoch,omitempty"`

	// LastEventSeq is the highest durably mapped harness frame sequence.
	// +kubebuilder:validation:Minimum=0
	// +optional
	LastEventSeq int64 `json:"lastEventSeq,omitempty"`

	// CancelRequestedAt records a durable cancellation request. Cancellation
	// remains nonterminal until a terminal frame or ledger receipt is observed.
	// +optional
	CancelRequestedAt *metav1.Time `json:"cancelRequestedAt,omitempty"`

	// Message is bounded, sanitized execution context.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Message string `json:"message,omitempty"`

	// LastTransitionTime is the last durable v1 attempt transition projected to
	// the Task.
	// +optional
	LastTransitionTime *metav1.Time `json:"lastTransitionTime,omitempty"`
}

HarnessRuntimeStatus records the resolved harness v1 runtime and its durable attempt projection. Harness v1 cannot write the v2-only execution/delivery surfaces, so terminal ambiguity is represented here without weakening route exclusivity. +kubebuilder:validation:XValidation:rule="!has(self.state) || !(self.state in ['Succeeded', 'Failed', 'Cancelled', 'OutcomeUnknown']) || has(self.outcome)",message="terminal harness state requires an outcome" +kubebuilder:validation:XValidation:rule="!has(self.outcome) || (has(self.state) && self.state in ['Succeeded', 'Failed', 'Cancelled', 'OutcomeUnknown'])",message="harness outcome requires a terminal state" +kubebuilder:validation:XValidation:rule="!has(self.state) || self.state != 'OutcomeUnknown' || (has(self.outcome) && self.outcome == 'OutcomeUnknown')",message="OutcomeUnknown harness state requires OutcomeUnknown outcome"

func (*HarnessRuntimeStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HarnessRuntimeStatus.

func (*HarnessRuntimeStatus) DeepCopyInto

func (in *HarnessRuntimeStatus) DeepCopyInto(out *HarnessRuntimeStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LegacyAgentWorkspaceConfig added in v0.2.0

type LegacyAgentWorkspaceConfig struct {
	// GitRepo is the repository URL to clone.
	// +optional
	GitRepo string `json:"gitRepo,omitempty"`

	// Branch is the git branch to checkout.
	// +optional
	Branch string `json:"branch,omitempty"`

	// Ref is a specific git ref (commit SHA, tag) to checkout.
	// +optional
	Ref string `json:"ref,omitempty"`

	// GitSecretRef references a Secret containing git credentials. Adopted
	// legacy bindings freeze the exact Secret identity; new bindings reject it.
	// +optional
	GitSecretRef *corev1.LocalObjectReference `json:"gitSecretRef,omitempty"`

	// SubPath is a subdirectory within the repo to use as workspace root.
	// +optional
	SubPath string `json:"subPath,omitempty"`

	// ForkRepo is the writable fork repository URL for pushing changes.
	// +optional
	ForkRepo string `json:"forkRepo,omitempty"`

	// PRBaseBranch is the upstream branch to target for pull requests.
	// +optional
	PRBaseBranch string `json:"prBaseBranch,omitempty"`

	// PushBranch is the remote branch name to push changes to after the agent
	// completes.
	// +optional
	PushBranch string `json:"pushBranch,omitempty"`
}

LegacyAgentWorkspaceConfig is the harness v1 agent workspace shape preserved at the historical spec.agentRuntime.workspace JSON path. Historically valid stored values round-trip unchanged and are intentionally not subject to the v2 WorkspaceConfig URL and credential CEL policy; the shared schema keeps only protocol-neutral validation, and protocol-specific rules are enforced at binding resolution. These fields never enter new bindings: new v1 workspaces are credential-free and public-read-only by policy.

func (*LegacyAgentWorkspaceConfig) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LegacyAgentWorkspaceConfig.

func (*LegacyAgentWorkspaceConfig) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LocalObjectReference

type LocalObjectReference struct {
	// Name is the referenced object name.
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`
}

LocalObjectReference selects an object in the same namespace.

func (*LocalObjectReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LocalObjectReference.

func (*LocalObjectReference) DeepCopyInto

func (in *LocalObjectReference) DeepCopyInto(out *LocalObjectReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MCPToolServer

type MCPToolServer struct {
	// Path is the HTTP path exposed by the MCP server inside the actor.
	// Defaults to /mcp.
	// +optional
	Path string `json:"path,omitempty"`

	// Workspace configures a provider-neutral Service-mode ExecutionWorkspace.
	// +optional
	Workspace *MCPWorkspace `json:"workspace,omitempty"`

	// SubstrateActor configures the legacy durable Substrate actor backend.
	// +optional
	SubstrateActor *SubstrateMCPActor `json:"substrateActor,omitempty"`
}

MCPToolServer configures a Model Context Protocol server backend. +kubebuilder:validation:XValidation:rule="has(self.substrateActor) != has(self.workspace)",message="exactly one of substrateActor or workspace is required"

func (*MCPToolServer) DeepCopy

func (in *MCPToolServer) DeepCopy() *MCPToolServer

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPToolServer.

func (*MCPToolServer) DeepCopyInto

func (in *MCPToolServer) DeepCopyInto(out *MCPToolServer)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MCPWorkspace

type MCPWorkspace struct {
	// ClassRef references a class in the Tool namespace.
	ClassRef WorkspaceClassReference `json:"classRef"`

	// Port is the service port exposed by the MCP server.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	Port int32 `json:"port"`
}

MCPWorkspace selects a Service-mode ExecutionWorkspaceClass for hosting an MCP server.

func (*MCPWorkspace) DeepCopy

func (in *MCPWorkspace) DeepCopy() *MCPWorkspace

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPWorkspace.

func (*MCPWorkspace) DeepCopyInto

func (in *MCPWorkspace) DeepCopyInto(out *MCPWorkspace)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ModelConfig

type ModelConfig struct {
	// Provider is the LLM provider (anthropic, openai)
	// Optional if providerRef is set on the Agent
	// +kubebuilder:validation:Enum=anthropic;openai
	// +optional
	Provider string `json:"provider,omitempty"`

	// Name is the model identifier
	// Optional if providerRef is set and Provider has defaultModel
	// +optional
	Name string `json:"name,omitempty"`

	// Temperature controls randomness in generation
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=2
	// +optional
	Temperature *float64 `json:"temperature,omitempty"`

	// ContextWindow is the reviewed model context capacity in tokens. Built-in
	// runtimes that manage their own compaction require this value explicitly.
	// +kubebuilder:validation:Minimum=1
	// +optional
	ContextWindow *int32 `json:"contextWindow,omitempty"`

	// MaxTokens limits the response length. OpenCode validates positive reviewed
	// limits at its runtime-specific admission boundary; existing Agent objects
	// may retain the legacy zero value.
	// +optional
	MaxTokens *int32 `json:"maxTokens,omitempty"`

	// Fallbacks defines alternative providers to try when the primary fails.
	// Each fallback specifies a Provider CRD and optional model override.
	// +optional
	Fallbacks []ModelFallback `json:"fallbacks,omitempty"`
}

ModelConfig defines LLM model configuration

func (*ModelConfig) DeepCopy

func (in *ModelConfig) DeepCopy() *ModelConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModelConfig.

func (*ModelConfig) DeepCopyInto

func (in *ModelConfig) DeepCopyInto(out *ModelConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ModelFallback

type ModelFallback struct {
	// ProviderRef is the name of a Provider CRD to fall back to
	// +kubebuilder:validation:Required
	ProviderRef string `json:"providerRef"`

	// Model to use with this provider (optional, uses provider's defaultModel if empty)
	// +optional
	Model string `json:"model,omitempty"`
}

ModelFallback defines a fallback provider configuration

func (*ModelFallback) DeepCopy

func (in *ModelFallback) DeepCopy() *ModelFallback

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModelFallback.

func (*ModelFallback) DeepCopyInto

func (in *ModelFallback) DeepCopyInto(out *ModelFallback)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ModelTokenLimits added in v0.2.0

type ModelTokenLimits struct {
	// Context is the maximum model context capacity in tokens.
	// +kubebuilder:validation:Minimum=1
	Context int64 `json:"context"`

	// Output is the maximum generated output in tokens.
	// +kubebuilder:validation:Minimum=1
	Output int64 `json:"output"`
}

ModelTokenLimits pins the reviewed token capacities used by a runtime's local context-management policy. +kubebuilder:validation:XValidation:rule="self.context > self.output",message="model context limit must exceed output limit"

func (*ModelTokenLimits) DeepCopy added in v0.2.0

func (in *ModelTokenLimits) DeepCopy() *ModelTokenLimits

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModelTokenLimits.

func (*ModelTokenLimits) DeepCopyInto added in v0.2.0

func (in *ModelTokenLimits) DeepCopyInto(out *ModelTokenLimits)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NamespacedSecretKeySelector

type NamespacedSecretKeySelector struct {
	// +optional
	Namespace string `json:"namespace,omitempty"`
	Name      string `json:"name"`
	Key       string `json:"key"`
}

NamespacedSecretKeySelector is key-specific. Namespace defaults to the policy namespace and any different namespace is rejected.

func (*NamespacedSecretKeySelector) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespacedSecretKeySelector.

func (*NamespacedSecretKeySelector) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OutboundAccessPolicy

type OutboundAccessPolicy struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   OutboundAccessPolicySpec   `json:"spec,omitempty"`
	Status OutboundAccessPolicyStatus `json:"status,omitempty"`
}

OutboundAccessPolicy governs resource credentials or trusted gateway routing for Tools in the same namespace.

func (*OutboundAccessPolicy) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundAccessPolicy.

func (*OutboundAccessPolicy) DeepCopyInto

func (in *OutboundAccessPolicy) DeepCopyInto(out *OutboundAccessPolicy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*OutboundAccessPolicy) DeepCopyObject

func (in *OutboundAccessPolicy) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type OutboundAccessPolicyList

type OutboundAccessPolicyList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []OutboundAccessPolicy `json:"items"`
}

OutboundAccessPolicyList contains a list of OutboundAccessPolicy objects.

func (*OutboundAccessPolicyList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundAccessPolicyList.

func (*OutboundAccessPolicyList) DeepCopyInto

func (in *OutboundAccessPolicyList) DeepCopyInto(out *OutboundAccessPolicyList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*OutboundAccessPolicyList) DeepCopyObject

func (in *OutboundAccessPolicyList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type OutboundAccessPolicySpec

type OutboundAccessPolicySpec struct {
	// Direct exchanges a resolved subject for a downstream resource credential.
	// +optional
	Direct *DirectOutboundAccess `json:"direct,omitempty"`

	// Gateway routes the original Tool request through a trusted Kubernetes Service.
	// +optional
	Gateway *GatewayOutboundAccess `json:"gateway,omitempty"`
}

OutboundAccessPolicySpec configures exactly one outbound credential or routing adapter. +kubebuilder:validation:XValidation:rule="has(self.direct) != has(self.gateway)",message="exactly one of direct or gateway is required"

func (*OutboundAccessPolicySpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundAccessPolicySpec.

func (*OutboundAccessPolicySpec) DeepCopyInto

func (in *OutboundAccessPolicySpec) DeepCopyInto(out *OutboundAccessPolicySpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OutboundAccessPolicyStatus

type OutboundAccessPolicyStatus struct {
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

OutboundAccessPolicyStatus contains only safe validation state.

func (*OutboundAccessPolicyStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundAccessPolicyStatus.

func (*OutboundAccessPolicyStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OutboundClientAuthentication

type OutboundClientAuthentication struct {
	// Method defaults to None.
	// +kubebuilder:validation:Enum=None;ClientSecretBasic;ClientSecretPost;PrivateKeyJWT
	// +kubebuilder:default=None
	// +optional
	Method string `json:"method,omitempty"`

	// ClientID is required by confidential-client methods.
	// +optional
	ClientID string `json:"clientID,omitempty"`

	// ClientSecretRef supplies client-secret basic/post credentials.
	// +optional
	ClientSecretRef *NamespacedSecretKeySelector `json:"clientSecretRef,omitempty"`

	// PrivateKeyRef supplies a PEM RSA or P-256 key for private_key_jwt.
	// +optional
	PrivateKeyRef *NamespacedSecretKeySelector `json:"privateKeyRef,omitempty"`

	// KeyID is copied into the private_key_jwt header.
	// +optional
	KeyID string `json:"keyID,omitempty"`

	// Audience overrides the private_key_jwt aud claim. The endpoint is the default.
	// +optional
	Audience string `json:"audience,omitempty"`
}

OutboundClientAuthentication configures one OAuth client authentication method. +kubebuilder:validation:XValidation:rule="self.method != 'None' || (!has(self.clientSecretRef) && !has(self.privateKeyRef))",message="None must not configure client credentials" +kubebuilder:validation:XValidation:rule="!(self.method in ['ClientSecretBasic','ClientSecretPost']) || (has(self.clientID) && self.clientID.size() > 0 && has(self.clientSecretRef) && !has(self.privateKeyRef))",message="client-secret methods require clientID and clientSecretRef only" +kubebuilder:validation:XValidation:rule="self.method != 'PrivateKeyJWT' || (has(self.clientID) && self.clientID.size() > 0 && has(self.privateKeyRef) && !has(self.clientSecretRef))",message="PrivateKeyJWT requires clientID and privateKeyRef only"

func (*OutboundClientAuthentication) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundClientAuthentication.

func (*OutboundClientAuthentication) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OutboundCredentialOutput

type OutboundCredentialOutput struct {
	// Header defaults to Authorization. Txn-Token is forbidden.
	// +kubebuilder:default=Authorization
	// +optional
	Header string `json:"header,omitempty"`

	// Prefix defaults to "Bearer ". Set an explicit empty string for no prefix.
	// +kubebuilder:default="Bearer "
	// +optional
	Prefix *string `json:"prefix,omitempty"`
}

OutboundCredentialOutput configures downstream header injection. +kubebuilder:validation:XValidation:rule="!has(self.header) || self.header.lowerAscii() != 'txn-token'",message="Txn-Token cannot be used as the resource credential output header"

func (*OutboundCredentialOutput) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundCredentialOutput.

func (*OutboundCredentialOutput) DeepCopyInto

func (in *OutboundCredentialOutput) DeepCopyInto(out *OutboundCredentialOutput)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OutboundServiceAccountReference

type OutboundServiceAccountReference struct {
	// Name is the exact same-namespace ServiceAccount name.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$`
	Name string `json:"name"`

	// Audiences are requested for the projected ServiceAccount token.
	// +optional
	Audiences []string `json:"audiences,omitempty"`

	// ExpirationSeconds requests a bounded token lifetime.
	// +kubebuilder:validation:Minimum=600
	// +kubebuilder:validation:Maximum=3600
	// +kubebuilder:default=600
	// +optional
	ExpirationSeconds *int64 `json:"expirationSeconds,omitempty"`
}

OutboundServiceAccountReference configures a Kubernetes TokenRequest.

func (*OutboundServiceAccountReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundServiceAccountReference.

func (*OutboundServiceAccountReference) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OutboundServiceReference

type OutboundServiceReference struct {
	// Namespace defaults to the policy namespace. Cross-namespace refs require
	// an exact trusted Service-reference allowlist entry.
	// +optional
	Namespace string `json:"namespace,omitempty"`

	Name string `json:"name"`

	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	Port int32 `json:"port"`
}

OutboundServiceReference is an exact namespace/name/port tuple.

func (*OutboundServiceReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundServiceReference.

func (*OutboundServiceReference) DeepCopyInto

func (in *OutboundServiceReference) DeepCopyInto(out *OutboundServiceReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OutboundTLSConfig

type OutboundTLSConfig struct {
	// ServerName overrides TLS SNI and hostname verification.
	// +optional
	ServerName string `json:"serverName,omitempty"`

	// CASecretRef selects PEM CA data from a same-namespace Secret.
	// +optional
	CASecretRef *NamespacedSecretKeySelector `json:"caSecretRef,omitempty"`
}

OutboundTLSConfig configures TLS server identity and an optional CA Secret.

func (*OutboundTLSConfig) DeepCopy

func (in *OutboundTLSConfig) DeepCopy() *OutboundTLSConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundTLSConfig.

func (*OutboundTLSConfig) DeepCopyInto

func (in *OutboundTLSConfig) DeepCopyInto(out *OutboundTLSConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OutboundTokenEndpoint

type OutboundTokenEndpoint struct {
	// URL is an exact absolute HTTPS token endpoint without userinfo.
	// +optional
	URL string `json:"url,omitempty"`

	// ServiceRef selects a token endpoint Service. Cross-namespace refs require
	// an exact controller allowlist entry.
	// +optional
	ServiceRef *OutboundServiceReference `json:"serviceRef,omitempty"`

	// Scheme is used with ServiceRef and defaults to https.
	// +kubebuilder:validation:Enum=http;https
	// +optional
	Scheme string `json:"scheme,omitempty"`

	// Path is the exact endpoint path used with ServiceRef.
	// +optional
	Path string `json:"path,omitempty"`

	// TLS configures verification for an HTTPS endpoint.
	// +optional
	TLS *OutboundTLSConfig `json:"tls,omitempty"`
}

OutboundTokenEndpoint selects either an absolute URL or a Kubernetes Service. +kubebuilder:validation:XValidation:rule="has(self.url) != has(self.serviceRef)",message="exactly one of url or serviceRef is required" +kubebuilder:validation:XValidation:rule="!has(self.url) || (!has(self.scheme) && !has(self.path))",message="scheme and path are only valid with serviceRef" +kubebuilder:validation:XValidation:rule="!has(self.url) || self.url.startsWith('https://')",message="url token endpoints must use https"

func (*OutboundTokenEndpoint) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundTokenEndpoint.

func (*OutboundTokenEndpoint) DeepCopyInto

func (in *OutboundTokenEndpoint) DeepCopyInto(out *OutboundTokenEndpoint)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type OutboundTokenSource

type OutboundTokenSource struct {
	// Source selects TransactionToken, ServiceAccount, or SecretRef.
	// +kubebuilder:validation:Enum=TransactionToken;ServiceAccount;SecretRef
	Source string `json:"source"`

	// TokenType is an arbitrary RFC 8693 token-type URN. It is not used by
	// RFC 7523 JWT bearer grants.
	// +optional
	TokenType string `json:"tokenType,omitempty"`

	// SecretRef selects a same-namespace Secret value.
	// +optional
	SecretRef *NamespacedSecretKeySelector `json:"secretRef,omitempty"`

	// ServiceAccountRef selects a ServiceAccount and TokenRequest parameters.
	// +optional
	ServiceAccountRef *OutboundServiceAccountReference `json:"serviceAccountRef,omitempty"`
}

OutboundTokenSource selects a direct-exchange subject or actor. +kubebuilder:validation:XValidation:rule="self.source != 'TransactionToken' || (!has(self.secretRef) && !has(self.serviceAccountRef))",message="TransactionToken must not configure Secret or ServiceAccount references" +kubebuilder:validation:XValidation:rule="self.source != 'ServiceAccount' || (has(self.serviceAccountRef) && !has(self.secretRef))",message="ServiceAccount requires only serviceAccountRef" +kubebuilder:validation:XValidation:rule="self.source != 'SecretRef' || (has(self.secretRef) && !has(self.serviceAccountRef))",message="SecretRef requires only secretRef"

func (*OutboundTokenSource) DeepCopy

func (in *OutboundTokenSource) DeepCopy() *OutboundTokenSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundTokenSource.

func (*OutboundTokenSource) DeepCopyInto

func (in *OutboundTokenSource) DeepCopyInto(out *OutboundTokenSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PolicyConfigMapKeyRef

type PolicyConfigMapKeyRef struct {
	// Name is the ConfigMap name.
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// Key is the ConfigMap data key. Defaults to "policy" when omitted.
	// +optional
	Key string `json:"key,omitempty"`
}

PolicyConfigMapKeyRef references a key in a same-namespace ConfigMap that contains scanner policy text.

func (*PolicyConfigMapKeyRef) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PolicyConfigMapKeyRef.

func (*PolicyConfigMapKeyRef) DeepCopyInto

func (in *PolicyConfigMapKeyRef) DeepCopyInto(out *PolicyConfigMapKeyRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PreparedPublicationControlReceipt added in v0.2.0

type PreparedPublicationControlReceipt struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	OperationID string `json:"operationId"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RequestDigest string `json:"requestDigest"`

	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	TreeSHA string `json:"treeSha"`

	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	CommitSHA string `json:"commitSha"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	ManifestDigest string `json:"manifestDigest"`

	// RelativeRoot is the canonical repository-relative workspace root applied
	// to every path in the immutable delta artifact.
	// +optional
	// +kubebuilder:validation:MaxLength=1024
	RelativeRoot string `json:"relativeRoot,omitempty"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	BundleArtifactID string `json:"bundleArtifactId"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	BundleDigest string `json:"bundleDigest"`

	// +kubebuilder:validation:Minimum=1
	BundleSizeBytes int64 `json:"bundleSizeBytes"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=255
	BundleMediaType string `json:"bundleMediaType"`

	// +kubebuilder:validation:Pattern=`^refs/orka/publications/[a-f0-9]{64}$`
	BundleRef string `json:"bundleRef"`

	PreparedAt metav1.Time `json:"preparedAt"`
}

PreparedPublicationControlReceipt records deterministic commit preparation.

func (*PreparedPublicationControlReceipt) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PreparedPublicationControlReceipt.

func (*PreparedPublicationControlReceipt) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PriorTaskReference

type PriorTaskReference struct {
	// Name is the name of the prior task
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Namespace is the namespace of the prior task (defaults to Task namespace)
	// +optional
	Namespace string `json:"namespace,omitempty"`
}

PriorTaskReference references a previously completed task whose diff should be applied to the workspace before this task begins execution.

func (*PriorTaskReference) DeepCopy

func (in *PriorTaskReference) DeepCopy() *PriorTaskReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PriorTaskReference.

func (*PriorTaskReference) DeepCopyInto

func (in *PriorTaskReference) DeepCopyInto(out *PriorTaskReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PromptAttempt added in v0.2.0

type PromptAttempt struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   PromptAttemptSpec   `json:"spec"`
	Status PromptAttemptStatus `json:"status,omitempty"`
}

PromptAttempt is the Kubernetes-authoritative prompt execution and delivery control record.

func (*PromptAttempt) DeepCopy added in v0.2.0

func (in *PromptAttempt) DeepCopy() *PromptAttempt

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PromptAttempt.

func (*PromptAttempt) DeepCopyInto added in v0.2.0

func (in *PromptAttempt) DeepCopyInto(out *PromptAttempt)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*PromptAttempt) DeepCopyObject added in v0.2.0

func (in *PromptAttempt) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type PromptAttemptDeliveryState added in v0.2.0

type PromptAttemptDeliveryState string

PromptAttemptDeliveryState is the durable delivery state for one prompt. +kubebuilder:validation:Enum=NotRequested;Validating;Preparing;Prepared;Publishing;Verifying;VerifiedExact;DeliveredSuperseded;ReadValidated;NoChange;CancelledBeforePublish;ReadOnlyWorkspaceModified;DeliveryConflict;CredentialBlocked;PublicationOutcomeUnknown

type PromptAttemptExecutionState added in v0.2.0

type PromptAttemptExecutionState string

PromptAttemptExecutionState is the durable prompt execution state. +kubebuilder:validation:Enum=Queued;Reserved;SessionStarting;Planned;Submitting;SubmittedUnknown;Accepted;Running;Settling;Succeeded;Failed;Cancelled;OutcomeUnknown

type PromptAttemptList added in v0.2.0

type PromptAttemptList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []PromptAttempt `json:"items"`
}

PromptAttemptList contains a list of PromptAttempt.

func (*PromptAttemptList) DeepCopy added in v0.2.0

func (in *PromptAttemptList) DeepCopy() *PromptAttemptList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PromptAttemptList.

func (*PromptAttemptList) DeepCopyInto added in v0.2.0

func (in *PromptAttemptList) DeepCopyInto(out *PromptAttemptList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*PromptAttemptList) DeepCopyObject added in v0.2.0

func (in *PromptAttemptList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type PromptAttemptSpec added in v0.2.0

type PromptAttemptSpec struct {
	// ID is the canonical DurableControlStore prompt-attempt ID.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	ID string `json:"id"`

	// TaskUID is the immutable Kubernetes UID of the Task.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	TaskUID string `json:"taskUid"`

	// Attempt is the one-based Task attempt number.
	// +kubebuilder:validation:Minimum=1
	Attempt int64 `json:"attempt"`

	// PromptID is the immutable prompt identity within the attempt.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	PromptID string `json:"promptId"`

	// RequestDigest binds the prompt identity to exact canonical input.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RequestDigest string `json:"requestDigest"`

	// BindingDigest identifies the immutable Task-lifetime v2 execution
	// binding. It is optional only so pre-coexistence records remain readable;
	// all PromptAttempts newly created through DurableControlStore require it.
	// +optional
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	BindingDigest string `json:"bindingDigest,omitempty"`

	// SnapshotDigest identifies the immutable encrypted execution snapshot.
	// It is optional only so pre-coexistence records remain readable; all
	// PromptAttempts newly created through DurableControlStore require it.
	// +optional
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	SnapshotDigest string `json:"snapshotDigest,omitempty"`

	// CredentialBindings is the immutable, role-separated Secret identity set.
	// +optional
	// +listType=map
	// +listMapKey=role
	// +kubebuilder:validation:MaxItems=4
	CredentialBindings []PromptCredentialBinding `json:"credentialBindings,omitempty"`
}

PromptAttemptSpec is the immutable identity and request binding for one Task prompt attempt. +kubebuilder:validation:XValidation:rule="self == oldSelf",message="prompt attempt spec is immutable" +kubebuilder:validation:XValidation:rule="has(self.bindingDigest) == has(self.snapshotDigest)",message="bindingDigest and snapshotDigest must be recorded together"

func (*PromptAttemptSpec) DeepCopy added in v0.2.0

func (in *PromptAttemptSpec) DeepCopy() *PromptAttemptSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PromptAttemptSpec.

func (*PromptAttemptSpec) DeepCopyInto added in v0.2.0

func (in *PromptAttemptSpec) DeepCopyInto(out *PromptAttemptSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PromptAttemptStatus added in v0.2.0

type PromptAttemptStatus struct {
	// SessionUID is immutable after first binding.
	// +optional
	// +kubebuilder:validation:MaxLength=1024
	SessionUID string `json:"sessionUid,omitempty"`

	// SessionLeaseGeneration is immutable after first binding.
	// +optional
	// +kubebuilder:validation:Minimum=1
	SessionLeaseGeneration int64 `json:"sessionLeaseGeneration,omitempty"`

	// RuntimeInstanceID is immutable after first binding.
	// +optional
	// +kubebuilder:validation:MaxLength=1024
	RuntimeInstanceID string `json:"runtimeInstanceId,omitempty"`

	// +optional
	ExecutionState PromptAttemptExecutionState `json:"executionState,omitempty"`

	// +optional
	DeliveryState PromptAttemptDeliveryState `json:"deliveryState,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=16384
	TerminalReason string `json:"terminalReason,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=16384
	OutcomeMarker string `json:"outcomeMarker,omitempty"`

	ControlRecordMutationStatus `json:",inline"`
}

PromptAttemptStatus holds the exact execution and delivery state machines. +kubebuilder:validation:XValidation:rule="!has(self.executionState) || self.executionState != 'OutcomeUnknown' || (has(self.outcomeMarker) && size(self.outcomeMarker) > 0)",message="OutcomeUnknown requires an explicit outcome marker"

func (*PromptAttemptStatus) DeepCopy added in v0.2.0

func (in *PromptAttemptStatus) DeepCopy() *PromptAttemptStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PromptAttemptStatus.

func (*PromptAttemptStatus) DeepCopyInto added in v0.2.0

func (in *PromptAttemptStatus) DeepCopyInto(out *PromptAttemptStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PromptCredentialBinding added in v0.2.0

type PromptCredentialBinding struct {
	// +kubebuilder:validation:Enum=SourceRead;TargetRead;TargetWrite;Forge
	Role string `json:"role"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Namespace string `json:"namespace"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	SecretName string `json:"secretName"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	SecretKey string `json:"secretKey"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	SecretUID string `json:"secretUid"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	ResourceVersion string `json:"resourceVersion"`
}

PromptCredentialBinding freezes one role-specific Secret identity without storing credential material.

func (*PromptCredentialBinding) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PromptCredentialBinding.

func (*PromptCredentialBinding) DeepCopyInto added in v0.2.0

func (in *PromptCredentialBinding) DeepCopyInto(out *PromptCredentialBinding)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PromptSource

type PromptSource struct {
	// Inline is the inline prompt text
	// +optional
	Inline string `json:"inline,omitempty"`

	// ConfigMapRef references a ConfigMap containing the prompt
	// +optional
	ConfigMapRef *ConfigMapKeySelector `json:"configMapRef,omitempty"`
}

PromptSource defines where to get a prompt from +kubebuilder:validation:XValidation:rule="!(has(self.inline) && self.inline.size() > 0 && has(self.configMapRef))",message="system prompt must use only one of inline or configMapRef"

func (*PromptSource) DeepCopy

func (in *PromptSource) DeepCopy() *PromptSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PromptSource.

func (*PromptSource) DeepCopyInto

func (in *PromptSource) DeepCopyInto(out *PromptSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Provider

type Provider struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ProviderSpec   `json:"spec,omitempty"`
	Status ProviderStatus `json:"status,omitempty"`
}

Provider is the Schema for the providers API

func (*Provider) DeepCopy

func (in *Provider) DeepCopy() *Provider

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Provider.

func (*Provider) DeepCopyInto

func (in *Provider) DeepCopyInto(out *Provider)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Provider) DeepCopyObject

func (in *Provider) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ProviderList

type ProviderList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Provider `json:"items"`
}

ProviderList contains a list of Provider

func (*ProviderList) DeepCopy

func (in *ProviderList) DeepCopy() *ProviderList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderList.

func (*ProviderList) DeepCopyInto

func (in *ProviderList) DeepCopyInto(out *ProviderList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ProviderList) DeepCopyObject

func (in *ProviderList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ProviderReference

type ProviderReference struct {
	// Name is the name of the Provider
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Namespace is the namespace of the Provider (defaults to Task namespace)
	// +optional
	Namespace string `json:"namespace,omitempty"`
}

ProviderReference references a Provider CRD

func (*ProviderReference) DeepCopy

func (in *ProviderReference) DeepCopy() *ProviderReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderReference.

func (*ProviderReference) DeepCopyInto

func (in *ProviderReference) DeepCopyInto(out *ProviderReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProviderSecretRef

type ProviderSecretRef struct {
	// Name is the name of the Secret
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Key is the key within the Secret containing the API key
	// +kubebuilder:default="api-key"
	// +optional
	Key string `json:"key,omitempty"`
}

ProviderSecretRef references a Secret containing API credentials

func (*ProviderSecretRef) DeepCopy

func (in *ProviderSecretRef) DeepCopy() *ProviderSecretRef

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderSecretRef.

func (*ProviderSecretRef) DeepCopyInto

func (in *ProviderSecretRef) DeepCopyInto(out *ProviderSecretRef)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProviderSpec

type ProviderSpec struct {
	// Type is the LLM provider type (anthropic, openai, azure-openai)
	// +kubebuilder:validation:Required
	Type ProviderType `json:"type"`

	// SecretRef references the Secret containing API credentials
	// +kubebuilder:validation:Required
	SecretRef ProviderSecretRef `json:"secretRef"`

	// BaseURL is an optional custom API endpoint (for proxies or self-hosted)
	// +optional
	BaseURL string `json:"baseURL,omitempty"`

	// DefaultModel is the default model to use if not specified in Task/Agent
	// +optional
	DefaultModel string `json:"defaultModel,omitempty"`

	// Azure contains Azure-specific configuration
	// +optional
	Azure *AzureConfig `json:"azure,omitempty"`
}

ProviderSpec defines the desired state of Provider

func (*ProviderSpec) DeepCopy

func (in *ProviderSpec) DeepCopy() *ProviderSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderSpec.

func (*ProviderSpec) DeepCopyInto

func (in *ProviderSpec) DeepCopyInto(out *ProviderSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProviderStatus

type ProviderStatus struct {
	// Ready indicates whether the provider is configured and validated
	// +optional
	Ready bool `json:"ready,omitempty"`

	// LastValidated is the timestamp of the last successful validation
	// +optional
	LastValidated *metav1.Time `json:"lastValidated,omitempty"`

	// Message provides additional status information
	// +optional
	Message string `json:"message,omitempty"`

	// Conditions represent the current state of the Provider
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

ProviderStatus defines the observed state of Provider

func (*ProviderStatus) DeepCopy

func (in *ProviderStatus) DeepCopy() *ProviderStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProviderStatus.

func (*ProviderStatus) DeepCopyInto

func (in *ProviderStatus) DeepCopyInto(out *ProviderStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ProviderType

type ProviderType string

ProviderType defines the type of LLM provider +kubebuilder:validation:Enum=anthropic;openai;azure-openai

const (
	// ProviderTypeAnthropic is the Anthropic Claude provider
	ProviderTypeAnthropic ProviderType = "anthropic"
	// ProviderTypeOpenAI is the OpenAI provider
	ProviderTypeOpenAI ProviderType = "openai"
	// ProviderTypeAzureOpenAI is the Azure OpenAI provider
	ProviderTypeAzureOpenAI ProviderType = "azure-openai"
)

type Publication added in v0.2.0

type Publication struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   PublicationSpec   `json:"spec"`
	Status PublicationStatus `json:"status,omitempty"`
}

Publication is the Kubernetes-authoritative clean-room publication record.

func (*Publication) DeepCopy added in v0.2.0

func (in *Publication) DeepCopy() *Publication

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Publication.

func (*Publication) DeepCopyInto added in v0.2.0

func (in *Publication) DeepCopyInto(out *Publication)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Publication) DeepCopyObject added in v0.2.0

func (in *Publication) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type PublicationControlState added in v0.2.0

type PublicationControlState string

PublicationControlState is the clean-room publication state machine. +kubebuilder:validation:Enum=Preparing;Prepared;Publishing;Verifying;VerifiedExact;DeliveredSuperseded;CancelledBeforePublish;DeliveryConflict;CredentialBlocked;PreparationFailed;PublicationOutcomeUnknown

type PublicationList added in v0.2.0

type PublicationList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Publication `json:"items"`
}

PublicationList contains a list of Publication.

func (*PublicationList) DeepCopy added in v0.2.0

func (in *PublicationList) DeepCopy() *PublicationList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PublicationList.

func (*PublicationList) DeepCopyInto added in v0.2.0

func (in *PublicationList) DeepCopyInto(out *PublicationList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*PublicationList) DeepCopyObject added in v0.2.0

func (in *PublicationList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type PublicationPullRequestIntent added in v0.2.0

type PublicationPullRequestIntent struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	BaseRepositoryID string `json:"baseRepositoryId"`

	// +kubebuilder:validation:Pattern=`^refs/heads/.+$`
	// +kubebuilder:validation:MaxLength=1024
	BaseRef string `json:"baseRef"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	HeadRepositoryID string `json:"headRepositoryId"`

	// +kubebuilder:validation:Pattern=`^refs/heads/.+$`
	// +kubebuilder:validation:MaxLength=1024
	HeadRef string `json:"headRef"`

	// +kubebuilder:validation:Minimum=1
	PublicationGeneration int64 `json:"publicationGeneration"`

	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	ExpectedHeadSHA string `json:"expectedHeadSha"`
}

PublicationPullRequestIntent is the exact forge tuple persisted before the first forge API call.

func (*PublicationPullRequestIntent) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PublicationPullRequestIntent.

func (*PublicationPullRequestIntent) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PublicationSpec added in v0.2.0

type PublicationSpec struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	ID string `json:"id"`

	// +kubebuilder:validation:Minimum=1
	Generation int64 `json:"generation"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	TaskUID string `json:"taskUid"`

	// +kubebuilder:validation:Minimum=1
	Attempt int64 `json:"attempt"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	PromptID string `json:"promptId"`

	// +optional
	// +kubebuilder:validation:MaxLength=1024
	SessionUID string `json:"sessionUid,omitempty"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	BranchClaimID string `json:"branchClaimId"`

	// +kubebuilder:validation:Minimum=1
	BranchClaimGeneration int64 `json:"branchClaimGeneration"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	SourceRepositoryID string `json:"sourceRepositoryId"`

	// SourceRef is the exact immutable source ref or revision selector.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	SourceRef string `json:"sourceRef"`

	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	SourceBaselineSHA string `json:"sourceBaselineSha"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	TargetRepositoryID string `json:"targetRepositoryId"`

	// +kubebuilder:validation:Pattern=`^refs/heads/.+$`
	// +kubebuilder:validation:MaxLength=1024
	TargetRef string `json:"targetRef"`

	Baseline ControlRemoteRefState `json:"baseline"`

	// ArtifactID identifies the durable content-addressed change artifact.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	ArtifactID string `json:"artifactId"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	ArtifactDigest string `json:"artifactDigest"`

	// +kubebuilder:validation:Minimum=1
	ArtifactSizeBytes int64 `json:"artifactSizeBytes"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=255
	ArtifactMediaType string `json:"artifactMediaType"`

	// PublicationCredentialRef identifies an operation-scoped Secret reference;
	// it never contains credential material.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	PublicationCredentialRef string `json:"publicationCredentialRef"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	CommitIdentity string `json:"commitIdentity"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=16384
	CommitMessage string `json:"commitMessage"`

	CommitTimestamp metav1.Time `json:"commitTimestamp"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RequestDigest string `json:"requestDigest"`
}

PublicationSpec is the immutable clean-room publication identity and input. Mutable receipts and forge intent live only in status. +kubebuilder:validation:XValidation:rule="self == oldSelf",message="publication spec is immutable"

func (*PublicationSpec) DeepCopy added in v0.2.0

func (in *PublicationSpec) DeepCopy() *PublicationSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PublicationSpec.

func (*PublicationSpec) DeepCopyInto added in v0.2.0

func (in *PublicationSpec) DeepCopyInto(out *PublicationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PublicationStatus added in v0.2.0

type PublicationStatus struct {
	// +optional
	State PublicationControlState `json:"state,omitempty"`

	// +optional
	PRIntent *PublicationPullRequestIntent `json:"prIntent,omitempty"`

	// +optional
	PreparedReceipt *PreparedPublicationControlReceipt `json:"preparedReceipt,omitempty"`

	// +optional
	PublishReceipt *PublishOperationControlReceipt `json:"publishReceipt,omitempty"`

	// +optional
	VerificationReceipt *PublicationVerificationControlReceipt `json:"verificationReceipt,omitempty"`

	// +optional
	PullRequestReceipt *PullRequestOperationControlReceipt `json:"pullRequestReceipt,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=16384
	TerminalReason string `json:"terminalReason,omitempty"`

	ControlRecordMutationStatus `json:",inline"`
}

PublicationStatus contains mutable state, exact receipts, and epoch fencing. +kubebuilder:validation:XValidation:rule="!has(self.state) || !(self.state in ['DeliveryConflict', 'CredentialBlocked', 'PreparationFailed', 'PublicationOutcomeUnknown']) || (has(self.terminalReason) && size(self.terminalReason) > 0)",message="failure and unknown publication states require a terminal reason"

func (*PublicationStatus) DeepCopy added in v0.2.0

func (in *PublicationStatus) DeepCopy() *PublicationStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PublicationStatus.

func (*PublicationStatus) DeepCopyInto added in v0.2.0

func (in *PublicationStatus) DeepCopyInto(out *PublicationStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PublicationVerificationControlReceipt added in v0.2.0

type PublicationVerificationControlReceipt struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	OperationID string `json:"operationId"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RequestDigest string `json:"requestDigest"`

	Outcome PublicationControlState `json:"outcome"`

	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	ExpectedCommitSHA string `json:"expectedCommitSha"`

	ObservedRemote ControlRemoteRefState `json:"observedRemote"`

	// +optional
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	DescendantProofDigest string `json:"descendantProofDigest,omitempty"`

	VerifiedAt metav1.Time `json:"verifiedAt"`
}

PublicationVerificationControlReceipt is an independent remote observation.

func (*PublicationVerificationControlReceipt) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PublicationVerificationControlReceipt.

func (*PublicationVerificationControlReceipt) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PublishOperationControlReceipt added in v0.2.0

type PublishOperationControlReceipt struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	OperationID string `json:"operationId"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RequestDigest string `json:"requestDigest"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	TargetRepositoryID string `json:"targetRepositoryId"`

	// +kubebuilder:validation:Pattern=`^refs/heads/.+$`
	// +kubebuilder:validation:MaxLength=1024
	TargetRef string `json:"targetRef"`

	RemoteBefore ControlRemoteRefState `json:"remoteBefore"`

	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	ExpectedCommitSHA string `json:"expectedCommitSha"`

	AcknowledgementUnknown bool `json:"acknowledgementUnknown"`

	PublishedAt metav1.Time `json:"publishedAt"`
}

PublishOperationControlReceipt records the exact server-enforced ref CAS.

func (*PublishOperationControlReceipt) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PublishOperationControlReceipt.

func (*PublishOperationControlReceipt) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PullRequestOperationControlReceipt added in v0.2.0

type PullRequestOperationControlReceipt struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	OperationID string `json:"operationId"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RequestDigest string `json:"requestDigest"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	IntentKey string `json:"intentKey"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	ForgeID string `json:"forgeId"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=2048
	URL string `json:"url"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	State string `json:"state"`

	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	HeadSHA string `json:"headSha"`

	ReconciledAt metav1.Time `json:"reconciledAt"`
}

PullRequestOperationControlReceipt snapshots exact forge reconciliation.

func (*PullRequestOperationControlReceipt) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PullRequestOperationControlReceipt.

func (*PullRequestOperationControlReceipt) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryIdentity added in v0.2.0

type RepositoryIdentity struct {
	// Provider identifies the source-control provider or forge.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=63
	// +kubebuilder:validation:Pattern=`^[A-Za-z0-9][A-Za-z0-9._-]{0,62}$`
	Provider string `json:"provider"`

	// ID is the canonical credential-free URL identity and must match the
	// corresponding repository URL after normalization. For GitHub, use
	// "github.com/owner/repo"; GitHub GraphQL node IDs are not accepted.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	ID string `json:"id"`
}

RepositoryIdentity is the canonical identity derived from a credential-free repository URL. It is used for ownership, BranchClaim, and publication reconciliation decisions without persisting credentials.

func (*RepositoryIdentity) DeepCopy added in v0.2.0

func (in *RepositoryIdentity) DeepCopy() *RepositoryIdentity

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryIdentity.

func (*RepositoryIdentity) DeepCopyInto added in v0.2.0

func (in *RepositoryIdentity) DeepCopyInto(out *RepositoryIdentity)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitor

type RepositoryMonitor struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   RepositoryMonitorSpec   `json:"spec,omitempty"`
	Status RepositoryMonitorStatus `json:"status,omitempty"`
}

RepositoryMonitor is the Schema for repository maintainer automation.

func (*RepositoryMonitor) DeepCopy

func (in *RepositoryMonitor) DeepCopy() *RepositoryMonitor

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitor.

func (*RepositoryMonitor) DeepCopyInto

func (in *RepositoryMonitor) DeepCopyInto(out *RepositoryMonitor)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RepositoryMonitor) DeepCopyObject

func (in *RepositoryMonitor) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RepositoryMonitorAgents

type RepositoryMonitorAgents struct {
	// Reviewer is the agent used for pull-request review tasks.
	// +optional
	Reviewer *AgentReference `json:"reviewer,omitempty"`

	// Triager is the agent used for issue triage tasks.
	// +optional
	Triager *AgentReference `json:"triager,omitempty"`

	// Researcher is the agent used for issue research tasks.
	// +optional
	Researcher *AgentReference `json:"researcher,omitempty"`

	// Planner is the agent used for issue planning tasks.
	// +optional
	Planner *AgentReference `json:"planner,omitempty"`

	// Repairer is the agent used for repair tasks.
	// +optional
	Repairer *AgentReference `json:"repairer,omitempty"`

	// Implementer is the agent used for guarded issue implementation tasks.
	// +optional
	Implementer *AgentReference `json:"implementer,omitempty"`
}

RepositoryMonitorAgents configures task agents for monitor workflows.

func (*RepositoryMonitorAgents) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorAgents.

func (*RepositoryMonitorAgents) DeepCopyInto

func (in *RepositoryMonitorAgents) DeepCopyInto(out *RepositoryMonitorAgents)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorAutomergeSpec

type RepositoryMonitorAutomergeSpec struct {
	// Enabled enables automerge jobs.
	// +optional
	Enabled bool `json:"enabled,omitempty"`

	// RequireGlobalMergeGate requires the controller-wide merge gate.
	// +kubebuilder:default=true
	// +optional
	RequireGlobalMergeGate *bool `json:"requireGlobalMergeGate,omitempty"`

	// AllowedMergeMethods lists merge methods allowed by policy.
	// +kubebuilder:validation:items:Enum=merge;squash;rebase
	// +listType=set
	// +optional
	AllowedMergeMethods []string `json:"allowedMergeMethods,omitempty"`
}

RepositoryMonitorAutomergeSpec configures automerge behavior.

func (*RepositoryMonitorAutomergeSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorAutomergeSpec.

func (*RepositoryMonitorAutomergeSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorCommitTarget

type RepositoryMonitorCommitTarget struct {
	// Enabled enables commit monitoring.
	// +optional
	Enabled bool `json:"enabled,omitempty"`

	// MaxPerRun limits commits selected by one background run.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=100
	// +optional
	MaxPerRun *int32 `json:"maxPerRun,omitempty"`
}

RepositoryMonitorCommitTarget configures commit monitoring.

func (*RepositoryMonitorCommitTarget) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorCommitTarget.

func (*RepositoryMonitorCommitTarget) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorGitHubLabelTriggers

type RepositoryMonitorGitHubLabelTriggers struct {
	// Enabled enables durable command intake for configured GitHub labels.
	// +optional
	Enabled bool `json:"enabled,omitempty"`

	// ConsumeCommandLabels removes accepted one-shot command labels after durable intake.
	// +optional
	ConsumeCommandLabels bool `json:"consumeCommandLabels,omitempty"`

	// RequireActorPermission is the minimum GitHub permission for mutating/code-executing commands.
	// Supported values are write, maintain, and admin. Defaults to write.
	// +kubebuilder:validation:Enum=write;maintain;admin
	// +kubebuilder:default=write
	// +optional
	RequireActorPermission string `json:"requireActorPermission,omitempty"`

	// Issues maps issue command intents to label names. Empty fields use the default orka:* labels.
	// +optional
	Issues RepositoryMonitorIssueCommandLabels `json:"issues,omitempty"`

	// PullRequests maps pull-request command intents to label names. Empty fields use the default orka:* labels.
	// +optional
	PullRequests RepositoryMonitorPullRequestCommandLabels `json:"pullRequests,omitempty"`
}

RepositoryMonitorGitHubLabelTriggers configures orka:* label command intake.

func (*RepositoryMonitorGitHubLabelTriggers) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorGitHubLabelTriggers.

func (*RepositoryMonitorGitHubLabelTriggers) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorGitHubTriggers

type RepositoryMonitorGitHubTriggers struct {
	// Labels maps GitHub labels to durable RepositoryMonitor commands.
	// +optional
	Labels RepositoryMonitorGitHubLabelTriggers `json:"labels,omitempty"`
}

RepositoryMonitorGitHubTriggers configures GitHub-specific monitor triggers.

func (*RepositoryMonitorGitHubTriggers) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorGitHubTriggers.

func (*RepositoryMonitorGitHubTriggers) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorIssueCommandLabels

type RepositoryMonitorIssueCommandLabels struct {
	// +optional
	Triage string `json:"triage,omitempty"`
	// +optional
	Research string `json:"research,omitempty"`
	// +optional
	Plan string `json:"plan,omitempty"`
	// +optional
	ApprovePlan string `json:"approvePlan,omitempty"`
	// +optional
	Implement string `json:"implement,omitempty"`
	// +optional
	Decompose string `json:"decompose,omitempty"`
	// +optional
	Stop string `json:"stop,omitempty"`
	// +optional
	Resume string `json:"resume,omitempty"`
}

RepositoryMonitorIssueCommandLabels configures issue command label names.

func (*RepositoryMonitorIssueCommandLabels) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssueCommandLabels.

func (*RepositoryMonitorIssueCommandLabels) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorIssueImplementationSpec

type RepositoryMonitorIssueImplementationSpec struct {
	// Enabled enables implementation. Defaults to true when an implementer agent is configured and a command requests it.
	// +optional
	Enabled *bool `json:"enabled,omitempty"`

	// RequireApprovedPlan blocks implementation unless the latest plan was approved.
	// +optional
	RequireApprovedPlan *bool `json:"requireApprovedPlan,omitempty"`

	// BranchPrefix is the branch prefix for implementation push branches. Defaults to orka/issue.
	// +optional
	BranchPrefix string `json:"branchPrefix,omitempty"`

	// MaxActive bounds concurrently active issue implementation/mutation jobs per monitor. Defaults to 2.
	// +kubebuilder:validation:Minimum=0
	// +optional
	MaxActive *int32 `json:"maxActive,omitempty"`

	// MaxAttemptsPerIssue bounds implementation attempts for one issue. Defaults to 2.
	// +kubebuilder:validation:Minimum=0
	// +optional
	MaxAttemptsPerIssue *int32 `json:"maxAttemptsPerIssue,omitempty"`

	// MaxChangedFiles bounds changed files in an implementation patch. Defaults to 12.
	// +kubebuilder:validation:Minimum=1
	// +optional
	MaxChangedFiles *int32 `json:"maxChangedFiles,omitempty"`

	// AllowedPaths optionally restricts implementation patch files to these path globs/prefixes.
	// Examples: api/**, internal/**, docs/**.
	// +listType=set
	// +optional
	AllowedPaths []string `json:"allowedPaths,omitempty"`
}

RepositoryMonitorIssueImplementationSpec configures implementation behavior.

func (*RepositoryMonitorIssueImplementationSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssueImplementationSpec.

func (*RepositoryMonitorIssueImplementationSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorIssuePlanningSpec

type RepositoryMonitorIssuePlanningSpec struct {
	// Enabled enables planning. Defaults to true when a planner agent is configured and a command requests it.
	// +optional
	Enabled *bool `json:"enabled,omitempty"`

	// RequireHumanApprovalFor names risk levels or plan categories that require explicit approval.
	// +listType=set
	// +optional
	RequireHumanApprovalFor []string `json:"requireHumanApprovalFor,omitempty"`
}

RepositoryMonitorIssuePlanningSpec configures planning behavior.

func (*RepositoryMonitorIssuePlanningSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssuePlanningSpec.

func (*RepositoryMonitorIssuePlanningSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorIssueTarget

type RepositoryMonitorIssueTarget struct {
	// Enabled enables issue monitoring.
	// +optional
	Enabled bool `json:"enabled,omitempty"`

	// MaxPerRun limits issues selected by one background run.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=100
	// +optional
	MaxPerRun *int32 `json:"maxPerRun,omitempty"`

	// IncludeLabels optionally restricts issue inventory to issues with any of these labels.
	// +listType=set
	// +optional
	IncludeLabels []string `json:"includeLabels,omitempty"`

	// ExcludeLabels excludes matching issues from actionable inventory.
	// +listType=set
	// +optional
	ExcludeLabels []string `json:"excludeLabels,omitempty"`
}

RepositoryMonitorIssueTarget configures issue monitoring.

func (*RepositoryMonitorIssueTarget) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssueTarget.

func (*RepositoryMonitorIssueTarget) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorIssueWorkflowPhaseSpec

type RepositoryMonitorIssueWorkflowPhaseSpec struct {
	// Enabled enables this phase. Defaults to true when the corresponding agent is configured and a command requests it.
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

RepositoryMonitorIssueWorkflowPhaseSpec configures a read-only issue phase.

func (*RepositoryMonitorIssueWorkflowPhaseSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssueWorkflowPhaseSpec.

func (*RepositoryMonitorIssueWorkflowPhaseSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorIssueWorkflowSpec

type RepositoryMonitorIssueWorkflowSpec struct {
	// Triage controls read-only issue classification.
	// +optional
	Triage RepositoryMonitorIssueWorkflowPhaseSpec `json:"triage,omitempty"`

	// Research controls read-only issue research.
	// +optional
	Research RepositoryMonitorIssueWorkflowPhaseSpec `json:"research,omitempty"`

	// Planning controls read-only implementation plan generation.
	// +optional
	Planning RepositoryMonitorIssuePlanningSpec `json:"planning,omitempty"`

	// Implementation controls bounded implementation tasks.
	// +optional
	Implementation RepositoryMonitorIssueImplementationSpec `json:"implementation,omitempty"`
}

RepositoryMonitorIssueWorkflowSpec configures issue workflow phases.

func (*RepositoryMonitorIssueWorkflowSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssueWorkflowSpec.

func (*RepositoryMonitorIssueWorkflowSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorList

type RepositoryMonitorList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []RepositoryMonitor `json:"items"`
}

RepositoryMonitorList contains a list of RepositoryMonitor resources.

func (*RepositoryMonitorList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorList.

func (*RepositoryMonitorList) DeepCopyInto

func (in *RepositoryMonitorList) DeepCopyInto(out *RepositoryMonitorList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RepositoryMonitorList) DeepCopyObject

func (in *RepositoryMonitorList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RepositoryMonitorPolicySpec

type RepositoryMonitorPolicySpec struct {
	// ProtectedLabels block automated review, repair, or merge according to policy.
	// +listType=set
	// +optional
	ProtectedLabels []string `json:"protectedLabels,omitempty"`

	// PauseLabels block further automation while present.
	// +listType=set
	// +optional
	PauseLabels []string `json:"pauseLabels,omitempty"`

	// AllowedRepositoryPermissions lists GitHub permissions allowed to issue write commands.
	// +kubebuilder:validation:items:Enum=admin;maintain;write
	// +listType=set
	// +optional
	AllowedRepositoryPermissions []string `json:"allowedRepositoryPermissions,omitempty"`
}

RepositoryMonitorPolicySpec configures monitor safety policy.

func (*RepositoryMonitorPolicySpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorPolicySpec.

func (*RepositoryMonitorPolicySpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorPullRequestCommandLabels

type RepositoryMonitorPullRequestCommandLabels struct {
	// +optional
	Review string `json:"review,omitempty"`
	// +optional
	Fix string `json:"fix,omitempty"`
	// +optional
	FixCI string `json:"fixCI,omitempty"`
	// +optional
	UpdateBranch string `json:"updateBranch,omitempty"`
	// +optional
	Automerge string `json:"automerge,omitempty"`
	// +optional
	Stop string `json:"stop,omitempty"`
	// +optional
	Resume string `json:"resume,omitempty"`
}

RepositoryMonitorPullRequestCommandLabels configures pull-request command label names.

func (*RepositoryMonitorPullRequestCommandLabels) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorPullRequestCommandLabels.

func (*RepositoryMonitorPullRequestCommandLabels) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorPullRequestTarget

type RepositoryMonitorPullRequestTarget struct {
	// Enabled enables pull request monitoring.
	// +kubebuilder:default=true
	// +optional
	Enabled *bool `json:"enabled,omitempty"`

	// IncludeDrafts allows draft pull requests to be selected for review.
	// +optional
	IncludeDrafts bool `json:"includeDrafts,omitempty"`

	// MaxPerRun limits pull requests selected by one background run.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=100
	// +kubebuilder:default=20
	// +optional
	MaxPerRun *int32 `json:"maxPerRun,omitempty"`
}

RepositoryMonitorPullRequestTarget configures pull request monitoring.

func (*RepositoryMonitorPullRequestTarget) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorPullRequestTarget.

func (*RepositoryMonitorPullRequestTarget) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorRepairSpec

type RepositoryMonitorRepairSpec struct {
	// Enabled enables repair jobs.
	// +optional
	Enabled bool `json:"enabled,omitempty"`

	// MaxRepairsPerPR bounds total automated repairs per PR.
	// +kubebuilder:validation:Minimum=0
	// +optional
	MaxRepairsPerPR *int32 `json:"maxRepairsPerPR,omitempty"`

	// MaxRepairsPerHead bounds automated repairs per PR head SHA.
	// +kubebuilder:validation:Minimum=0
	// +optional
	MaxRepairsPerHead *int32 `json:"maxRepairsPerHead,omitempty"`

	// MaxValidationRetries bounds validation retries for one repair job.
	// +kubebuilder:validation:Minimum=0
	// +optional
	MaxValidationRetries *int32 `json:"maxValidationRetries,omitempty"`
}

RepositoryMonitorRepairSpec configures bounded repair behavior.

func (*RepositoryMonitorRepairSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorRepairSpec.

func (*RepositoryMonitorRepairSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorReviewPublishInlineSpec

type RepositoryMonitorReviewPublishInlineSpec struct {
	// Enabled enables inline comments when Mode is summary_with_inline_findings.
	// +optional
	Enabled bool `json:"enabled,omitempty"`

	// MinPriority is the lowest finding priority eligible for inline comments. Defaults to P2.
	// +kubebuilder:validation:Enum=P0;P1;P2;P3
	// +kubebuilder:default=P2
	// +optional
	MinPriority string `json:"minPriority,omitempty"`

	// MaxComments caps inline comments per review. Defaults to 10.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=50
	// +optional
	MaxComments *int32 `json:"maxComments,omitempty"`
}

RepositoryMonitorReviewPublishInlineSpec configures optional inline GitHub review comments.

func (*RepositoryMonitorReviewPublishInlineSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorReviewPublishInlineSpec.

func (*RepositoryMonitorReviewPublishInlineSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorReviewPublishSpec

type RepositoryMonitorReviewPublishSpec struct {
	// Enabled enables GitHub pull request review publishing. Defaults to false.
	// +optional
	Enabled bool `json:"enabled,omitempty"`

	// Mode selects whether Orka publishes only a deterministic summary or also eligible inline findings.
	// +kubebuilder:validation:Enum=summary_only;summary_with_inline_findings
	// +kubebuilder:default=summary_only
	// +optional
	Mode string `json:"mode,omitempty"`

	// Event is the GitHub review event to submit. V1 only supports COMMENT.
	// +kubebuilder:validation:Enum=COMMENT
	// +kubebuilder:default=COMMENT
	// +optional
	Event string `json:"event,omitempty"`

	// PostPassed controls whether clean/passed reviews are posted. Defaults to false.
	// +optional
	PostPassed *bool `json:"postPassed,omitempty"`

	// PostNeedsChanges controls whether needs_changes reviews are posted. Defaults to true.
	// +optional
	PostNeedsChanges *bool `json:"postNeedsChanges,omitempty"`

	// PostNeedsHuman controls whether needs_human reviews are posted. Defaults to true.
	// +optional
	PostNeedsHuman *bool `json:"postNeedsHuman,omitempty"`

	// PostSecuritySensitive allows public publishing of security_sensitive findings when true.
	// Defaults to false.
	// +optional
	PostSecuritySensitive bool `json:"postSecuritySensitive,omitempty"`

	// SameHeadPolicy controls duplicate handling for one monitor, PR, and exact head SHA.
	// V1 only supports skip.
	// +kubebuilder:validation:Enum=skip
	// +kubebuilder:default=skip
	// +optional
	SameHeadPolicy string `json:"sameHeadPolicy,omitempty"`

	// Inline controls optional inline review comments for eligible findings.
	// +optional
	Inline RepositoryMonitorReviewPublishInlineSpec `json:"inline,omitempty"`
}

RepositoryMonitorReviewPublishSpec configures safe GitHub review publishing.

func (*RepositoryMonitorReviewPublishSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorReviewPublishSpec.

func (*RepositoryMonitorReviewPublishSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorReviewSpec

type RepositoryMonitorReviewSpec struct {
	// Event is the legacy/default GitHub review event value included in review task input.
	// It does not control RepositoryMonitor GitHub publishing; use Publish.Event.
	// +kubebuilder:validation:Enum=COMMENT;APPROVE;REQUEST_CHANGES
	// +kubebuilder:default=COMMENT
	// +optional
	Event string `json:"event,omitempty"`

	// RequireGreenCI requires acceptable CI before background review selection.
	// +optional
	RequireGreenCI bool `json:"requireGreenCI,omitempty"`

	// StaleReviewTTL bounds how long an unchanged head review remains fresh.
	// +optional
	StaleReviewTTL *metav1.Duration `json:"staleReviewTTL,omitempty"`

	// ExactEventEnabled enables exact-head review from repository events.
	// +optional
	ExactEventEnabled bool `json:"exactEventEnabled,omitempty"`

	// Publish controls deterministic GitHub pull request review publishing after review ingestion.
	// Publishing is disabled by default and V1 only supports neutral COMMENT reviews.
	// +optional
	Publish RepositoryMonitorReviewPublishSpec `json:"publish,omitempty"`
}

RepositoryMonitorReviewSpec configures review behavior.

func (*RepositoryMonitorReviewSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorReviewSpec.

func (*RepositoryMonitorReviewSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorSpec

type RepositoryMonitorSpec struct {
	// Provider is the source control provider. GitHub is the only supported v1 provider.
	// +kubebuilder:validation:Enum=github
	// +kubebuilder:default=github
	// +optional
	Provider string `json:"provider,omitempty"`

	// RepoURL is the repository URL to monitor.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:Pattern=`^(https://github[.]com/[A-Za-z0-9._-]+/[A-Za-z0-9._-]+([.]git)?/?|git@github[.]com:[A-Za-z0-9._-]+/[A-Za-z0-9._-]+([.]git)?)$`
	RepoURL string `json:"repoURL"`

	// Owner is the repository owner or organization.
	// +optional
	Owner string `json:"owner,omitempty"`

	// Repository is the repository name.
	// +optional
	Repository string `json:"repository,omitempty"`

	// Branch is the default base branch for repository-wide monitoring decisions.
	// +kubebuilder:default=main
	// +optional
	Branch string `json:"branch,omitempty"`

	// GitSecretRef is the backward-compatible source-read credential reference.
	// ReadCredentialRef takes precedence when both are set. GitSecretRef is never
	// used for publication writes or forge mutations.
	// +optional
	GitSecretRef *corev1.LocalObjectReference `json:"gitSecretRef,omitempty"`

	// ReadCredentialRef references the source-repository clone/read credential.
	// It is resolved only by the clean-room workspace boundary. When omitted,
	// GitSecretRef remains the backward-compatible read-only fallback.
	// +optional
	ReadCredentialRef *corev1.LocalObjectReference `json:"readCredentialRef,omitempty"`

	// PublicationReadCredentialRef references the target-repository read
	// credential used only for publication preflight and independent verification.
	// Write workflows require this explicit reference.
	// +optional
	PublicationReadCredentialRef *corev1.LocalObjectReference `json:"publicationReadCredentialRef,omitempty"`

	// PublicationCredentialRef references the target-repository write credential
	// used only for exact compare-and-swap publication. Write workflows require
	// this explicit reference.
	// +optional
	PublicationCredentialRef *corev1.LocalObjectReference `json:"publicationCredentialRef,omitempty"`

	// ForgeCredentialRef references the GitHub API credential used only for
	// controller-owned forge reads and mutations. Write workflows and GitHub label
	// triggers require this explicit reference.
	// +optional
	ForgeCredentialRef *corev1.LocalObjectReference `json:"forgeCredentialRef,omitempty"`

	// Schedule is the cron expression for background monitor runs.
	// +optional
	Schedule string `json:"schedule,omitempty"`

	// TimeZone is the IANA time zone for the schedule.
	// +optional
	TimeZone *string `json:"timeZone,omitempty"`

	// Suspend pauses scheduled monitor runs.
	// +optional
	Suspend *bool `json:"suspend,omitempty"`

	// Targets selects the repository item types covered by this monitor.
	// +optional
	Targets RepositoryMonitorTargets `json:"targets,omitempty"`

	// Triggers configures external events that create durable monitor commands.
	// +optional
	Triggers RepositoryMonitorTriggers `json:"triggers,omitempty"`

	// Agents configures the agents used by monitor review, issue, and repair tasks.
	// +optional
	Agents RepositoryMonitorAgents `json:"agents,omitempty"`

	// IssueWorkflow controls issue triage, research, planning, and implementation behavior.
	// +optional
	IssueWorkflow RepositoryMonitorIssueWorkflowSpec `json:"issueWorkflow,omitempty"`

	// Review controls pull-request review behavior.
	// +optional
	Review RepositoryMonitorReviewSpec `json:"review,omitempty"`

	// Repair controls bounded repair behavior.
	// +optional
	Repair RepositoryMonitorRepairSpec `json:"repair,omitempty"`

	// Automerge controls deterministic merge behavior.
	// +optional
	Automerge RepositoryMonitorAutomergeSpec `json:"automerge,omitempty"`

	// Policy contains authorization and safety policy for monitor operations.
	// +optional
	Policy RepositoryMonitorPolicySpec `json:"policy,omitempty"`

	// Validation configures isolated validation for pull request reviews.
	// +optional
	Validation RepositoryMonitorValidationSpec `json:"validation,omitempty"`
}

RepositoryMonitorSpec defines the desired state of RepositoryMonitor.

func (*RepositoryMonitorSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorSpec.

func (*RepositoryMonitorSpec) DeepCopyInto

func (in *RepositoryMonitorSpec) DeepCopyInto(out *RepositoryMonitorSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorStatus

type RepositoryMonitorStatus struct {
	// Phase describes the high-level monitor lifecycle state.
	// +optional
	Phase string `json:"phase,omitempty"`

	// LastRunID is the most recent monitor run identifier stored in SQLite.
	// +optional
	LastRunID string `json:"lastRunID,omitempty"`

	// LastRunTime is the completion time of the most recent run, regardless of success.
	// +optional
	LastRunTime *metav1.Time `json:"lastRunTime,omitempty"`

	// LastSuccessfulRunTime is the completion time of the most recent successful run.
	// +optional
	LastSuccessfulRunTime *metav1.Time `json:"lastSuccessfulRunTime,omitempty"`

	// ObservedGeneration is the latest spec generation reflected in status.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// OpenPullRequests is the current count of open pull requests seen by the monitor.
	// +optional
	OpenPullRequests int32 `json:"openPullRequests,omitempty"`

	// PendingReviews is the count of items waiting for review.
	// +optional
	PendingReviews int32 `json:"pendingReviews,omitempty"`

	// ActiveRepairs is the count of repair jobs currently active.
	// +optional
	ActiveRepairs int32 `json:"activeRepairs,omitempty"`

	// BlockedItems is the count of items blocked by policy, failures, or human action.
	// +optional
	BlockedItems int32 `json:"blockedItems,omitempty"`

	// MergeReadyItems is the count of items ready for merge.
	// +optional
	MergeReadyItems int32 `json:"mergeReadyItems,omitempty"`

	// OpenIssues is the current count of open issues seen by the monitor.
	// +optional
	OpenIssues int32 `json:"openIssues,omitempty"`

	// PendingIssueActions is the count of issues waiting for a queued workflow action.
	// +optional
	PendingIssueActions int32 `json:"pendingIssueActions,omitempty"`

	// BlockedIssues is the count of issues blocked by guard labels or workflow policy.
	// +optional
	BlockedIssues int32 `json:"blockedIssues,omitempty"`

	// Conditions represent the current state of the repository monitor.
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

RepositoryMonitorStatus defines the observed state of RepositoryMonitor.

func (*RepositoryMonitorStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorStatus.

func (*RepositoryMonitorStatus) DeepCopyInto

func (in *RepositoryMonitorStatus) DeepCopyInto(out *RepositoryMonitorStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorTargets

type RepositoryMonitorTargets struct {
	// PullRequests configures pull request monitoring.
	// +optional
	PullRequests RepositoryMonitorPullRequestTarget `json:"pullRequests,omitempty"`

	// Issues configures issue monitoring.
	// +optional
	Issues RepositoryMonitorIssueTarget `json:"issues,omitempty"`

	// Commits configures commit monitoring.
	// +optional
	Commits RepositoryMonitorCommitTarget `json:"commits,omitempty"`
}

RepositoryMonitorTargets configures monitored repository item types.

func (*RepositoryMonitorTargets) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorTargets.

func (*RepositoryMonitorTargets) DeepCopyInto

func (in *RepositoryMonitorTargets) DeepCopyInto(out *RepositoryMonitorTargets)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorTriggers

type RepositoryMonitorTriggers struct {
	// GitHub configures GitHub webhook triggers.
	// +optional
	GitHub RepositoryMonitorGitHubTriggers `json:"github,omitempty"`
}

RepositoryMonitorTriggers configures external RepositoryMonitor triggers.

func (*RepositoryMonitorTriggers) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorTriggers.

func (*RepositoryMonitorTriggers) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryMonitorValidationSpec

type RepositoryMonitorValidationSpec struct {
	// Image is the digest-pinned repository-specific container image used for validation.
	// The reviewer chooses the validation command from the checked-out code.
	// The image must contain /bin/sh and every tool the repository expects the
	// reviewer to run.
	// +kubebuilder:validation:MaxLength=2048
	// +kubebuilder:validation:Pattern=`^[^\s@]+@sha256:[a-f0-9]{64}$`
	// +optional
	Image string `json:"image,omitempty"`

	// Mode is retained only so upgraded clusters preserve the legacy field.
	// Deprecated: validation scope is selected by the reviewer from repository evidence.
	// +kubebuilder:validation:Enum=off;changed;full
	// +optional
	Mode string `json:"mode,omitempty"`

	// Commands is retained only so upgraded clusters can detect and reject legacy
	// validation policies instead of silently treating them as disabled.
	// Deprecated: configure a digest-pinned image and let the reviewer select one command.
	// +optional
	Commands []string `json:"commands,omitempty"`
}

RepositoryMonitorValidationSpec configures isolated validation.

func (*RepositoryMonitorValidationSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorValidationSpec.

func (*RepositoryMonitorValidationSpec) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryScan

type RepositoryScan struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   RepositoryScanSpec   `json:"spec,omitempty"`
	Status RepositoryScanStatus `json:"status,omitempty"`
}

RepositoryScan is the Schema for the repository security scanning API.

func (*RepositoryScan) DeepCopy

func (in *RepositoryScan) DeepCopy() *RepositoryScan

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryScan.

func (*RepositoryScan) DeepCopyInto

func (in *RepositoryScan) DeepCopyInto(out *RepositoryScan)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RepositoryScan) DeepCopyObject

func (in *RepositoryScan) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RepositoryScanList

type RepositoryScanList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []RepositoryScan `json:"items"`
}

RepositoryScanList contains a list of RepositoryScan resources.

func (*RepositoryScanList) DeepCopy

func (in *RepositoryScanList) DeepCopy() *RepositoryScanList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryScanList.

func (*RepositoryScanList) DeepCopyInto

func (in *RepositoryScanList) DeepCopyInto(out *RepositoryScanList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RepositoryScanList) DeepCopyObject

func (in *RepositoryScanList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RepositoryScanSpec

type RepositoryScanSpec struct {
	// Provider is the source control provider. GitHub is the only supported v1 provider.
	// +kubebuilder:validation:Enum=github
	// +kubebuilder:default=github
	// +optional
	Provider string `json:"provider,omitempty"`

	// RepoURL is the repository URL to scan.
	// +kubebuilder:validation:Required
	RepoURL string `json:"repoURL"`

	// Owner is the repository owner or organization.
	// +optional
	Owner string `json:"owner,omitempty"`

	// Repository is the repository name.
	// +optional
	Repository string `json:"repository,omitempty"`

	// Branch is the base branch to scan. Defaults to the literal main branch when omitted.
	// +optional
	Branch string `json:"branch,omitempty"`

	// Ref is a specific git ref, tag, or commit SHA to checkout for scan tasks.
	// +optional
	Ref string `json:"ref,omitempty"`

	// SubPath scopes scanning to a subdirectory in a monorepo.
	// +optional
	SubPath string `json:"subPath,omitempty"`

	// GitSecretRef is the backward-compatible source-read credential reference.
	// ReadCredentialRef takes precedence when both are set. GitSecretRef is never
	// used for publication writes or forge mutations.
	// +optional
	GitSecretRef *corev1.LocalObjectReference `json:"gitSecretRef,omitempty"`

	// ReadCredentialRef references the source-repository clone/read credential.
	// It is resolved only by the clean-room workspace boundary. When omitted,
	// GitSecretRef remains the backward-compatible read-only fallback.
	// +optional
	ReadCredentialRef *corev1.LocalObjectReference `json:"readCredentialRef,omitempty"`

	// PublicationReadCredentialRef references the target-repository read
	// credential used only for publication preflight and independent verification.
	// Patch workflows require this explicit reference.
	// +optional
	PublicationReadCredentialRef *corev1.LocalObjectReference `json:"publicationReadCredentialRef,omitempty"`

	// PublicationCredentialRef references the target-repository write credential
	// used only for exact compare-and-swap publication. Patch workflows require
	// this explicit reference.
	// +optional
	PublicationCredentialRef *corev1.LocalObjectReference `json:"publicationCredentialRef,omitempty"`

	// ForgeCredentialRef references the GitHub API credential used only for
	// controller-owned pull request reconciliation. Patch workflows require this
	// explicit reference.
	// +optional
	ForgeCredentialRef *corev1.LocalObjectReference `json:"forgeCredentialRef,omitempty"`

	// ForkRepo is the writable fork repository URL used for patch proposals.
	// +optional
	ForkRepo string `json:"forkRepo,omitempty"`

	// PRBaseBranch is the pull request base branch for remediation.
	// +optional
	PRBaseBranch string `json:"prBaseBranch,omitempty"`

	// Schedule is the cron expression for incremental scans.
	// +optional
	Schedule string `json:"schedule,omitempty"`

	// TimeZone is the IANA time zone for the schedule.
	// +optional
	TimeZone *string `json:"timeZone,omitempty"`

	// HistoryDays controls how far back the initial scan should inspect repository history.
	// +optional
	HistoryDays *int32 `json:"historyDays,omitempty"`

	// ValidationMode controls how aggressively findings are validated.
	// +kubebuilder:validation:Enum=off;light;full
	// +kubebuilder:default=light
	// +optional
	ValidationMode string `json:"validationMode,omitempty"`

	// ValidationMaxFindingsPerRun bounds automatic validation tasks for light mode.
	// +kubebuilder:validation:Minimum=0
	// +optional
	ValidationMaxFindingsPerRun *int32 `json:"validationMaxFindingsPerRun,omitempty"`

	// ValidationMinSeverity is the minimum severity eligible for automatic validation.
	// +kubebuilder:validation:Enum=critical;high;medium;low
	// +optional
	ValidationMinSeverity string `json:"validationMinSeverity,omitempty"`

	// ValidationMinConfidence is the minimum confidence eligible for automatic validation.
	// +kubebuilder:validation:Enum=high;medium;low
	// +optional
	ValidationMinConfidence string `json:"validationMinConfidence,omitempty"`

	// CustomScanInstructionsRef references additive scanner instructions in a same-namespace ConfigMap.
	// +optional
	CustomScanInstructionsRef *PolicyConfigMapKeyRef `json:"customScanInstructionsRef,omitempty"`

	// FalsePositivePolicyRef references additive false-positive policy in a same-namespace ConfigMap.
	// +optional
	FalsePositivePolicyRef *PolicyConfigMapKeyRef `json:"falsePositivePolicyRef,omitempty"`

	// AnalysisAgentRef is the agent used for scan runs.
	AnalysisAgentRef AgentReference `json:"analysisAgentRef"`

	// PatchAgentRef is the agent used for patch proposal runs.
	// +optional
	PatchAgentRef *AgentReference `json:"patchAgentRef,omitempty"`

	// MaxFindingsPerRun bounds scan output volume.
	// +optional
	MaxFindingsPerRun *int32 `json:"maxFindingsPerRun,omitempty"`

	// Suspend pauses scheduled incremental scans.
	// +optional
	Suspend *bool `json:"suspend,omitempty"`
}

RepositoryScanSpec defines the desired state of RepositoryScan. +kubebuilder:validation:XValidation:rule="self.repoURL == oldSelf.repoURL",message="repoURL is immutable; create a new RepositoryScan for a different repository"

func (*RepositoryScanSpec) DeepCopy

func (in *RepositoryScanSpec) DeepCopy() *RepositoryScanSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryScanSpec.

func (*RepositoryScanSpec) DeepCopyInto

func (in *RepositoryScanSpec) DeepCopyInto(out *RepositoryScanSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RepositoryScanStatus

type RepositoryScanStatus struct {
	// Phase describes the high-level repository scan lifecycle state.
	// +optional
	Phase string `json:"phase,omitempty"`

	// LastScanID is the most recent scan run identifier stored in SQLite.
	// +optional
	LastScanID string `json:"lastScanID,omitempty"`

	// LastScanTaskName is the most recent scan task name.
	// +optional
	LastScanTaskName string `json:"lastScanTaskName,omitempty"`

	// LastScanAt is the completion time of the most recent scan run, regardless of success or failure.
	// +optional
	LastScanAt *metav1.Time `json:"lastScanAt,omitempty"`

	// LastSuccessfulScanAt is the completion time of the most recent successful scan.
	// +optional
	LastSuccessfulScanAt *metav1.Time `json:"lastSuccessfulScanAt,omitempty"`

	// LastObservedHeadSHA is the latest repository head SHA seen by a completed scan.
	// +optional
	LastObservedHeadSHA string `json:"lastObservedHeadSHA,omitempty"`

	// LastProcessedCommit is the latest commit fully processed by a completed scan.
	// +optional
	LastProcessedCommit string `json:"lastProcessedCommit,omitempty"`

	// ThreatModelVersion is the latest persisted threat model version.
	// +optional
	ThreatModelVersion int64 `json:"threatModelVersion,omitempty"`

	// FindingCounts summarizes open findings.
	// +optional
	FindingCounts FindingCountsStatus `json:"findingCounts,omitempty"`

	// Conditions represent the current state of the repository scan.
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

RepositoryScanStatus defines the observed state of RepositoryScan.

func (*RepositoryScanStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryScanStatus.

func (*RepositoryScanStatus) DeepCopyInto

func (in *RepositoryScanStatus) DeepCopyInto(out *RepositoryScanStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RequestedBy

type RequestedBy struct {
	// Subject is the verified subject claim.
	// +optional
	Subject string `json:"subject,omitempty"`

	// Issuer is the token issuer that authenticated the requester.
	// +optional
	Issuer string `json:"issuer,omitempty"`

	// Username is the verified username, if present.
	// +optional
	Username string `json:"username,omitempty"`

	// Email is the email claim, if present.
	// +optional
	Email string `json:"email,omitempty"`

	// Groups are verified group values, if present.
	// +optional
	Groups []string `json:"groups,omitempty"`

	// Roles are verified role or scope values, if present.
	// +optional
	Roles []string `json:"roles,omitempty"`
}

RequestedBy records the verified identity that requested a task.

func (*RequestedBy) DeepCopy

func (in *RequestedBy) DeepCopy() *RequestedBy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RequestedBy.

func (*RequestedBy) DeepCopyInto

func (in *RequestedBy) DeepCopyInto(out *RequestedBy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ResultReference

type ResultReference struct {
	// Available indicates whether a result has been stored for this task
	Available bool `json:"available"`
}

ResultReference indicates whether a result is available for the task

func (*ResultReference) DeepCopy

func (in *ResultReference) DeepCopy() *ResultReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ResultReference.

func (*ResultReference) DeepCopyInto

func (in *ResultReference) DeepCopyInto(out *ResultReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RetryPolicy

type RetryPolicy struct {
	// MaxRetries is the maximum number of retry attempts
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:default=0
	// +optional
	MaxRetries int32 `json:"maxRetries,omitempty"`

	// BackoffMultiplier is the exponential backoff multiplier
	// +kubebuilder:default=2
	// +optional
	BackoffMultiplier float64 `json:"backoffMultiplier,omitempty"`

	// InitialDelay is the initial delay before the first retry
	// +optional
	InitialDelay *metav1.Duration `json:"initialDelay,omitempty"`
}

RetryPolicy defines retry behavior for failed tasks

func (*RetryPolicy) DeepCopy

func (in *RetryPolicy) DeepCopy() *RetryPolicy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetryPolicy.

func (*RetryPolicy) DeepCopyInto

func (in *RetryPolicy) DeepCopyInto(out *RetryPolicy)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePool added in v0.2.0

type RuntimePool struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   RuntimePoolSpec   `json:"spec,omitempty"`
	Status RuntimePoolStatus `json:"status,omitempty"`
}

RuntimePool is the Schema for controller-owned ACP runtime pools.

func (*RuntimePool) DeepCopy added in v0.2.0

func (in *RuntimePool) DeepCopy() *RuntimePool

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePool.

func (*RuntimePool) DeepCopyInto added in v0.2.0

func (in *RuntimePool) DeepCopyInto(out *RuntimePool)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RuntimePool) DeepCopyObject added in v0.2.0

func (in *RuntimePool) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RuntimePoolActiveInstanceStatus added in v0.2.0

type RuntimePoolActiveInstanceStatus struct {
	// PodNamespace is the namespace containing the selected runtime Pod.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=63
	PodNamespace string `json:"podNamespace"`

	// PodName is the exact selected runtime Pod name.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	PodName string `json:"podName"`

	// PodAddress is the exact Pod address used for stateful routing, not a
	// load-balanced Service endpoint.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	PodAddress string `json:"podAddress"`

	// PodUID is the Kubernetes UID of the selected Pod.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	PodUID string `json:"podUID"`

	// BootID is the immutable supervisor boot identifier inside the selected Pod.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	BootID string `json:"bootID"`

	// RuntimeInstanceID is the portable v2 instance fence derived from PodUID and BootID.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	RuntimeInstanceID string `json:"runtimeInstanceID"`

	// ControllerEpoch is the durable controller epoch to which this instance is bound.
	// +kubebuilder:validation:Minimum=1
	ControllerEpoch int64 `json:"controllerEpoch"`

	// ProtocolVersion is the supervisor protocol actually advertised by this instance.
	// +kubebuilder:validation:Required
	ProtocolVersion RuntimePoolProtocolVersion `json:"protocolVersion"`

	// ProfileDigest is the immutable runtime-profile digest advertised by this instance.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	ProfileDigest string `json:"profileDigest"`

	// ProfileDigestSchemaVersion is the digest schema advertised by this instance.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=64
	ProfileDigestSchemaVersion string `json:"profileDigestSchemaVersion"`

	// ProviderTokenGeneration is a non-secret digest generation for the exact
	// provider capability mounted into this runtime Pod. It lets the controller
	// prove that a selected instance converged on the intended proxy credential
	// without exposing the bearer token.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^[a-f0-9]{16}$`
	ProviderTokenGeneration string `json:"providerTokenGeneration"`

	// LastObservedTime is the last authenticated status observation for this instance.
	// +optional
	LastObservedTime *metav1.Time `json:"lastObservedTime,omitempty"`
}

RuntimePoolActiveInstanceStatus is the exact selected runtime Pod and supervisor boot. Every stateful request is fenced to this identity.

func (*RuntimePoolActiveInstanceStatus) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolActiveInstanceStatus.

func (*RuntimePoolActiveInstanceStatus) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolAdmissionState added in v0.2.0

type RuntimePoolAdmissionState string

RuntimePoolAdmissionState is the authoritative admission gate for new RuntimeSessions. Existing session control traffic may continue while draining. +kubebuilder:validation:Enum=Closed;Accepting;Draining;Ambiguous

const (
	RuntimePoolAdmissionClosed    RuntimePoolAdmissionState = "Closed"
	RuntimePoolAdmissionAccepting RuntimePoolAdmissionState = "Accepting"
	RuntimePoolAdmissionDraining  RuntimePoolAdmissionState = "Draining"
	RuntimePoolAdmissionAmbiguous RuntimePoolAdmissionState = "Ambiguous"
)

type RuntimePoolAgentSandboxWorkspaceSpec added in v0.2.0

type RuntimePoolAgentSandboxWorkspaceSpec struct {
	// SuspendMode enables operator-governed PVC-backed cold suspension for
	// this pool's Sandbox. When set to DataOnly, the SandboxClaim requests one
	// controller-owned durable workspace PVC (forcing a cold start instead of
	// warm-pool adoption) and a requested suspension terminates the Sandbox
	// Pod while that PVC persists. Empty preserves delete-and-recreate
	// behavior and keeps every suspension fail-closed.
	// +kubebuilder:validation:Enum=DataOnly
	// +optional
	SuspendMode string `json:"suspendMode,omitempty"`

	// SuspendVolume freezes the durable workspace PVC shape. Required exactly
	// when suspendMode is set.
	// +optional
	SuspendVolume *RuntimePoolSandboxDurableVolumeSpec `json:"suspendVolume,omitempty"`
}

RuntimePoolAgentSandboxWorkspaceSpec configures the agent-sandbox backend. +kubebuilder:validation:XValidation:rule="has(self.suspendMode) == has(self.suspendVolume)",message="suspendMode and suspendVolume must be set together"

func (*RuntimePoolAgentSandboxWorkspaceSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolAgentSandboxWorkspaceSpec.

func (*RuntimePoolAgentSandboxWorkspaceSpec) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolCapacityReservationStatus added in v0.2.0

type RuntimePoolCapacityReservationStatus struct {
	// PoolUID fences the claim to the exact RuntimePool object.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	PoolUID string `json:"poolUID"`

	// TaskUID is the immutable Task identity that owns the claim.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	TaskUID string `json:"taskUID"`

	// Attempt is the Task attempt that owns the claim.
	// +kubebuilder:validation:Minimum=1
	Attempt int32 `json:"attempt"`

	// ControllerEpoch fences the claim to one controller leadership epoch.
	// +kubebuilder:validation:Minimum=1
	ControllerEpoch int64 `json:"controllerEpoch"`

	// RuntimeInstanceID binds admission to the exact selected Pod/boot pair.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	RuntimeInstanceID string `json:"runtimeInstanceID"`

	// ResidentSlots is zero after a RuntimeSession is admitted and one while a
	// new resident-session slot is still reserved.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=1
	ResidentSlots int32 `json:"residentSlots"`

	// PromptSlots is one until the prompt is accepted by the supervisor.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=1
	PromptSlots int32 `json:"promptSlots"`

	// ReservedAt is the first successful resource-version CAS for this claim.
	// +kubebuilder:validation:Required
	ReservedAt metav1.Time `json:"reservedAt"`

	// ExpiresAt is renewed while pre-admission work is active. A later
	// dispatcher may reclaim the claim after this time.
	// +kubebuilder:validation:Required
	ExpiresAt metav1.Time `json:"expiresAt"`
}

RuntimePoolCapacityReservationStatus is one durable, exact-instance capacity claim. The composite key is the pool UID, Task UID, attempt, and controller epoch. A reservation claims resident-session and prompt admission slots until the supervisor accepts the corresponding work or the reservation expires. +kubebuilder:validation:XValidation:rule="self.residentSlots + self.promptSlots > 0",message="a capacity reservation must claim at least one slot"

func (*RuntimePoolCapacityReservationStatus) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolCapacityReservationStatus.

func (*RuntimePoolCapacityReservationStatus) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolCapacitySpec added in v0.2.0

type RuntimePoolCapacitySpec struct {
	// MaxResidentSessions is the maximum number of resident RuntimeSessions.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=1000
	// +kubebuilder:default=10
	// +optional
	MaxResidentSessions int32 `json:"maxResidentSessions,omitempty"`

	// MaxRunningPrompts is the maximum number of concurrently running prompts.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=1000
	// +kubebuilder:default=4
	// +optional
	MaxRunningPrompts int32 `json:"maxRunningPrompts,omitempty"`
}

RuntimePoolCapacitySpec defines hard logical pool concurrency limits. +kubebuilder:validation:XValidation:rule="self.maxRunningPrompts <= self.maxResidentSessions",message="maxRunningPrompts cannot exceed maxResidentSessions"

func (*RuntimePoolCapacitySpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolCapacitySpec.

func (*RuntimePoolCapacitySpec) DeepCopyInto added in v0.2.0

func (in *RuntimePoolCapacitySpec) DeepCopyInto(out *RuntimePoolCapacitySpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolCapacityStatus added in v0.2.0

type RuntimePoolCapacityStatus struct {
	// MaxResidentSessions is the effective configured resident-session limit.
	// +kubebuilder:validation:Minimum=0
	MaxResidentSessions int32 `json:"maxResidentSessions,omitempty"`

	// MaxRunningPrompts is the effective configured running-prompt limit.
	// +kubebuilder:validation:Minimum=0
	MaxRunningPrompts int32 `json:"maxRunningPrompts,omitempty"`

	// ResidentSessions is the authenticated supervisor count of resident sessions.
	// +kubebuilder:validation:Minimum=0
	ResidentSessions int32 `json:"residentSessions,omitempty"`

	// RunningPrompts is the authenticated supervisor count of active prompts.
	// +kubebuilder:validation:Minimum=0
	RunningPrompts int32 `json:"runningPrompts,omitempty"`

	// QueuedTasks is durable unsatisfied demand assigned to this pool.
	// +kubebuilder:validation:Minimum=0
	QueuedTasks int32 `json:"queuedTasks,omitempty"`

	// ReservedSessions is the sum of resident slots in Reservations.
	// +kubebuilder:validation:Minimum=0
	ReservedSessions int32 `json:"reservedSessions,omitempty"`

	// ReservedPrompts is the sum of prompt slots in Reservations.
	// +kubebuilder:validation:Minimum=0
	ReservedPrompts int32 `json:"reservedPrompts,omitempty"`

	// Reservations is the bounded authoritative set of coordinator-owned
	// pre-admission capacity claims.
	// +listType=map
	// +listMapKey=poolUID
	// +listMapKey=taskUID
	// +listMapKey=attempt
	// +listMapKey=controllerEpoch
	// +kubebuilder:validation:MaxItems=1000
	// +optional
	Reservations []RuntimePoolCapacityReservationStatus `json:"reservations,omitempty"`

	// PendingPermissions is the authenticated count of unresolved prompt permissions.
	// +kubebuilder:validation:Minimum=0
	PendingPermissions int32 `json:"pendingPermissions,omitempty"`

	// FinalizingSessions is the count reserved for validation, publication, or finalization.
	// +kubebuilder:validation:Minimum=0
	FinalizingSessions int32 `json:"finalizingSessions,omitempty"`

	// LiveDescendants is the authenticated count of tracked runtime descendants.
	// +kubebuilder:validation:Minimum=0
	LiveDescendants int32 `json:"liveDescendants,omitempty"`
}

RuntimePoolCapacityStatus reports controller and authenticated-supervisor capacity counters. These counters are advisory unless fenced by the current ActiveInstance and controller epoch. Reservation records are authoritative for coordinator-owned pre-admission capacity.

func (*RuntimePoolCapacityStatus) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolCapacityStatus.

func (*RuntimePoolCapacityStatus) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolExecutionWorkspaceSpec added in v0.2.0

type RuntimePoolExecutionWorkspaceSpec struct {
	// Provider selects the execution-workspace provider control plane hosting
	// this pool's single runtime instance.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=agent-sandbox;substrate
	Provider WorkspaceProvider `json:"provider"`

	// BindingDigest is the canonical digest of the frozen workspace binding
	// (provider, policies, and session key) that names this pool. It is part of
	// the pool identity and carries no provider-native or secret material.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	BindingDigest string `json:"bindingDigest"`

	// Substrate configures the Substrate-provider backend.
	// +optional
	Substrate *RuntimePoolSubstrateWorkspaceSpec `json:"substrate,omitempty"`

	// AgentSandbox configures the agent-sandbox-provider backend.
	// +optional
	AgentSandbox *RuntimePoolAgentSandboxWorkspaceSpec `json:"agentSandbox,omitempty"`
}

RuntimePoolExecutionWorkspaceSpec binds a pool's runtime workload to an externally operated execution-workspace provider instead of a controller-owned Deployment. The rendered supervisor workload, image allowlist, epoch-scoped Secrets, endpoint fencing, and admission semantics are identical to plain pools; only workload materialization changes. Provider-native identifiers never enter public Task status. +kubebuilder:validation:XValidation:rule="(self.provider == 'substrate') == has(self.substrate)",message="substrate settings are required exactly when provider is substrate" +kubebuilder:validation:XValidation:rule="self.provider == 'agent-sandbox' || !has(self.agentSandbox)",message="agentSandbox settings are only valid when provider is agent-sandbox"

func (*RuntimePoolExecutionWorkspaceSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolExecutionWorkspaceSpec.

func (*RuntimePoolExecutionWorkspaceSpec) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolLifecycle added in v0.2.0

type RuntimePoolLifecycle string

RuntimePoolLifecycle is the controller-observed lifecycle of a logical pool. Only Serving may admit new RuntimeSessions. +kubebuilder:validation:Enum=Stopped;Starting;Serving;Draining;Quiescent;Stopping;Degraded;Ambiguous

const (
	RuntimePoolLifecycleStopped   RuntimePoolLifecycle = "Stopped"
	RuntimePoolLifecycleStarting  RuntimePoolLifecycle = "Starting"
	RuntimePoolLifecycleServing   RuntimePoolLifecycle = "Serving"
	RuntimePoolLifecycleDraining  RuntimePoolLifecycle = "Draining"
	RuntimePoolLifecycleQuiescent RuntimePoolLifecycle = "Quiescent"
	RuntimePoolLifecycleStopping  RuntimePoolLifecycle = "Stopping"
	RuntimePoolLifecycleDegraded  RuntimePoolLifecycle = "Degraded"
	RuntimePoolLifecycleAmbiguous RuntimePoolLifecycle = "Ambiguous"
)

type RuntimePoolList added in v0.2.0

type RuntimePoolList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []RuntimePool `json:"items"`
}

RuntimePoolList contains a list of RuntimePool.

func (*RuntimePoolList) DeepCopy added in v0.2.0

func (in *RuntimePoolList) DeepCopy() *RuntimePoolList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolList.

func (*RuntimePoolList) DeepCopyInto added in v0.2.0

func (in *RuntimePoolList) DeepCopyInto(out *RuntimePoolList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RuntimePoolList) DeepCopyObject added in v0.2.0

func (in *RuntimePoolList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RuntimePoolProfileSpec added in v0.2.0

type RuntimePoolProfileSpec struct {
	// ProtocolVersion is the controller-to-supervisor protocol profile.
	// +kubebuilder:default=orka.harness.v2
	// +optional
	ProtocolVersion RuntimePoolProtocolVersion `json:"protocolVersion,omitempty"`

	// Digest is the canonical immutable runtime-profile digest.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	Digest string `json:"digest"`

	// DigestSchemaVersion identifies the canonicalization schema used to compute Digest.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=64
	// +kubebuilder:validation:Pattern=`^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$`
	DigestSchemaVersion string `json:"digestSchemaVersion"`

	// ACPProfile is the reviewed ACP wire/profile identifier.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=acp.v1
	ACPProfile string `json:"acpProfile"`

	// AdapterDigests pins every adapter and provider CLI artifact used by the pool.
	// +kubebuilder:validation:MinProperties=1
	// +kubebuilder:validation:MaxProperties=32
	AdapterDigests map[string]string `json:"adapterDigests"`

	// ProviderKind selects the one provider adapter present in the immutable image.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=codex;claude;copilot;opencode
	ProviderKind string `json:"providerKind"`

	// Model is the exact reviewed model identifier.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	Model string `json:"model"`

	// ModelLimits pins the reviewed context and output capacities used by the
	// runtime's local compaction policy.
	// +optional
	ModelLimits *ModelTokenLimits `json:"modelLimits,omitempty"`

	// AgentConfigurationDigest freezes non-secret Agent/runtime configuration.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	AgentConfigurationDigest string `json:"agentConfigurationDigest"`

	// ToolPolicyDigest freezes the effective tool allow/deny policy.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	ToolPolicyDigest string `json:"toolPolicyDigest"`

	// ApprovalPolicyDigest freezes the effective approval policy.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	ApprovalPolicyDigest string `json:"approvalPolicyDigest"`

	// MCPConfigurationDigest freezes prompt-scoped broker/MCP configuration.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	MCPConfigurationDigest string `json:"mcpConfigurationDigest"`

	// WorkspaceIntent is part of the immutable runtime profile.
	// +kubebuilder:validation:Required
	WorkspaceIntent WorkspaceIntent `json:"workspaceIntent"`

	// ProxyCredentialRole identifies the provider-proxy client role, never a secret value.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=256
	ProxyCredentialRole string `json:"proxyCredentialRole"`

	// ProxyCredentialScope is the bounded model/session capability scope.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	ProxyCredentialScope string `json:"proxyCredentialScope"`

	// ResourceClass is the controller-supported pool resource class included in Digest.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=63
	// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9.]*[a-z0-9])?$`
	ResourceClass string `json:"resourceClass"`
}

RuntimePoolProfileSpec pins the immutable runtime behavior selected for a pool. The digest covers the adapter and CLI builds, ACP profile, provider and model limits, agent configuration, tool and approval policy, MCP configuration, workspace intent, proxy credential scope, and resource class. +kubebuilder:validation:XValidation:rule="self.providerKind != 'opencode' || has(self.modelLimits)",message="OpenCode runtime profiles require modelLimits"

func (*RuntimePoolProfileSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolProfileSpec.

func (*RuntimePoolProfileSpec) DeepCopyInto added in v0.2.0

func (in *RuntimePoolProfileSpec) DeepCopyInto(out *RuntimePoolProfileSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolProtocolVersion added in v0.2.0

type RuntimePoolProtocolVersion string

RuntimePoolProtocolVersion is the controller-to-supervisor protocol profile. +kubebuilder:validation:Enum=orka.harness.v2

const (
	// RuntimePoolProtocolHarnessV2 is the ACP session-centric harness contract.
	RuntimePoolProtocolHarnessV2 RuntimePoolProtocolVersion = "orka.harness.v2"
)

type RuntimePoolRuntimeSpec added in v0.2.0

type RuntimePoolRuntimeSpec struct {
	// Image is a digest-pinned OCI image. Mutable tags are intentionally rejected.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MaxLength=2048
	// +kubebuilder:validation:Pattern=`^[^\s@]+@sha256:[a-f0-9]{64}$`
	Image string `json:"image"`

	// Profile is the immutable runtime profile enforced for every active instance.
	// +kubebuilder:validation:Required
	Profile RuntimePoolProfileSpec `json:"profile"`
}

RuntimePoolRuntimeSpec selects the immutable supervisor image and profile.

func (*RuntimePoolRuntimeSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolRuntimeSpec.

func (*RuntimePoolRuntimeSpec) DeepCopyInto added in v0.2.0

func (in *RuntimePoolRuntimeSpec) DeepCopyInto(out *RuntimePoolRuntimeSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolSandboxDurableVolumeSpec added in v0.2.0

type RuntimePoolSandboxDurableVolumeSpec struct {
	// StorageClassName optionally selects the storage class.
	// +optional
	StorageClassName string `json:"storageClassName,omitempty"`

	// StorageClassUID pins the exact StorageClass validated at class
	// resolution. Provisioning reverifies the live class carries this UID
	// (and Delete reclaim semantics) before requesting the durable PVC.
	// +optional
	StorageClassUID string `json:"storageClassUID,omitempty"`

	// AccessModes defaults to ReadWriteOnce when empty.
	// +listType=set
	// +optional
	AccessModes []string `json:"accessModes,omitempty"`

	// Capacity is the requested storage quantity.
	// +kubebuilder:validation:MinLength=1
	Capacity string `json:"capacity"`
}

RuntimePoolSandboxDurableVolumeSpec is the frozen durable workspace PVC shape for a suspend-capable agent-sandbox pool.

func (*RuntimePoolSandboxDurableVolumeSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolSandboxDurableVolumeSpec.

func (*RuntimePoolSandboxDurableVolumeSpec) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolSpec added in v0.2.0

type RuntimePoolSpec struct {
	// TrustDomain is the logical namespace/identity boundary served by this pool.
	// +kubebuilder:validation:Required
	TrustDomain RuntimePoolTrustDomain `json:"trustDomain"`

	// RuntimeNamespace is the physical namespace for controller-owned runtime
	// resources. When omitted, the controller selects its configured runtime namespace.
	// +kubebuilder:validation:MaxLength=63
	// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?$`
	// +optional
	RuntimeNamespace string `json:"runtimeNamespace,omitempty"`

	// Runtime pins the immutable supervisor image and behavior profile.
	// +kubebuilder:validation:Required
	Runtime RuntimePoolRuntimeSpec `json:"runtime"`

	// ExecutionWorkspace, when set, materializes the pool's single runtime
	// instance through an externally operated execution-workspace provider
	// instead of a controller-owned Deployment. The binding is immutable;
	// workspace-backed pools host exactly one resident RuntimeSession.
	// +optional
	ExecutionWorkspace *RuntimePoolExecutionWorkspaceSpec `json:"executionWorkspace,omitempty"`

	// DesiredReplicas is zero or one. More than one runtime Pod would make
	// stateful exact-instance routing ambiguous.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=1
	// +kubebuilder:default=0
	// +optional
	DesiredReplicas int32 `json:"desiredReplicas,omitempty"`

	// Capacity sets resident-session and running-prompt limits.
	// +kubebuilder:default={maxResidentSessions:10,maxRunningPrompts:4}
	// +optional
	Capacity *RuntimePoolCapacitySpec `json:"capacity,omitempty"`

	// ColdStartTimeoutSeconds bounds a 0 -> 1 startup before the pool is marked degraded.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=3600
	// +kubebuilder:default=120
	// +optional
	ColdStartTimeoutSeconds int32 `json:"coldStartTimeoutSeconds,omitempty"`
}

RuntimePoolSpec defines the desired state of a controller-owned logical pool. Trust-domain placement and the runtime image/profile are immutable; rollout uses drain-and-replace rather than changing an in-memory instance in place. +kubebuilder:validation:XValidation:rule="self.trustDomain == oldSelf.trustDomain",message="trustDomain is immutable" +kubebuilder:validation:XValidation:rule="has(self.runtimeNamespace) == has(oldSelf.runtimeNamespace) && (!has(self.runtimeNamespace) || self.runtimeNamespace == oldSelf.runtimeNamespace)",message="runtimeNamespace is immutable" +kubebuilder:validation:XValidation:rule="self.runtime == oldSelf.runtime",message="runtime image and profile are immutable" +kubebuilder:validation:XValidation:rule="has(self.executionWorkspace) == has(oldSelf.executionWorkspace) && (!has(self.executionWorkspace) || self.executionWorkspace == oldSelf.executionWorkspace)",message="executionWorkspace binding is immutable"

func (*RuntimePoolSpec) DeepCopy added in v0.2.0

func (in *RuntimePoolSpec) DeepCopy() *RuntimePoolSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolSpec.

func (*RuntimePoolSpec) DeepCopyInto added in v0.2.0

func (in *RuntimePoolSpec) DeepCopyInto(out *RuntimePoolSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolStatus added in v0.2.0

type RuntimePoolStatus struct {
	// ObservedGeneration is the latest RuntimePool generation reconciled by the controller.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// ControllerEpoch is the durable epoch required for authoritative pool writes.
	// +kubebuilder:validation:Minimum=0
	// +optional
	ControllerEpoch int64 `json:"controllerEpoch,omitempty"`

	// DesiredReplicas is the desired replica count observed by the controller.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=1
	// +optional
	DesiredReplicas int32 `json:"desiredReplicas,omitempty"`

	// CurrentReplicas is the number of non-terminated runtime Pods owned by the pool.
	// +kubebuilder:validation:Minimum=0
	// +optional
	CurrentReplicas int32 `json:"currentReplicas,omitempty"`

	// Lifecycle is the explicit pool lifecycle.
	// +optional
	Lifecycle RuntimePoolLifecycle `json:"lifecycle,omitempty"`

	// AdmissionState is the authoritative admission gate for new RuntimeSessions.
	// +optional
	AdmissionState RuntimePoolAdmissionState `json:"admissionState,omitempty"`

	// ActiveInstance is the exact selected Pod and supervisor boot. It is empty
	// unless one instance has been authoritatively selected.
	// +optional
	ActiveInstance *RuntimePoolActiveInstanceStatus `json:"activeInstance,omitempty"`

	// Capacity reports effective limits, use, and queued demand.
	// +optional
	Capacity RuntimePoolCapacityStatus `json:"capacity,omitempty"`

	// Message contains bounded, sanitized reconciliation context.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Message string `json:"message,omitempty"`

	// Conditions report admission, Pod Security, quota, scheduling, rollout, and
	// other controller-observed failures.
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

RuntimePoolStatus defines the observed state of a controller-owned pool.

func (*RuntimePoolStatus) DeepCopy added in v0.2.0

func (in *RuntimePoolStatus) DeepCopy() *RuntimePoolStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolStatus.

func (*RuntimePoolStatus) DeepCopyInto added in v0.2.0

func (in *RuntimePoolStatus) DeepCopyInto(out *RuntimePoolStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolSubstrateWorkspaceSpec added in v0.2.0

type RuntimePoolSubstrateWorkspaceSpec struct {
	// RestoreFrom is the immutable, namespaced Data checkpoint selected by the
	// Task's frozen workspace binding. Only class-backed pools may restore.
	// +optional
	RestoreFrom *WorkspaceCheckpointReference `json:"restoreFrom,omitempty"`
	// BaseTemplateNamespace is the namespace of the operator-owned
	// infrastructure ActorTemplate. Controller-rendered runtime templates are
	// created in the same namespace so the provider can resolve them. It must
	// differ from the resolved runtime namespace so provider template
	// principals cannot resolve pool Secrets.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=63
	// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?$`
	BaseTemplateNamespace string `json:"baseTemplateNamespace"`

	// BaseTemplateName names the operator-owned infrastructure ActorTemplate.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	BaseTemplateName string `json:"baseTemplateName"`

	// SuspendMode enables operator-governed data-only cold suspension for this
	// pool's actor. When set to DataOnly, the derived runtime template carries
	// a controller-owned DurableDir workspace volume and an explicit
	// data-only snapshot policy, and a requested suspension checkpoints only
	// that volume. Empty preserves delete-and-recreate behavior and keeps
	// every suspension fail-closed.
	// +kubebuilder:validation:Enum=DataOnly
	// +optional
	SuspendMode string `json:"suspendMode,omitempty"`
}

RuntimePoolSubstrateWorkspaceSpec binds a Substrate-backed pool to the operator-owned infrastructure ActorTemplate whose placement fields (workerPoolRef, runsc, snapshotsConfig) seed the controller-rendered runtime template. The runtime container itself is always controller-owned.

func (*RuntimePoolSubstrateWorkspaceSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolSubstrateWorkspaceSpec.

func (*RuntimePoolSubstrateWorkspaceSpec) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimePoolTrustDomain added in v0.2.0

type RuntimePoolTrustDomain struct {
	// Namespace is the Task namespace represented by this trust domain.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=63
	// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?$`
	Namespace string `json:"namespace"`

	// Identity is the controller-defined, canonical trust-domain identity. It
	// must remain stable across physical runtime namespace or Pod replacement.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Identity string `json:"identity"`
}

RuntimePoolTrustDomain identifies the logical same-trust-domain boundary served by one pool. It is not a tenant-isolation claim.

func (*RuntimePoolTrustDomain) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolTrustDomain.

func (*RuntimePoolTrustDomain) DeepCopyInto added in v0.2.0

func (in *RuntimePoolTrustDomain) DeepCopyInto(out *RuntimePoolTrustDomain)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimeSessionControl added in v0.2.0

type RuntimeSessionControl struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   RuntimeSessionControlSpec   `json:"spec"`
	Status RuntimeSessionControlStatus `json:"status,omitempty"`
}

RuntimeSessionControl is the Kubernetes-authoritative RuntimeSession control record. SessionTurn/transcript/deferred-outbox data remains in one durable SQLite transaction; the Kubernetes store completes the authoritative SessionControl/BranchClaim CAS before activating the terminal projection.

func (*RuntimeSessionControl) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSessionControl.

func (*RuntimeSessionControl) DeepCopyInto added in v0.2.0

func (in *RuntimeSessionControl) DeepCopyInto(out *RuntimeSessionControl)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RuntimeSessionControl) DeepCopyObject added in v0.2.0

func (in *RuntimeSessionControl) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RuntimeSessionControlAvailability added in v0.2.0

type RuntimeSessionControlAvailability string

RuntimeSessionControlAvailability gates the Session mutation lease. +kubebuilder:validation:Enum=Available;ReconciliationBlocked

type RuntimeSessionControlLifecycle added in v0.2.0

type RuntimeSessionControlLifecycle string

RuntimeSessionControlLifecycle is the durable RuntimeSession lifecycle. +kubebuilder:validation:Enum=Creating;Idle;PromptRunning;Validating;PreparingPublication;PublicationPrepared;Publishing;Verifying;Finalizing;Cancelling;Poisoned;Deleting;Deleted

type RuntimeSessionControlList added in v0.2.0

type RuntimeSessionControlList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []RuntimeSessionControl `json:"items"`
}

RuntimeSessionControlList contains a list of RuntimeSessionControl.

func (*RuntimeSessionControlList) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSessionControlList.

func (*RuntimeSessionControlList) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*RuntimeSessionControlList) DeepCopyObject added in v0.2.0

func (in *RuntimeSessionControlList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type RuntimeSessionControlSpec added in v0.2.0

type RuntimeSessionControlSpec struct {
	// SessionName is the immutable user-visible Session key within the object
	// namespace. The Kubernetes object name is a digest-derived storage key and
	// must not be treated as the Session name.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	SessionName string `json:"sessionName"`

	// SessionUID is the immutable Orka Session identity.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	SessionUID string `json:"sessionUid"`

	// RequestDigest binds creation to exact canonical input.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RequestDigest string `json:"requestDigest"`

	// Owner identifies the immutable Task or durable Session owner.
	Owner ControlRecordOwner `json:"owner"`

	// RuntimePoolRef is the controller-owned logical pool name when known.
	// +optional
	// +kubebuilder:validation:MaxLength=253
	RuntimePoolRef string `json:"runtimePoolRef,omitempty"`

	// RuntimePoolUID fences the pool object across delete/recreate.
	// +optional
	// +kubebuilder:validation:MaxLength=1024
	RuntimePoolUID string `json:"runtimePoolUid,omitempty"`

	// RuntimeProfileDigest binds the session to immutable runtime behavior.
	// +optional
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RuntimeProfileDigest string `json:"runtimeProfileDigest,omitempty"`

	// ProfileDigestSchemaVersion identifies how RuntimeProfileDigest was built.
	// +optional
	// +kubebuilder:validation:MaxLength=64
	ProfileDigestSchemaVersion string `json:"profileDigestSchemaVersion,omitempty"`
}

RuntimeSessionControlSpec contains immutable session identity, ownership, and profile bindings. Profile changes create a new session generation in status; they do not mutate this immutable record identity. +kubebuilder:validation:XValidation:rule="self == oldSelf",message="runtime session control spec is immutable"

func (*RuntimeSessionControlSpec) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSessionControlSpec.

func (*RuntimeSessionControlSpec) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimeSessionControlStatus added in v0.2.0

type RuntimeSessionControlStatus struct {
	// Generation is the monotonic ACP RuntimeSession generation.
	// +optional
	// +kubebuilder:validation:Minimum=1
	Generation int64 `json:"generation,omitempty"`

	// +optional
	Lifecycle RuntimeSessionControlLifecycle `json:"lifecycle,omitempty"`

	// +optional
	Availability RuntimeSessionControlAvailability `json:"availability,omitempty"`

	// MutationLeaseGeneration is monotonic and never reused for SessionUID.
	// +optional
	// +kubebuilder:validation:Minimum=0
	MutationLeaseGeneration int64 `json:"mutationLeaseGeneration,omitempty"`

	// +optional
	MutationLease *RuntimeSessionMutationLeaseStatus `json:"mutationLease,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=16384
	BlockedReason string `json:"blockedReason,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=1024
	RelatedPromptAttemptID string `json:"relatedPromptAttemptId,omitempty"`

	// +optional
	// +kubebuilder:validation:MaxLength=1024
	RelatedPublicationID string `json:"relatedPublicationId,omitempty"`

	// +optional
	VerifiedBaseline *ControlVerifiedBranchBaseline `json:"verifiedBaseline,omitempty"`

	// Lineage is established or verified in the same RuntimeSessionControl
	// status CAS that mirrors the authoritative mutation Lease.
	// +optional
	Lineage *RuntimeSessionLineageStatus `json:"lineage,omitempty"`

	ControlRecordMutationStatus `json:",inline"`
}

RuntimeSessionControlStatus contains the lifecycle, generation, mutation Lease, and independently verified recovery baseline. +kubebuilder:validation:XValidation:rule="!has(self.availability) || self.availability != 'Available' || ((!has(self.blockedReason) || size(self.blockedReason) == 0) && (!has(self.relatedPromptAttemptId) || size(self.relatedPromptAttemptId) == 0) && (!has(self.relatedPublicationId) || size(self.relatedPublicationId) == 0))",message="available sessions must clear reconciliation block metadata" +kubebuilder:validation:XValidation:rule="!has(self.availability) || self.availability != 'ReconciliationBlocked' || (has(self.blockedReason) && size(self.blockedReason) > 0)",message="reconciliation-blocked sessions require a reason" +kubebuilder:validation:XValidation:rule="!has(oldSelf.lineage) || (has(self.lineage) && self.lineage == oldSelf.lineage)",message="runtime Session lineage is append-once and immutable"

func (*RuntimeSessionControlStatus) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSessionControlStatus.

func (*RuntimeSessionControlStatus) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimeSessionLineageStatus added in v0.2.0

type RuntimeSessionLineageStatus struct {
	// NamespaceUID prevents a same-name recreated namespace from attaching to
	// durable state owned by the previous namespace identity.
	NamespaceUID types.UID `json:"namespaceUID"`

	// SessionUID repeats the immutable control identity at the lineage fence.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	SessionUID string `json:"sessionUid"`

	ContractVersion AgentRuntimeContractVersion `json:"contractVersion"`

	// +kubebuilder:validation:Minimum=1
	Generation int64 `json:"generation"`

	// RuntimeIdentity is the built-in runtime type or AgentRuntime UID.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	RuntimeIdentity string `json:"runtimeIdentity"`

	// ConfigDigest freezes the configuration/execution-snapshot identity used
	// when the lineage was established.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	ConfigDigest string `json:"configDigest"`

	EstablishedAt metav1.Time `json:"establishedAt"`
}

RuntimeSessionLineageStatus is the Kubernetes-authoritative, append-once protocol/runtime identity for one conversation Session. Generation is independent from mutation-lease and ACP RuntimeSession generations.

func (*RuntimeSessionLineageStatus) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSessionLineageStatus.

func (*RuntimeSessionLineageStatus) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type RuntimeSessionMutationLeaseStatus added in v0.2.0

type RuntimeSessionMutationLeaseStatus struct {
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	LeaseName string `json:"leaseName"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=64
	LeaseResourceVersion string `json:"leaseResourceVersion"`

	// +kubebuilder:validation:Minimum=1
	Generation int64 `json:"generation"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	TaskUID string `json:"taskUid"`

	// +kubebuilder:validation:Minimum=1
	Attempt int64 `json:"attempt"`

	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=1024
	PromptID string `json:"promptId"`

	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	RequestDigest string `json:"requestDigest"`

	AcquiredAt metav1.Time `json:"acquiredAt"`

	// +optional
	ExpiresAt *metav1.Time `json:"expiresAt,omitempty"`
}

RuntimeSessionMutationLeaseStatus mirrors the namespaced Kubernetes Lease that serializes mutation for one immutable SessionUID.

func (*RuntimeSessionMutationLeaseStatus) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSessionMutationLeaseStatus.

func (*RuntimeSessionMutationLeaseStatus) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecretKeySelector

type SecretKeySelector struct {
	// Name is the name of the Secret
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Key is the key within the Secret
	// +kubebuilder:validation:Required
	Key string `json:"key"`
}

SecretKeySelector selects a key from a Secret

func (*SecretKeySelector) DeepCopy

func (in *SecretKeySelector) DeepCopy() *SecretKeySelector

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretKeySelector.

func (*SecretKeySelector) DeepCopyInto

func (in *SecretKeySelector) DeepCopyInto(out *SecretKeySelector)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SecretReference

type SecretReference struct {
	// Name is the name of the Secret
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Namespace is the namespace of the Secret (defaults to Task namespace)
	// +optional
	Namespace string `json:"namespace,omitempty"`
}

SecretReference references a Kubernetes Secret

func (*SecretReference) DeepCopy

func (in *SecretReference) DeepCopy() *SecretReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecretReference.

func (*SecretReference) DeepCopyInto

func (in *SecretReference) DeepCopyInto(out *SecretReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SessionConfig

type SessionConfig struct {
	// MaxMessages is the maximum messages to load from session
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:default=50
	// +optional
	MaxMessages int32 `json:"maxMessages,omitempty"`
}

SessionConfig defines session behavior defaults

func (*SessionConfig) DeepCopy

func (in *SessionConfig) DeepCopy() *SessionConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SessionConfig.

func (*SessionConfig) DeepCopyInto

func (in *SessionConfig) DeepCopyInto(out *SessionConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SessionReference

type SessionReference struct {
	// Name is the session identifier (ConfigMap: session-<name>)
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Create indicates whether to create the session if it doesn't exist
	// +kubebuilder:default=false
	// +optional
	Create bool `json:"create,omitempty"`

	// Append indicates whether to append task messages to the session transcript
	// +kubebuilder:default=true
	// +optional
	Append bool `json:"append"`

	// MaxMessages is the maximum number of messages to load from session
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:default=50
	// +optional
	MaxMessages int32 `json:"maxMessages,omitempty"`

	// ThroughMessageID limits transcript loading to the logical history at and before this stable message ID.
	// Gateway-created Tasks use it so later queued user messages cannot enter an earlier turn.
	// +kubebuilder:validation:MaxLength=256
	// +optional
	ThroughMessageID string `json:"throughMessageId,omitempty"`

	// PromptIncluded reports that the current Task prompt is already the final user message in the bounded transcript.
	// Workers must not append prompt a second time when this is true.
	// +optional
	PromptIncluded bool `json:"promptIncluded,omitempty"`
}

SessionReference references a session for conversation continuity

func (*SessionReference) DeepCopy

func (in *SessionReference) DeepCopy() *SessionReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SessionReference.

func (*SessionReference) DeepCopyInto

func (in *SessionReference) DeepCopyInto(out *SessionReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Skill

type Skill struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   SkillSpec   `json:"spec,omitempty"`
	Status SkillStatus `json:"status,omitempty"`
}

Skill is the Schema for the skills API

func (*Skill) DeepCopy

func (in *Skill) DeepCopy() *Skill

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Skill.

func (*Skill) DeepCopyInto

func (in *Skill) DeepCopyInto(out *Skill)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Skill) DeepCopyObject

func (in *Skill) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type SkillContent

type SkillContent struct {
	// Inline is the SKILL.md content injected into the system prompt
	// +kubebuilder:validation:Required
	Inline string `json:"inline"`

	// Files is a map of additional files (templates, examples) mounted alongside the skill
	// Keys are relative paths (e.g. "templates/review-checklist.md")
	// +optional
	Files map[string]string `json:"files,omitempty"`
}

SkillContent holds the skill content following the Agent Skills standard

func (*SkillContent) DeepCopy

func (in *SkillContent) DeepCopy() *SkillContent

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SkillContent.

func (*SkillContent) DeepCopyInto

func (in *SkillContent) DeepCopyInto(out *SkillContent)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SkillList

type SkillList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Skill `json:"items"`
}

SkillList contains a list of Skill

func (*SkillList) DeepCopy

func (in *SkillList) DeepCopy() *SkillList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SkillList.

func (*SkillList) DeepCopyInto

func (in *SkillList) DeepCopyInto(out *SkillList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SkillList) DeepCopyObject

func (in *SkillList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type SkillReference

type SkillReference struct {
	// Name references a Skill CR by name
	// +optional
	Name string `json:"name,omitempty"`

	// ConfigMapRef references a ConfigMap key containing skill text
	// +optional
	ConfigMapRef *ConfigMapKeySelector `json:"configMapRef,omitempty"`
}

SkillReference references a Skill CRD by name or inline skill content from a ConfigMap key.

func (*SkillReference) DeepCopy

func (in *SkillReference) DeepCopy() *SkillReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SkillReference.

func (*SkillReference) DeepCopyInto

func (in *SkillReference) DeepCopyInto(out *SkillReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SkillSource

type SkillSource struct {
	// GitHub is the GitHub repo path (e.g. "/anthropics/skills")
	// +optional
	GitHub string `json:"github,omitempty"`

	// SkillName is the skill name within the source repo
	// +optional
	SkillName string `json:"skillName,omitempty"`
}

SkillSource tracks the origin of an imported skill

func (*SkillSource) DeepCopy

func (in *SkillSource) DeepCopy() *SkillSource

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SkillSource.

func (*SkillSource) DeepCopyInto

func (in *SkillSource) DeepCopyInto(out *SkillSource)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SkillSpec

type SkillSpec struct {
	// DisplayName is the human-readable name of the skill
	// +optional
	DisplayName string `json:"displayName,omitempty"`

	// Description is a short description of the skill shown to users and LLMs
	// +kubebuilder:validation:Required
	Description string `json:"description"`

	// Version is the semantic version of the skill
	// +optional
	Version string `json:"version,omitempty"`

	// Author is the author or maintainer of the skill
	// +optional
	Author string `json:"author,omitempty"`

	// Tags are labels for categorization and discovery
	// +optional
	Tags []string `json:"tags,omitempty"`

	// Content defines the skill content (Agent Skills standard)
	// +kubebuilder:validation:Required
	Content SkillContent `json:"content"`

	// Source tracks where this skill was imported from (for updates)
	// +optional
	Source *SkillSource `json:"source,omitempty"`
}

SkillSpec defines the desired state of Skill

func (*SkillSpec) DeepCopy

func (in *SkillSpec) DeepCopy() *SkillSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SkillSpec.

func (*SkillSpec) DeepCopyInto

func (in *SkillSpec) DeepCopyInto(out *SkillSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SkillStatus

type SkillStatus struct {
	// Phase indicates the current state of the skill: Ready or Error
	// +optional
	Phase string `json:"phase,omitempty"`

	// ContentHash is the SHA-256 hash of the skill content for change detection
	// +optional
	ContentHash string `json:"contentHash,omitempty"`

	// Conditions represent the current state of the Skill
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// ObservedGeneration is the most recent generation observed
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
}

SkillStatus defines the observed state of Skill

func (*SkillStatus) DeepCopy

func (in *SkillStatus) DeepCopy() *SkillStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SkillStatus.

func (*SkillStatus) DeepCopyInto

func (in *SkillStatus) DeepCopyInto(out *SkillStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubstrateActorPool

type SubstrateActorPool struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   SubstrateActorPoolSpec   `json:"spec"`
	Status SubstrateActorPoolStatus `json:"status,omitempty"`
}

SubstrateActorPool is the Schema for Substrate actor pools.

func (*SubstrateActorPool) DeepCopy

func (in *SubstrateActorPool) DeepCopy() *SubstrateActorPool

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubstrateActorPool.

func (*SubstrateActorPool) DeepCopyInto

func (in *SubstrateActorPool) DeepCopyInto(out *SubstrateActorPool)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SubstrateActorPool) DeepCopyObject

func (in *SubstrateActorPool) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type SubstrateActorPoolList

type SubstrateActorPoolList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []SubstrateActorPool `json:"items"`
}

SubstrateActorPoolList contains a list of SubstrateActorPool.

func (*SubstrateActorPoolList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubstrateActorPoolList.

func (*SubstrateActorPoolList) DeepCopyInto

func (in *SubstrateActorPoolList) DeepCopyInto(out *SubstrateActorPoolList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*SubstrateActorPoolList) DeepCopyObject

func (in *SubstrateActorPoolList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type SubstrateActorPoolPhase

type SubstrateActorPoolPhase string

SubstrateActorPoolPhase describes controller progress for an actor pool. +kubebuilder:validation:Enum=Pending;Ready;Failed

type SubstrateActorPoolReference

type SubstrateActorPoolReference struct {
	// Name is the pool name.
	// +optional
	Name string `json:"name,omitempty"`

	// Namespace is the pool namespace. It defaults to the Task namespace.
	// +optional
	Namespace string `json:"namespace,omitempty"`
}

SubstrateActorPoolReference references a SubstrateActorPool.

func (*SubstrateActorPoolReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubstrateActorPoolReference.

func (*SubstrateActorPoolReference) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubstrateActorPoolSpec

type SubstrateActorPoolSpec struct {
	// TemplateRef is the immutable ActorTemplate reference used for pool members.
	// Its namespace selects the native Atespace. Create another pool to change it.
	// +kubebuilder:validation:Required
	TemplateRef WorkspaceTemplateReference `json:"templateRef"`

	// WorkerPoolRef is the Substrate WorkerPool this Orka pool targets.
	// +optional
	WorkerPoolRef *WorkspaceTemplateReference `json:"workerPoolRef,omitempty"`

	// TargetActors is the desired number of stateful actors tracked for this
	// pool. It may exceed the physical worker budget to express oversubscription.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=1000
	// +optional
	TargetActors int32 `json:"targetActors,omitempty"`

	// PrecreateActors asks the controller to create deterministic warm actors up
	// to TargetActors. Substrate may suspend them when the WorkerPool is full.
	// +optional
	PrecreateActors bool `json:"precreateActors,omitempty"`
}

SubstrateActorPoolSpec defines an operator-owned oversubscription pool. +kubebuilder:validation:XValidation:rule="self.templateRef == oldSelf.templateRef",message="templateRef is immutable; create another pool to change the template or Atespace"

func (*SubstrateActorPoolSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubstrateActorPoolSpec.

func (*SubstrateActorPoolSpec) DeepCopyInto

func (in *SubstrateActorPoolSpec) DeepCopyInto(out *SubstrateActorPoolSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubstrateActorPoolStatus

type SubstrateActorPoolStatus struct {
	// Phase is the current controller-observed phase.
	// +optional
	Phase SubstrateActorPoolPhase `json:"phase,omitempty"`

	// ObservedGeneration is the latest generation reconciled by the controller.
	// +optional
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`

	// TemplateUID pins the first admitted native ActorTemplate lifetime.
	// A same-name replacement requires a new pool.
	// +optional
	TemplateUID string `json:"templateUID,omitempty"`

	// WorkerCount is the number of workers reported by Substrate for this pool.
	// +optional
	WorkerCount int32 `json:"workerCount,omitempty"`

	// ActorCount is the number of actors reported by Substrate for this pool.
	// +optional
	ActorCount int32 `json:"actorCount,omitempty"`

	// RunningActorCount is the number of pool actors currently running.
	// +optional
	RunningActorCount int32 `json:"runningActorCount,omitempty"`

	// SuspendedActorCount is the number of pool actors currently suspended.
	// +optional
	SuspendedActorCount int32 `json:"suspendedActorCount,omitempty"`

	// ActorsPerWorker is ActorCount divided by WorkerCount, formatted as a decimal string.
	// +optional
	ActorsPerWorker string `json:"actorsPerWorker,omitempty"`

	// Message contains sanitized reconciliation context.
	// +optional
	Message string `json:"message,omitempty"`

	// Conditions represent the current state of the pool.
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

SubstrateActorPoolStatus reports safe pool telemetry.

func (*SubstrateActorPoolStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubstrateActorPoolStatus.

func (*SubstrateActorPoolStatus) DeepCopyInto

func (in *SubstrateActorPoolStatus) DeepCopyInto(out *SubstrateActorPoolStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type SubstrateMCPActor

type SubstrateMCPActor struct {
	// TemplateRef references the ActorTemplate that runs the MCP server.
	// +kubebuilder:validation:Required
	TemplateRef WorkspaceTemplateReference `json:"templateRef"`

	// PoolRef optionally assigns this tool actor to an Orka SubstrateActorPool.
	// +optional
	PoolRef *SubstrateActorPoolReference `json:"poolRef,omitempty"`

	// Boot asks Substrate to boot this actor from scratch on first resume.
	// +optional
	Boot bool `json:"boot,omitempty"`
}

SubstrateMCPActor selects the durable actor that hosts an MCP server.

func (*SubstrateMCPActor) DeepCopy

func (in *SubstrateMCPActor) DeepCopy() *SubstrateMCPActor

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubstrateMCPActor.

func (*SubstrateMCPActor) DeepCopyInto

func (in *SubstrateMCPActor) DeepCopyInto(out *SubstrateMCPActor)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Task

type Task struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   TaskSpec   `json:"spec,omitempty"`
	Status TaskStatus `json:"status,omitempty"`
}

Task is the Schema for the tasks API

func (*Task) DeepCopy

func (in *Task) DeepCopy() *Task

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Task.

func (*Task) DeepCopyInto

func (in *Task) DeepCopyInto(out *Task)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Task) DeepCopyObject

func (in *Task) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type TaskDeliveryOutcome added in v0.2.0

type TaskDeliveryOutcome string

TaskDeliveryOutcome is the terminal delivery classification. +kubebuilder:validation:Enum=NotRequested;VerifiedExact;DeliveredSuperseded;ReadValidated;NoChange;CancelledBeforePublish;ReadOnlyWorkspaceModified;DeliveryConflict;CredentialBlocked;PublicationOutcomeUnknown

const (
	TaskDeliveryOutcomeNotRequested              TaskDeliveryOutcome = "NotRequested"
	TaskDeliveryOutcomeVerifiedExact             TaskDeliveryOutcome = "VerifiedExact"
	TaskDeliveryOutcomeDeliveredSuperseded       TaskDeliveryOutcome = "DeliveredSuperseded"
	TaskDeliveryOutcomeReadValidated             TaskDeliveryOutcome = "ReadValidated"
	TaskDeliveryOutcomeNoChange                  TaskDeliveryOutcome = "NoChange"
	TaskDeliveryOutcomeCancelledBeforePublish    TaskDeliveryOutcome = "CancelledBeforePublish"
	TaskDeliveryOutcomeReadOnlyWorkspaceModified TaskDeliveryOutcome = "ReadOnlyWorkspaceModified"
	TaskDeliveryOutcomeDeliveryConflict          TaskDeliveryOutcome = "DeliveryConflict"
	TaskDeliveryOutcomeCredentialBlocked         TaskDeliveryOutcome = "CredentialBlocked"
	TaskDeliveryOutcomePublicationOutcomeUnknown TaskDeliveryOutcome = "PublicationOutcomeUnknown"
)

type TaskDeliveryReason added in v0.2.0

type TaskDeliveryReason string

TaskDeliveryReason is a bounded machine-readable delivery reason. +kubebuilder:validation:MaxLength=128 +kubebuilder:validation:Pattern=`^[A-Za-z][A-Za-z0-9._-]{0,127}$`

const (
	// TaskDeliveryReasonCancellationRequestedAfterPublish records that publication
	// won the durable CAS and must continue reconciliation despite cancellation.
	TaskDeliveryReasonCancellationRequestedAfterPublish TaskDeliveryReason = "CancellationRequestedAfterPublish"
)

type TaskDeliveryState added in v0.2.0

type TaskDeliveryState string

TaskDeliveryState is the durable validation and publication lifecycle. +kubebuilder:validation:Enum=NotRequested;Validating;Preparing;Prepared;Publishing;Verifying;VerifiedExact;DeliveredSuperseded;ReadValidated;NoChange;CancelledBeforePublish;ReadOnlyWorkspaceModified;DeliveryConflict;CredentialBlocked;PublicationOutcomeUnknown

const (
	TaskDeliveryStateNotRequested              TaskDeliveryState = "NotRequested"
	TaskDeliveryStateValidating                TaskDeliveryState = "Validating"
	TaskDeliveryStatePreparing                 TaskDeliveryState = "Preparing"
	TaskDeliveryStatePrepared                  TaskDeliveryState = "Prepared"
	TaskDeliveryStatePublishing                TaskDeliveryState = "Publishing"
	TaskDeliveryStateVerifying                 TaskDeliveryState = "Verifying"
	TaskDeliveryStateVerifiedExact             TaskDeliveryState = "VerifiedExact"
	TaskDeliveryStateDeliveredSuperseded       TaskDeliveryState = "DeliveredSuperseded"
	TaskDeliveryStateReadValidated             TaskDeliveryState = "ReadValidated"
	TaskDeliveryStateNoChange                  TaskDeliveryState = "NoChange"
	TaskDeliveryStateCancelledBeforePublish    TaskDeliveryState = "CancelledBeforePublish"
	TaskDeliveryStateReadOnlyWorkspaceModified TaskDeliveryState = "ReadOnlyWorkspaceModified"
	TaskDeliveryStateDeliveryConflict          TaskDeliveryState = "DeliveryConflict"
	TaskDeliveryStateCredentialBlocked         TaskDeliveryState = "CredentialBlocked"
	TaskDeliveryStatePublicationOutcomeUnknown TaskDeliveryState = "PublicationOutcomeUnknown"
)

type TaskDeliveryStatus added in v0.2.0

type TaskDeliveryStatus struct {
	// State is the current durable delivery state.
	// +optional
	State TaskDeliveryState `json:"state,omitempty"`

	// Outcome is set only after delivery reaches a terminal classification.
	// +optional
	Outcome TaskDeliveryOutcome `json:"outcome,omitempty"`

	// Reason is a stable machine-readable explanation for State or Outcome.
	// +optional
	Reason TaskDeliveryReason `json:"reason,omitempty"`

	// PublicationID is the durable identity reused for reconciliation of the same artifact.
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=`^[A-Za-z0-9][A-Za-z0-9._:-]{0,252}$`
	// +optional
	PublicationID string `json:"publicationID,omitempty"`

	// SourceRepository is the canonical repository from which the workspace baseline was created.
	// +optional
	SourceRepository *RepositoryIdentity `json:"sourceRepository,omitempty"`

	// PublicationRepository is the canonical repository whose branch was reconciled.
	// +optional
	PublicationRepository *RepositoryIdentity `json:"publicationRepository,omitempty"`

	// Branch is the publication branch without a refs/heads/ prefix.
	// +kubebuilder:validation:MaxLength=255
	// +optional
	Branch string `json:"branch,omitempty"`

	// StartingSHA is the verified source baseline before prompt execution.
	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	// +optional
	StartingSHA string `json:"startingSHA,omitempty"`

	// RemoteBeforeSHA is the exact publication ref observed before the CAS push.
	// Nil means not yet observed; a pointer to the empty string records explicit
	// absence; a non-empty value records the observed object ID.
	// +kubebuilder:validation:Pattern=`^(|[a-f0-9]{40}|[a-f0-9]{64})$`
	// +optional
	RemoteBeforeSHA *string `json:"remoteBeforeSHA,omitempty"`

	// TreeSHA is the deterministic clean-room tree written by the publisher.
	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	// +optional
	TreeSHA string `json:"treeSHA,omitempty"`

	// ExpectedCommitSHA is the exact Orka-owned commit prepared for publication.
	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	// +optional
	ExpectedCommitSHA string `json:"expectedCommitSHA,omitempty"`

	// VerifiedRemoteSHA is the independently observed remote branch head.
	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	// +optional
	VerifiedRemoteSHA string `json:"verifiedRemoteSHA,omitempty"`

	// SupersedingRemoteSHA is the verified descendant that superseded ExpectedCommitSHA.
	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	// +optional
	SupersedingRemoteSHA string `json:"supersedingRemoteSHA,omitempty"`

	// ArtifactDigest is the durable content-addressed workspace delta digest.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	// +optional
	ArtifactDigest string `json:"artifactDigest,omitempty"`

	// PRReceipt is present only when createPR was explicitly requested and reconciled.
	// +optional
	PRReceipt *TaskPullRequestReceipt `json:"prReceipt,omitempty"`

	// Message contains bounded, sanitized delivery context.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Message string `json:"message,omitempty"`

	// LastTransitionTime is the last durable delivery-state transition time.
	// +optional
	LastTransitionTime *metav1.Time `json:"lastTransitionTime,omitempty"`
}

TaskDeliveryStatus is the structured validation/publication status and its durable, non-secret receipt. +kubebuilder:validation:XValidation:rule="!has(self.outcome) || (has(self.state) && self.state == self.outcome)",message="delivery outcome requires the matching terminal state" +kubebuilder:validation:XValidation:rule="!has(self.state) || !(self.state in ['NotRequested', 'VerifiedExact', 'DeliveredSuperseded', 'ReadValidated', 'NoChange', 'CancelledBeforePublish', 'ReadOnlyWorkspaceModified', 'DeliveryConflict', 'CredentialBlocked', 'PublicationOutcomeUnknown']) || has(self.outcome)",message="terminal delivery state requires an outcome"

func (*TaskDeliveryStatus) DeepCopy added in v0.2.0

func (in *TaskDeliveryStatus) DeepCopy() *TaskDeliveryStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskDeliveryStatus.

func (*TaskDeliveryStatus) DeepCopyInto added in v0.2.0

func (in *TaskDeliveryStatus) DeepCopyInto(out *TaskDeliveryStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TaskExecutionOutcome

type TaskExecutionOutcome string

TaskExecutionOutcome is the terminal classification of one Task attempt. OutcomeUnknown is terminal and must never be treated as generic retryable failure by controller logic. +kubebuilder:validation:Enum=Succeeded;Failed;Cancelled;OutcomeUnknown

const (
	TaskExecutionOutcomeSucceeded      TaskExecutionOutcome = "Succeeded"
	TaskExecutionOutcomeFailed         TaskExecutionOutcome = "Failed"
	TaskExecutionOutcomeCancelled      TaskExecutionOutcome = "Cancelled"
	TaskExecutionOutcomeOutcomeUnknown TaskExecutionOutcome = "OutcomeUnknown"
)

type TaskExecutionReason added in v0.2.0

type TaskExecutionReason string

TaskExecutionReason is a bounded machine-readable execution reason. +kubebuilder:validation:MaxLength=128 +kubebuilder:validation:Pattern=`^[A-Za-z][A-Za-z0-9._-]{0,127}$`

const (
	// TaskExecutionReasonAtCapacity is a scheduling reason, not a terminal Task phase.
	TaskExecutionReasonAtCapacity TaskExecutionReason = "AtCapacity"
	// TaskExecutionReasonRuntimeLost classifies accepted or running work lost with
	// an unprovable terminal result; its outcome must be OutcomeUnknown.
	TaskExecutionReasonRuntimeLost TaskExecutionReason = "RuntimeLost"
)

type TaskExecutionState added in v0.2.0

type TaskExecutionState string

TaskExecutionState is the durable execution state of one Task attempt. +kubebuilder:validation:Enum=Queued;Reserved;SessionStarting;Planned;Submitting;SubmittedUnknown;Accepted;Running;Settling;Succeeded;Failed;Cancelled;OutcomeUnknown

const (
	TaskExecutionStateQueued           TaskExecutionState = "Queued"
	TaskExecutionStateReserved         TaskExecutionState = "Reserved"
	TaskExecutionStateSessionStarting  TaskExecutionState = "SessionStarting"
	TaskExecutionStatePlanned          TaskExecutionState = "Planned"
	TaskExecutionStateSubmitting       TaskExecutionState = "Submitting"
	TaskExecutionStateSubmittedUnknown TaskExecutionState = "SubmittedUnknown"
	TaskExecutionStateAccepted         TaskExecutionState = "Accepted"
	TaskExecutionStateRunning          TaskExecutionState = "Running"
	TaskExecutionStateSettling         TaskExecutionState = "Settling"
	TaskExecutionStateSucceeded        TaskExecutionState = "Succeeded"
	TaskExecutionStateFailed           TaskExecutionState = "Failed"
	TaskExecutionStateCancelled        TaskExecutionState = "Cancelled"
	TaskExecutionStateOutcomeUnknown   TaskExecutionState = "OutcomeUnknown"
)

type TaskExecutionStatus added in v0.2.0

type TaskExecutionStatus struct {
	// State is the current durable execution state.
	// +optional
	State TaskExecutionState `json:"state,omitempty"`

	// Outcome is set only after execution reaches a terminal classification.
	// +optional
	Outcome TaskExecutionOutcome `json:"outcome,omitempty"`

	// Reason is a stable machine-readable explanation for State or Outcome.
	// +optional
	Reason TaskExecutionReason `json:"reason,omitempty"`

	// Attempt is the one-based Task execution attempt represented by this status.
	// +kubebuilder:validation:Minimum=1
	// +optional
	Attempt int32 `json:"attempt,omitempty"`

	// PromptID is the durable prompt identity used for submission and settlement.
	// +kubebuilder:validation:MaxLength=253
	// +optional
	PromptID string `json:"promptID,omitempty"`

	// RuntimePoolName is the namespaced logical pool selected for this attempt.
	// +kubebuilder:validation:MaxLength=253
	// +optional
	RuntimePoolName string `json:"runtimePoolName,omitempty"`

	// RuntimePoolUID is the immutable pool UID fenced into runtime requests.
	// +kubebuilder:validation:MaxLength=253
	// +optional
	RuntimePoolUID string `json:"runtimePoolUID,omitempty"`

	// AgentRuntimeName is the namespaced external orka.harness.v2 registration
	// selected for this attempt. It is mutually exclusive with RuntimePoolName.
	// +kubebuilder:validation:MaxLength=253
	// +optional
	AgentRuntimeName string `json:"agentRuntimeName,omitempty"`

	// AgentRuntimeUID is the immutable external AgentRuntime UID fenced into the
	// attempt selection.
	// +kubebuilder:validation:MaxLength=253
	// +optional
	AgentRuntimeUID string `json:"agentRuntimeUID,omitempty"`

	// RuntimeInstanceID is the exact selected supervisor Pod UID plus boot identity.
	// +kubebuilder:validation:MaxLength=512
	// +optional
	RuntimeInstanceID string `json:"runtimeInstanceID,omitempty"`

	// RuntimeSessionUID is the stable controller-owned Session execution identity.
	// +kubebuilder:validation:MaxLength=253
	// +optional
	RuntimeSessionUID string `json:"runtimeSessionUID,omitempty"`

	// RuntimeSessionGeneration is the monotonic profile/session generation.
	// +kubebuilder:validation:Minimum=0
	// +optional
	RuntimeSessionGeneration int64 `json:"runtimeSessionGeneration,omitempty"`

	// RuntimeSessionSupervisorBootID freezes the supervisor boot that owns a
	// pending or reusable Session generation.
	// +kubebuilder:validation:MaxLength=512
	// +optional
	RuntimeSessionSupervisorBootID string `json:"runtimeSessionSupervisorBootID,omitempty"`

	// RuntimeSessionProfileDigest freezes the immutable runtime behavior bound to
	// a pending or reusable Session generation.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	// +optional
	RuntimeSessionProfileDigest string `json:"runtimeSessionProfileDigest,omitempty"`

	// RuntimeSessionMCPDigest binds the complete non-secret effective MCP policy
	// and descriptor configuration to a pending or reusable Session generation.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	// +optional
	RuntimeSessionMCPDigest string `json:"runtimeSessionMCPDigest,omitempty"`

	// RuntimeSessionWorkspaceDigest binds a reusable Session generation to the
	// exact repository, source ref, verified baseline, intent, and relative root.
	// It contains no credential material.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	// +optional
	RuntimeSessionWorkspaceDigest string `json:"runtimeSessionWorkspaceDigest,omitempty"`

	// RuntimeSessionRecreationPending records that the exact generation is being
	// created or replaced and must be reconciled before a different request may
	// reuse that identity.
	// +optional
	RuntimeSessionRecreationPending bool `json:"runtimeSessionRecreationPending,omitempty"`

	// RuntimeSessionCleanupDigest is the controller-owned proof that the exact
	// RuntimeSession requiring retirement was deleted or its immutable runtime
	// instance was replaced. Users may read but cannot mutate the Task status subresource.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	// +optional
	RuntimeSessionCleanupDigest string `json:"runtimeSessionCleanupDigest,omitempty"`

	// RequestDigest is the canonical immutable prompt request digest.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	// +optional
	RequestDigest string `json:"requestDigest,omitempty"`

	// ControllerEpoch is the durable controller epoch fencing this attempt.
	// +kubebuilder:validation:Minimum=0
	// +optional
	ControllerEpoch int64 `json:"controllerEpoch,omitempty"`

	// ReadCredentialResourceVersion freezes the read credential Secret version
	// selected at reservation without exposing credential material.
	// +optional
	// +kubebuilder:validation:MaxLength=253
	ReadCredentialResourceVersion string `json:"readCredentialResourceVersion,omitempty"`

	// PublicationReadCredentialResourceVersion freezes the target-read Secret
	// version used for preflight and independent verification.
	// +optional
	// +kubebuilder:validation:MaxLength=253
	PublicationReadCredentialResourceVersion string `json:"publicationReadCredentialResourceVersion,omitempty"`

	// PublicationCredentialResourceVersion freezes the target-write Secret
	// version selected at reservation without exposing credential material.
	// +optional
	// +kubebuilder:validation:MaxLength=253
	PublicationCredentialResourceVersion string `json:"publicationCredentialResourceVersion,omitempty"`

	// ForgeCredentialResourceVersion freezes the forge-only Secret version used
	// for pull request reconciliation.
	// +optional
	// +kubebuilder:validation:MaxLength=253
	ForgeCredentialResourceVersion string `json:"forgeCredentialResourceVersion,omitempty"`

	// Message contains bounded, sanitized execution context.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	Message string `json:"message,omitempty"`

	// LastTransitionTime is the last durable execution-state transition time.
	// +optional
	LastTransitionTime *metav1.Time `json:"lastTransitionTime,omitempty"`
}

TaskExecutionStatus is the structured execution lifecycle for the current Task attempt. The existing top-level Task phase remains the compatibility projection and is not replaced by this status. +kubebuilder:validation:XValidation:rule="!has(self.outcome) || (has(self.state) && self.state == self.outcome)",message="execution outcome requires the matching terminal state" +kubebuilder:validation:XValidation:rule="!has(self.state) || !(self.state in ['Succeeded', 'Failed', 'Cancelled', 'OutcomeUnknown']) || has(self.outcome)",message="terminal execution state requires an outcome"

func (*TaskExecutionStatus) DeepCopy added in v0.2.0

func (in *TaskExecutionStatus) DeepCopy() *TaskExecutionStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskExecutionStatus.

func (*TaskExecutionStatus) DeepCopyInto added in v0.2.0

func (in *TaskExecutionStatus) DeepCopyInto(out *TaskExecutionStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TaskList

type TaskList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Task `json:"items"`
}

TaskList contains a list of Task

func (*TaskList) DeepCopy

func (in *TaskList) DeepCopy() *TaskList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskList.

func (*TaskList) DeepCopyInto

func (in *TaskList) DeepCopyInto(out *TaskList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*TaskList) DeepCopyObject

func (in *TaskList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type TaskPhase

type TaskPhase string

TaskPhase defines the phase of task execution +kubebuilder:validation:Enum=Pending;Running;Finalizing;Succeeded;Failed;Scheduled;Cancelled

const (
	TaskPhasePending    TaskPhase = "Pending"
	TaskPhaseRunning    TaskPhase = "Running"
	TaskPhaseFinalizing TaskPhase = "Finalizing"
	TaskPhaseSucceeded  TaskPhase = "Succeeded"
	TaskPhaseFailed     TaskPhase = "Failed"
	TaskPhaseScheduled  TaskPhase = "Scheduled"
	TaskPhaseCancelled  TaskPhase = "Cancelled"
)

type TaskPullRequestReceipt added in v0.2.0

type TaskPullRequestReceipt struct {
	// ID is the provider's durable pull request identifier.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=512
	ID string `json:"id"`

	// Number is the provider's numeric pull request number when available.
	// +kubebuilder:validation:Minimum=1
	// +optional
	Number int64 `json:"number,omitempty"`

	// URL is the canonical user-facing pull request URL. It must not contain credentials.
	// +kubebuilder:validation:MaxLength=2048
	// +optional
	URL string `json:"url,omitempty"`

	// State is the provider-observed pull request state.
	// +kubebuilder:validation:MaxLength=64
	// +optional
	State string `json:"state,omitempty"`

	// BaseBranch is the reconciled pull request base branch.
	// +kubebuilder:validation:MaxLength=255
	// +optional
	BaseBranch string `json:"baseBranch,omitempty"`

	// HeadBranch is the reconciled pull request head branch.
	// +kubebuilder:validation:MaxLength=255
	// +optional
	HeadBranch string `json:"headBranch,omitempty"`

	// HeadSHA is the exact observed pull request head commit.
	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	// +optional
	HeadSHA string `json:"headSHA,omitempty"`
}

TaskPullRequestReceipt is the bounded, non-secret receipt for an explicitly requested pull request reconciliation.

func (*TaskPullRequestReceipt) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskPullRequestReceipt.

func (*TaskPullRequestReceipt) DeepCopyInto added in v0.2.0

func (in *TaskPullRequestReceipt) DeepCopyInto(out *TaskPullRequestReceipt)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TaskSpec

type TaskSpec struct {
	// Type specifies the task type: "container" or "ai"
	// +kubebuilder:validation:Required
	Type TaskType `json:"type"`

	// Image is the container image to run for the task
	// +optional
	Image string `json:"image,omitempty"`

	// Command is the command to run in the container
	// +optional
	Command []string `json:"command,omitempty"`

	// Args are the arguments to pass to the command
	// +optional
	Args []string `json:"args,omitempty"`

	// Env is a list of environment variables to set in the container
	// +optional
	Env []corev1.EnvVar `json:"env,omitempty"`

	// Timeout is the maximum duration for the task
	// +optional
	Timeout *metav1.Duration `json:"timeout,omitempty"`

	// Priority is the queue priority (0-1000, higher = more urgent)
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=1000
	// +kubebuilder:default=500
	// +optional
	Priority *int32 `json:"priority,omitempty"`

	// RetryPolicy defines the retry behavior for failed tasks
	// +optional
	RetryPolicy *RetryPolicy `json:"retryPolicy,omitempty"`

	// WebhookURL is the URL to call when the task completes
	// +optional
	WebhookURL string `json:"webhookURL,omitempty"`

	// SecretRef references a Kubernetes Secret containing credentials
	// +optional
	SecretRef *SecretReference `json:"secretRef,omitempty"`

	// SessionRef references a session for conversation continuity.
	// It is immutable after Task creation because it bounds transcript access.
	// +optional
	SessionRef *SessionReference `json:"sessionRef,omitempty"`

	// Resources defines the compute resources for the task
	// +optional
	Resources corev1.ResourceRequirements `json:"resources,omitempty"`

	// Execution defines worker pod runtime and placement settings.
	// +optional
	Execution *ExecutionSpec `json:"execution,omitempty"`

	// Schedule is a cron expression for recurring tasks (e.g., "0 */6 * * *").
	// When set, the controller creates child Task CRs on each cron tick.
	// +optional
	Schedule string `json:"schedule,omitempty"`

	// TimeZone is the IANA time zone for the schedule (e.g., "America/New_York").
	// Defaults to UTC if not set.
	// +optional
	TimeZone *string `json:"timeZone,omitempty"`

	// ConcurrencyPolicy specifies how to treat concurrent runs (Allow or Forbid).
	// +kubebuilder:default="Forbid"
	// +optional
	ConcurrencyPolicy ConcurrencyPolicy `json:"concurrencyPolicy,omitempty"`

	// StartingDeadlineSeconds is the deadline in seconds for starting a missed scheduled run.
	// If the schedule is missed by more than this many seconds, the run is skipped.
	// +kubebuilder:default=100
	// +optional
	StartingDeadlineSeconds *int64 `json:"startingDeadlineSeconds,omitempty"`

	// SuccessfulRunsHistoryLimit is the number of successful child tasks to retain.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:default=3
	// +optional
	SuccessfulRunsHistoryLimit *int32 `json:"successfulRunsHistoryLimit,omitempty"`

	// FailedRunsHistoryLimit is the number of failed child tasks to retain.
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:default=1
	// +optional
	FailedRunsHistoryLimit *int32 `json:"failedRunsHistoryLimit,omitempty"`

	// Suspend tells the controller to suspend subsequent scheduled runs.
	// It does not apply to already started child tasks. Defaults to false.
	// +optional
	Suspend *bool `json:"suspend,omitempty"`

	// AI contains AI-specific configuration (when type is "ai")
	// +optional
	AI *AISpec `json:"ai,omitempty"`

	// AgentRef references an Agent CRD for configuration
	// +optional
	AgentRef *AgentReference `json:"agentRef,omitempty"`

	// Prompt is the task-specific prompt (used with agentRef)
	// +optional
	Prompt string `json:"prompt,omitempty"`

	// AgentRuntime contains task-level overrides for agent runtime configuration (when type is "agent")
	// +optional
	AgentRuntime *AgentRuntimeSpec `json:"agentRuntime,omitempty"`

	// Workspace defines the canonical repository workspace, intent, credentials,
	// and publication request. Agent Tasks that omit intent are interpreted as
	// read by controller logic; an omitted intent preserves existing container behavior.
	// +optional
	Workspace *WorkspaceConfig `json:"workspace,omitempty"`

	// PriorTaskRef references a previously completed task whose diff should be
	// applied to the workspace before this task begins execution.
	// +optional
	PriorTaskRef *PriorTaskReference `json:"priorTaskRef,omitempty"`

	// RequestedBy records the verified identity that created the task.
	// This field is populated by the API server and is immutable.
	// +optional
	RequestedBy *RequestedBy `json:"requestedBy,omitempty"`

	// Transaction records verified transaction-token metadata for audit correlation.
	// This field is populated by the API server and is immutable.
	// +optional
	Transaction *TaskTransaction `json:"transaction,omitempty"`
}

TaskSpec defines the desired state of Task +kubebuilder:validation:XValidation:rule="has(self.requestedBy) == has(oldSelf.requestedBy) && (!has(self.requestedBy) || self.requestedBy == oldSelf.requestedBy)",message="requestedBy is immutable" +kubebuilder:validation:XValidation:rule="has(self.transaction) == has(oldSelf.transaction) && (!has(self.transaction) || self.transaction == oldSelf.transaction)",message="transaction is immutable" +kubebuilder:validation:XValidation:rule="self.type == oldSelf.type",message="type is immutable" +kubebuilder:validation:XValidation:rule="(has(self.workspace) && has(self.workspace.intent) ? self.workspace.intent : (self.type == 'agent' ? 'read' : self.type)) == (has(oldSelf.workspace) && has(oldSelf.workspace.intent) ? oldSelf.workspace.intent : (oldSelf.type == 'agent' ? 'read' : oldSelf.type))",message="effective workspace intent is immutable" +kubebuilder:validation:XValidation:rule="self.type != 'agent' || (has(self.prompt) == has(oldSelf.prompt) && (!has(self.prompt) || self.prompt == oldSelf.prompt))",message="agent prompt is immutable" +kubebuilder:validation:XValidation:rule="self.type != 'agent' || (has(self.agentRef) == has(oldSelf.agentRef) && (!has(self.agentRef) || self.agentRef == oldSelf.agentRef))",message="agentRef is immutable for agent Tasks" +kubebuilder:validation:XValidation:rule="self.type != 'agent' || (has(self.agentRuntime) == has(oldSelf.agentRuntime) && (!has(self.agentRuntime) || self.agentRuntime == oldSelf.agentRuntime))",message="agentRuntime is immutable for agent Tasks" +kubebuilder:validation:XValidation:rule="has(self.sessionRef) == has(oldSelf.sessionRef) && (!has(self.sessionRef) || self.sessionRef == oldSelf.sessionRef)",message="sessionRef is immutable" +kubebuilder:validation:XValidation:rule="self.type != 'agent' || (has(self.workspace) == has(oldSelf.workspace) && (!has(self.workspace) || self.workspace == oldSelf.workspace))",message="workspace is immutable for agent Tasks" +kubebuilder:validation:XValidation:rule="self.type != 'agent' || (has(self.timeout) == has(oldSelf.timeout) && (!has(self.timeout) || self.timeout == oldSelf.timeout))",message="timeout is immutable for agent Tasks" +kubebuilder:validation:XValidation:rule="!has(self.execution) || !has(self.execution.workspace) || self.execution.workspace.reusePolicy != 'session' || has(self.sessionRef)",message="session workspace reuse requires spec.sessionRef" +kubebuilder:validation:XValidation:rule="self.type != 'container' || !has(self.workspace) || !has(self.workspace.expectedRemoteSHA)",message="container Tasks do not support workspace.expectedRemoteSHA" +kubebuilder:validation:XValidation:rule="self.type != 'container' || !has(self.workspace) || (!has(self.workspace.createPR) || !self.workspace.createPR)",message="container Tasks do not support workspace.createPR" +kubebuilder:validation:XValidation:rule="self.type != 'container' || !has(self.workspace) || (!has(self.workspace.maxChangedFiles) && (!has(self.workspace.allowedPaths) || self.workspace.allowedPaths.size() == 0) && (!has(self.workspace.denyRepositoryControlPaths) || !self.workspace.denyRepositoryControlPaths) && (!has(self.workspace.rejectBinaryFiles) || !self.workspace.rejectBinaryFiles) && (!has(self.workspace.rejectSecretLikeContent) || !self.workspace.rejectSecretLikeContent))",message="container Tasks do not support clean-room workspace publication policies" +kubebuilder:validation:XValidation:rule="self.type != 'container' || !has(self.workspace) || !has(self.workspace.pushBranch) || self.workspace.pushBranch.size() == 0 || !has(self.image) || self.image.size() == 0",message="custom-image container Tasks do not support workspace.pushBranch publication"

func (*TaskSpec) DeepCopy

func (in *TaskSpec) DeepCopy() *TaskSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskSpec.

func (*TaskSpec) DeepCopyInto

func (in *TaskSpec) DeepCopyInto(out *TaskSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TaskStatus

type TaskStatus struct {
	// Phase is the current phase of the task
	// +optional
	Phase TaskPhase `json:"phase,omitempty"`

	// StartTime is when the task started running
	// +optional
	StartTime *metav1.Time `json:"startTime,omitempty"`

	// CompletionTime is when the task completed
	// +optional
	CompletionTime *metav1.Time `json:"completionTime,omitempty"`

	// Attempts is the number of attempts made
	// +optional
	Attempts int32 `json:"attempts,omitempty"`

	// Iteration is the current autonomous loop iteration (0-based).
	// Only used when the task's coordination config has autonomous mode enabled.
	// +optional
	Iteration int32 `json:"iteration,omitempty"`

	// JobName is the name of the Kubernetes Job running the task
	// +optional
	JobName string `json:"jobName,omitempty"`

	// JobUID is the immutable identity returned when the controller creates the
	// current Job. A Job with the same name and a different UID has no worker authority.
	// +optional
	JobUID string `json:"jobUID,omitempty"`

	// ResultRef indicates whether a result is available
	// +optional
	ResultRef *ResultReference `json:"resultRef,omitempty"`

	// Execution reports the durable execution state and terminal outcome for the
	// current attempt. Phase remains the compatibility projection.
	// +optional
	Execution *TaskExecutionStatus `json:"execution,omitempty"`

	// Delivery reports trusted workspace validation and publication reconciliation.
	// +optional
	Delivery *TaskDeliveryStatus `json:"delivery,omitempty"`

	// HarnessRuntime records the controller-resolved harness v1 runtime target
	// for an in-flight agent turn. It intentionally stores only non-secret
	// routing metadata and Secret references, never bearer values. Compatibility
	// surface for harness v1 bindings.
	// +optional
	HarnessRuntime *HarnessRuntimeStatus `json:"harnessRuntime,omitempty"`

	// AgentExecutionBinding is the authoritative, write-once, immutable
	// execution route for this agent Task.
	// +optional
	AgentExecutionBinding *AgentExecutionBinding `json:"agentExecutionBinding,omitempty"`

	// ExecutionOutcome records the immutable outcome of a non-ACP workload before
	// provider-neutral execution-workspace finalization completes.
	// +optional
	ExecutionOutcome *TaskWorkloadExecutionOutcome `json:"executionOutcome,omitempty"`

	// ExecutionWorkspace reports the provider-neutral lifecycle state for a
	// requested execution workspace. Provider-native identifiers and credentials
	// are intentionally omitted.
	// +optional
	ExecutionWorkspace *ExecutionWorkspaceStatus `json:"executionWorkspace,omitempty"`

	// WebhookDelivered indicates whether the webhook was successfully called
	// +optional
	WebhookDelivered bool `json:"webhookDelivered,omitempty"`

	// Message provides additional status information
	// +optional
	Message string `json:"message,omitempty"`

	// ChildTasks tracks delegated child tasks (for coordinator agents)
	// +optional
	ChildTasks []ChildTaskStatus `json:"childTasks,omitempty"`

	// Conditions represent the current state of the Task
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// LastScheduleTime is the schedule's progress cursor: the last time a
	// child task was created, or — when a run was missed past
	// startingDeadlineSeconds (for example while suspended) — the time the
	// skipped window was re-anchored so the schedule resumes from the
	// present instead of replaying missed runs.
	// +optional
	LastScheduleTime *metav1.Time `json:"lastScheduleTime,omitempty"`

	// NextScheduleTime is the next time a child task will be created.
	// +optional
	NextScheduleTime *metav1.Time `json:"nextScheduleTime,omitempty"`
}

TaskStatus defines the observed state of Task +kubebuilder:validation:XValidation:rule="!has(oldSelf.executionOutcome) || self.executionOutcome == oldSelf.executionOutcome",message="executionOutcome is immutable once recorded" +kubebuilder:validation:XValidation:rule="!has(oldSelf.agentExecutionBinding) || (has(self.agentExecutionBinding) && self.agentExecutionBinding == oldSelf.agentExecutionBinding)",message="agentExecutionBinding is write-once and immutable" +kubebuilder:validation:XValidation:rule="!has(self.agentExecutionBinding) || self.agentExecutionBinding.contractVersion != 'orka.harness.v1' || ((!has(self.execution) || (has(oldSelf.execution) && self.execution == oldSelf.execution)) && (!has(self.delivery) || (has(oldSelf.delivery) && self.delivery == oldSelf.delivery)))",message="a v1-bound Task cannot acquire new v2 execution or delivery state" +kubebuilder:validation:XValidation:rule="!has(self.agentExecutionBinding) || self.agentExecutionBinding.contractVersion != 'orka.harness.v2' || !has(self.harnessRuntime) || (has(oldSelf.harnessRuntime) && self.harnessRuntime == oldSelf.harnessRuntime)",message="a v2-bound Task cannot acquire new v1 harness state"

func (*TaskStatus) DeepCopy

func (in *TaskStatus) DeepCopy() *TaskStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskStatus.

func (*TaskStatus) DeepCopyInto

func (in *TaskStatus) DeepCopyInto(out *TaskStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TaskTransaction

type TaskTransaction struct {
	// Profile is the context-token profile that authenticated the request.
	// +optional
	Profile string `json:"profile,omitempty"`

	// ID is the verified transaction identifier claim.
	// +optional
	ID string `json:"id,omitempty"`

	// Issuer is the token issuer that authenticated the transaction.
	// +optional
	Issuer string `json:"issuer,omitempty"`

	// Audience lists the verified token audience values.
	// +optional
	Audience []string `json:"audience,omitempty"`

	// Subject is the verified subject claim.
	// +optional
	Subject string `json:"subject,omitempty"`

	// RequestingWorkload is the verified workload that requested the transaction.
	// +optional
	RequestingWorkload string `json:"requestingWorkload,omitempty"`

	// Scope is the original verified scope string.
	// +optional
	Scope string `json:"scope,omitempty"`

	// Scopes lists parsed scope values from the verified scope string.
	// +optional
	Scopes []string `json:"scopes,omitempty"`

	// ContextDigest is a SHA256 digest of the full transaction context.
	// +optional
	ContextDigest string `json:"contextDigest,omitempty"`

	// RequesterContextDigest is a SHA256 digest of the full requester context.
	// +optional
	RequesterContextDigest string `json:"requesterContextDigest,omitempty"`

	// Context contains allowlisted, non-sensitive transaction context fields for audit.
	// +optional
	Context map[string]string `json:"context,omitempty"`
}

TaskTransaction records safe, verified transaction-token metadata for audit correlation.

func (*TaskTransaction) DeepCopy

func (in *TaskTransaction) DeepCopy() *TaskTransaction

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskTransaction.

func (*TaskTransaction) DeepCopyInto

func (in *TaskTransaction) DeepCopyInto(out *TaskTransaction)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TaskType

type TaskType string

TaskType defines the type of task +kubebuilder:validation:Enum=container;ai;agent

const (
	// TaskTypeContainer runs arbitrary container commands
	TaskTypeContainer TaskType = "container"
	// TaskTypeAI runs AI agent tasks with LLM integration
	TaskTypeAI TaskType = "ai"
	// TaskTypeAgent runs external agent CLI runtimes (e.g., Copilot CLI, Claude Code CLI, Codex CLI)
	TaskTypeAgent TaskType = "agent"
)

type TaskWorkloadExecutionOutcome added in v0.2.0

type TaskWorkloadExecutionOutcome struct {
	// Phase is the terminal workload execution phase.
	// +kubebuilder:validation:Enum=Succeeded;Failed;Cancelled
	Phase TaskPhase `json:"phase"`

	// Attempt is the Task attempt that produced this outcome.
	// +kubebuilder:validation:Minimum=1
	Attempt int32 `json:"attempt"`

	// ResultRef indicates whether the corresponding result was persisted.
	// +optional
	ResultRef *ResultReference `json:"resultRef,omitempty"`

	// RecordedAt is when Orka durably recorded the execution outcome.
	RecordedAt metav1.Time `json:"recordedAt"`

	// Message contains sanitized execution context.
	// +optional
	Message string `json:"message,omitempty"`
}

TaskWorkloadExecutionOutcome records the immutable result of non-ACP workload execution before provider-neutral workspace finalization. ACP agent attempts use TaskStatus.Execution, whose stronger fencing and OutcomeUnknown semantics are defined in task_runtime_types.go.

func (*TaskWorkloadExecutionOutcome) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskWorkloadExecutionOutcome.

func (*TaskWorkloadExecutionOutcome) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Tool

type Tool struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ToolSpec   `json:"spec,omitempty"`
	Status ToolStatus `json:"status,omitempty"`
}

Tool is the Schema for the tools API

func (*Tool) DeepCopy

func (in *Tool) DeepCopy() *Tool

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tool.

func (*Tool) DeepCopyInto

func (in *Tool) DeepCopyInto(out *Tool)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Tool) DeepCopyObject

func (in *Tool) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ToolActorStatus

type ToolActorStatus struct {
	// Provider is the actor provider.
	// +optional
	Provider WorkspaceProvider `json:"provider,omitempty"`

	// ActorID is the stable provider actor id.
	// +optional
	ActorID string `json:"actorID,omitempty"`

	// RouteHost is the HTTP Host value used with the provider router.
	// +optional
	RouteHost string `json:"routeHost,omitempty"`

	// TemplateRef is the resolved actor template.
	// +optional
	TemplateRef *WorkspaceTemplateReference `json:"templateRef,omitempty"`

	// PoolRef is the resolved Orka actor pool.
	// +optional
	PoolRef *SubstrateActorPoolReference `json:"poolRef,omitempty"`
}

ToolActorStatus reports safe durable actor metadata for a Tool.

func (*ToolActorStatus) DeepCopy

func (in *ToolActorStatus) DeepCopy() *ToolActorStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolActorStatus.

func (*ToolActorStatus) DeepCopyInto

func (in *ToolActorStatus) DeepCopyInto(out *ToolActorStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ToolList

type ToolList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Tool `json:"items"`
}

ToolList contains a list of Tool

func (*ToolList) DeepCopy

func (in *ToolList) DeepCopy() *ToolList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolList.

func (*ToolList) DeepCopyInto

func (in *ToolList) DeepCopyInto(out *ToolList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ToolList) DeepCopyObject

func (in *ToolList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ToolReference

type ToolReference struct {
	// Name is the tool name (built-in or Tool CRD name)
	// +kubebuilder:validation:Required
	Name string `json:"name"`

	// Enabled indicates if the tool is enabled (default: true)
	// +kubebuilder:default=true
	// +optional
	Enabled *bool `json:"enabled,omitempty"`
}

ToolReference references a tool for an agent

func (*ToolReference) DeepCopy

func (in *ToolReference) DeepCopy() *ToolReference

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolReference.

func (*ToolReference) DeepCopyInto

func (in *ToolReference) DeepCopyInto(out *ToolReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ToolSpec

type ToolSpec struct {
	// Description is the tool description shown to the LLM
	// +kubebuilder:validation:Required
	Description string `json:"description"`

	// Parameters is the JSON Schema for tool parameters (OpenAI function calling format)
	// +optional
	Parameters *apiextensionsv1.JSON `json:"parameters,omitempty"`

	// BrokeredToolClass declares the governed class for remote AgentRuntime brokered calls.
	// Tools without this field are not exposed to remote runtimes through brokered governance.
	// +optional
	BrokeredToolClass AgentRuntimeBrokeredToolClass `json:"brokeredToolClass,omitempty"`

	// HTTP defines the HTTP execution configuration. It is required unless MCP
	// is set.
	// +optional
	HTTP *HTTPExecution `json:"http,omitempty"`

	// MCP defines a durable MCP server backend for this tool. MCP tools must set
	// substrateActor.
	// +optional
	MCP *MCPToolServer `json:"mcp,omitempty"`
}

ToolSpec defines the desired state of Tool +kubebuilder:validation:XValidation:rule="has(self.http) || (has(self.mcp) && (has(self.mcp.substrateActor) || has(self.mcp.workspace)))",message="http or an MCP workspace backend is required" +kubebuilder:validation:XValidation:rule="!has(self.http) || (has(self.mcp) && (has(self.mcp.substrateActor) || has(self.mcp.workspace))) || (has(self.http.url) && self.http.url.size() > 0)",message="http.url is required unless an MCP workspace backend is set"

func (*ToolSpec) DeepCopy

func (in *ToolSpec) DeepCopy() *ToolSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolSpec.

func (*ToolSpec) DeepCopyInto

func (in *ToolSpec) DeepCopyInto(out *ToolSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ToolStatus

type ToolStatus struct {
	// Available indicates whether the tool endpoint is reachable
	Available bool `json:"available"`

	// LastCheck is the timestamp of the last health check
	// +optional
	LastCheck *metav1.Time `json:"lastCheck,omitempty"`

	// Error is the error message if the tool is unavailable
	// +optional
	Error string `json:"error,omitempty"`

	// Endpoint is the resolved non-secret endpoint used by workers.
	// +optional
	Endpoint string `json:"endpoint,omitempty"`

	// Workspace reports the provider-neutral Service workspace backing this Tool.
	// +optional
	Workspace *ToolWorkspaceStatus `json:"workspace,omitempty"`

	// Actor reports durable actor metadata when this tool is MCP actor-backed.
	// +optional
	Actor *ToolActorStatus `json:"actor,omitempty"`

	// Conditions represent the current state of the Tool
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

ToolStatus defines the observed state of Tool

func (*ToolStatus) DeepCopy

func (in *ToolStatus) DeepCopy() *ToolStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolStatus.

func (*ToolStatus) DeepCopyInto

func (in *ToolStatus) DeepCopyInto(out *ToolStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ToolWorkspaceStatus

type ToolWorkspaceStatus struct {
	// ClassRef is the selected Service workspace class.
	ClassRef WorkspaceClassReference `json:"classRef"`

	// WorkspaceRef identifies the owned concrete workspace.
	// +optional
	WorkspaceRef *WorkspaceObjectReference `json:"workspaceRef,omitempty"`

	// State is the provider-neutral workspace state.
	// +optional
	State string `json:"state,omitempty"`

	// Conditions project generic readiness and cleanup state.
	// +listType=map
	// +listMapKey=type
	// +optional
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

ToolWorkspaceStatus reports safe generic workspace metadata for a Tool.

func (*ToolWorkspaceStatus) DeepCopy

func (in *ToolWorkspaceStatus) DeepCopy() *ToolWorkspaceStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolWorkspaceStatus.

func (*ToolWorkspaceStatus) DeepCopyInto

func (in *ToolWorkspaceStatus) DeepCopyInto(out *ToolWorkspaceStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkspaceCheckpointReference added in v0.2.0

type WorkspaceCheckpointReference struct {
	// Name identifies a checkpoint in the Task namespace.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Name string `json:"name"`
	// UID prevents restoring through a replaced checkpoint name.
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=128
	UID string `json:"uid"`
	// Digest pins the artifact accepted by the caller.
	// +kubebuilder:validation:Pattern=`^sha256:[a-f0-9]{64}$`
	Digest string `json:"digest"`
}

WorkspaceCheckpointReference pins a namespaced ExecutionWorkspaceCheckpoint and its immutable Data artifact. Native snapshot locations are never accepted.

func (*WorkspaceCheckpointReference) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceCheckpointReference.

func (*WorkspaceCheckpointReference) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkspaceClassReference

type WorkspaceClassReference struct {
	// Name is the class name.
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`
}

WorkspaceClassReference references an ExecutionWorkspaceClass in the Task namespace.

func (*WorkspaceClassReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceClassReference.

func (*WorkspaceClassReference) DeepCopyInto

func (in *WorkspaceClassReference) DeepCopyInto(out *WorkspaceClassReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkspaceCleanupPolicy

type WorkspaceCleanupPolicy string

WorkspaceCleanupPolicy controls what happens to an execution workspace after use. +kubebuilder:validation:Enum=delete;retain

const (
	// WorkspaceCleanupPolicyDelete deletes the workspace after task completion.
	WorkspaceCleanupPolicyDelete WorkspaceCleanupPolicy = "delete"
	// WorkspaceCleanupPolicyRetain retains the workspace after task completion.
	WorkspaceCleanupPolicyRetain WorkspaceCleanupPolicy = "retain"
)

type WorkspaceConfig

type WorkspaceConfig struct {
	// Intent declares whether the verified workspace must remain unchanged or may
	// produce a publication artifact. It is immutable for the lifetime of the Task.
	// Agent Tasks that omit intent are interpreted as read by controller logic;
	// omitted intent preserves the existing behavior of container Tasks.
	// +optional
	Intent WorkspaceIntent `json:"intent,omitempty"`

	// GitRepo is the source repository URL cloned by the clean-room workspace boundary.
	// Credentials must not be embedded in the URL.
	// +kubebuilder:validation:MaxLength=2048
	// +optional
	GitRepo string `json:"gitRepo,omitempty"`

	// SourceRepository is the optional URL-derived identity for GitRepo. When set,
	// it must match the normalized credential-free URL; for GitHub, use provider
	// "github" and ID "github.com/owner/repo".
	// +optional
	SourceRepository *RepositoryIdentity `json:"sourceRepository,omitempty"`

	// Branch is the source branch to check out.
	// +kubebuilder:validation:MaxLength=255
	// +optional
	Branch string `json:"branch,omitempty"`

	// Ref is a specific source git ref, commit SHA, or tag to check out.
	// +kubebuilder:validation:MaxLength=512
	// +optional
	Ref string `json:"ref,omitempty"`

	// ReadCredentialRef references the one-operation clone/read credential Secret.
	// The Secret is resolved only by the clean-room workspace boundary.
	// +optional
	ReadCredentialRef *WorkspaceCredentialReference `json:"readCredentialRef,omitempty"`

	// PublicationGitRepo is the repository URL whose branch receives an exact CAS publication.
	// Credentials must not be embedded in the URL.
	// +kubebuilder:validation:MaxLength=2048
	// +optional
	PublicationGitRepo string `json:"publicationGitRepo,omitempty"`

	// PublicationRepository is the optional URL-derived identity for
	// PublicationGitRepo. When set, it must match the normalized credential-free
	// URL; for GitHub, use provider "github" and ID "github.com/owner/repo".
	// +optional
	PublicationRepository *RepositoryIdentity `json:"publicationRepository,omitempty"`

	// PublicationReadCredentialRef references the target-repository read
	// credential used only for preflight and independent post-push verification.
	// +optional
	PublicationReadCredentialRef *WorkspaceCredentialReference `json:"publicationReadCredentialRef,omitempty"`

	// PublicationCredentialRef references the target-repository write credential
	// used only for the exact CAS push. It is never used to clone the source.
	// +optional
	PublicationCredentialRef *WorkspaceCredentialReference `json:"publicationCredentialRef,omitempty"`

	// ForgeCredentialRef references the forge API credential used only for pull
	// request reconciliation when createPR=true.
	// +optional
	ForgeCredentialRef *WorkspaceCredentialReference `json:"forgeCredentialRef,omitempty"`

	// SubPath is a subdirectory within the source repository used as workspace root.
	// +kubebuilder:validation:MaxLength=1024
	// +optional
	SubPath string `json:"subPath,omitempty"`

	// PRBaseBranch is the upstream branch targeted when CreatePR is true.
	// +kubebuilder:validation:MaxLength=255
	// +optional
	PRBaseBranch string `json:"prBaseBranch,omitempty"`

	// PushBranch is the publication branch. For write Tasks the controller derives
	// a full-entropy Task- or Session-owned branch when this is omitted.
	// +kubebuilder:validation:MaxLength=255
	// +optional
	PushBranch string `json:"pushBranch,omitempty"`

	// ExpectedRemoteSHA requires the publication branch to exist at this exact
	// commit before publication. Empty means the branch must be absent. It is
	// supported only for agent Tasks using the trusted ACP publisher boundary.
	// +kubebuilder:validation:Pattern=`^([a-f0-9]{40}|[a-f0-9]{64})$`
	// +optional
	ExpectedRemoteSHA string `json:"expectedRemoteSHA,omitempty"`

	// MaxChangedFiles bounds the total changed, deleted, and symlink paths accepted
	// from the trusted supervisor before publication. Zero uses the runtime limit.
	// It is not supported for container Tasks.
	// +kubebuilder:validation:Minimum=1
	// +optional
	MaxChangedFiles *int32 `json:"maxChangedFiles,omitempty"`

	// AllowedPaths restricts publishable workspace changes to these path globs or
	// directory prefixes ending in /**. Empty allows every otherwise-safe path.
	// It is not supported for container Tasks.
	// +kubebuilder:validation:MaxItems=256
	// +optional
	AllowedPaths []string `json:"allowedPaths,omitempty"`

	// DenyRepositoryControlPaths rejects workflow, RBAC, and chart-secret paths
	// before publication even when AllowedPaths is empty or otherwise matches.
	// It is not supported for container Tasks.
	// +optional
	DenyRepositoryControlPaths bool `json:"denyRepositoryControlPaths,omitempty"`

	// RejectBinaryFiles rejects changed file content that is not valid text. It is
	// not supported for container Tasks.
	// +optional
	RejectBinaryFiles bool `json:"rejectBinaryFiles,omitempty"`

	// RejectSecretLikeContent applies Orka's generic secret detector to changed
	// paths and file contents before publication. It is not supported for container Tasks.
	// +optional
	RejectSecretLikeContent bool `json:"rejectSecretLikeContent,omitempty"`

	// CreatePR explicitly requests pull request reconciliation after branch publication.
	// Branch push remains the minimum durable delivery when false. It is supported only
	// for agent Tasks using the trusted ACP publisher boundary.
	// +kubebuilder:default=false
	// +optional
	CreatePR bool `json:"createPR,omitempty"`
}

WorkspaceConfig defines repository workspace, validation, and publication intent. +kubebuilder:validation:XValidation:rule="!self.createPR || self.intent == 'write'",message="createPR requires write workspace intent" +kubebuilder:validation:XValidation:rule="!has(self.gitRepo) || (!self.gitRepo.matches('(?i)^[A-Za-z][A-Za-z0-9+.-]*://[^/]*@') && !self.gitRepo.contains('?') && !self.gitRepo.contains('#'))",message="gitRepo must not contain embedded credentials, query parameters, or fragments" +kubebuilder:validation:XValidation:rule="!has(self.publicationGitRepo) || (!self.publicationGitRepo.matches('(?i)^[A-Za-z][A-Za-z0-9+.-]*://[^/]*@') && !self.publicationGitRepo.contains('?') && !self.publicationGitRepo.contains('#'))",message="publicationGitRepo must not contain embedded credentials, query parameters, or fragments"

func (*WorkspaceConfig) DeepCopy

func (in *WorkspaceConfig) DeepCopy() *WorkspaceConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceConfig.

func (*WorkspaceConfig) DeepCopyInto

func (in *WorkspaceConfig) DeepCopyInto(out *WorkspaceConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkspaceCredentialReference added in v0.2.0

type WorkspaceCredentialReference struct {
	// Name is the name of the Secret in the Task namespace.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=`^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$`
	Name string `json:"name"`

	// Key is the Secret data key containing one bearer token or one complete
	// Authorization header. It defaults to "token" when omitted.
	// +optional
	// +kubebuilder:default=token
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +kubebuilder:validation:Pattern=`^[A-Za-z0-9._-]+$`
	Key string `json:"key,omitempty"`
}

WorkspaceCredentialReference references a Secret in the Task namespace. The controller freezes the Secret resourceVersion when it reserves an attempt; Secret contents are never copied to Task status.

func (*WorkspaceCredentialReference) DeepCopy added in v0.2.0

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceCredentialReference.

func (*WorkspaceCredentialReference) DeepCopyInto added in v0.2.0

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkspaceIntent added in v0.2.0

type WorkspaceIntent string

WorkspaceIntent declares whether an agent workspace is immutable read-only input or may produce a validated publication artifact. Agent Tasks that omit intent are interpreted as read by controller logic; container Task behavior is unchanged when intent is omitted. +kubebuilder:validation:Enum=read;write

const (
	WorkspaceIntentRead  WorkspaceIntent = "read"
	WorkspaceIntentWrite WorkspaceIntent = "write"
)

type WorkspaceObjectReference

type WorkspaceObjectReference struct {
	// Name is the ExecutionWorkspace name.
	Name string `json:"name"`

	// UID is the immutable ExecutionWorkspace UID.
	// +optional
	UID string `json:"uid,omitempty"`
}

WorkspaceObjectReference identifies a concrete workspace without exposing provider-native IDs.

func (*WorkspaceObjectReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceObjectReference.

func (*WorkspaceObjectReference) DeepCopyInto

func (in *WorkspaceObjectReference) DeepCopyInto(out *WorkspaceObjectReference)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkspaceOnDetachPolicy

type WorkspaceOnDetachPolicy string

WorkspaceOnDetachPolicy is a Task-requested class-permitted detach action. +kubebuilder:validation:Enum=Suspend;Delete

const (
	WorkspaceOnDetachSuspend WorkspaceOnDetachPolicy = "Suspend"
	WorkspaceOnDetachDelete  WorkspaceOnDetachPolicy = "Delete"
)

type WorkspaceProvider

type WorkspaceProvider string

WorkspaceProvider selects the execution workspace backend. +kubebuilder:validation:Enum=agent-sandbox;substrate

const (
	// WorkspaceProviderAgentSandbox uses the Kubernetes SIG agent-sandbox backend.
	WorkspaceProviderAgentSandbox WorkspaceProvider = "agent-sandbox"
	// WorkspaceProviderSubstrate uses the Agent Substrate actor backend.
	WorkspaceProviderSubstrate WorkspaceProvider = "substrate"
)

type WorkspaceReusePolicy

type WorkspaceReusePolicy string

WorkspaceReusePolicy controls how execution workspaces are reused between tasks. +kubebuilder:validation:Enum=none;session

const (
	// WorkspaceReusePolicyNone creates a fresh workspace per task.
	WorkspaceReusePolicyNone WorkspaceReusePolicy = "none"
	// WorkspaceReusePolicySession reuses a workspace for tasks in the same session.
	WorkspaceReusePolicySession WorkspaceReusePolicy = "session"
)

type WorkspaceTemplateReference

type WorkspaceTemplateReference struct {
	// Name is the name of the workspace template.
	// +optional
	Name string `json:"name,omitempty"`

	// Namespace is the namespace of the workspace template and claim.
	// It defaults to the Task namespace, or the controller namespace when configured.
	// +optional
	Namespace string `json:"namespace,omitempty"`
}

WorkspaceTemplateReference references an execution workspace template.

func (*WorkspaceTemplateReference) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceTemplateReference.

func (*WorkspaceTemplateReference) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL