Documentation
¶
Overview ¶
Package v1alpha1 contains API Schema definitions for the core v1alpha1 API group. +kubebuilder:object:generate=true +groupName=core.orka.ai
Index ¶
- Constants
- Variables
- type AISpec
- type Agent
- type AgentCLIRuntime
- type AgentExecutionAgentRef
- type AgentExecutionBackend
- type AgentExecutionBinding
- type AgentExecutionBindingTaskRef
- type AgentExecutionRuntimeRef
- type AgentExecutionSnapshotRef
- type AgentList
- type AgentReference
- type AgentRuntime
- type AgentRuntimeBearerAuthReference
- type AgentRuntimeBrokeredToolClass
- type AgentRuntimeCapabilitiesSpec
- func (in *AgentRuntimeCapabilitiesSpec) DeepCopy() *AgentRuntimeCapabilitiesSpec
- func (in *AgentRuntimeCapabilitiesSpec) DeepCopyInto(out *AgentRuntimeCapabilitiesSpec)
- func (c AgentRuntimeCapabilitiesSpec) SupportsStrictWorkspaceIntent(intent WorkspaceIntent) bool
- func (c AgentRuntimeCapabilitiesSpec) ValidateStrictWorkspaceIntent(intent WorkspaceIntent) error
- type AgentRuntimeClientAuth
- type AgentRuntimeContractVersion
- type AgentRuntimeDeploymentMode
- type AgentRuntimeDeploymentSpec
- type AgentRuntimeKubernetesRecoverySpec
- type AgentRuntimeList
- type AgentRuntimeMCPPolicySpec
- type AgentRuntimeObservedCapabilities
- type AgentRuntimeProfileSpec
- type AgentRuntimeProtocolLimits
- type AgentRuntimeReference
- type AgentRuntimeRegistrySpec
- type AgentRuntimeSecretKeyReference
- type AgentRuntimeSpec
- type AgentRuntimeStatus
- type AgentRuntimeToolExecutionMode
- type AgentRuntimeType
- type AgentRuntimeWorkspaceGovernanceCapabilities
- type AgentRuntimeWorkspaceGovernanceMode
- type AgentSpec
- type AgentStatus
- type AllowedAgent
- type AzureConfig
- type BranchClaim
- type BranchClaimAvailability
- type BranchClaimList
- type BranchClaimOwnerKind
- type BranchClaimSpec
- type BranchClaimStatus
- type ChildTaskStatus
- type ConcurrencyPolicy
- type ConfigMapKeySelector
- type ControlRecordMutationStatus
- type ControlRecordOwner
- type ControlRemoteRefState
- type ControlVerifiedBranchBaseline
- type ControllerEpoch
- type ControllerEpochList
- type ControllerEpochSpec
- type ControllerEpochStatus
- type CoordinationConfig
- type DirectOutboundAccess
- type ExecutionSpec
- type ExecutionWorkspaceDensityStatus
- type ExecutionWorkspaceHibernationSpec
- type ExecutionWorkspacePhase
- type ExecutionWorkspacePlacementStatus
- type ExecutionWorkspaceProcessMode
- type ExecutionWorkspaceReason
- type ExecutionWorkspaceSnapshotSpec
- type ExecutionWorkspaceSpec
- type ExecutionWorkspaceStatus
- type ExternalEffect
- type ExternalEffectControlState
- type ExternalEffectList
- type ExternalEffectSpec
- type ExternalEffectStatus
- type FindingCountsStatus
- type GatewayOutboundAccess
- type HTTPExecution
- type HarnessRuntimeStatus
- type LegacyAgentWorkspaceConfig
- type LocalObjectReference
- type MCPToolServer
- type MCPWorkspace
- type ModelConfig
- type ModelFallback
- type ModelTokenLimits
- type NamespacedSecretKeySelector
- type OutboundAccessPolicy
- type OutboundAccessPolicyList
- type OutboundAccessPolicySpec
- type OutboundAccessPolicyStatus
- type OutboundClientAuthentication
- type OutboundCredentialOutput
- type OutboundServiceAccountReference
- type OutboundServiceReference
- type OutboundTLSConfig
- type OutboundTokenEndpoint
- type OutboundTokenSource
- type PolicyConfigMapKeyRef
- type PreparedPublicationControlReceipt
- type PriorTaskReference
- type PromptAttempt
- type PromptAttemptDeliveryState
- type PromptAttemptExecutionState
- type PromptAttemptList
- type PromptAttemptSpec
- type PromptAttemptStatus
- type PromptCredentialBinding
- type PromptSource
- type Provider
- type ProviderList
- type ProviderReference
- type ProviderSecretRef
- type ProviderSpec
- type ProviderStatus
- type ProviderType
- type Publication
- type PublicationControlState
- type PublicationList
- type PublicationPullRequestIntent
- type PublicationSpec
- type PublicationStatus
- type PublicationVerificationControlReceipt
- type PublishOperationControlReceipt
- type PullRequestOperationControlReceipt
- type RepositoryIdentity
- type RepositoryMonitor
- type RepositoryMonitorAgents
- type RepositoryMonitorAutomergeSpec
- type RepositoryMonitorCommitTarget
- type RepositoryMonitorGitHubLabelTriggers
- type RepositoryMonitorGitHubTriggers
- type RepositoryMonitorIssueCommandLabels
- type RepositoryMonitorIssueImplementationSpec
- type RepositoryMonitorIssuePlanningSpec
- type RepositoryMonitorIssueTarget
- type RepositoryMonitorIssueWorkflowPhaseSpec
- type RepositoryMonitorIssueWorkflowSpec
- type RepositoryMonitorList
- type RepositoryMonitorPolicySpec
- type RepositoryMonitorPullRequestCommandLabels
- type RepositoryMonitorPullRequestTarget
- type RepositoryMonitorRepairSpec
- type RepositoryMonitorReviewPublishInlineSpec
- type RepositoryMonitorReviewPublishSpec
- type RepositoryMonitorReviewSpec
- type RepositoryMonitorSpec
- type RepositoryMonitorStatus
- type RepositoryMonitorTargets
- type RepositoryMonitorTriggers
- type RepositoryMonitorValidationSpec
- type RepositoryScan
- type RepositoryScanList
- type RepositoryScanSpec
- type RepositoryScanStatus
- type RequestedBy
- type ResultReference
- type RetryPolicy
- type RuntimePool
- type RuntimePoolActiveInstanceStatus
- type RuntimePoolAdmissionState
- type RuntimePoolAgentSandboxWorkspaceSpec
- type RuntimePoolCapacityReservationStatus
- type RuntimePoolCapacitySpec
- type RuntimePoolCapacityStatus
- type RuntimePoolExecutionWorkspaceSpec
- type RuntimePoolLifecycle
- type RuntimePoolList
- type RuntimePoolProfileSpec
- type RuntimePoolProtocolVersion
- type RuntimePoolRuntimeSpec
- type RuntimePoolSandboxDurableVolumeSpec
- type RuntimePoolSpec
- type RuntimePoolStatus
- type RuntimePoolSubstrateWorkspaceSpec
- type RuntimePoolTrustDomain
- type RuntimeSessionControl
- type RuntimeSessionControlAvailability
- type RuntimeSessionControlLifecycle
- type RuntimeSessionControlList
- type RuntimeSessionControlSpec
- type RuntimeSessionControlStatus
- type RuntimeSessionLineageStatus
- type RuntimeSessionMutationLeaseStatus
- type SecretKeySelector
- type SecretReference
- type SessionConfig
- type SessionReference
- type Skill
- type SkillContent
- type SkillList
- type SkillReference
- type SkillSource
- type SkillSpec
- type SkillStatus
- type SubstrateActorPool
- type SubstrateActorPoolList
- type SubstrateActorPoolPhase
- type SubstrateActorPoolReference
- type SubstrateActorPoolSpec
- type SubstrateActorPoolStatus
- type SubstrateMCPActor
- type Task
- type TaskDeliveryOutcome
- type TaskDeliveryReason
- type TaskDeliveryState
- type TaskDeliveryStatus
- type TaskExecutionOutcome
- type TaskExecutionReason
- type TaskExecutionState
- type TaskExecutionStatus
- type TaskList
- type TaskPhase
- type TaskPullRequestReceipt
- type TaskSpec
- type TaskStatus
- type TaskTransaction
- type TaskType
- type TaskWorkloadExecutionOutcome
- type Tool
- type ToolActorStatus
- type ToolList
- type ToolReference
- type ToolSpec
- type ToolStatus
- type ToolWorkspaceStatus
- type WorkspaceCheckpointReference
- type WorkspaceClassReference
- type WorkspaceCleanupPolicy
- type WorkspaceConfig
- type WorkspaceCredentialReference
- type WorkspaceIntent
- type WorkspaceObjectReference
- type WorkspaceOnDetachPolicy
- type WorkspaceProvider
- type WorkspaceReusePolicy
- type WorkspaceTemplateReference
Constants ¶
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" )
const ( OutboundAccessPolicyConditionAccepted = "Accepted" OutboundAccessPolicyConditionResolvedRefs = "ResolvedRefs" OutboundGrantTokenExchange = "TokenExchange" OutboundGrantJWTBearer = "JWTBearer" OutboundTokenSourceTransactionToken = "TransactionToken" OutboundTokenSourceServiceAccount = "ServiceAccount" OutboundTokenSourceSecretRef = "SecretRef" OutboundClientAuthNone = "None" OutboundClientAuthSecretBasic = "ClientSecretBasic" OutboundClientAuthSecretPost = "ClientSecretPost" OutboundClientAuthPrivateKeyJWT = "PrivateKeyJWT" )
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 )
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" )
const ( RuntimePoolReasonAdmissionClosed = "AdmissionClosed" RuntimePoolReasonAtCapacity = "AtCapacity" RuntimePoolReasonPodSecurityRejected = "PodSecurityRejected" RuntimePoolReasonQuotaRejected = "QuotaRejected" RuntimePoolReasonSchedulingFailed = "SchedulingFailed" RuntimePoolReasonRolloutFailed = "RolloutFailed" RuntimePoolReasonRuntimeAmbiguous = "RuntimeAmbiguous" )
const ( SubstrateActorPoolPhasePending SubstrateActorPoolPhase = "Pending" SubstrateActorPoolPhaseReady SubstrateActorPoolPhase = "Ready" SubstrateActorPoolPhaseFailed SubstrateActorPoolPhase = "Failed" // MaxSubstrateActorPoolTargetActors bounds per-pool actor reconciliation work. MaxSubstrateActorPoolTargetActors int32 = 1000 )
Variables ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AISpec.
func (*AISpec) DeepCopyInto ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Agent.
func (*Agent) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Agent) DeepCopyObject ¶
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
func (in *AgentExecutionAgentRef) DeepCopy() *AgentExecutionAgentRef
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
func (in *AgentExecutionBinding) DeepCopy() *AgentExecutionBinding
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
func (in *AgentExecutionBindingTaskRef) DeepCopy() *AgentExecutionBindingTaskRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentExecutionBindingTaskRef.
func (*AgentExecutionBindingTaskRef) DeepCopyInto ¶ added in v0.2.0
func (in *AgentExecutionBindingTaskRef) DeepCopyInto(out *AgentExecutionBindingTaskRef)
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
func (in *AgentExecutionRuntimeRef) DeepCopy() *AgentExecutionRuntimeRef
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
func (in *AgentExecutionSnapshotRef) DeepCopy() *AgentExecutionSnapshotRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentExecutionSnapshotRef.
func (*AgentExecutionSnapshotRef) DeepCopyInto ¶ added in v0.2.0
func (in *AgentExecutionSnapshotRef) DeepCopyInto(out *AgentExecutionSnapshotRef)
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentList.
func (*AgentList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AgentList) DeepCopyObject ¶
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 ¶
func (in *AgentRuntimeBearerAuthReference) DeepCopy() *AgentRuntimeBearerAuthReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeBearerAuthReference.
func (*AgentRuntimeBearerAuthReference) DeepCopyInto ¶
func (in *AgentRuntimeBearerAuthReference) DeepCopyInto(out *AgentRuntimeBearerAuthReference)
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 ¶
func (in *AgentRuntimeCapabilitiesSpec) DeepCopy() *AgentRuntimeCapabilitiesSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeCapabilitiesSpec.
func (*AgentRuntimeCapabilitiesSpec) DeepCopyInto ¶
func (in *AgentRuntimeCapabilitiesSpec) DeepCopyInto(out *AgentRuntimeCapabilitiesSpec)
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 ¶
func (in *AgentRuntimeClientAuth) DeepCopy() *AgentRuntimeClientAuth
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 ¶
func (in *AgentRuntimeDeploymentSpec) DeepCopy() *AgentRuntimeDeploymentSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeDeploymentSpec.
func (*AgentRuntimeDeploymentSpec) DeepCopyInto ¶
func (in *AgentRuntimeDeploymentSpec) DeepCopyInto(out *AgentRuntimeDeploymentSpec)
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
func (in *AgentRuntimeKubernetesRecoverySpec) DeepCopy() *AgentRuntimeKubernetesRecoverySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeKubernetesRecoverySpec.
func (*AgentRuntimeKubernetesRecoverySpec) DeepCopyInto ¶ added in v0.2.0
func (in *AgentRuntimeKubernetesRecoverySpec) DeepCopyInto(out *AgentRuntimeKubernetesRecoverySpec)
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
func (in *AgentRuntimeMCPPolicySpec) DeepCopy() *AgentRuntimeMCPPolicySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeMCPPolicySpec.
func (*AgentRuntimeMCPPolicySpec) DeepCopyInto ¶ added in v0.2.0
func (in *AgentRuntimeMCPPolicySpec) DeepCopyInto(out *AgentRuntimeMCPPolicySpec)
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 ¶
func (in *AgentRuntimeObservedCapabilities) DeepCopy() *AgentRuntimeObservedCapabilities
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeObservedCapabilities.
func (*AgentRuntimeObservedCapabilities) DeepCopyInto ¶
func (in *AgentRuntimeObservedCapabilities) DeepCopyInto(out *AgentRuntimeObservedCapabilities)
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
func (in *AgentRuntimeProfileSpec) DeepCopy() *AgentRuntimeProfileSpec
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
func (in *AgentRuntimeProtocolLimits) DeepCopy() *AgentRuntimeProtocolLimits
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeProtocolLimits.
func (*AgentRuntimeProtocolLimits) DeepCopyInto ¶ added in v0.2.0
func (in *AgentRuntimeProtocolLimits) DeepCopyInto(out *AgentRuntimeProtocolLimits)
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 ¶
func (in *AgentRuntimeReference) DeepCopy() *AgentRuntimeReference
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 ¶
func (in *AgentRuntimeRegistrySpec) DeepCopy() *AgentRuntimeRegistrySpec
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
func (in *AgentRuntimeSecretKeyReference) DeepCopy() *AgentRuntimeSecretKeyReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeSecretKeyReference.
func (*AgentRuntimeSecretKeyReference) DeepCopyInto ¶ added in v0.2.0
func (in *AgentRuntimeSecretKeyReference) DeepCopyInto(out *AgentRuntimeSecretKeyReference)
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
func (in *AgentRuntimeWorkspaceGovernanceCapabilities) DeepCopy() *AgentRuntimeWorkspaceGovernanceCapabilities
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentRuntimeWorkspaceGovernanceCapabilities.
func (*AgentRuntimeWorkspaceGovernanceCapabilities) DeepCopyInto ¶ added in v0.2.0
func (in *AgentRuntimeWorkspaceGovernanceCapabilities) DeepCopyInto(out *AgentRuntimeWorkspaceGovernanceCapabilities)
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
func (c AgentRuntimeWorkspaceGovernanceCapabilities) Strict() bool
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentSpec.
func (*AgentSpec) DeepCopyInto ¶
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 ¶
func (in *ConfigMapKeySelector) DeepCopy() *ConfigMapKeySelector
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
func (in *ControlRecordMutationStatus) DeepCopy() *ControlRecordMutationStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlRecordMutationStatus.
func (*ControlRecordMutationStatus) DeepCopyInto ¶ added in v0.2.0
func (in *ControlRecordMutationStatus) DeepCopyInto(out *ControlRecordMutationStatus)
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
func (in *ControlRemoteRefState) DeepCopy() *ControlRemoteRefState
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
func (in *ControlVerifiedBranchBaseline) DeepCopy() *ControlVerifiedBranchBaseline
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlVerifiedBranchBaseline.
func (*ControlVerifiedBranchBaseline) DeepCopyInto ¶ added in v0.2.0
func (in *ControlVerifiedBranchBaseline) DeepCopyInto(out *ControlVerifiedBranchBaseline)
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
func (in *ControllerEpochStatus) DeepCopy() *ControllerEpochStatus
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 ¶
func (in *DirectOutboundAccess) DeepCopy() *DirectOutboundAccess
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 ¶
func (in *ExecutionWorkspaceDensityStatus) DeepCopy() *ExecutionWorkspaceDensityStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionWorkspaceDensityStatus.
func (*ExecutionWorkspaceDensityStatus) DeepCopyInto ¶
func (in *ExecutionWorkspaceDensityStatus) DeepCopyInto(out *ExecutionWorkspaceDensityStatus)
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 ¶
func (in *ExecutionWorkspaceHibernationSpec) DeepCopy() *ExecutionWorkspaceHibernationSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionWorkspaceHibernationSpec.
func (*ExecutionWorkspaceHibernationSpec) DeepCopyInto ¶
func (in *ExecutionWorkspaceHibernationSpec) DeepCopyInto(out *ExecutionWorkspaceHibernationSpec)
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 ¶
func (in *ExecutionWorkspacePlacementStatus) DeepCopy() *ExecutionWorkspacePlacementStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionWorkspacePlacementStatus.
func (*ExecutionWorkspacePlacementStatus) DeepCopyInto ¶
func (in *ExecutionWorkspacePlacementStatus) DeepCopyInto(out *ExecutionWorkspacePlacementStatus)
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 ¶
func (in *ExecutionWorkspaceSnapshotSpec) DeepCopy() *ExecutionWorkspaceSnapshotSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionWorkspaceSnapshotSpec.
func (*ExecutionWorkspaceSnapshotSpec) DeepCopyInto ¶
func (in *ExecutionWorkspaceSnapshotSpec) DeepCopyInto(out *ExecutionWorkspaceSnapshotSpec)
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 ¶
func (in *ExecutionWorkspaceSpec) DeepCopy() *ExecutionWorkspaceSpec
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 ¶
func (in *ExecutionWorkspaceStatus) DeepCopy() *ExecutionWorkspaceStatus
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
func (in *ExternalEffectStatus) DeepCopy() *ExternalEffectStatus
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 ¶
func (in *GatewayOutboundAccess) DeepCopy() *GatewayOutboundAccess
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 ¶
func (in *HarnessRuntimeStatus) DeepCopy() *HarnessRuntimeStatus
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
func (in *LegacyAgentWorkspaceConfig) DeepCopy() *LegacyAgentWorkspaceConfig
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LegacyAgentWorkspaceConfig.
func (*LegacyAgentWorkspaceConfig) DeepCopyInto ¶ added in v0.2.0
func (in *LegacyAgentWorkspaceConfig) DeepCopyInto(out *LegacyAgentWorkspaceConfig)
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 ¶
func (in *LocalObjectReference) DeepCopy() *LocalObjectReference
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 ¶
func (in *NamespacedSecretKeySelector) DeepCopy() *NamespacedSecretKeySelector
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespacedSecretKeySelector.
func (*NamespacedSecretKeySelector) DeepCopyInto ¶
func (in *NamespacedSecretKeySelector) DeepCopyInto(out *NamespacedSecretKeySelector)
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 ¶
func (in *OutboundAccessPolicy) DeepCopy() *OutboundAccessPolicy
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 ¶
func (in *OutboundAccessPolicyList) DeepCopy() *OutboundAccessPolicyList
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 ¶
func (in *OutboundAccessPolicySpec) DeepCopy() *OutboundAccessPolicySpec
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 ¶
func (in *OutboundAccessPolicyStatus) DeepCopy() *OutboundAccessPolicyStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundAccessPolicyStatus.
func (*OutboundAccessPolicyStatus) DeepCopyInto ¶
func (in *OutboundAccessPolicyStatus) DeepCopyInto(out *OutboundAccessPolicyStatus)
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 ¶
func (in *OutboundClientAuthentication) DeepCopy() *OutboundClientAuthentication
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundClientAuthentication.
func (*OutboundClientAuthentication) DeepCopyInto ¶
func (in *OutboundClientAuthentication) DeepCopyInto(out *OutboundClientAuthentication)
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 ¶
func (in *OutboundCredentialOutput) DeepCopy() *OutboundCredentialOutput
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 ¶
func (in *OutboundServiceAccountReference) DeepCopy() *OutboundServiceAccountReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundServiceAccountReference.
func (*OutboundServiceAccountReference) DeepCopyInto ¶
func (in *OutboundServiceAccountReference) DeepCopyInto(out *OutboundServiceAccountReference)
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 ¶
func (in *OutboundServiceReference) DeepCopy() *OutboundServiceReference
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 ¶
func (in *OutboundTokenEndpoint) DeepCopy() *OutboundTokenEndpoint
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 ¶
func (in *PolicyConfigMapKeyRef) DeepCopy() *PolicyConfigMapKeyRef
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
func (in *PreparedPublicationControlReceipt) DeepCopy() *PreparedPublicationControlReceipt
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PreparedPublicationControlReceipt.
func (*PreparedPublicationControlReceipt) DeepCopyInto ¶ added in v0.2.0
func (in *PreparedPublicationControlReceipt) DeepCopyInto(out *PreparedPublicationControlReceipt)
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
func (in *PromptCredentialBinding) DeepCopy() *PromptCredentialBinding
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Provider.
func (*Provider) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Provider) DeepCopyObject ¶
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
func (in *PublicationPullRequestIntent) DeepCopy() *PublicationPullRequestIntent
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PublicationPullRequestIntent.
func (*PublicationPullRequestIntent) DeepCopyInto ¶ added in v0.2.0
func (in *PublicationPullRequestIntent) DeepCopyInto(out *PublicationPullRequestIntent)
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
func (in *PublicationVerificationControlReceipt) DeepCopy() *PublicationVerificationControlReceipt
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PublicationVerificationControlReceipt.
func (*PublicationVerificationControlReceipt) DeepCopyInto ¶ added in v0.2.0
func (in *PublicationVerificationControlReceipt) DeepCopyInto(out *PublicationVerificationControlReceipt)
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
func (in *PublishOperationControlReceipt) DeepCopy() *PublishOperationControlReceipt
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PublishOperationControlReceipt.
func (*PublishOperationControlReceipt) DeepCopyInto ¶ added in v0.2.0
func (in *PublishOperationControlReceipt) DeepCopyInto(out *PublishOperationControlReceipt)
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
func (in *PullRequestOperationControlReceipt) DeepCopy() *PullRequestOperationControlReceipt
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PullRequestOperationControlReceipt.
func (*PullRequestOperationControlReceipt) DeepCopyInto ¶ added in v0.2.0
func (in *PullRequestOperationControlReceipt) DeepCopyInto(out *PullRequestOperationControlReceipt)
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 ¶
func (in *RepositoryMonitorAgents) DeepCopy() *RepositoryMonitorAgents
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 ¶
func (in *RepositoryMonitorAutomergeSpec) DeepCopy() *RepositoryMonitorAutomergeSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorAutomergeSpec.
func (*RepositoryMonitorAutomergeSpec) DeepCopyInto ¶
func (in *RepositoryMonitorAutomergeSpec) DeepCopyInto(out *RepositoryMonitorAutomergeSpec)
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 ¶
func (in *RepositoryMonitorCommitTarget) DeepCopy() *RepositoryMonitorCommitTarget
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorCommitTarget.
func (*RepositoryMonitorCommitTarget) DeepCopyInto ¶
func (in *RepositoryMonitorCommitTarget) DeepCopyInto(out *RepositoryMonitorCommitTarget)
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 ¶
func (in *RepositoryMonitorGitHubLabelTriggers) DeepCopy() *RepositoryMonitorGitHubLabelTriggers
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorGitHubLabelTriggers.
func (*RepositoryMonitorGitHubLabelTriggers) DeepCopyInto ¶
func (in *RepositoryMonitorGitHubLabelTriggers) DeepCopyInto(out *RepositoryMonitorGitHubLabelTriggers)
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 ¶
func (in *RepositoryMonitorGitHubTriggers) DeepCopy() *RepositoryMonitorGitHubTriggers
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorGitHubTriggers.
func (*RepositoryMonitorGitHubTriggers) DeepCopyInto ¶
func (in *RepositoryMonitorGitHubTriggers) DeepCopyInto(out *RepositoryMonitorGitHubTriggers)
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 ¶
func (in *RepositoryMonitorIssueCommandLabels) DeepCopy() *RepositoryMonitorIssueCommandLabels
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssueCommandLabels.
func (*RepositoryMonitorIssueCommandLabels) DeepCopyInto ¶
func (in *RepositoryMonitorIssueCommandLabels) DeepCopyInto(out *RepositoryMonitorIssueCommandLabels)
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 ¶
func (in *RepositoryMonitorIssueImplementationSpec) DeepCopy() *RepositoryMonitorIssueImplementationSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssueImplementationSpec.
func (*RepositoryMonitorIssueImplementationSpec) DeepCopyInto ¶
func (in *RepositoryMonitorIssueImplementationSpec) DeepCopyInto(out *RepositoryMonitorIssueImplementationSpec)
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 ¶
func (in *RepositoryMonitorIssuePlanningSpec) DeepCopy() *RepositoryMonitorIssuePlanningSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssuePlanningSpec.
func (*RepositoryMonitorIssuePlanningSpec) DeepCopyInto ¶
func (in *RepositoryMonitorIssuePlanningSpec) DeepCopyInto(out *RepositoryMonitorIssuePlanningSpec)
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 ¶
func (in *RepositoryMonitorIssueTarget) DeepCopy() *RepositoryMonitorIssueTarget
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssueTarget.
func (*RepositoryMonitorIssueTarget) DeepCopyInto ¶
func (in *RepositoryMonitorIssueTarget) DeepCopyInto(out *RepositoryMonitorIssueTarget)
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 ¶
func (in *RepositoryMonitorIssueWorkflowPhaseSpec) DeepCopy() *RepositoryMonitorIssueWorkflowPhaseSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssueWorkflowPhaseSpec.
func (*RepositoryMonitorIssueWorkflowPhaseSpec) DeepCopyInto ¶
func (in *RepositoryMonitorIssueWorkflowPhaseSpec) DeepCopyInto(out *RepositoryMonitorIssueWorkflowPhaseSpec)
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 ¶
func (in *RepositoryMonitorIssueWorkflowSpec) DeepCopy() *RepositoryMonitorIssueWorkflowSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorIssueWorkflowSpec.
func (*RepositoryMonitorIssueWorkflowSpec) DeepCopyInto ¶
func (in *RepositoryMonitorIssueWorkflowSpec) DeepCopyInto(out *RepositoryMonitorIssueWorkflowSpec)
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 ¶
func (in *RepositoryMonitorList) DeepCopy() *RepositoryMonitorList
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 ¶
func (in *RepositoryMonitorPolicySpec) DeepCopy() *RepositoryMonitorPolicySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorPolicySpec.
func (*RepositoryMonitorPolicySpec) DeepCopyInto ¶
func (in *RepositoryMonitorPolicySpec) DeepCopyInto(out *RepositoryMonitorPolicySpec)
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 ¶
func (in *RepositoryMonitorPullRequestCommandLabels) DeepCopy() *RepositoryMonitorPullRequestCommandLabels
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorPullRequestCommandLabels.
func (*RepositoryMonitorPullRequestCommandLabels) DeepCopyInto ¶
func (in *RepositoryMonitorPullRequestCommandLabels) DeepCopyInto(out *RepositoryMonitorPullRequestCommandLabels)
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 ¶
func (in *RepositoryMonitorPullRequestTarget) DeepCopy() *RepositoryMonitorPullRequestTarget
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorPullRequestTarget.
func (*RepositoryMonitorPullRequestTarget) DeepCopyInto ¶
func (in *RepositoryMonitorPullRequestTarget) DeepCopyInto(out *RepositoryMonitorPullRequestTarget)
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 ¶
func (in *RepositoryMonitorRepairSpec) DeepCopy() *RepositoryMonitorRepairSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorRepairSpec.
func (*RepositoryMonitorRepairSpec) DeepCopyInto ¶
func (in *RepositoryMonitorRepairSpec) DeepCopyInto(out *RepositoryMonitorRepairSpec)
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 ¶
func (in *RepositoryMonitorReviewPublishInlineSpec) DeepCopy() *RepositoryMonitorReviewPublishInlineSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorReviewPublishInlineSpec.
func (*RepositoryMonitorReviewPublishInlineSpec) DeepCopyInto ¶
func (in *RepositoryMonitorReviewPublishInlineSpec) DeepCopyInto(out *RepositoryMonitorReviewPublishInlineSpec)
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 ¶
func (in *RepositoryMonitorReviewPublishSpec) DeepCopy() *RepositoryMonitorReviewPublishSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorReviewPublishSpec.
func (*RepositoryMonitorReviewPublishSpec) DeepCopyInto ¶
func (in *RepositoryMonitorReviewPublishSpec) DeepCopyInto(out *RepositoryMonitorReviewPublishSpec)
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 ¶
func (in *RepositoryMonitorReviewSpec) DeepCopy() *RepositoryMonitorReviewSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorReviewSpec.
func (*RepositoryMonitorReviewSpec) DeepCopyInto ¶
func (in *RepositoryMonitorReviewSpec) DeepCopyInto(out *RepositoryMonitorReviewSpec)
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 ¶
func (in *RepositoryMonitorSpec) DeepCopy() *RepositoryMonitorSpec
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 ¶
func (in *RepositoryMonitorStatus) DeepCopy() *RepositoryMonitorStatus
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 ¶
func (in *RepositoryMonitorTargets) DeepCopy() *RepositoryMonitorTargets
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 ¶
func (in *RepositoryMonitorTriggers) DeepCopy() *RepositoryMonitorTriggers
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorTriggers.
func (*RepositoryMonitorTriggers) DeepCopyInto ¶
func (in *RepositoryMonitorTriggers) DeepCopyInto(out *RepositoryMonitorTriggers)
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 ¶
func (in *RepositoryMonitorValidationSpec) DeepCopy() *RepositoryMonitorValidationSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RepositoryMonitorValidationSpec.
func (*RepositoryMonitorValidationSpec) DeepCopyInto ¶
func (in *RepositoryMonitorValidationSpec) DeepCopyInto(out *RepositoryMonitorValidationSpec)
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 ¶
func (in *RepositoryScanStatus) DeepCopy() *RepositoryScanStatus
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
func (in *RuntimePoolActiveInstanceStatus) DeepCopy() *RuntimePoolActiveInstanceStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolActiveInstanceStatus.
func (*RuntimePoolActiveInstanceStatus) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimePoolActiveInstanceStatus) DeepCopyInto(out *RuntimePoolActiveInstanceStatus)
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
func (in *RuntimePoolAgentSandboxWorkspaceSpec) DeepCopy() *RuntimePoolAgentSandboxWorkspaceSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolAgentSandboxWorkspaceSpec.
func (*RuntimePoolAgentSandboxWorkspaceSpec) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimePoolAgentSandboxWorkspaceSpec) DeepCopyInto(out *RuntimePoolAgentSandboxWorkspaceSpec)
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
func (in *RuntimePoolCapacityReservationStatus) DeepCopy() *RuntimePoolCapacityReservationStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolCapacityReservationStatus.
func (*RuntimePoolCapacityReservationStatus) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimePoolCapacityReservationStatus) DeepCopyInto(out *RuntimePoolCapacityReservationStatus)
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
func (in *RuntimePoolCapacitySpec) DeepCopy() *RuntimePoolCapacitySpec
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
func (in *RuntimePoolCapacityStatus) DeepCopy() *RuntimePoolCapacityStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolCapacityStatus.
func (*RuntimePoolCapacityStatus) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimePoolCapacityStatus) DeepCopyInto(out *RuntimePoolCapacityStatus)
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
func (in *RuntimePoolExecutionWorkspaceSpec) DeepCopy() *RuntimePoolExecutionWorkspaceSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolExecutionWorkspaceSpec.
func (*RuntimePoolExecutionWorkspaceSpec) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimePoolExecutionWorkspaceSpec) DeepCopyInto(out *RuntimePoolExecutionWorkspaceSpec)
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
func (in *RuntimePoolProfileSpec) DeepCopy() *RuntimePoolProfileSpec
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
func (in *RuntimePoolRuntimeSpec) DeepCopy() *RuntimePoolRuntimeSpec
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
func (in *RuntimePoolSandboxDurableVolumeSpec) DeepCopy() *RuntimePoolSandboxDurableVolumeSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolSandboxDurableVolumeSpec.
func (*RuntimePoolSandboxDurableVolumeSpec) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimePoolSandboxDurableVolumeSpec) DeepCopyInto(out *RuntimePoolSandboxDurableVolumeSpec)
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
func (in *RuntimePoolSubstrateWorkspaceSpec) DeepCopy() *RuntimePoolSubstrateWorkspaceSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimePoolSubstrateWorkspaceSpec.
func (*RuntimePoolSubstrateWorkspaceSpec) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimePoolSubstrateWorkspaceSpec) DeepCopyInto(out *RuntimePoolSubstrateWorkspaceSpec)
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
func (in *RuntimePoolTrustDomain) DeepCopy() *RuntimePoolTrustDomain
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
func (in *RuntimeSessionControl) DeepCopy() *RuntimeSessionControl
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
func (in *RuntimeSessionControlList) DeepCopy() *RuntimeSessionControlList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSessionControlList.
func (*RuntimeSessionControlList) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimeSessionControlList) DeepCopyInto(out *RuntimeSessionControlList)
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
func (in *RuntimeSessionControlSpec) DeepCopy() *RuntimeSessionControlSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSessionControlSpec.
func (*RuntimeSessionControlSpec) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimeSessionControlSpec) DeepCopyInto(out *RuntimeSessionControlSpec)
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
func (in *RuntimeSessionControlStatus) DeepCopy() *RuntimeSessionControlStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSessionControlStatus.
func (*RuntimeSessionControlStatus) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimeSessionControlStatus) DeepCopyInto(out *RuntimeSessionControlStatus)
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
func (in *RuntimeSessionLineageStatus) DeepCopy() *RuntimeSessionLineageStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSessionLineageStatus.
func (*RuntimeSessionLineageStatus) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimeSessionLineageStatus) DeepCopyInto(out *RuntimeSessionLineageStatus)
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
func (in *RuntimeSessionMutationLeaseStatus) DeepCopy() *RuntimeSessionMutationLeaseStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RuntimeSessionMutationLeaseStatus.
func (*RuntimeSessionMutationLeaseStatus) DeepCopyInto ¶ added in v0.2.0
func (in *RuntimeSessionMutationLeaseStatus) DeepCopyInto(out *RuntimeSessionMutationLeaseStatus)
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Skill.
func (*Skill) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Skill) DeepCopyObject ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SkillList.
func (*SkillList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*SkillList) DeepCopyObject ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SkillSpec.
func (*SkillSpec) DeepCopyInto ¶
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 ¶
func (in *SubstrateActorPoolList) DeepCopy() *SubstrateActorPoolList
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 ¶
func (in *SubstrateActorPoolReference) DeepCopy() *SubstrateActorPoolReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SubstrateActorPoolReference.
func (*SubstrateActorPoolReference) DeepCopyInto ¶
func (in *SubstrateActorPoolReference) DeepCopyInto(out *SubstrateActorPoolReference)
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 ¶
func (in *SubstrateActorPoolSpec) DeepCopy() *SubstrateActorPoolSpec
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 ¶
func (in *SubstrateActorPoolStatus) DeepCopy() *SubstrateActorPoolStatus
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Task.
func (*Task) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Task) DeepCopyObject ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskList.
func (*TaskList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*TaskList) DeepCopyObject ¶
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
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
func (in *TaskPullRequestReceipt) DeepCopy() *TaskPullRequestReceipt
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskSpec.
func (*TaskSpec) DeepCopyInto ¶
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
func (in *TaskWorkloadExecutionOutcome) DeepCopy() *TaskWorkloadExecutionOutcome
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TaskWorkloadExecutionOutcome.
func (*TaskWorkloadExecutionOutcome) DeepCopyInto ¶ added in v0.2.0
func (in *TaskWorkloadExecutionOutcome) DeepCopyInto(out *TaskWorkloadExecutionOutcome)
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Tool.
func (*Tool) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Tool) DeepCopyObject ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolList.
func (*ToolList) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ToolList) DeepCopyObject ¶
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 ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolSpec.
func (*ToolSpec) DeepCopyInto ¶
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
func (in *WorkspaceCheckpointReference) DeepCopy() *WorkspaceCheckpointReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceCheckpointReference.
func (*WorkspaceCheckpointReference) DeepCopyInto ¶ added in v0.2.0
func (in *WorkspaceCheckpointReference) DeepCopyInto(out *WorkspaceCheckpointReference)
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 ¶
func (in *WorkspaceClassReference) DeepCopy() *WorkspaceClassReference
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
func (in *WorkspaceCredentialReference) DeepCopy() *WorkspaceCredentialReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceCredentialReference.
func (*WorkspaceCredentialReference) DeepCopyInto ¶ added in v0.2.0
func (in *WorkspaceCredentialReference) DeepCopyInto(out *WorkspaceCredentialReference)
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 ¶
func (in *WorkspaceObjectReference) DeepCopy() *WorkspaceObjectReference
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 ¶
func (in *WorkspaceTemplateReference) DeepCopy() *WorkspaceTemplateReference
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceTemplateReference.
func (*WorkspaceTemplateReference) DeepCopyInto ¶
func (in *WorkspaceTemplateReference) DeepCopyInto(out *WorkspaceTemplateReference)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
Source Files
¶
- agent_execution_binding_types.go
- agent_runtime_crd_types.go
- agent_types.go
- branch_claim_types.go
- control_record_types.go
- controller_epoch_types.go
- execution_types.go
- external_effect_types.go
- groupversion_info.go
- outboundaccesspolicy_types.go
- prompt_attempt_types.go
- provider_types.go
- publication_types.go
- repositorymonitor_types.go
- repositoryscan_types.go
- runtime_pool_types.go
- runtime_session_control_types.go
- skill_types.go
- substrate_actor_pool_types.go
- task_runtime_types.go
- task_types.go
- tool_types.go
- zz_generated.deepcopy.go