Documentation
¶
Overview ¶
Package spec defines the organisation specification shared by the Terraform provider, the Kubernetes API types and the controller. It is the single source of truth for field names and validation (design §4.6).
+kubebuilder:object:generate=true
Index ¶
- Constants
- type AccessProfile
- type BrowserAccess
- type BrowserSession
- type ChannelBinding
- type Connection
- type EgressAccess
- type ElasticTeams
- type ExecutionProfile
- type GitHubAccess
- type Grant
- type HarnessProfile
- type MemoryStore
- type MessageRoute
- type ModelBudgets
- type ModelEndpoint
- type ModelEntry
- type ModelSelection
- type NetworkAccess
- type NetworkRule
- type OrganizationSpec
- type SandboxProfile
- type Seat
- type SharedWorkspace
- type Team
- type TeamContext
- type TeamCoordination
- type TeamPool
- type TeamTemplate
- type ToolsAccess
- type WorkPublication
- type WorkerTemplate
- type WorkspaceBinding
Constants ¶
const DefaultMaxRequestOutputTokens int64 = 4096
DefaultMaxRequestOutputTokens is used when the request ceiling is omitted.
const DefaultsVersion = 1
DefaultsVersion identifies the set of defaults applied by the compiler. It is recorded in every effective manifest so that defaults are visible (§4.6).
const MaxSpecBytes = 256 * 1024
MaxSpecBytes is the documented size limit of a serialised specification (§13.3, ADR-0007). Large instruction documents must be referenced.
const SchemaVersion = "v1alpha1"
SchemaVersion is the version of the organisation specification schema.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccessProfile ¶ added in v0.2.0
type AccessProfile struct {
// Tools requires binaries in the seat image.
// +optional
Tools *ToolsAccess `json:"tools,omitempty"`
// Egress allows HTTPS and HTTP to hosts through the egress gateway.
// +optional
Egress *EgressAccess `json:"egress,omitempty"`
// Network allows direct connections to IP ranges (NetworkPolicy).
// +optional
Network *NetworkAccess `json:"network,omitempty"`
// GitHub grants repository access through a github connection.
// +optional
GitHub *GitHubAccess `json:"github,omitempty"`
// Browser gives the seat a headless browser as a tool.
// +optional
Browser *BrowserAccess `json:"browser,omitempty"`
}
AccessProfile configures sandbox access plugins. Each field is one plugin; unset plugins grant nothing. The default is deny-all except the platform.
func (*AccessProfile) DeepCopy ¶ added in v0.2.0
func (in *AccessProfile) DeepCopy() *AccessProfile
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AccessProfile.
func (*AccessProfile) DeepCopyInto ¶ added in v0.2.0
func (in *AccessProfile) DeepCopyInto(out *AccessProfile)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BrowserAccess ¶ added in v0.2.0
type BrowserAccess struct {
// Session loads a signed-in browser session from a browser_session
// connection. Without it browsing is anonymous.
// +optional
Session *BrowserSession `json:"session,omitempty"`
}
func (*BrowserAccess) DeepCopy ¶ added in v0.2.0
func (in *BrowserAccess) DeepCopy() *BrowserAccess
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BrowserAccess.
func (*BrowserAccess) DeepCopyInto ¶ added in v0.2.0
func (in *BrowserAccess) DeepCopyInto(out *BrowserAccess)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type BrowserSession ¶ added in v0.2.0
type BrowserSession struct {
Connection string `json:"connection"`
}
func (*BrowserSession) DeepCopy ¶ added in v0.2.0
func (in *BrowserSession) DeepCopy() *BrowserSession
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BrowserSession.
func (*BrowserSession) DeepCopyInto ¶ added in v0.2.0
func (in *BrowserSession) DeepCopyInto(out *BrowserSession)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ChannelBinding ¶
type ChannelBinding struct {
Connection string `json:"connection"`
ExternalUserID string `json:"external_user_id"`
Seat string `json:"seat"`
// Mode is direct_message.
// +optional
Mode string `json:"mode,omitempty"`
// Timezone is the human's IANA time zone; their representative reads
// and schedules times of day in it. Defaults to the organisation's.
// +optional
Timezone string `json:"timezone,omitempty"`
}
func (*ChannelBinding) DeepCopy ¶
func (in *ChannelBinding) DeepCopy() *ChannelBinding
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ChannelBinding.
func (*ChannelBinding) DeepCopyInto ¶
func (in *ChannelBinding) DeepCopyInto(out *ChannelBinding)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Connection ¶
type Connection struct {
// Adapter is slack, linear, anthropic, openai, model or fake-* in tests.
Adapter string `json:"adapter"`
// +optional
AccountID string `json:"account_id,omitempty"`
// EndpointRef overrides the service base URL. For model connections it
// is the API base, usually ending in /v1 (https://api.openai.com/v1).
// +optional
EndpointRef string `json:"endpoint_ref,omitempty"`
// SecretRef points at a secret in a supported manager (vault:..., k8s:...).
// +optional
SecretRef string `json:"secret_ref,omitempty"`
// Ownership is external (default, never deleted) or managed.
// +optional
Ownership string `json:"ownership,omitempty"`
// Required connections must authenticate before the organisation is ready.
// When unset it is decided by role (compile.RequiredConnections).
// +optional
Required *bool `json:"required,omitempty"`
// Model describes a model endpoint: the APIs it serves and its models.
// The anthropic and openai adapters have defaults; the model adapter
// (any compatible endpoint) must declare its APIs.
// +optional
Model *ModelEndpoint `json:"model,omitempty"`
// +optional
Config map[string]string `json:"config,omitempty"`
}
func (*Connection) DeepCopy ¶
func (in *Connection) DeepCopy() *Connection
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Connection.
func (*Connection) DeepCopyInto ¶
func (in *Connection) DeepCopyInto(out *Connection)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type EgressAccess ¶ added in v0.2.0
type EgressAccess struct {
// Hosts the seat may reach: example.com, *.example.com (subdomains), or
// host:port. Without a port, 443 and 80 are allowed.
Hosts []string `json:"hosts"`
}
func (*EgressAccess) DeepCopy ¶ added in v0.2.0
func (in *EgressAccess) DeepCopy() *EgressAccess
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EgressAccess.
func (*EgressAccess) DeepCopyInto ¶ added in v0.2.0
func (in *EgressAccess) DeepCopyInto(out *EgressAccess)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ElasticTeams ¶ added in v0.7.0
type ElasticTeams struct {
// +kubebuilder:validation:MinItems=1
EnabledSeats []string `json:"enabled_seats"`
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=1024
MaxActiveWorkers int `json:"max_active_workers"`
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=32
MaxActivePerExecution int `json:"max_active_per_execution"`
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=128
MaxLaunchesPerExecution int `json:"max_launches_per_execution"`
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=1200
MaxTimeoutSeconds int `json:"max_timeout_seconds"`
// Draining prevents new launches while existing workers finish.
// +optional
Draining bool `json:"draining,omitempty"`
// +kubebuilder:validation:MinProperties=1
Templates map[string]WorkerTemplate `json:"templates"`
}
ElasticTeams opts selected durable seats into bounded, execution-scoped teams. Workers cannot launch nested workers. Removing the policy disables new launches.
func (*ElasticTeams) DeepCopy ¶ added in v0.7.0
func (in *ElasticTeams) DeepCopy() *ElasticTeams
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ElasticTeams.
func (*ElasticTeams) DeepCopyInto ¶ added in v0.7.0
func (in *ElasticTeams) DeepCopyInto(out *ElasticTeams)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ExecutionProfile ¶
type ExecutionProfile struct {
// Backend is the sandbox backend, initially kubernetes.
Backend string `json:"backend"`
// ServiceClass is interactive or background.
// +optional
ServiceClass string `json:"service_class,omitempty"`
// IdlePolicy is warm, warm_then_stop or suspend.
// +optional
IdlePolicy string `json:"idle_policy,omitempty"`
// +optional
IdleTimeout string `json:"idle_timeout,omitempty"`
// +optional
CPURequest string `json:"cpu_request,omitempty"`
// +optional
CPULimit string `json:"cpu_limit,omitempty"`
// +optional
MemoryRequest string `json:"memory_request,omitempty"`
// +optional
MemoryLimit string `json:"memory_limit,omitempty"`
// +optional
WorkspaceSizeGB int64 `json:"workspace_size_gb,omitempty"`
// StorageClass is the storage class of the seat workspace volume. Empty
// uses the cluster default.
// +optional
StorageClass string `json:"storage_class,omitempty"`
// +optional
RequiredFeatures []string `json:"required_features,omitempty"`
}
func (*ExecutionProfile) DeepCopy ¶
func (in *ExecutionProfile) DeepCopy() *ExecutionProfile
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExecutionProfile.
func (*ExecutionProfile) DeepCopyInto ¶
func (in *ExecutionProfile) DeepCopyInto(out *ExecutionProfile)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type GitHubAccess ¶ added in v0.2.0
type GitHubAccess struct {
// Connection is a github connection.
Connection string `json:"connection"`
// Repos are owner/name repositories the seat may use.
Repos []string `json:"repos"`
// Permissions maps contents, pull_requests, issues or metadata to read or write.
Permissions map[string]string `json:"permissions"`
// Delivery is platform (default: operations through the platform; the
// credential never enters the sandbox) or sandbox (git and gh in the
// sandbox receive a credential; see docs/sandbox.html).
// +optional
Delivery string `json:"delivery,omitempty"`
}
func (*GitHubAccess) DeepCopy ¶ added in v0.2.0
func (in *GitHubAccess) DeepCopy() *GitHubAccess
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GitHubAccess.
func (*GitHubAccess) DeepCopyInto ¶ added in v0.2.0
func (in *GitHubAccess) DeepCopyInto(out *GitHubAccess)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Grant ¶
type Grant struct {
// Subject is seat:<key> or team:<key>.
Subject string `json:"subject"`
// Resource is connection:<key>, memory:<key> or workspace:<key>.
Resource string `json:"resource"`
Operations []string `json:"operations"`
// +optional
Targets []string `json:"targets,omitempty"`
}
func (*Grant) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Grant.
func (*Grant) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type HarnessProfile ¶
type HarnessProfile struct {
// Adapter is the harness adapter name: claude-code, codex, pi or fake.
Adapter string `json:"adapter"`
// ImageDigest pins the harness image (image@sha256:... or a local tag in dev).
ImageDigest string `json:"image_digest"`
// Model selects the model and the connection that serves it.
// +optional
Model *ModelSelection `json:"model,omitempty"`
// +optional
RequiredCapabilities []string `json:"required_capabilities,omitempty"`
// Config holds adapter-specific options (docs/harnesses.html).
// +optional
Config map[string]string `json:"config,omitempty"`
}
func (*HarnessProfile) DeepCopy ¶
func (in *HarnessProfile) DeepCopy() *HarnessProfile
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HarnessProfile.
func (*HarnessProfile) DeepCopyInto ¶
func (in *HarnessProfile) DeepCopyInto(out *HarnessProfile)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MemoryStore ¶
type MemoryStore struct {
// Retention is retain or delete.
// +optional
Retention string `json:"retention,omitempty"`
// +optional
BackingClass string `json:"backing_class,omitempty"`
// +optional
CapacityMB int64 `json:"capacity_mb,omitempty"`
}
func (*MemoryStore) DeepCopy ¶
func (in *MemoryStore) DeepCopy() *MemoryStore
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MemoryStore.
func (*MemoryStore) DeepCopyInto ¶
func (in *MemoryStore) DeepCopyInto(out *MemoryStore)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type MessageRoute ¶
type MessageRoute struct {
// From is seat:<key> or team:<key>.
From string `json:"from"`
// To is seat:<key> or team:<key>.
To string `json:"to"`
// Reply permits the recipient to reply within conversations opened on this route.
// +optional
Reply bool `json:"reply,omitempty"`
// Bidirectional permits both directions.
// +optional
Bidirectional bool `json:"bidirectional,omitempty"`
}
func (*MessageRoute) DeepCopy ¶
func (in *MessageRoute) DeepCopy() *MessageRoute
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MessageRoute.
func (*MessageRoute) DeepCopyInto ¶
func (in *MessageRoute) DeepCopyInto(out *MessageRoute)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ModelBudgets ¶ added in v0.6.0
type ModelBudgets struct {
// +optional
// +kubebuilder:validation:Minimum=0
OrganizationDailyOutputTokens int64 `json:"organization_daily_output_tokens,omitempty"`
// SeatDailyOutputTokens applies separately to each durable seat identity.
// +optional
// +kubebuilder:validation:Minimum=0
SeatDailyOutputTokens int64 `json:"seat_daily_output_tokens,omitempty"`
// ExecutionOutputTokens applies across all model calls in one execution.
// +optional
// +kubebuilder:validation:Minimum=0
ExecutionOutputTokens int64 `json:"execution_output_tokens,omitempty"`
// MaxRequestOutputTokens is the maximum reservation per model request.
// Defaults to 4096; the proxy lowers it to available scope headroom.
// +optional
// +kubebuilder:validation:Minimum=0
MaxRequestOutputTokens int64 `json:"max_request_output_tokens,omitempty"`
}
ModelBudgets limits generated output tokens, not input tokens or money. Zero scope limits are unlimited. Daily windows use UTC, independent of the organisation's display timezone. Removing this block disables enforcement.
func (*ModelBudgets) DeepCopy ¶ added in v0.6.0
func (in *ModelBudgets) DeepCopy() *ModelBudgets
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModelBudgets.
func (*ModelBudgets) DeepCopyInto ¶ added in v0.6.0
func (in *ModelBudgets) DeepCopyInto(out *ModelBudgets)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (ModelBudgets) Valid ¶ added in v0.6.0
func (b ModelBudgets) Valid() bool
Valid rejects negative, empty or overflowing policy values.
type ModelEndpoint ¶ added in v0.2.0
type ModelEndpoint struct {
// APIs the endpoint serves: anthropic_messages, openai_responses, openai_chat.
// +optional
APIs []string `json:"apis,omitempty"`
// Auth is how the credential is sent: bearer, x-api-key or header:<Name>.
// +optional
Auth string `json:"auth,omitempty"`
// Models the endpoint serves. When set, harness profiles may only select
// these, and readiness checks each one.
// +optional
Models []ModelEntry `json:"models,omitempty"`
// Verify is how readiness checks the endpoint: request (a minimal request
// per declared API and model), models (list models) or none.
// +optional
Verify string `json:"verify,omitempty"`
}
ModelEndpoint describes what a model connection serves. Claims are checked at readiness (Verify).
func (*ModelEndpoint) DeepCopy ¶ added in v0.2.0
func (in *ModelEndpoint) DeepCopy() *ModelEndpoint
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModelEndpoint.
func (*ModelEndpoint) DeepCopyInto ¶ added in v0.2.0
func (in *ModelEndpoint) DeepCopyInto(out *ModelEndpoint)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ModelEntry ¶ added in v0.2.0
type ModelEntry struct {
ID string `json:"id"`
// APIs restricts the APIs this model is served on; empty means all of
// the connection's APIs.
// +optional
APIs []string `json:"apis,omitempty"`
}
ModelEntry is one model a connection serves.
func (*ModelEntry) DeepCopy ¶ added in v0.2.0
func (in *ModelEntry) DeepCopy() *ModelEntry
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModelEntry.
func (*ModelEntry) DeepCopyInto ¶ added in v0.2.0
func (in *ModelEntry) DeepCopyInto(out *ModelEntry)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ModelSelection ¶ added in v0.2.0
type ModelSelection struct {
// Connection names a model connection.
Connection string `json:"connection"`
// ID is the model identifier sent to the endpoint. The platform rejects
// requests from the seat for any other model.
ID string `json:"id"`
// API is the protocol: anthropic_messages, openai_responses or
// openai_chat. When unset, the first API the harness speaks that the
// connection and model also serve is used.
// +optional
API string `json:"api,omitempty"`
// Settings are harness-specific model settings, e.g. reasoning_effort.
// +optional
Settings map[string]string `json:"settings,omitempty"`
}
ModelSelection is a harness profile's model.
func (*ModelSelection) DeepCopy ¶ added in v0.2.0
func (in *ModelSelection) DeepCopy() *ModelSelection
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ModelSelection.
func (*ModelSelection) DeepCopyInto ¶ added in v0.2.0
func (in *ModelSelection) DeepCopyInto(out *ModelSelection)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NetworkAccess ¶ added in v0.2.0
type NetworkAccess struct {
Rules []NetworkRule `json:"rules"`
}
func (*NetworkAccess) DeepCopy ¶ added in v0.2.0
func (in *NetworkAccess) DeepCopy() *NetworkAccess
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkAccess.
func (*NetworkAccess) DeepCopyInto ¶ added in v0.2.0
func (in *NetworkAccess) DeepCopyInto(out *NetworkAccess)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NetworkRule ¶ added in v0.2.0
type NetworkRule struct {
CIDR string `json:"cidr"`
// Ports; empty allows every port.
// +optional
Ports []int64 `json:"ports,omitempty"`
// Protocol is tcp (default), udp or sctp.
// +optional
Protocol string `json:"protocol,omitempty"`
}
NetworkRule allows direct egress to an IP range.
func (*NetworkRule) DeepCopy ¶ added in v0.2.0
func (in *NetworkRule) DeepCopy() *NetworkRule
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkRule.
func (*NetworkRule) DeepCopyInto ¶ added in v0.2.0
func (in *NetworkRule) DeepCopyInto(out *NetworkRule)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type OrganizationSpec ¶
type OrganizationSpec struct {
// Key is the stable organisation key.
Key string `json:"key"`
// DisplayName is the human-readable organisation name.
DisplayName string `json:"display_name"`
// DataRetention applies to the organisation when it is deleted: retain or delete.
// +optional
DataRetention string `json:"data_retention,omitempty"`
// Timezone is the IANA time zone in which seats read and schedule times
// of day, e.g. Australia/Melbourne. A channel binding can set its
// human's own. Defaults to UTC.
// +optional
Timezone string `json:"timezone,omitempty"`
// +optional
CultureRefs []string `json:"culture_refs,omitempty"`
// +optional
TeamTemplates map[string]TeamTemplate `json:"team_templates,omitempty"`
// +optional
Teams map[string]Team `json:"teams,omitempty"`
// +optional
MemoryStores map[string]MemoryStore `json:"memory_stores,omitempty"`
SharedWorkspaces map[string]SharedWorkspace `json:"shared_workspaces,omitempty"`
// +optional
HarnessProfiles map[string]HarnessProfile `json:"harness_profiles,omitempty"`
// +optional
ExecutionProfiles map[string]ExecutionProfile `json:"execution_profiles,omitempty"`
// +optional
SandboxProfiles map[string]SandboxProfile `json:"sandbox_profiles,omitempty"`
// AccessProfiles grant seats practical access from their sandbox: tools,
// network egress, credentials and a browser. Seats and teams name them;
// a seat gets the union of its own and its teams' profiles.
// +optional
AccessProfiles map[string]AccessProfile `json:"access_profiles,omitempty"`
// +optional
Connections map[string]Connection `json:"connections,omitempty"`
// +optional
Seats map[string]Seat `json:"seats,omitempty"`
// +optional
Grants map[string]Grant `json:"grants,omitempty"`
// +optional
MessageRoutes map[string]MessageRoute `json:"message_routes,omitempty"`
// +optional
ChannelBindings map[string]ChannelBinding `json:"channel_bindings,omitempty"`
// ElasticTeams permits bounded temporary workers for selected seats.
// +optional
ElasticTeams *ElasticTeams `json:"elastic_teams,omitempty"`
// ModelBudgets optionally limits cumulative generated output tokens at the model proxy.
// +optional
ModelBudgets *ModelBudgets `json:"model_budgets,omitempty"`
// WorkPublication optionally publishes work items to a tracker so people
// can follow progress there. Internal coordination never depends on it.
// +optional
WorkPublication *WorkPublication `json:"work_publication,omitempty"`
}
OrganizationSpec is the declared organisation. Maps are keyed by stable keys.
func (*OrganizationSpec) DeepCopy ¶
func (in *OrganizationSpec) DeepCopy() *OrganizationSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OrganizationSpec.
func (*OrganizationSpec) DeepCopyInto ¶
func (in *OrganizationSpec) DeepCopyInto(out *OrganizationSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SandboxProfile ¶
type SandboxProfile struct {
// NetworkPolicy is deny_all_except_platform (default) or a named policy ref.
// +optional
NetworkPolicyRef string `json:"network_policy_ref,omitempty"`
// +optional
FilesystemPolicyRef string `json:"filesystem_policy_ref,omitempty"`
// +optional
RuntimeClass string `json:"runtime_class,omitempty"`
// +optional
RequiredEnforcement []string `json:"required_enforcement,omitempty"`
}
func (*SandboxProfile) DeepCopy ¶
func (in *SandboxProfile) DeepCopy() *SandboxProfile
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SandboxProfile.
func (*SandboxProfile) DeepCopyInto ¶
func (in *SandboxProfile) DeepCopyInto(out *SandboxProfile)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Seat ¶
type Seat struct {
RoleRef string `json:"role_ref"`
// +optional
Teams []string `json:"teams,omitempty"`
HarnessProfile string `json:"harness_profile"`
ExecutionProfile string `json:"execution_profile"`
SandboxProfile string `json:"sandbox_profile"`
// +optional
PersonalMemory string `json:"personal_memory,omitempty"`
// +optional
Workspace *WorkspaceBinding `json:"workspace,omitempty"`
// +optional
DisplayName string `json:"display_name,omitempty"`
// +optional
InstructionRefs []string `json:"instruction_refs,omitempty"`
// AccessProfiles are granted to this seat, in addition to its teams'.
// +optional
AccessProfiles []string `json:"access_profiles,omitempty"`
// AdoptFrom explicitly adopts the retained data of a retired seat ID (§4.1).
// +optional
AdoptFrom string `json:"adopt_from,omitempty"`
}
func (*Seat) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Seat.
func (*Seat) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SharedWorkspace ¶
type SharedWorkspace struct {
StorageClass string `json:"storage_class,omitempty"`
AccessMode string `json:"access_mode"`
SizeGB int64 `json:"size_gb,omitempty"`
Retention string `json:"retention,omitempty"`
}
func (*SharedWorkspace) DeepCopy ¶
func (in *SharedWorkspace) DeepCopy() *SharedWorkspace
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SharedWorkspace.
func (*SharedWorkspace) DeepCopyInto ¶
func (in *SharedWorkspace) DeepCopyInto(out *SharedWorkspace)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type Team ¶
type Team struct {
// +optional
Coordination *TeamCoordination `json:"coordination,omitempty"`
// +optional
Pool *TeamPool `json:"pool,omitempty"`
// +optional
Context *TeamContext `json:"context,omitempty"`
// AccessProfiles are granted to every member.
// +optional
AccessProfiles []string `json:"access_profiles,omitempty"`
// +optional
Template string `json:"template,omitempty"`
// +optional
InstructionRefs []string `json:"instruction_refs,omitempty"`
// +optional
SharedMemory map[string][]string `json:"shared_memory,omitempty"`
// +optional
Parameters map[string]string `json:"parameters,omitempty"`
}
Team is a concrete grouping of seats. Membership is declared on seats only.
func (*Team) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Team.
func (*Team) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TeamContext ¶ added in v0.7.0
type TeamContext struct {
// RequireInstructionApproval makes every instruction update a reviewed proposal.
// Across memberships, any approval requirement wins over direct self-edit.
// +optional
RequireInstructionApproval bool `json:"require_instruction_approval,omitempty"`
// InstructionApprovers are explicit seat:<member-key> or team:<this-team> subjects.
// +optional
InstructionApprovers []string `json:"instruction_approvers,omitempty"`
// +optional
EditableInstructions bool `json:"editable_instructions,omitempty"`
// +optional
EditableSummary bool `json:"editable_summary,omitempty"`
}
TeamContext grants only self-context edits, independently from memory grants.
func (*TeamContext) DeepCopy ¶ added in v0.7.0
func (in *TeamContext) DeepCopy() *TeamContext
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamContext.
func (*TeamContext) DeepCopyInto ¶ added in v0.7.0
func (in *TeamContext) DeepCopyInto(out *TeamContext)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TeamCoordination ¶ added in v0.7.0
type TeamCoordination struct {
// +optional
// +kubebuilder:validation:Enum=declared;self_organising
Mode string `json:"mode,omitempty"`
// +optional
// +kubebuilder:validation:MaxLength=8192
Mission string `json:"mission,omitempty"`
// WorkStore is an explicitly granted shared work board.
// +optional
WorkStore string `json:"work_store,omitempty"`
// MissionEditors are seat:<key> or team:<key> subjects, restricted to members.
// An empty list grants no agent mission-edit permission.
// +optional
MissionEditors []string `json:"mission_editors,omitempty"`
// +optional
// +kubebuilder:validation:Enum=none;required
ReviewPolicy string `json:"review_policy,omitempty"`
// +optional
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=1000
MaxMessagesPerExecution int `json:"max_messages_per_execution,omitempty"`
}
TeamCoordination controls collaboration independently of membership and authority. No role name, editor selector or coordination mode grants tools or message routes.
func (*TeamCoordination) DeepCopy ¶ added in v0.7.0
func (in *TeamCoordination) DeepCopy() *TeamCoordination
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamCoordination.
func (*TeamCoordination) DeepCopyInto ¶ added in v0.7.0
func (in *TeamCoordination) DeepCopyInto(out *TeamCoordination)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TeamPool ¶ added in v0.7.0
type TeamPool struct {
// +optional
// +kubebuilder:validation:Minimum=0
// +kubebuilder:validation:Maximum=1024
MinMembers int `json:"min_members,omitempty"`
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=1024
MaxMembers int `json:"max_members"`
// +kubebuilder:validation:MinProperties=1
Templates map[string]WorkerTemplate `json:"templates"`
// +optional
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=86400
IdleTimeoutSeconds int `json:"idle_timeout_seconds,omitempty"`
// +optional
// +kubebuilder:validation:Minimum=1
// +kubebuilder:validation:Maximum=3600
DrainTimeoutSeconds int `json:"drain_timeout_seconds,omitempty"`
// +optional
// RetentionSeconds defaults to zero (retain indefinitely). A positive value
// explicitly authorizes cleanup of private retired-member data after this interval.
// +kubebuilder:validation:Minimum=0
// +kubebuilder:validation:Maximum=2592000
RetentionSeconds int `json:"retention_seconds,omitempty"`
// +optional
Draining bool `json:"draining,omitempty"`
}
TeamPool declares admission and lifecycle bounds, never runtime membership. Members receive independent ordinary seat identities from explicit templates.
func (*TeamPool) DeepCopy ¶ added in v0.7.0
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamPool.
func (*TeamPool) DeepCopyInto ¶ added in v0.7.0
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TeamTemplate ¶
type TeamTemplate struct {
// +optional
Extends string `json:"extends,omitempty"`
// +optional
InstructionRefs []string `json:"instruction_refs,omitempty"`
// Roles maps a role key to its role instruction reference.
// +optional
Roles map[string]string `json:"roles,omitempty"`
// +optional
SharedMemory map[string][]string `json:"shared_memory,omitempty"`
// +optional
Parameters map[string]string `json:"parameters,omitempty"`
}
TeamTemplate is a reusable team definition. Templates may extend one other template; merge rules are documented in pkg/compile.
func (*TeamTemplate) DeepCopy ¶
func (in *TeamTemplate) DeepCopy() *TeamTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeamTemplate.
func (*TeamTemplate) DeepCopyInto ¶
func (in *TeamTemplate) DeepCopyInto(out *TeamTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ToolsAccess ¶ added in v0.2.0
type ToolsAccess struct {
// Binaries that must be on the seat image's PATH, e.g. git, gh, curl.
Binaries []string `json:"binaries"`
}
func (*ToolsAccess) DeepCopy ¶ added in v0.2.0
func (in *ToolsAccess) DeepCopy() *ToolsAccess
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolsAccess.
func (*ToolsAccess) DeepCopyInto ¶ added in v0.2.0
func (in *ToolsAccess) DeepCopyInto(out *ToolsAccess)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type WorkPublication ¶ added in v0.2.0
type WorkPublication struct {
// Connection is a tracker connection, e.g. a Linear connection.
Connection string `json:"connection"`
// Stores are the shared memory stores whose work items are published.
Stores []string `json:"stores"`
}
WorkPublication publishes the work items of shared memory stores to a tracker connection. Personal stores are never published.
func (*WorkPublication) DeepCopy ¶ added in v0.2.0
func (in *WorkPublication) DeepCopy() *WorkPublication
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkPublication.
func (*WorkPublication) DeepCopyInto ¶ added in v0.2.0
func (in *WorkPublication) DeepCopyInto(out *WorkPublication)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type WorkerTemplate ¶ added in v0.7.0
type WorkerTemplate struct {
// Seat is the explicit independent participant configuration for native pools.
// It is forbidden in legacy elastic_teams, whose authority stays read-only.
// +optional
Seat *Seat `json:"seat,omitempty"`
// Instructions is nonempty and limited to 8192 UTF-8 bytes by the compiler.
// +kubebuilder:validation:MinLength=1
// +kubebuilder:validation:MaxLength=8192
Instructions string `json:"instructions"`
// +optional
// +kubebuilder:validation:MaxItems=7
ToolNames []string `json:"tool_names,omitempty"`
// +optional
HarnessProfile string `json:"harness_profile,omitempty"`
// +optional
ExecutionProfile string `json:"execution_profile,omitempty"`
}
WorkerTemplate fixes a role and a read-only subset of the requester's tools. Optional profile selectors assert the enabled requester's profiles; workers inherit its pinned runtime resources, model and authorization rather than escalating.
func (*WorkerTemplate) DeepCopy ¶ added in v0.7.0
func (in *WorkerTemplate) DeepCopy() *WorkerTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkerTemplate.
func (*WorkerTemplate) DeepCopyInto ¶ added in v0.7.0
func (in *WorkerTemplate) DeepCopyInto(out *WorkerTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type WorkspaceBinding ¶
type WorkspaceBinding struct {
// +optional
Persistent bool `json:"persistent,omitempty"`
Shared []string `json:"shared,omitempty"`
}
func (*WorkspaceBinding) DeepCopy ¶
func (in *WorkspaceBinding) DeepCopy() *WorkspaceBinding
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkspaceBinding.
func (*WorkspaceBinding) DeepCopyInto ¶
func (in *WorkspaceBinding) DeepCopyInto(out *WorkspaceBinding)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.