Documentation
¶
Overview ¶
Package monetizeapi defines the Custom Resource Definitions for the Obol Stack monetize subsystem.
The Go types in this package are the single source of truth for the CRD OpenAPI schemas embedded under internal/embed/infrastructure/base/templates/*-crd.yaml.
Edit a field or marker here, then run `just generate` to regenerate the CRD YAML manifests + zz_generated_deepcopy.go from kubebuilder markers. CI fails if the working tree is dirty after that command runs (see .github/workflows/lint-test.yaml::generate-check).
+kubebuilder:object:generate=true +groupName=obol.org +versionName=v1alpha1
Index ¶
- Constants
- Variables
- func AgentIdentityAgentIDForChain(status AgentIdentityStatus, chain string) string
- func HasAgentIdentityRegistrations(status AgentIdentityStatus) bool
- type Agent
- type AgentIdentity
- type AgentIdentityList
- type AgentIdentityRegistration
- type AgentIdentitySpec
- type AgentIdentityStatus
- type AgentList
- type AgentSpec
- type AgentStatus
- type AgentWallet
- type Condition
- type PreSignedAuth
- type PurchaseAutoRefill
- type PurchasePayment
- type PurchaseRequest
- type PurchaseRequestList
- type PurchaseRequestSpec
- type PurchaseRequestStatus
- type RegistrationRequest
- type RegistrationRequestList
- type RegistrationRequestSpec
- type RegistrationRequestStatus
- type ServiceOffer
- func (in *ServiceOffer) DeepCopy() *ServiceOffer
- func (in *ServiceOffer) DeepCopyInto(out *ServiceOffer)
- func (in *ServiceOffer) DeepCopyObject() runtime.Object
- func (o *ServiceOffer) DrainEndsAt() time.Time
- func (o *ServiceOffer) DrainExpired(now time.Time) bool
- func (o *ServiceOffer) EffectiveHealthPath() string
- func (o *ServiceOffer) EffectiveNamespace() string
- func (o *ServiceOffer) EffectivePath() string
- func (o *ServiceOffer) EffectivePort() int64
- func (o *ServiceOffer) IsAgent() bool
- func (o *ServiceOffer) IsDraining() bool
- func (o *ServiceOffer) IsInference() bool
- type ServiceOfferAgent
- type ServiceOfferAgentRef
- type ServiceOfferAgentResolution
- type ServiceOfferAsset
- type ServiceOfferList
- type ServiceOfferModel
- type ServiceOfferPayment
- type ServiceOfferPriceTable
- type ServiceOfferRegistration
- type ServiceOfferService
- type ServiceOfferSpec
- type ServiceOfferStatus
- type ServiceOfferUpstream
Constants ¶
const ( Group = "obol.org" Version = "v1alpha1" ServiceOfferKind = "ServiceOffer" RegistrationRequestKind = "RegistrationRequest" PurchaseRequestKind = "PurchaseRequest" AgentKind = "Agent" AgentIdentityKind = "AgentIdentity" ServiceOfferResource = "serviceoffers" RegistrationRequestResource = "registrationrequests" PurchaseRequestResource = "purchaserequests" AgentResource = "agents" AgentIdentityResource = "agentidentities" // Default identity used for the operator's public ERC-8004 registration // file. The registration file can contain multiple per-chain registrations. AgentIdentityDefaultNamespace = "x402" AgentIdentityDefaultName = "default" AgentRuntimeHermes = "hermes" AgentPhasePending = "Pending" AgentPhaseProvisioning = "Provisioning" AgentPhaseReady = "Ready" AgentPhaseFailed = "Failed" )
const DefaultDrainGracePeriod = time.Hour
DefaultDrainGracePeriod is the grace period applied to a draining ServiceOffer when spec.drainGracePeriod is unset. Buyers using the offer can complete in-flight payments and migrate to alternative providers within this window before the HTTPRoute is torn down.
Variables ¶
var ( ServiceOfferGVR = schema.GroupVersionResource{Group: Group, Version: Version, Resource: ServiceOfferResource} RegistrationRequestGVR = schema.GroupVersionResource{Group: Group, Version: Version, Resource: RegistrationRequestResource} PurchaseRequestGVR = schema.GroupVersionResource{Group: Group, Version: Version, Resource: PurchaseRequestResource} AgentGVR = schema.GroupVersionResource{Group: Group, Version: Version, Resource: AgentResource} AgentIdentityGVR = schema.GroupVersionResource{Group: Group, Version: Version, Resource: AgentIdentityResource} ServiceGVR = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "services"} SecretGVR = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "secrets"} ConfigMapGVR = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "configmaps"} DeploymentGVR = schema.GroupVersionResource{Group: "apps", Version: "v1", Resource: "deployments"} MiddlewareGVR = schema.GroupVersionResource{Group: "traefik.io", Version: "v1alpha1", Resource: "middlewares"} HTTPRouteGVR = schema.GroupVersionResource{Group: "gateway.networking.k8s.io", Version: "v1", Resource: "httproutes"} ReferenceGrantGVR = schema.GroupVersionResource{Group: "gateway.networking.k8s.io", Version: "v1beta1", Resource: "referencegrants"} // Used by the agent reconciler when provisioning per-namespace // runtime primitives. Keeping them next to the existing GVRs avoids // scattering schema.GroupVersionResource literals across the package. NamespaceGVR = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "namespaces"} ServiceAccountGVR = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "serviceaccounts"} PVCGVR = schema.GroupVersionResource{Group: "", Version: "v1", Resource: "persistentvolumeclaims"} NetworkPolicyGVR = schema.GroupVersionResource{Group: "networking.k8s.io", Version: "v1", Resource: "networkpolicies"} )
Functions ¶
func AgentIdentityAgentIDForChain ¶ added in v0.10.0
func AgentIdentityAgentIDForChain(status AgentIdentityStatus, chain string) string
func HasAgentIdentityRegistrations ¶ added in v0.10.0
func HasAgentIdentityRegistrations(status AgentIdentityStatus) bool
Types ¶
type Agent ¶ added in v0.10.0
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 declarative spec for an Obol Stack agent (Hermes today, OpenClaw later). Decouples agent lifecycle from selling: `obol sell agent <name>` references an existing Agent rather than provisioning one inline. Internal manager agents with RBAC can also create Agent resources to spawn sub-agents.
func (*Agent) DeepCopy ¶ added in v0.10.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Agent.
func (*Agent) DeepCopyInto ¶ added in v0.10.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*Agent) DeepCopyObject ¶ added in v0.10.0
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*Agent) EffectiveModel ¶ added in v0.10.0
EffectiveModel returns the model the controller should use right now: the user-pinned spec.model when set, falling back to the previously resolved status.pinnedModel. Returns "" if neither is set, signalling "first reconcile, pick top-of-rank from LiteLLM and write back to status".
func (*Agent) EffectiveRuntime ¶ added in v0.10.0
type AgentIdentity ¶ added in v0.10.0
type AgentIdentity struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec AgentIdentitySpec `json:"spec,omitempty"`
Status AgentIdentityStatus `json:"status,omitempty"`
}
AgentIdentity is the durable, on-chain identity an operator controls in the ERC-8004 Identity Registry. A single AgentIdentity outlives ServiceOffers: deleting the last ServiceOffer that references it does not delete the NFT, the published registration document, or the recorded agentId; instead the renderer publishes a tombstone (active:false, x402Support:false) so external observers still see the historical record.
func (*AgentIdentity) DeepCopy ¶ added in v0.10.0
func (in *AgentIdentity) DeepCopy() *AgentIdentity
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentIdentity.
func (*AgentIdentity) DeepCopyInto ¶ added in v0.10.0
func (in *AgentIdentity) DeepCopyInto(out *AgentIdentity)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AgentIdentity) DeepCopyObject ¶ added in v0.10.0
func (in *AgentIdentity) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type AgentIdentityList ¶ added in v0.10.0
type AgentIdentityList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []AgentIdentity `json:"items"`
}
AgentIdentityList is the list form for kubectl/list operations.
func (*AgentIdentityList) DeepCopy ¶ added in v0.10.0
func (in *AgentIdentityList) DeepCopy() *AgentIdentityList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentIdentityList.
func (*AgentIdentityList) DeepCopyInto ¶ added in v0.10.0
func (in *AgentIdentityList) DeepCopyInto(out *AgentIdentityList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AgentIdentityList) DeepCopyObject ¶ added in v0.10.0
func (in *AgentIdentityList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type AgentIdentityRegistration ¶ added in v0.10.0
type AgentIdentityRegistration struct {
// ERC-8004 registration chain alias.
// +kubebuilder:validation:Required
// +kubebuilder:validation:MaxLength=64
Chain string `json:"chain"`
// On-chain ERC-721 tokenId on the given chain.
// +kubebuilder:validation:Required
AgentID string `json:"agentId"`
}
func (*AgentIdentityRegistration) DeepCopy ¶ added in v0.10.0
func (in *AgentIdentityRegistration) DeepCopy() *AgentIdentityRegistration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentIdentityRegistration.
func (*AgentIdentityRegistration) DeepCopyInto ¶ added in v0.10.0
func (in *AgentIdentityRegistration) DeepCopyInto(out *AgentIdentityRegistration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AgentIdentitySpec ¶ added in v0.10.0
type AgentIdentitySpec struct {
}
func (*AgentIdentitySpec) DeepCopy ¶ added in v0.10.0
func (in *AgentIdentitySpec) DeepCopy() *AgentIdentitySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentIdentitySpec.
func (*AgentIdentitySpec) DeepCopyInto ¶ added in v0.10.0
func (in *AgentIdentitySpec) DeepCopyInto(out *AgentIdentitySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AgentIdentityStatus ¶ added in v0.10.0
type AgentIdentityStatus struct {
// Per-chain ERC-8004 registrations for this identity document.
Registrations []AgentIdentityRegistration `json:"registrations,omitempty"`
}
func UpsertAgentIdentityRegistration ¶ added in v0.10.0
func UpsertAgentIdentityRegistration(status AgentIdentityStatus, chain, agentID string) AgentIdentityStatus
func (*AgentIdentityStatus) DeepCopy ¶ added in v0.10.0
func (in *AgentIdentityStatus) DeepCopy() *AgentIdentityStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentIdentityStatus.
func (*AgentIdentityStatus) DeepCopyInto ¶ added in v0.10.0
func (in *AgentIdentityStatus) DeepCopyInto(out *AgentIdentityStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AgentList ¶ added in v0.10.0
type AgentList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Agent `json:"items"`
}
AgentList is the list form for kubectl/list operations.
func (*AgentList) DeepCopy ¶ added in v0.10.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentList.
func (*AgentList) DeepCopyInto ¶ added in v0.10.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*AgentList) DeepCopyObject ¶ added in v0.10.0
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type AgentSpec ¶ added in v0.10.0
type AgentSpec struct {
// Agent runtime (only hermes today; openclaw planned).
// +kubebuilder:default=hermes
// +kubebuilder:validation:Enum=hermes
Runtime string `json:"runtime,omitempty"`
// LiteLLM model name to pin. Empty = controller picks cluster
// top-of-rank on first deploy and writes status.pinnedModel.
// +kubebuilder:validation:MaxLength=256
Model string `json:"model,omitempty"`
// Allow-listed skills written to the per-agent skills dir on first
// reconcile. Agent can edit afterwards; this is a seed, not a sandbox.
// +kubebuilder:validation:MaxItems=64
// +kubebuilder:validation:items:Pattern=`^[a-z0-9][a-z0-9-]*$`
// +kubebuilder:validation:items:MaxLength=64
Skills []string `json:"skills,omitempty"`
// Operator-supplied objective text. Substituted into the SOUL.md
// template by the seeder on first write. Agent owns SOUL.md after that.
// +kubebuilder:validation:MaxLength=4096
Objective string `json:"objective,omitempty"`
Wallet AgentWallet `json:"wallet,omitempty"`
}
func (*AgentSpec) DeepCopy ¶ added in v0.10.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentSpec.
func (*AgentSpec) DeepCopyInto ¶ added in v0.10.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AgentStatus ¶ added in v0.10.0
type AgentStatus struct {
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// Pending | Provisioning | Ready | Failed
Phase string `json:"phase,omitempty"`
// Actual model the agent is using (= spec.model when set, otherwise
// the auto-picked top-of-rank).
PinnedModel string `json:"pinnedModel,omitempty"`
// Agent's signing address when wallet.create=true. Empty otherwise.
// +kubebuilder:validation:Pattern=`^(0x[0-9a-fA-F]{40})?$`
WalletAddress string `json:"walletAddress,omitempty"`
// Cluster-internal URL for the agent runtime (e.g.
// http://hermes.agent-quant.svc.cluster.local:8642).
Endpoint string `json:"endpoint,omitempty"`
Conditions []Condition `json:"conditions,omitempty"`
}
func (*AgentStatus) DeepCopy ¶ added in v0.10.0
func (in *AgentStatus) DeepCopy() *AgentStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentStatus.
func (*AgentStatus) DeepCopyInto ¶ added in v0.10.0
func (in *AgentStatus) DeepCopyInto(out *AgentStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type AgentWallet ¶ added in v0.10.0
type AgentWallet struct {
// Provision a per-namespace remote-signer keystore. Address is
// published in status.walletAddress.
// +kubebuilder:default=false
Create bool `json:"create,omitempty"`
}
func (*AgentWallet) DeepCopy ¶ added in v0.10.0
func (in *AgentWallet) DeepCopy() *AgentWallet
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AgentWallet.
func (*AgentWallet) DeepCopyInto ¶ added in v0.10.0
func (in *AgentWallet) DeepCopyInto(out *AgentWallet)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Condition ¶
type Condition struct {
// Condition type.
// +kubebuilder:validation:Required
Type string `json:"type"`
// Status of the condition.
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=True;False;Unknown
Status string `json:"status"`
// Machine-readable reason for the condition.
Reason string `json:"reason,omitempty"`
// Human-readable message with details.
Message string `json:"message,omitempty"`
// Last time the condition transitioned.
LastTransitionTime metav1.Time `json:"lastTransitionTime,omitempty"`
}
func (*Condition) DeepCopy ¶ added in v0.10.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Condition.
func (*Condition) DeepCopyInto ¶ added in v0.10.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PreSignedAuth ¶
type PreSignedAuth struct {
ID string `json:"id,omitempty"`
// +kubebuilder:pruning:PreserveUnknownFields
// +kubebuilder:validation:Schemaless
Payment map[string]interface{} `json:"payment,omitempty"`
Signature string `json:"signature,omitempty"`
From string `json:"from,omitempty"`
To string `json:"to,omitempty"`
Value string `json:"value,omitempty"`
ValidAfter string `json:"validAfter,omitempty"`
ValidBefore string `json:"validBefore,omitempty"`
Nonce string `json:"nonce,omitempty"`
}
PreSignedAuth carries a pre-signed x402 payment authorization. The Payment map is opaque (forwarded verbatim to the buyer sidecar / x402 facilitator) which can't be deep-copied by controller-gen; DeepCopy methods for this type are hand-written in deepcopy_manual.go.
func (*PreSignedAuth) DeepCopy ¶ added in v0.10.0
func (in *PreSignedAuth) DeepCopy() *PreSignedAuth
DeepCopy returns a deep copy of the receiver.
func (*PreSignedAuth) DeepCopyInto ¶ added in v0.10.0
func (in *PreSignedAuth) DeepCopyInto(out *PreSignedAuth)
DeepCopyInto copies the receiver into out. The Payment map is shallow-copied; values inside the map are JSON-serializable scalars / maps / slices passed through to the buyer sidecar, so a shallow copy is sufficient for the controller's deep-copy contract (no internal pointer aliasing into caller-owned mutable structures).
type PurchaseAutoRefill ¶
type PurchaseAutoRefill struct {
// +kubebuilder:default=false
Enabled bool `json:"enabled,omitempty"`
// Refill when remaining < threshold.
// +kubebuilder:validation:Minimum=0
Threshold int `json:"threshold,omitempty"`
// Number of auths to sign on refill.
// +kubebuilder:validation:Minimum=1
Count int `json:"count,omitempty"`
// Cap total auths ever signed.
MaxTotal int `json:"maxTotal,omitempty"`
// Max micro-USDC spend per day.
MaxSpendPerDay string `json:"maxSpendPerDay,omitempty"`
}
PurchaseAutoRefill drives the agent-managed auto-refill policy for a PurchaseRequest. The reconciler reads MaxTotal + MaxSpendPerDay as budget caps before signing more auths; without these fields populated the agent will not auto-refill beyond the initial Count.
func (*PurchaseAutoRefill) DeepCopy ¶ added in v0.10.0
func (in *PurchaseAutoRefill) DeepCopy() *PurchaseAutoRefill
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchaseAutoRefill.
func (*PurchaseAutoRefill) DeepCopyInto ¶ added in v0.10.0
func (in *PurchaseAutoRefill) DeepCopyInto(out *PurchaseAutoRefill)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PurchasePayment ¶
type PurchasePayment struct {
// +kubebuilder:validation:Required
Network string `json:"network"`
// +kubebuilder:validation:Required
PayTo string `json:"payTo"`
// Atomic token units per request.
// +kubebuilder:validation:Required
Price string `json:"price"`
// ERC-20 contract address.
// +kubebuilder:validation:Required
Asset string `json:"asset"`
// Human-friendly token symbol (e.g. USDC, OBOL).
AssetSymbol string `json:"assetSymbol,omitempty"`
// Token decimals in atomic units.
AssetDecimals int64 `json:"assetDecimals,omitempty"`
// x402 transfer method used for this asset.
AssetTransferMethod string `json:"assetTransferMethod,omitempty"`
// EIP-712 domain name used for signing.
EIP712Name string `json:"eip712Name,omitempty"`
// EIP-712 domain version used for signing.
EIP712Version string `json:"eip712Version,omitempty"`
}
func (*PurchasePayment) DeepCopy ¶ added in v0.10.0
func (in *PurchasePayment) DeepCopy() *PurchasePayment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchasePayment.
func (*PurchasePayment) DeepCopyInto ¶ added in v0.10.0
func (in *PurchasePayment) DeepCopyInto(out *PurchasePayment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PurchaseRequest ¶
type PurchaseRequest struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec PurchaseRequestSpec `json:"spec,omitempty"`
Status PurchaseRequestStatus `json:"status,omitempty"`
}
PurchaseRequest is the buyer-side request for pre-signed x402 auths against a remote inference endpoint.
func (*PurchaseRequest) DeepCopy ¶ added in v0.10.0
func (in *PurchaseRequest) DeepCopy() *PurchaseRequest
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchaseRequest.
func (*PurchaseRequest) DeepCopyInto ¶ added in v0.10.0
func (in *PurchaseRequest) DeepCopyInto(out *PurchaseRequest)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PurchaseRequest) DeepCopyObject ¶ added in v0.10.0
func (in *PurchaseRequest) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*PurchaseRequest) EffectiveBuyerNamespace ¶
func (pr *PurchaseRequest) EffectiveBuyerNamespace() string
type PurchaseRequestList ¶ added in v0.10.0
type PurchaseRequestList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []PurchaseRequest `json:"items"`
}
PurchaseRequestList is the list form for kubectl/list operations.
func (*PurchaseRequestList) DeepCopy ¶ added in v0.10.0
func (in *PurchaseRequestList) DeepCopy() *PurchaseRequestList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchaseRequestList.
func (*PurchaseRequestList) DeepCopyInto ¶ added in v0.10.0
func (in *PurchaseRequestList) DeepCopyInto(out *PurchaseRequestList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*PurchaseRequestList) DeepCopyObject ¶ added in v0.10.0
func (in *PurchaseRequestList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type PurchaseRequestSpec ¶
type PurchaseRequestSpec struct {
// Full URL to the x402-gated inference endpoint.
// +kubebuilder:validation:Required
Endpoint string `json:"endpoint"`
// Remote model ID (used as paid/<model> in LiteLLM).
// +kubebuilder:validation:Required
Model string `json:"model"`
// Number of pre-signed auths to create.
// +kubebuilder:validation:Required
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=2500
Count int `json:"count"`
// Pre-signed x402 payments (legacy ERC-3009 auths still supported).
PreSignedAuths []PreSignedAuth `json:"preSignedAuths,omitempty"`
AutoRefill PurchaseAutoRefill `json:"autoRefill,omitempty"`
// +kubebuilder:validation:Required
Payment PurchasePayment `json:"payment"`
}
func (*PurchaseRequestSpec) DeepCopy ¶ added in v0.10.0
func (in *PurchaseRequestSpec) DeepCopy() *PurchaseRequestSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchaseRequestSpec.
func (*PurchaseRequestSpec) DeepCopyInto ¶ added in v0.10.0
func (in *PurchaseRequestSpec) DeepCopyInto(out *PurchaseRequestSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PurchaseRequestStatus ¶
type PurchaseRequestStatus struct {
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
Conditions []Condition `json:"conditions,omitempty"`
// LiteLLM model name (paid/<model>).
PublicModel string `json:"publicModel,omitempty"`
Remaining int `json:"remaining,omitempty"`
Spent int `json:"spent,omitempty"`
TotalSigned int `json:"totalSigned,omitempty"`
TotalSpent string `json:"totalSpent,omitempty"`
// +kubebuilder:validation:Format=date-time
ProbedAt string `json:"probedAt,omitempty"`
ProbedPrice string `json:"probedPrice,omitempty"`
WalletBalance string `json:"walletBalance,omitempty"`
SignerAddress string `json:"signerAddress,omitempty"`
}
func (*PurchaseRequestStatus) DeepCopy ¶ added in v0.10.0
func (in *PurchaseRequestStatus) DeepCopy() *PurchaseRequestStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PurchaseRequestStatus.
func (*PurchaseRequestStatus) DeepCopyInto ¶ added in v0.10.0
func (in *PurchaseRequestStatus) DeepCopyInto(out *PurchaseRequestStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RegistrationRequest ¶
type RegistrationRequest struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec RegistrationRequestSpec `json:"spec,omitempty"`
Status RegistrationRequestStatus `json:"status,omitempty"`
}
RegistrationRequest isolates ERC-8004 publication and on-chain side effects from the main ServiceOffer reconciliation loop. ServiceOffer remains the source of truth.
func (*RegistrationRequest) DeepCopy ¶ added in v0.10.0
func (in *RegistrationRequest) DeepCopy() *RegistrationRequest
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistrationRequest.
func (*RegistrationRequest) DeepCopyInto ¶ added in v0.10.0
func (in *RegistrationRequest) DeepCopyInto(out *RegistrationRequest)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RegistrationRequest) DeepCopyObject ¶ added in v0.10.0
func (in *RegistrationRequest) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RegistrationRequestList ¶ added in v0.10.0
type RegistrationRequestList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []RegistrationRequest `json:"items"`
}
RegistrationRequestList is the list form for kubectl/list operations.
func (*RegistrationRequestList) DeepCopy ¶ added in v0.10.0
func (in *RegistrationRequestList) DeepCopy() *RegistrationRequestList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistrationRequestList.
func (*RegistrationRequestList) DeepCopyInto ¶ added in v0.10.0
func (in *RegistrationRequestList) DeepCopyInto(out *RegistrationRequestList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*RegistrationRequestList) DeepCopyObject ¶ added in v0.10.0
func (in *RegistrationRequestList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type RegistrationRequestSpec ¶
type RegistrationRequestSpec struct {
// +kubebuilder:validation:Required
ServiceOfferName string `json:"serviceOfferName"`
// +kubebuilder:validation:Required
ServiceOfferNamespace string `json:"serviceOfferNamespace"`
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=Active;Tombstoned
DesiredState string `json:"desiredState"`
// ERC-8004 registration chain alias for this request.
Chain string `json:"chain,omitempty"`
}
func (*RegistrationRequestSpec) DeepCopy ¶ added in v0.10.0
func (in *RegistrationRequestSpec) DeepCopy() *RegistrationRequestSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistrationRequestSpec.
func (*RegistrationRequestSpec) DeepCopyInto ¶ added in v0.10.0
func (in *RegistrationRequestSpec) DeepCopyInto(out *RegistrationRequestSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RegistrationRequestStatus ¶
type RegistrationRequestStatus struct {
Phase string `json:"phase,omitempty"`
Message string `json:"message,omitempty"`
PublishedURL string `json:"publishedUrl,omitempty"`
AgentID string `json:"agentId,omitempty"`
RegistrationTxHash string `json:"registrationTxHash,omitempty"`
RegistrationOwner string `json:"registrationOwner,omitempty"`
RegistrationURI string `json:"registrationUri,omitempty"`
RegistrationSearchFromBlock int64 `json:"registrationSearchFromBlock,omitempty"`
MetadataSynced bool `json:"metadataSynced,omitempty"`
}
func (*RegistrationRequestStatus) DeepCopy ¶ added in v0.10.0
func (in *RegistrationRequestStatus) DeepCopy() *RegistrationRequestStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistrationRequestStatus.
func (*RegistrationRequestStatus) DeepCopyInto ¶ added in v0.10.0
func (in *RegistrationRequestStatus) DeepCopyInto(out *RegistrationRequestStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOffer ¶
type ServiceOffer struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ServiceOfferSpec `json:"spec,omitempty"`
Status ServiceOfferStatus `json:"status,omitempty"`
}
ServiceOffer declares a compute service that can be exposed publicly, gated with x402 payments, and optionally registered on an ERC-8004 service registry. Field names align with x402 and ERC-8004 standards.
func (*ServiceOffer) DeepCopy ¶ added in v0.10.0
func (in *ServiceOffer) DeepCopy() *ServiceOffer
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOffer.
func (*ServiceOffer) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOffer) DeepCopyInto(out *ServiceOffer)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ServiceOffer) DeepCopyObject ¶ added in v0.10.0
func (in *ServiceOffer) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*ServiceOffer) DrainEndsAt ¶ added in v0.10.0
func (o *ServiceOffer) DrainEndsAt() time.Time
DrainEndsAt returns DrainAt + DrainGracePeriod. When DrainAt is nil the zero time is returned (caller should gate on IsDraining first). When DrainGracePeriod is nil the default grace period is applied; a zero grace period is honored as "drain ends at DrainAt", i.e. tear down on the next reconcile (the --force/--now path).
func (*ServiceOffer) DrainExpired ¶ added in v0.10.0
func (o *ServiceOffer) DrainExpired(now time.Time) bool
DrainExpired reports whether the drain grace period has elapsed. Returns false when the offer is not draining at all. Callers should use this rather than IsDraining when deciding whether to tear down the HTTPRoute or filter the offer from the live x402 verifier rules.
func (*ServiceOffer) EffectiveHealthPath ¶
func (o *ServiceOffer) EffectiveHealthPath() string
func (*ServiceOffer) EffectiveNamespace ¶
func (o *ServiceOffer) EffectiveNamespace() string
func (*ServiceOffer) EffectivePath ¶
func (o *ServiceOffer) EffectivePath() string
func (*ServiceOffer) EffectivePort ¶
func (o *ServiceOffer) EffectivePort() int64
func (*ServiceOffer) IsAgent ¶ added in v0.10.0
func (o *ServiceOffer) IsAgent() bool
IsAgent reports whether the offer references an Agent CR for its upstream. Type=="agent" is the only signal — Ref must also be non-empty for a usable offer, but admission validation enforces that.
func (*ServiceOffer) IsDraining ¶ added in v0.10.0
func (o *ServiceOffer) IsDraining() bool
IsDraining reports whether spec.drainAt has been set. Drained offers transition through three phases: pre-drain (DrainAt nil), draining (DrainAt set, now < DrainEndsAt), and drain-expired (DrainAt set, now >= DrainEndsAt). The controller keeps the route up during "draining" and tears it down once "drain-expired" is reached.
func (*ServiceOffer) IsInference ¶
func (o *ServiceOffer) IsInference() bool
type ServiceOfferAgent ¶ added in v0.10.0
type ServiceOfferAgent struct {
Ref ServiceOfferAgentRef `json:"ref,omitempty"`
}
ServiceOfferAgent is populated when Spec.Type == "agent". The controller resolves Ref → Agent CR, derives Upstream from Agent.status.endpoint, and surfaces the agent's model + skills in the 402 response's extra block so buyers see what they're paying for.
func (*ServiceOfferAgent) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferAgent) DeepCopy() *ServiceOfferAgent
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferAgent.
func (*ServiceOfferAgent) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferAgent) DeepCopyInto(out *ServiceOfferAgent)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOfferAgentRef ¶ added in v0.10.0
type ServiceOfferAgentRef struct {
// +kubebuilder:validation:Required
Name string `json:"name"`
// +kubebuilder:validation:Required
Namespace string `json:"namespace"`
}
func (*ServiceOfferAgentRef) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferAgentRef) DeepCopy() *ServiceOfferAgentRef
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferAgentRef.
func (*ServiceOfferAgentRef) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferAgentRef) DeepCopyInto(out *ServiceOfferAgentRef)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOfferAgentResolution ¶ added in v0.10.0
type ServiceOfferAgentResolution struct {
Model string `json:"model,omitempty"`
Skills []string `json:"skills,omitempty"`
Runtime string `json:"runtime,omitempty"`
Endpoint string `json:"endpoint,omitempty"`
}
ServiceOfferAgentResolution is the controller's resolved view of an agent-type offer's referenced Agent. Populated only when Spec.Type == "agent" and the Agent CR is Ready. Read by the route source when building RouteRules so the 402 extra block surfaces what's actually running.
func (*ServiceOfferAgentResolution) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferAgentResolution) DeepCopy() *ServiceOfferAgentResolution
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferAgentResolution.
func (*ServiceOfferAgentResolution) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferAgentResolution) DeepCopyInto(out *ServiceOfferAgentResolution)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOfferAsset ¶ added in v0.9.0
type ServiceOfferAsset struct {
// ERC-20 contract address.
// +kubebuilder:validation:Pattern=`^0x[0-9a-fA-F]{40}$`
Address string `json:"address,omitempty"`
// Human-friendly token symbol (e.g. USDC, OBOL).
Symbol string `json:"symbol,omitempty"`
// Token decimals in atomic units.
// +kubebuilder:validation:Minimum=0
// +kubebuilder:validation:Maximum=255
Decimals int64 `json:"decimals,omitempty"`
// x402 transfer method for the asset.
// +kubebuilder:validation:Enum=eip3009;permit2
TransferMethod string `json:"transferMethod,omitempty"`
// EIP-712 domain name used by the token.
EIP712Name string `json:"eip712Name,omitempty"`
// EIP-712 domain version used by the token.
EIP712Version string `json:"eip712Version,omitempty"`
}
func (*ServiceOfferAsset) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferAsset) DeepCopy() *ServiceOfferAsset
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferAsset.
func (*ServiceOfferAsset) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferAsset) DeepCopyInto(out *ServiceOfferAsset)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOfferList ¶ added in v0.10.0
type ServiceOfferList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ServiceOffer `json:"items"`
}
ServiceOfferList is the list form for kubectl/list operations.
func (*ServiceOfferList) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferList) DeepCopy() *ServiceOfferList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferList.
func (*ServiceOfferList) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferList) DeepCopyInto(out *ServiceOfferList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ServiceOfferList) DeepCopyObject ¶ added in v0.10.0
func (in *ServiceOfferList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ServiceOfferModel ¶
type ServiceOfferModel struct {
// Model identifier (e.g. qwen3.5:35b).
// +kubebuilder:validation:Required
Name string `json:"name"`
// Runtime serving the model.
// +kubebuilder:validation:Required
// +kubebuilder:validation:Enum=ollama;vllm;tgi
Runtime string `json:"runtime"`
}
func (*ServiceOfferModel) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferModel) DeepCopy() *ServiceOfferModel
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferModel.
func (*ServiceOfferModel) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferModel) DeepCopyInto(out *ServiceOfferModel)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOfferPayment ¶
type ServiceOfferPayment struct {
// x402 payment scheme.
// +kubebuilder:default="exact"
// +kubebuilder:validation:Enum=exact
Scheme string `json:"scheme,omitempty"`
// Chain identifier for payments (human-friendly). Reconciler resolves
// to CAIP-2 format (e.g., "base-sepolia" → "eip155:84532").
// +kubebuilder:validation:Required
Network string `json:"network"`
// USDC recipient wallet address (x402: payTo).
// +kubebuilder:validation:Required
// +kubebuilder:validation:Pattern=`^0x[0-9a-fA-F]{40}$`
PayTo string `json:"payTo"`
// Payment validity window in seconds (x402: maxTimeoutSeconds).
// +kubebuilder:default=300
MaxTimeoutSeconds int64 `json:"maxTimeoutSeconds,omitempty"`
// Optional token metadata override for x402 settlement. When omitted,
// the verifier uses the chain default asset.
Asset ServiceOfferAsset `json:"asset,omitempty"`
// Pricing table with per-unit prices in USDC (human-readable decimals).
// Which fields are applicable depends on the workload type.
// +kubebuilder:validation:Required
Price ServiceOfferPriceTable `json:"price"`
}
func (*ServiceOfferPayment) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferPayment) DeepCopy() *ServiceOfferPayment
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferPayment.
func (*ServiceOfferPayment) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferPayment) DeepCopyInto(out *ServiceOfferPayment)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOfferPriceTable ¶
type ServiceOfferPriceTable struct {
// Flat per-request price in USDC. Applicable to all types.
PerRequest string `json:"perRequest,omitempty"`
// Per-million-tokens price in USDC. Inference only.
PerMTok string `json:"perMTok,omitempty"`
// Per-compute-hour price in USDC. Fine-tuning only.
PerHour string `json:"perHour,omitempty"`
// Per-training-epoch price in USDC. Fine-tuning only.
PerEpoch string `json:"perEpoch,omitempty"`
}
func (*ServiceOfferPriceTable) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferPriceTable) DeepCopy() *ServiceOfferPriceTable
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferPriceTable.
func (*ServiceOfferPriceTable) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferPriceTable) DeepCopyInto(out *ServiceOfferPriceTable)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOfferRegistration ¶
type ServiceOfferRegistration struct {
// If true, register on ERC-8004 after routing is live.
// +kubebuilder:default=false
Enabled bool `json:"enabled,omitempty"`
// Agent name (ERC-8004: AgentRegistration.name).
Name string `json:"name,omitempty"`
// Agent description (ERC-8004: AgentRegistration.description).
Description string `json:"description,omitempty"`
// Agent icon URL (ERC-8004: AgentRegistration.image).
Image string `json:"image,omitempty"`
// Service endpoints (ERC-8004: AgentRegistration.services[]).
Services []ServiceOfferService `json:"services,omitempty"`
// Trust verification methods (ERC-8004: AgentRegistration.supportedTrust[]).
// Valid values: reputation, crypto-economic, tee-attestation.
SupportedTrust []string `json:"supportedTrust,omitempty"`
// OASF skills for discovery (e.g.
// natural_language_processing/text_generation). Mapped to an OASF
// service entry in the registration JSON.
Skills []string `json:"skills,omitempty"`
// OASF domains for discovery (e.g. technology/artificial_intelligence).
// Mapped to an OASF service entry in the registration JSON.
Domains []string `json:"domains,omitempty"`
// Additional registration metadata published into the generated
// agent-registration.json for discovery and ranking.
Metadata map[string]string `json:"metadata,omitempty"`
}
func (*ServiceOfferRegistration) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferRegistration) DeepCopy() *ServiceOfferRegistration
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferRegistration.
func (*ServiceOfferRegistration) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferRegistration) DeepCopyInto(out *ServiceOfferRegistration)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOfferService ¶
type ServiceOfferService struct {
// Service type: web, A2A, MCP, OASF, ENS, DID, email.
// +kubebuilder:validation:Required
Name string `json:"name"`
// Service URL. Auto-filled from tunnel URL if empty.
// +kubebuilder:validation:Required
Endpoint string `json:"endpoint"`
// Protocol version (SHOULD per ERC-8004 spec).
Version string `json:"version,omitempty"`
}
func (*ServiceOfferService) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferService) DeepCopy() *ServiceOfferService
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferService.
func (*ServiceOfferService) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferService) DeepCopyInto(out *ServiceOfferService)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOfferSpec ¶
type ServiceOfferSpec struct {
// Service type. 'inference' enables model management; 'http' for any HTTP
// service; 'agent' references an Agent CR via spec.agent.ref and the
// controller derives upstream + model + skills from the agent's status.
// +kubebuilder:default="http"
// +kubebuilder:validation:Enum=inference;fine-tuning;http;agent
Type string `json:"type,omitempty"`
// Required when type='agent'. The controller resolves spec.agent.ref to
// the referenced Agent CR, derives upstream from Agent.status.endpoint,
// and surfaces the agent's pinned model + skills in the 402 response.
Agent ServiceOfferAgent `json:"agent,omitempty"`
// LLM model metadata. Required when the upstream serves an LLM.
Model ServiceOfferModel `json:"model,omitempty"`
// In-cluster service that handles the actual workload.
Upstream ServiceOfferUpstream `json:"upstream,omitempty"`
// +kubebuilder:validation:Required
Payment ServiceOfferPayment `json:"payment"`
// URL path prefix for the HTTPRoute, defaults to /services/<name>.
// +kubebuilder:validation:Pattern=`^/[a-zA-Z0-9/_.-]*$`
Path string `json:"path,omitempty"`
// Optional provenance metadata for the service. Tracks how the model or
// service was produced (e.g. autoresearch experiment data). Included in
// the ERC-8004 registration document when present.
Provenance map[string]string `json:"provenance,omitempty"`
// ERC-8004 registration metadata. Field names align with the
// AgentRegistration document schema (ERC-8004 spec).
Registration ServiceOfferRegistration `json:"registration,omitempty"`
// DrainAt marks the offer as draining when non-nil. While the offer
// is in the drain window, discovery surfaces (/skill.md and
// /.well-known/agent-registration.json) advertise the offer with
// available=false and drainEndsAt set, so buyers can migrate before
// the route is torn down. The route + payment gate stay up until
// DrainEndsAt() so in-flight payments can complete. Replaces the
// legacy obol.org/paused annotation.
DrainAt *metav1.Time `json:"drainAt,omitempty"`
// DrainGracePeriod is how long after DrainAt the HTTPRoute remains
// up. Defaults to DefaultDrainGracePeriod when nil. A zero duration
// is honored as "tear down immediately on the next reconcile" (the
// equivalent of `obol sell stop --force`).
DrainGracePeriod *metav1.Duration `json:"drainGracePeriod,omitempty"`
}
func (*ServiceOfferSpec) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferSpec) DeepCopy() *ServiceOfferSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferSpec.
func (*ServiceOfferSpec) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferSpec) DeepCopyInto(out *ServiceOfferSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOfferStatus ¶
type ServiceOfferStatus struct {
// Condition types: ModelReady, UpstreamHealthy, PaymentGateReady,
// RoutePublished, Registered, Ready.
Conditions []Condition `json:"conditions,omitempty"`
// The public endpoint URL once the route is published.
Endpoint string `json:"endpoint,omitempty"`
// ERC-8004 agent NFT token ID after on-chain registration.
AgentID string `json:"agentId,omitempty"`
// Transaction hash of the ERC-8004 registration.
RegistrationTxHash string `json:"registrationTxHash,omitempty"`
// The generation observed by the controller.
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// Controller's resolved view of an agent-type offer's referenced Agent.
// Populated only when type=agent and the Agent is Ready.
AgentResolution *ServiceOfferAgentResolution `json:"agentResolution,omitempty"`
}
func (*ServiceOfferStatus) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferStatus) DeepCopy() *ServiceOfferStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferStatus.
func (*ServiceOfferStatus) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferStatus) DeepCopyInto(out *ServiceOfferStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ServiceOfferUpstream ¶
type ServiceOfferUpstream struct {
// Kubernetes Service name.
// +kubebuilder:validation:Required
Service string `json:"service"`
// Namespace of the upstream Service.
// +kubebuilder:validation:Required
Namespace string `json:"namespace"`
// Port on the upstream Service.
// +kubebuilder:validation:Required
// +kubebuilder:default=11434
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=65535
Port int64 `json:"port"`
// HTTP path used for health probes against the upstream.
// +kubebuilder:default="/health"
HealthPath string `json:"healthPath,omitempty"`
}
func (*ServiceOfferUpstream) DeepCopy ¶ added in v0.10.0
func (in *ServiceOfferUpstream) DeepCopy() *ServiceOfferUpstream
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOfferUpstream.
func (*ServiceOfferUpstream) DeepCopyInto ¶ added in v0.10.0
func (in *ServiceOfferUpstream) DeepCopyInto(out *ServiceOfferUpstream)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.