Documentation
¶
Index ¶
- type AdminWorkspaceInfo
- type AgentInfo
- type AgentRegistrationCode
- type DB
- func (db *DB) AddWorkspaceMember(workspaceID, userID, role string) error
- func (db *DB) AddWorkspaceVolume(id, workspaceID, pvcName, mountPath string) error
- func (db *DB) BindSandboxToChannel(sandboxID, channelID string) error
- func (db *DB) ConsumeAgentRegistrationCode(code string) (*AgentRegistrationCode, error)
- func (db *DB) CountSandboxesByWorkspace(workspaceID string) (int, error)
- func (db *DB) CountUsers() (int, error)
- func (db *DB) CountWorkspacesOwnedByUser(userID string) (int, error)
- func (db *DB) CreateAgentRegistrationCode(code, userID, workspaceID string, expiresAt time.Time) error
- func (db *DB) CreateIMBinding(sandboxID, provider, botID, userID string) error
- func (db *DB) CreateIMChannel(workspaceID, provider, botID, userID string) (string, error)
- func (db *DB) CreateLocalSandbox(...) error
- func (db *DB) CreateOIDCIdentity(provider, subject, userID string, email *string) error
- func (db *DB) CreateSandbox(...) error
- func (db *DB) CreateToken(token, userID string, expiresAt time.Time) error
- func (db *DB) CreateUser(id, email, passwordHash string) error
- func (db *DB) CreateUserWithEmail(id string, passwordHash *string, email string) error
- func (db *DB) CreateWorkspace(id, name string) error
- func (db *DB) DeleteExpiredTokens() error
- func (db *DB) DeleteIMBinding(sandboxID, provider, botID string) error
- func (db *DB) DeleteIMChannel(channelID string) error
- func (db *DB) DeleteModelserverConnection(workspaceID string) error
- func (db *DB) DeleteSandbox(id string) error
- func (db *DB) DeleteUserQuota(userID string) error
- func (db *DB) DeleteWorkspace(id string) error
- func (db *DB) DeleteWorkspaceLLMConfig(workspaceID string) error
- func (db *DB) DeleteWorkspaceQuota(workspaceID string) error
- func (db *DB) GetActiveBindings(provider string) ([]*IMBinding, error)
- func (db *DB) GetActiveBindingsForSandbox(sandboxID string) ([]*IMBinding, error)
- func (db *DB) GetAgentInfo(sandboxID string) (*AgentInfo, error)
- func (db *DB) GetAllChannelMeta(channelID, userID string) (map[string]string, error)
- func (db *DB) GetAllProviderMeta(sandboxID, provider, botID, userID string) (map[string]string, error)
- func (db *DB) GetAllWorkspaceNamespaces() ([]string, error)
- func (db *DB) GetChannelMeta(channelID, userID, key string) (string, error)
- func (db *DB) GetChannelRequireMention(channelID string) (bool, error)
- func (db *DB) GetIMChannel(channelID string) (*IMChannel, error)
- func (db *DB) GetIMChannelForSandbox(sandboxID string) (*IMChannel, error)
- func (db *DB) GetIMCredentials(sandboxID, provider, botID string) (botToken, baseURL string, err error)
- func (db *DB) GetModelserverConnection(workspaceID string) (*ModelserverConnection, error)
- func (db *DB) GetOIDCIdentity(provider, subject string) (*OIDCIdentity, error)
- func (db *DB) GetPasswordHash(userID string) (*string, error)
- func (db *DB) GetProviderMeta(sandboxID, provider, botID, userID, key string) (string, error)
- func (db *DB) GetSandbox(id string) (*Sandbox, error)
- func (db *DB) GetSandboxByProxyToken(proxyToken string) (*Sandbox, error)
- func (db *DB) GetSandboxByShortID(shortID string) (*Sandbox, error)
- func (db *DB) GetSandboxByTunnelToken(sandboxID, tunnelToken string) (*Sandbox, error)
- func (db *DB) GetSandboxForChannel(channelID string) (sandboxID, podIP, bridgeSecret string, err error)
- func (db *DB) GetSystemSetting(key string) (string, error)
- func (db *DB) GetUserByEmail(email string) (*User, error)
- func (db *DB) GetUserByID(id string) (*User, error)
- func (db *DB) GetUserQuota(userID string) (*UserQuota, error)
- func (db *DB) GetWorkspace(id string) (*Workspace, error)
- func (db *DB) GetWorkspaceLLMConfig(workspaceID string) (*WorkspaceLLMConfig, error)
- func (db *DB) GetWorkspaceMember(workspaceID, userID string) (*WorkspaceMember, error)
- func (db *DB) GetWorkspaceMemberRole(workspaceID, userID string) (string, error)
- func (db *DB) GetWorkspaceQuota(workspaceID string) (*WorkspaceQuota, error)
- func (db *DB) HasModelserverConnection(workspaceID string) (bool, error)
- func (db *DB) IsWorkspaceMember(workspaceID, userID string) (bool, error)
- func (db *DB) ListAllActiveChannels(provider string) ([]IMChannel, error)
- func (db *DB) ListAllActiveSandboxNames() ([]string, error)
- func (db *DB) ListAllSandboxes() ([]*Sandbox, error)
- func (db *DB) ListAllUsers() ([]*User, error)
- func (db *DB) ListAllWorkspaces() ([]*Workspace, error)
- func (db *DB) ListAllWorkspacesAdmin() ([]*AdminWorkspaceInfo, error)
- func (db *DB) ListIMBindings(sandboxID, provider string) ([]*IMBinding, error)
- func (db *DB) ListIMChannels(workspaceID string) ([]IMChannel, error)
- func (db *DB) ListIdleSandboxes(defaultTimeoutSeconds int) ([]*Sandbox, error)
- func (db *DB) ListSandboxesByWorkspace(workspaceID string) ([]*Sandbox, error)
- func (db *DB) ListWorkspaceMembers(workspaceID string) ([]*WorkspaceMember, error)
- func (db *DB) ListWorkspaceVolumes(workspaceID string) ([]WorkspaceVolume, error)
- func (db *DB) ListWorkspacesByUser(userID string) ([]*Workspace, error)
- func (db *DB) ListWorkspacesWithoutNamespace() ([]*Workspace, error)
- func (db *DB) RemoveWorkspaceMember(workspaceID, userID string) error
- func (db *DB) SaveIMChannelCredentials(channelID, botToken, baseURL string) error
- func (db *DB) SaveIMCredentials(sandboxID, provider, botID, botToken, baseURL string) error
- func (db *DB) SetModelserverConnection(c *ModelserverConnection) error
- func (db *DB) SetPasswordHash(userID, hash string) error
- func (db *DB) SetSystemSetting(key, value string) error
- func (db *DB) SetUserQuota(userID string, maxWorkspaces *int) error
- func (db *DB) SetWorkspaceLLMConfig(workspaceID, baseURL, apiKey string, models []LLMModel) error
- func (db *DB) SetWorkspaceNamespace(id, namespace string) error
- func (db *DB) SetWorkspaceQuota(workspaceID string, maxSandboxes *int, maxSandboxCPU *int, ...) error
- func (db *DB) SumWorkspaceSandboxResources(workspaceID string) (cpuMillis int64, memBytes int64, err error)
- func (db *DB) UnbindSandboxFromChannel(sandboxID string) error
- func (db *DB) UpdateCursor(sandboxID, provider, botID, cursor string) error
- func (db *DB) UpdateIMChannelCursor(channelID, cursor string) error
- func (db *DB) UpdateIMChannelSettings(channelID string, requireMention bool) error
- func (db *DB) UpdateModelserverTokens(workspaceID, accessToken, refreshToken string, expiresAt time.Time) error
- func (db *DB) UpdateOIDCIdentityEmail(provider, subject, email string) error
- func (db *DB) UpdateSandboxActivity(id string) error
- func (db *DB) UpdateSandboxHeartbeat(id string) error
- func (db *DB) UpdateSandboxName(id, name string) error
- func (db *DB) UpdateSandboxNanoclawBridgeSecret(id, secret string) error
- func (db *DB) UpdateSandboxPodIP(id, podIP string) error
- func (db *DB) UpdateSandboxSandboxName(id, sandboxName string) error
- func (db *DB) UpdateSandboxStatus(id, status string) error
- func (db *DB) UpdateUserEmail(userID, email string) error
- func (db *DB) UpdateUserName(userID, name string) error
- func (db *DB) UpdateUserPicture(userID, picture string) error
- func (db *DB) UpdateUserRole(userID, role string) error
- func (db *DB) UpdateWorkspaceMemberRole(workspaceID, userID, role string) error
- func (db *DB) UpdateWorkspaceName(id, name string) error
- func (db *DB) UpsertAgentInfo(info *AgentInfo) error
- func (db *DB) UpsertChannelMeta(channelID, userID, key, value string) error
- func (db *DB) UpsertProviderMeta(sandboxID, provider, botID, userID, key, value string) error
- func (db *DB) ValidateToken(token string) (string, error)
- type IMBinding
- type IMChannel
- type LLMModel
- type ModelserverConnection
- type OIDCIdentity
- type Sandbox
- type User
- type UserQuota
- type Workspace
- type WorkspaceLLMConfig
- type WorkspaceMember
- type WorkspaceQuota
- type WorkspaceVolume
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AdminWorkspaceInfo ¶ added in v0.18.3
type AdminWorkspaceInfo struct {
Workspace
OwnerID *string
OwnerEmail *string
OwnerName *string
OwnerPicture *string
SandboxCount int
}
AdminWorkspaceInfo holds enriched workspace data for the admin panel.
type AgentInfo ¶ added in v0.16.0
type AgentInfo struct {
SandboxID string `json:"sandbox_id"`
Hostname string `json:"hostname"`
OS string `json:"os"`
Platform string `json:"platform"`
PlatformVersion string `json:"platform_version"`
KernelArch string `json:"kernel_arch"`
CPUModelName string `json:"cpu_model_name"`
CPUCountLogical int `json:"cpu_count_logical"`
MemoryTotal int64 `json:"memory_total"`
DiskTotal int64 `json:"disk_total"`
DiskFree int64 `json:"disk_free"`
AgentVersion string `json:"agent_version"`
OpencodeVersion string `json:"opencode_version"`
Workdir string `json:"workdir"`
HostInfo json.RawMessage `json:"host_info"`
CPUInfo json.RawMessage `json:"cpu_info"`
MemoryInfo json.RawMessage `json:"memory_info"`
DiskInfo json.RawMessage `json:"disk_info"`
UpdatedAt time.Time `json:"updated_at"`
}
AgentInfo holds system information reported by a local agent.
type AgentRegistrationCode ¶
type DB ¶
DB wraps a *sql.DB with migration support.
func (*DB) AddWorkspaceMember ¶
func (*DB) AddWorkspaceVolume ¶ added in v0.9.0
func (*DB) BindSandboxToChannel ¶ added in v0.27.0
BindSandboxToChannel binds a sandbox to a workspace IM channel. Any other sandbox previously bound to this channel is unbound first.
func (*DB) ConsumeAgentRegistrationCode ¶
func (db *DB) ConsumeAgentRegistrationCode(code string) (*AgentRegistrationCode, error)
ConsumeAgentRegistrationCode atomically validates and marks a code as used. Returns the code record if valid, nil if not found/expired/used.
func (*DB) CountSandboxesByWorkspace ¶ added in v0.7.0
func (*DB) CountUsers ¶ added in v0.6.1
func (*DB) CountWorkspacesOwnedByUser ¶ added in v0.7.0
func (*DB) CreateAgentRegistrationCode ¶
func (db *DB) CreateAgentRegistrationCode(code, userID, workspaceID string, expiresAt time.Time) error
CreateAgentRegistrationCode inserts a new one-time registration code.
func (*DB) CreateIMBinding ¶ added in v0.27.0
CreateIMBinding inserts or updates an IM binding record. On conflict (same sandbox+provider+bot), updates user_id and bound_at.
func (*DB) CreateIMChannel ¶ added in v0.27.0
CreateIMChannel inserts or updates a workspace IM channel record. On conflict (same workspace+provider+bot), updates bound_at. Returns the channel ID.
func (*DB) CreateLocalSandbox ¶
func (db *DB) CreateLocalSandbox(id, workspaceID, name, sandboxType, opencodeToken, proxyToken, tunnelToken, shortID string) error
CreateLocalSandbox inserts a local agent sandbox with is_local=true.
func (*DB) CreateOIDCIdentity ¶
func (*DB) CreateSandbox ¶
func (*DB) CreateUser ¶
func (*DB) CreateUserWithEmail ¶
func (*DB) CreateWorkspace ¶
func (*DB) DeleteExpiredTokens ¶
func (*DB) DeleteIMBinding ¶ added in v0.27.0
DeleteIMBinding deletes an IM binding by sandbox, provider, and bot ID.
func (*DB) DeleteIMChannel ¶ added in v0.27.0
DeleteIMChannel deletes a workspace IM channel by ID.
func (*DB) DeleteModelserverConnection ¶ added in v0.22.0
func (*DB) DeleteSandbox ¶
func (*DB) DeleteUserQuota ¶ added in v0.7.0
func (*DB) DeleteWorkspace ¶
func (*DB) DeleteWorkspaceLLMConfig ¶ added in v0.22.0
func (*DB) DeleteWorkspaceQuota ¶ added in v0.9.0
func (*DB) GetActiveBindings ¶ added in v0.27.0
GetActiveBindings returns all bindings with credentials for a given provider, filtered to sandboxes of type 'nanoclaw' with status 'running'.
func (*DB) GetActiveBindingsForSandbox ¶ added in v0.27.0
GetActiveBindingsForSandbox returns all bindings with credentials for a specific sandbox.
func (*DB) GetAgentInfo ¶ added in v0.16.0
GetAgentInfo returns agent info for a sandbox, or nil,nil if not found.
func (*DB) GetAllChannelMeta ¶ added in v0.27.0
GetAllChannelMeta retrieves all metadata entries for a user on a channel.
func (*DB) GetAllProviderMeta ¶ added in v0.27.0
func (db *DB) GetAllProviderMeta(sandboxID, provider, botID, userID string) (map[string]string, error)
GetAllProviderMeta retrieves all metadata entries for a user.
func (*DB) GetAllWorkspaceNamespaces ¶
func (*DB) GetChannelMeta ¶ added in v0.27.0
GetChannelMeta retrieves a channel-specific metadata value.
func (*DB) GetChannelRequireMention ¶ added in v0.27.0
GetChannelRequireMention returns the require_mention flag for a channel.
func (*DB) GetIMChannel ¶ added in v0.27.0
GetIMChannel retrieves a single workspace IM channel by ID.
func (*DB) GetIMChannelForSandbox ¶ added in v0.27.0
GetIMChannelForSandbox returns the IM channel bound to a sandbox, if any. Returns sql.ErrNoRows if the sandbox has no channel bound.
func (*DB) GetIMCredentials ¶ added in v0.27.0
func (db *DB) GetIMCredentials(sandboxID, provider, botID string) (botToken, baseURL string, err error)
GetIMCredentials retrieves bot credentials for an IM binding.
func (*DB) GetModelserverConnection ¶ added in v0.22.0
func (db *DB) GetModelserverConnection(workspaceID string) (*ModelserverConnection, error)
func (*DB) GetOIDCIdentity ¶
func (db *DB) GetOIDCIdentity(provider, subject string) (*OIDCIdentity, error)
func (*DB) GetPasswordHash ¶ added in v0.9.0
GetPasswordHash returns the bcrypt hash for the given user, or nil if no credential exists.
func (*DB) GetProviderMeta ¶ added in v0.27.0
GetProviderMeta retrieves a provider-specific metadata value.
func (*DB) GetSandboxByProxyToken ¶
func (*DB) GetSandboxByShortID ¶
func (*DB) GetSandboxByTunnelToken ¶
GetSandboxByTunnelToken finds a local sandbox by its tunnel token.
func (*DB) GetSandboxForChannel ¶ added in v0.27.0
func (db *DB) GetSandboxForChannel(channelID string) (sandboxID, podIP, bridgeSecret string, err error)
GetSandboxForChannel returns the running sandbox bound to a channel. Returns sql.ErrNoRows if no sandbox is bound or none is running.
func (*DB) GetSystemSetting ¶ added in v0.7.0
func (*DB) GetUserQuota ¶ added in v0.7.0
func (*DB) GetWorkspaceLLMConfig ¶ added in v0.22.0
func (db *DB) GetWorkspaceLLMConfig(workspaceID string) (*WorkspaceLLMConfig, error)
func (*DB) GetWorkspaceMember ¶
func (db *DB) GetWorkspaceMember(workspaceID, userID string) (*WorkspaceMember, error)
func (*DB) GetWorkspaceMemberRole ¶
func (*DB) GetWorkspaceQuota ¶ added in v0.9.0
func (db *DB) GetWorkspaceQuota(workspaceID string) (*WorkspaceQuota, error)
func (*DB) HasModelserverConnection ¶ added in v0.22.0
func (*DB) IsWorkspaceMember ¶
func (*DB) ListAllActiveChannels ¶ added in v0.27.0
ListAllActiveChannels returns all IM channels with credentials for a given provider. Used by RestoreIMBridgePollers.
func (*DB) ListAllActiveSandboxNames ¶
func (*DB) ListAllSandboxes ¶ added in v0.6.1
func (*DB) ListAllUsers ¶ added in v0.6.1
func (*DB) ListAllWorkspaces ¶ added in v0.6.1
func (*DB) ListAllWorkspacesAdmin ¶ added in v0.18.3
func (db *DB) ListAllWorkspacesAdmin() ([]*AdminWorkspaceInfo, error)
func (*DB) ListIMBindings ¶ added in v0.27.0
ListIMBindings returns all IM bindings for a sandbox, optionally filtered by provider. If provider is empty, all bindings are returned.
func (*DB) ListIMChannels ¶ added in v0.27.0
ListIMChannels returns all IM channels for a workspace.
func (*DB) ListIdleSandboxes ¶
func (*DB) ListSandboxesByWorkspace ¶
func (*DB) ListWorkspaceMembers ¶
func (db *DB) ListWorkspaceMembers(workspaceID string) ([]*WorkspaceMember, error)
func (*DB) ListWorkspaceVolumes ¶ added in v0.9.0
func (db *DB) ListWorkspaceVolumes(workspaceID string) ([]WorkspaceVolume, error)
func (*DB) ListWorkspacesByUser ¶
func (*DB) ListWorkspacesWithoutNamespace ¶
func (*DB) RemoveWorkspaceMember ¶
func (*DB) SaveIMChannelCredentials ¶ added in v0.27.0
SaveIMChannelCredentials stores bot credentials for a workspace IM channel.
func (*DB) SaveIMCredentials ¶ added in v0.27.0
SaveIMCredentials stores bot credentials for an IM binding.
func (*DB) SetModelserverConnection ¶ added in v0.22.0
func (db *DB) SetModelserverConnection(c *ModelserverConnection) error
func (*DB) SetPasswordHash ¶ added in v0.9.0
SetPasswordHash upserts a password hash for the given user.
func (*DB) SetSystemSetting ¶ added in v0.7.0
func (*DB) SetUserQuota ¶ added in v0.7.0
func (*DB) SetWorkspaceLLMConfig ¶ added in v0.22.0
func (*DB) SetWorkspaceNamespace ¶
func (*DB) SetWorkspaceQuota ¶ added in v0.9.0
func (*DB) SumWorkspaceSandboxResources ¶ added in v0.7.0
func (db *DB) SumWorkspaceSandboxResources(workspaceID string) (cpuMillis int64, memBytes int64, err error)
SumWorkspaceSandboxResources returns the total CPU (millicores) and memory (bytes) allocated by non-offline sandboxes in a workspace.
func (*DB) UnbindSandboxFromChannel ¶ added in v0.27.0
UnbindSandboxFromChannel removes the IM channel binding from a sandbox.
func (*DB) UpdateCursor ¶ added in v0.27.0
UpdateCursor persists the long-poll cursor for an IM binding.
func (*DB) UpdateIMChannelCursor ¶ added in v0.27.0
UpdateIMChannelCursor persists the long-poll cursor for an IM channel.
func (*DB) UpdateIMChannelSettings ¶ added in v0.27.0
UpdateIMChannelSettings updates channel settings.
func (*DB) UpdateModelserverTokens ¶ added in v0.22.0
func (*DB) UpdateOIDCIdentityEmail ¶ added in v0.9.0
func (*DB) UpdateSandboxActivity ¶
func (*DB) UpdateSandboxHeartbeat ¶
UpdateSandboxHeartbeat updates the last_heartbeat_at timestamp.
func (*DB) UpdateSandboxName ¶ added in v0.16.0
func (*DB) UpdateSandboxNanoclawBridgeSecret ¶ added in v0.26.0
UpdateSandboxNanoclawBridgeSecret stores the bridge secret for a nanoclaw sandbox.
func (*DB) UpdateSandboxPodIP ¶
func (*DB) UpdateSandboxSandboxName ¶
func (*DB) UpdateSandboxStatus ¶
func (*DB) UpdateUserEmail ¶
func (*DB) UpdateUserName ¶ added in v0.9.0
func (*DB) UpdateUserPicture ¶ added in v0.9.0
func (*DB) UpdateUserRole ¶ added in v0.6.1
func (*DB) UpdateWorkspaceMemberRole ¶
func (*DB) UpdateWorkspaceName ¶ added in v0.16.0
func (*DB) UpsertAgentInfo ¶ added in v0.16.0
UpsertAgentInfo inserts or updates agent info for a sandbox.
func (*DB) UpsertChannelMeta ¶ added in v0.27.0
UpsertChannelMeta inserts or updates a channel-specific metadata entry.
func (*DB) UpsertProviderMeta ¶ added in v0.27.0
UpsertProviderMeta inserts or updates a provider-specific metadata entry.
type IMBinding ¶ added in v0.27.0
type IMBinding struct {
ID int
SandboxID string
Provider string
BotID string
UserID string
BotToken string
BaseURL string
Cursor string
BoundAt time.Time
}
IMBinding represents a row in the sandbox_im_bindings table.
type IMChannel ¶ added in v0.27.0
type IMChannel struct {
ID string
WorkspaceID string
Provider string
BotID string
UserID string
BotToken string
BaseURL string
Cursor string
RequireMention bool
BoundAt time.Time
}
IMChannel represents a row in the workspace_im_channels table.
type ModelserverConnection ¶ added in v0.22.0
type ModelserverConnection struct {
WorkspaceID string `json:"workspace_id"`
ProjectID string `json:"project_id"`
ProjectName string `json:"project_name"`
UserID string `json:"user_id"`
AccessToken string `json:"-"`
RefreshToken string `json:"-"`
TokenExpiresAt time.Time `json:"token_expires_at"`
Models []LLMModel `json:"models"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
type OIDCIdentity ¶
type Sandbox ¶
type Sandbox struct {
ID string
WorkspaceID string
Name string
Type string
Status string
IsLocal bool
ShortID sql.NullString
SandboxName sql.NullString
PodIP sql.NullString
ProxyToken sql.NullString
OpencodeToken sql.NullString
OpenclawToken sql.NullString
TunnelToken sql.NullString
NanoclawBridgeSecret sql.NullString
LastActivityAt sql.NullTime
CreatedAt time.Time
PausedAt sql.NullTime
LastHeartbeatAt sql.NullTime
CPU *int
Memory *int64
IdleTimeout *int
}