taskflow

package
v0.0.0-...-8520432 Latest Latest
Warning

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

Go to latest
Published: Aug 28, 2026 License: AGPL-3.0 Imports: 17 Imported by: 0

Documentation

Overview

Package taskflow 提供 taskflow 服务的客户端实现

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsVirtualMachineNotFound

func IsVirtualMachineNotFound(err error) bool

IsVirtualMachineNotFound 判断删除失败是否表示远端环境已经不存在。

Types

type AgentResourceAssetRef

type AgentResourceAssetRef struct {
	Name          string `json:"name,omitempty"`
	Version       string `json:"version,omitempty"`
	ZipURL        string `json:"zip_url,omitempty"`
	EntryFilename string `json:"entry_filename,omitempty"`
}

AgentResourceAssetRef mirrors codingmatrix proto agent.AgentResources_AssetRef. Skills + plugins share the same shape.

type AgentResources

type AgentResources struct {
	Skills  []*AgentResourceAssetRef `json:"skills,omitempty"`
	Plugins []*AgentResourceAssetRef `json:"plugins,omitempty"`
}

AgentResources mirrors codingmatrix proto agent.AgentResources. Skills / Plugins are pointer slices so a nil AgentResources or nil sub-slice serializes as JSON null / "absent" — matching the proto wire behaviour. Rules and opencode.json travel on the legacy ConfigFile inline channel, not here.

type ApplyWebClientIPReq

type ApplyWebClientIPReq struct {
	ClientIP string `json:"client_ip"`
}

ApplyWebClientIPReq 同步 Web 客户端 IP 请求

type AskUserQuestionResponse

type AskUserQuestionResponse struct {
	TaskId      string `json:"task_id,omitempty"`
	RequestId   string `json:"request_id,omitempty"`
	AnswersJson string `json:"answers_json,omitempty"`
	Cancelled   bool   `json:"cancelled,omitempty"`
	LogStore    string `json:"log_store,omitempty"`
}

AskUserQuestionResponse 用户回答 AI 提问的响应

type Attachment

type Attachment struct {
	URL      string `json:"url"`
	Filename string `json:"filename"`
}

type BatchGetVmIDsByEnvIDsReq

type BatchGetVmIDsByEnvIDsReq struct {
	EnvIDs []string `json:"env_ids" validate:"required,max=100"`
}

BatchGetVmIDsByEnvIDsReq 批量查询 environmentID -> vmID 映射请求

type CheckTokenReq

type CheckTokenReq struct {
	Token     string `json:"token" validate:"required"`
	MachineID string `json:"machine_id"`
}

CheckTokenReq 认证请求

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client taskflow 客户端

func (*Client) FileManager

func (c *Client) FileManager() FileManager

func (*Client) Host

func (c *Client) Host() Hoster

func (*Client) PortForwarder

func (c *Client) PortForwarder() PortForwarder

func (*Client) Stats

func (c *Client) Stats(ctx context.Context) (*Stats, error)

Stats 获取统计信息

func (*Client) TaskLive

func (c *Client) TaskLive(ctx context.Context, taskID string, flush bool, fn func(*TaskChunk) error) error

TaskLive 连接 taskflow 的 task-live WebSocket 并处理消息流

func (*Client) TaskManager

func (c *Client) TaskManager() TaskManager

func (*Client) VirtualMachiner

func (c *Client) VirtualMachiner() VirtualMachiner

type Clienter

type Clienter interface {
	VirtualMachiner() VirtualMachiner
	Host() Hoster
	FileManager() FileManager
	TaskManager() TaskManager
	PortForwarder() PortForwarder
	Stats(ctx context.Context) (*Stats, error)
	TaskLive(ctx context.Context, taskID string, flush bool, fn func(*TaskChunk) error) error
}

Clienter taskflow 客户端接口

func NewClient

func NewClient(opts ...Opt) Clienter

NewClient 创建 taskflow 客户端

type ClosePortForward

type ClosePortForward struct {
	ID        string `json:"id" query:"id" validate:"required"`
	ForwardID string `json:"forward_id"`
}

ClosePortForward 关闭端口转发请求

type CloseTerminalReq

type CloseTerminalReq struct {
	ID         string `json:"id" query:"id"`
	TerminalID string `json:"terminal_id" query:"terminal_id"`
}

CloseTerminalReq 关闭终端请求

type CodingAgent

type CodingAgent int

CodingAgent 编码代理类型

const (
	CodingAgentCodex CodingAgent = iota + 1
	CodingAgentClaude
	CodingAgentMCAIReview
	CodingAgentOpenCode
)

type CodingConfig

type CodingConfig struct{}

CodingConfig 编码配置

type Condition

type Condition struct {
	Type               string          `json:"type,omitempty"`
	Status             ConditionStatus `json:"status,omitempty"`
	Reason             string          `json:"reason,omitempty"`
	Message            string          `json:"message,omitempty"`
	LastTransitionTime int64           `json:"last_transition_time,omitempty"`
	Progress           *int32          `json:"progress,omitempty"`
}

Condition 细粒度状态条件

type ConditionStatus

type ConditionStatus int32

ConditionStatus 条件状态

const (
	ConditionStatusUnknown    ConditionStatus = 0
	ConditionStatusInProgress ConditionStatus = 1
	ConditionStatusTrue       ConditionStatus = 2
	ConditionStatusFalse      ConditionStatus = 3
)

type ConfigFile

type ConfigFile struct {
	Path    string  `json:"path"`
	Content string  `json:"content"`
	Mode    *uint32 `json:"mode,omitempty"`
}

ConfigFile 配置文件

type CreatePortForward

type CreatePortForward struct {
	ID           string   `json:"id" query:"id" validate:"required"`
	UserID       string   `json:"user_id"`
	LocalPort    int32    `json:"local_port"`
	WhitelistIPs []string `json:"whitelist_ips"`
}

CreatePortForward 创建端口转发请求

type CreateTaskReq

type CreateTaskReq struct {
	ID             uuid.UUID         `json:"id"`
	VMID           string            `json:"vm_id"`
	SystemPrompt   string            `json:"system_prompt,omitempty"`
	Text           string            `json:"text,omitempty"`
	Attachments    []Attachment      `json:"attachments,omitempty"`
	LLM            LLM               `json:"llm,omitzero"`
	CodingAgent    CodingAgent       `json:"coding_agent,omitempty"`
	Configs        []ConfigFile      `json:"configs,omitzero"`
	McpConfigs     []McpServerConfig `json:"mcp_configs,omitzero"`
	Env            map[string]string `json:"env,omitempty"`
	LogStore       string            `json:"log_store,omitempty"`
	AgentResources *AgentResources   `json:"agent_resources,omitempty"` // skill/plugin presigned URLs + rule content forwarded to codingmatrix agent
}

CreateTaskReq 创建任务请求

type CreateVirtualMachineReq

type CreateVirtualMachineReq struct {
	ID                  string         `json:"id,omitempty"`
	UserID              string         `json:"user_id" validate:"required"`
	HostID              string         `json:"host_id" validate:"required"`
	HostName            string         `json:"hostname"`
	Git                 Git            `json:"git"`
	ZipUrl              string         `json:"zip_url"`
	ImageURL            string         `json:"image_url"`
	ProxyURL            string         `json:"proxy_url"`
	TaskID              uuid.UUID      `json:"task_id"`
	LLM                 LLMProviderReq `json:"llm"`
	Cores               string         `json:"cores"`
	Memory              uint64         `json:"memory"`
	InstallCodingAgents bool           `json:"install_coding_agents"`
	Envs                []string       `json:"envs,omitempty"`
	LogStore            string         `json:"log_store,omitempty"`
}

CreateVirtualMachineReq 创建虚拟机请求

type DeleteVirtualMachineReq

type DeleteVirtualMachineReq struct {
	HostID string `json:"host_id" query:"host_id" validate:"required"`
	UserID string `json:"user_id" query:"user_id" validate:"required"`
	ID     string `json:"id" query:"id" validate:"required"`
}

DeleteVirtualMachineReq 删除虚拟机请求

type File

type File struct {
	Name          string   `json:"name"`
	User          string   `json:"user"`
	Size          uint64   `json:"size"`
	Kind          FileKind `json:"kind"`
	SymlinkTarget string   `json:"symlink_target,omitempty"`
	SymlinkKind   FileKind `json:"symlink_kind,omitempty"`
	UnixMode      uint32   `json:"unix_mode"`
	CreatedAt     int64    `json:"created_at"`
	AccessedAt    int64    `json:"accessed_at"`
	UpdatedAt     int64    `json:"updated_at"`
}

File 文件信息

type FileKind

type FileKind string

FileKind 文件类型

const (
	FileKindUnknown FileKind = "unknown"
	FileKindFile    FileKind = "file"
	FileKindDir     FileKind = "dir"
	FileKindSymlink FileKind = "symlink"
)

type FileManager

type FileManager interface {
	Operate(ctx context.Context, req FileReq) ([]*File, error)
	Download(ctx context.Context, req FileReq, fn func(uint64, []byte) error) error
	Upload(ctx context.Context, req FileReq, data <-chan []byte) error
}

FileManager 文件管理接口

type FileOP

type FileOP string

FileOP 文件操作类型

const (
	FileOpSave     FileOP = "save"
	FileOpDelete   FileOP = "delete"
	FileOpCopy     FileOP = "copy"
	FileOpMove     FileOP = "move"
	FileOpMkdir    FileOP = "mkdir"
	FileOpList     FileOP = "list"
	FileOpDownload FileOP = "download"
)

type FileReq

type FileReq struct {
	Operate FileOP `json:"operate" query:"operate"`
	UserID  string `json:"user_id" query:"user_id"`
	ID      string `json:"id" query:"id"`
	Path    string `json:"path,omitempty" query:"path"`
	Source  string `json:"source,omitempty" query:"source"`
	Target  string `json:"target,omitempty" query:"target"`
	Content string `json:"content,omitempty" query:"content"`
}

FileReq 文件操作请求

type GetCodingConfigReq

type GetCodingConfigReq struct {
	VmID string `json:"vm_id"`
}

GetCodingConfigReq 获取编码配置请求

type GetTaskLogStoreReq

type GetTaskLogStoreReq struct {
	TaskID uuid.UUID `json:"task_id" validate:"required"`
}

type GetTaskLogStoreResp

type GetTaskLogStoreResp struct {
	LogStore string `json:"log_store"`
}

type GetTaskStreamIPsReq

type GetTaskStreamIPsReq struct {
	TaskID string `json:"task_id"`
}

GetTaskStreamIPsReq 获取任务 WebSocket 连接 IP 请求

type GetTaskStreamIPsResp

type GetTaskStreamIPsResp struct {
	IPs []string `json:"ips"`
}

GetTaskStreamIPsResp 获取任务 WebSocket 连接 IP 响应

type Git

type Git struct {
	URL      string `json:"url"`
	Token    string `json:"token"`
	ProxyURL string `json:"proxy_url"`
	Branch   string `json:"branch,omitempty"`
	Username string `json:"username,omitempty"`
	Email    string `json:"email,omitempty"`
}

Git 仓库信息

type GitCredentialRequest

type GitCredentialRequest struct {
	TaskID   string `json:"task_id"`  // 任务 id
	VMID     string `json:"vm_id"`    // 虚拟机 id
	Protocol string `json:"protocol"` // git 协议 (e.g., "https")
	Host     string `json:"host"`     // git server host (e.g., "gitlab.example.com")
	Path     string `json:"path"`     // 仓库路径 (e.g., "owner/repo.git")
}

GitCredentialRequest git 凭证请求

type GitCredentialResponse

type GitCredentialResponse struct {
	Username *string `json:"username,omitempty"`
	Password *string `json:"password,omitempty"`
	Error    *string `json:"error,omitempty"`
}

GitCredentialResponse git 凭证响应

type HibernateVirtualMachineReq

type HibernateVirtualMachineReq struct {
	HostID        string `json:"host_id" query:"host_id" validate:"required"` // 宿主机 id
	UserID        string `json:"user_id" query:"user_id" validate:"required"` // 用户id
	ID            string `json:"id" query:"id" validate:"required"`           // 虚拟机 id
	EnvironmentID string `json:"environment_id" query:"environment_id"`       // environment id
}

type Host

type Host struct {
	ID         string `json:"id"`
	UserID     string `json:"user_id"`
	Hostname   string `json:"hostname"`
	Arch       string `json:"arch"`
	OS         string `json:"os"`
	Name       string `json:"name"`
	Cores      int32  `json:"cores"`
	Memory     uint64 `json:"memory"`
	Disk       uint64 `json:"disk"`
	PublicIP   string `json:"public_ip"`
	InternalIP string `json:"internal_ip"`
	TTL        TTL    `json:"ttl"`
	CreatedAt  int64  `json:"created_at"`
	Version    string `json:"version"`
}

Host 宿主机信息

type Hoster

type Hoster interface {
	List(ctx context.Context, userID string) (map[string]*Host, error)
	IsOnline(ctx context.Context, req *IsOnlineReq[string]) (*IsOnlineResp, error)
}

Hoster 宿主机管理接口

type IsOnlineReq

type IsOnlineReq[T any] struct {
	IDs []T `json:"ids"`
}

IsOnlineReq 在线状态查询请求

type IsOnlineResp

type IsOnlineResp struct {
	OnlineMap map[string]bool `json:"online_map"`
}

IsOnlineResp 在线状态查询响应

type LLM

type LLM struct {
	ApiKey      string   `json:"api_key"`
	BaseURL     string   `json:"base_url"`
	Model       string   `json:"model"`
	ApiType     string   `json:"api_type,omitempty"` // 接口类型 anthropic | openai
	Temperature *float32 `json:"temperature,omitempty"`
}

LLM 模型配置

type LLMInfo

type LLMInfo struct {
	ApiKey      string   `json:"api_key"`
	BaseURL     string   `json:"base_url"`
	Model       string   `json:"model"`
	Temperature *float32 `json:"temperature,omitempty"`
}

LLMInfo LLM 信息

type LLMProvider

type LLMProvider string

LLMProvider 模型提供商

const (
	LlmProviderOpenAI LLMProvider = "openai"
)

type LLMProviderReq

type LLMProviderReq struct {
	Provider    LLMProvider `json:"provider"`
	ApiKey      string      `json:"api_key"`
	BaseURL     string      `json:"base_url"`
	Model       string      `json:"model"`
	Temperature *float32    `json:"temperature,omitempty"`
}

LLMProviderReq 模型提供商配置

type ListLLMReq

type ListLLMReq struct {
	VmID   string `json:"vm_id" validate:"required"`
	HostID string `json:"host_id" validate:"required"`
}

ListLLMReq 列出 LLM 请求

type ListPortforwadReq

type ListPortforwadReq struct {
	ID        string `json:"id" query:"id" validate:"required"` // 虚拟机 id
	RequestId string `json:"request_id,omitempty"`
}

type ListPortforwadResp

type ListPortforwadResp struct {
	RequestId string             `json:"request_id,omitempty"`
	Ports     []*PortForwardInfo `json:"ports"`
}

type McpHttpHeader

type McpHttpHeader struct {
	Name  string `json:"name,omitempty"`
	Value string `json:"value,omitempty"`
}

McpHttpHeader MCP HTTP 头

type McpServerConfig

type McpServerConfig struct {
	Type    string            `json:"type,omitempty"`
	Name    string            `json:"name,omitempty"`
	Url     *string           `json:"url,omitempty"`
	Headers []*McpHttpHeader  `json:"headers,omitempty"`
	Command *string           `json:"command,omitempty"`
	Args    []string          `json:"args,omitempty"`
	Env     map[string]string `json:"env,omitempty"`
}

McpServerConfig MCP 服务器配置

type Opt

type Opt func(*Client)

Opt 客户端选项

func WithDebug

func WithDebug(debug bool) Opt

WithDebug 开启调试模式

func WithLogger

func WithLogger(logger *slog.Logger) Opt

WithLogger 设置日志

type PortForwardInfo

type PortForwardInfo struct {
	Port         int32    `json:"port"`
	Status       string   `json:"status"`
	Process      string   `json:"process"`
	ForwardID    *string  `json:"forward_id"`
	AccessURL    *string  `json:"access_url"`
	CreatedAt    int64    `json:"created_at"`
	Success      bool     `json:"success"`
	ErrorMessage string   `json:"error_message,omitempty"`
	WhitelistIPs []string `json:"whitelist_ips"`
}

PortForwardInfo 端口转发信息

type PortForwarder

type PortForwarder interface {
	List(ctx context.Context, req ListPortforwadReq) (*ListPortforwadResp, error)
	Create(ctx context.Context, req CreatePortForward) (*PortForwardInfo, error)
	Close(ctx context.Context, req ClosePortForward) error
	Update(ctx context.Context, req UpdatePortForward) (*PortForwardInfo, error)
}

PortForwarder 端口转发管理接口

type RepoEntryMode

type RepoEntryMode int32

RepoEntryMode 文件条目类型

const (
	RepoEntryModeUnspecified RepoEntryMode = 0
	RepoEntryModeFile        RepoEntryMode = 1
	RepoEntryModeExecutable  RepoEntryMode = 2
	RepoEntryModeSymlink     RepoEntryMode = 3
	RepoEntryModeTree        RepoEntryMode = 4
	RepoEntryModeSubmodule   RepoEntryMode = 5
)

type RepoFileChangeInfo

type RepoFileChangeInfo struct {
	Path      string  `json:"path,omitempty"`
	Status    string  `json:"status,omitempty"`
	Additions *int32  `json:"additions,omitempty"`
	Deletions *int32  `json:"deletions,omitempty"`
	OldPath   *string `json:"old_path,omitempty"`
}

RepoFileChangeInfo 单个文件变动信息

type RepoFileChanges

type RepoFileChanges struct {
	TaskId     string                `json:"task_id,omitempty"`
	RequestId  string                `json:"request_id,omitempty"`
	Changes    []*RepoFileChangeInfo `json:"changes,omitempty"`
	Branch     *string               `json:"branch,omitempty"`
	CommitHash *string               `json:"commit_hash,omitempty"`
	Success    bool                  `json:"success"`
	Error      *string               `json:"error,omitempty"`
}

RepoFileChanges 文件变动列表响应

type RepoFileChangesReq

type RepoFileChangesReq struct {
	TaskId    string `json:"task_id,omitempty"`
	RequestId string `json:"request_id"`
}

RepoFileChangesReq 文件变动列表请求

type RepoFileDiff

type RepoFileDiff struct {
	TaskId    string  `json:"task_id,omitempty"`
	RequestId string  `json:"request_id"`
	Path      string  `json:"path,omitempty"`
	Diff      string  `json:"diff,omitempty"`
	Success   bool    `json:"success"`
	Error     *string `json:"error,omitempty"`
}

RepoFileDiff 文件 diff 响应

type RepoFileDiffReq

type RepoFileDiffReq struct {
	TaskId       string `json:"task_id,omitempty"`
	RequestId    string `json:"request_id"`
	Path         string `json:"path"`
	Unified      *bool  `json:"unified"`
	ContextLines *int32 `json:"context_lines"`
}

RepoFileDiffReq 文件 diff 请求

type RepoFileInfo

type RepoFileInfo struct {
	Name          string        `json:"name,omitempty"`
	Path          string        `json:"path,omitempty"`
	EntryMode     RepoEntryMode `json:"entry_mode,omitempty"`
	Size          int64         `json:"size,omitempty"`
	ModifiedAt    int64         `json:"modified_at,omitempty"`
	Mode          *uint32       `json:"mode,omitempty"`
	SymlinkTarget *string       `json:"symlink_target,omitempty"`
}

RepoFileInfo 文件信息

type RepoListFiles

type RepoListFiles struct {
	TaskId    string          `json:"task_id,omitempty"`
	RequestId string          `json:"request_id"`
	Path      string          `json:"path,omitempty"`
	Files     []*RepoFileInfo `json:"files,omitempty"`
	Success   bool            `json:"success,omitempty"`
	Error     *string         `json:"error,omitempty"`
}

RepoListFiles 列出文件响应

type RepoListFilesReq

type RepoListFilesReq struct {
	TaskId        string  `json:"task_id,omitempty"`
	RequestId     string  `json:"request_id"`
	Path          string  `json:"path"`
	GlobPattern   *string `json:"glob_pattern"`
	IncludeHidden bool    `json:"include_hidden"`
}

RepoListFilesReq 列出文件请求

type RepoReadFile

type RepoReadFile struct {
	TaskId      string  `json:"task_id,omitempty"`
	RequestId   string  `json:"request_id"`
	Path        string  `json:"path,omitempty"`
	Content     []byte  `json:"content,omitempty"`
	TotalSize   int64   `json:"total_size,omitempty"`
	Offset      int64   `json:"offset,omitempty"`
	Length      int64   `json:"length,omitempty"`
	IsTruncated bool    `json:"is_truncated,omitempty"`
	Success     bool    `json:"success"`
	Error       *string `json:"error,omitempty"`
}

RepoReadFile 读取文件响应

type RepoReadFileReq

type RepoReadFileReq struct {
	TaskId    string `json:"task_id,omitempty"`
	RequestId string `json:"request_id"`
	Path      string `json:"path"`
	Offset    *int64 `json:"offset"`
	Length    *int64 `json:"length"`
}

RepoReadFileReq 读取文件请求

type ReportEntry

type ReportEntry struct {
	ID     string `json:"id"`
	Source string `json:"source"`
	Ts     int64  `json:"ts"`
	Data   []byte `json:"data"`
}

ReportEntry 对应服务端 /internal/ws/reports 推送的 JSON 结构

type ReportSubscribeReq

type ReportSubscribeReq struct {
	ID      string `json:"id" query:"id" validate:"required"`
	History int64  `json:"history" query:"history"`
	FromID  string `json:"from_id" query:"from_id"`
}

ReportSubscribeReq 报告订阅请求

type Reporter

type Reporter interface {
	Stop()
	BlockRead(fn func(ReportEntry)) error
}

Reporter 报告订阅接口

type ReportsStream

type ReportsStream struct {
	// contains filtered or unexported fields
}

ReportsStream 实现 Reporter

func (*ReportsStream) BlockRead

func (r *ReportsStream) BlockRead(fn func(ReportEntry)) error

BlockRead 持续读取 WS 文本消息, 反序列化为 ReportEntry 并回调

func (*ReportsStream) Stop

func (r *ReportsStream) Stop()

Stop 终止订阅

type Resp

type Resp[T any] struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Data    T      `json:"data,omitempty"`
}

Resp 通用 API 响应包装

type RestartTaskReq

type RestartTaskReq struct {
	ID              uuid.UUID            `json:"id"`
	RequestId       string               `json:"request_id,omitempty"`
	LoadSession     bool                 `json:"load_session"`
	ExecutionConfig *TaskExecutionConfig `json:"execution_config,omitempty"`
	LogStore        string               `json:"log_store,omitempty"`
}

RestartTaskReq 重启任务请求

type RestartTaskResp

type RestartTaskResp struct {
	ID        uuid.UUID `json:"id"`
	RequestId string    `json:"request_id,omitempty"`
	Success   bool      `json:"success"`
	Message   string    `json:"message"`
	SessionID string    `json:"session_id"`
}

RestartTaskResp 重启任务响应

type ResumeVirtualMachineReq

type ResumeVirtualMachineReq struct {
	HostID        string `json:"host_id" query:"host_id" validate:"required"` // 宿主机 id
	UserID        string `json:"user_id" query:"user_id" validate:"required"` // 用户id
	ID            string `json:"id" query:"id" validate:"required"`           // 虚拟机 id
	EnvironmentID string `json:"environment_id" query:"environment_id"`       // environment id
}

type Shell

type Shell struct {
	// contains filtered or unexported fields
}

Shell WebSocket 终端 shell 实现,支持自动重连和 keepalive

func (*Shell) BlockRead

func (s *Shell) BlockRead(fn func(TerminalData)) error

BlockRead 阻塞读取终端数据,支持自动重连

func (*Shell) Stop

func (s *Shell) Stop()

Stop 停止终端连接

func (*Shell) Write

func (s *Shell) Write(data TerminalData) error

Write 向终端写入数据,支持超时和自动重连

type Sheller

type Sheller interface {
	Write(TerminalData) error
	Stop()
	BlockRead(fn func(TerminalData)) error
}

Sheller 终端 shell 接口

type Stats

type Stats struct {
	OnlineHostCount        int `json:"online_host_count"`
	OnlineTaskCount        int `json:"online_task_count"`
	OnlineVMCount          int `json:"online_vm_count"`
	OnlineTerminalCount    int `json:"online_terminal_count"`
	UsingTerminalUserCount int `json:"using_terminal_user_count"`
}

Stats 统计信息

type TTL

type TTL struct {
	Kind    TTLKind `json:"kind"`
	Seconds int64   `json:"seconds"`
}

TTL 生命周期

type TTLKind

type TTLKind uint8

TTLKind TTL 类型

const (
	TTLForever   TTLKind = iota + 1 // 永不过期
	TTLCountDown                    // 计时器过期
)

type Task

type Task struct {
	ID          uuid.UUID    `json:"id"`
	Text        string       `json:"text"`
	Attachments []Attachment `json:"attachments,omitempty"`
	Image       string       `json:"image"`
	LogStore    string       `json:"log_store,omitempty"`
}

Task 任务信息

type TaskApproveReq

type TaskApproveReq struct {
	ID          uuid.UUID `json:"id"`
	AutoApprove *bool     `json:"auto_approve,omitempty"`
}

TaskApproveReq 任务自动批准请求

type TaskChunk

type TaskChunk struct {
	Data      []byte `json:"data,omitempty"`
	Event     string `json:"event"`
	Kind      string `json:"kind"`
	Seq       uint64 `json:"seq,omitempty"`
	Timestamp int64  `json:"timestamp,omitempty"`
}

TaskChunk Loki 日志中的任务数据块

type TaskExecutionConfig

type TaskExecutionConfig struct {
	Envs           map[string]string `json:"envs,omitempty"`
	ConfigFiles    []ConfigFile      `json:"config_files,omitempty"`
	McpServers     []McpServerConfig `json:"mcp_servers,omitempty"`
	AgentResources *AgentResources   `json:"agent_resources,omitempty"`
}

TaskExecutionConfig 任务运行配置

type TaskManager

type TaskManager interface {
	Create(ctx context.Context, req CreateTaskReq) error
	Stop(ctx context.Context, req TaskReq) error
	Restart(ctx context.Context, req RestartTaskReq) (*RestartTaskResp, error)
	Cancel(ctx context.Context, req TaskReq) error
	Continue(ctx context.Context, req TaskReq) error
	AutoApprove(ctx context.Context, req TaskApproveReq) error
	AskUserQuestion(ctx context.Context, req AskUserQuestionResponse) error
	ListFiles(ctx context.Context, req RepoListFilesReq) (*RepoListFiles, error)
	ReadFile(ctx context.Context, req RepoReadFileReq) (*RepoReadFile, error)
	FileDiff(ctx context.Context, req RepoFileDiffReq) (*RepoFileDiff, error)
	FileChanges(ctx context.Context, req RepoFileChangesReq) (*RepoFileChanges, error)
}

TaskManager 任务管理接口

type TaskReq

type TaskReq struct {
	VirtualMachine *VirtualMachine `json:"virtual_machine,omitempty"`
	Task           *Task           `json:"task,omitempty"`
}

TaskReq 任务请求(通用)

type Terminal

type Terminal struct {
	ID             string `json:"id"`
	Title          string `json:"title"`
	ConnectedCount uint32 `json:"connected_count"`
	CreatedAt      int64  `json:"created_at"`
}

Terminal 终端信息

type TerminalData

type TerminalData struct {
	Data      []byte        `json:"data,omitempty"`
	Connected bool          `json:"connected"`
	Resize    *TerminalSize `json:"resize,omitempty"`
	Error     *string       `json:"error,omitempty"`
}

TerminalData 终端数据

type TerminalMode

type TerminalMode uint8

TerminalMode 终端模式

const (
	TerminalModeReadWrite TerminalMode = iota
	TerminalModeReadOnly
)

type TerminalReq

type TerminalReq struct {
	ID         string       `json:"id" query:"id"`
	Mode       TerminalMode `json:"mode" query:"mode"`
	TerminalID string       `json:"terminal_id" query:"terminal_id" validate:"required"`
	Exec       string       `json:"exec" query:"exec"`
	TerminalSize
}

TerminalReq 终端连接请求

type TerminalSize

type TerminalSize struct {
	Col uint32 `json:"col" query:"col"`
	Row uint32 `json:"row" query:"row"`
}

TerminalSize 终端尺寸

type Token

type Token struct {
	Kind        TokenKind  `json:"kind"`
	User        *TokenUser `json:"user"`
	ParentToken string     `json:"parent_token"`
	Token       string     `json:"token"`
	AccessToken string     `json:"access_token,omitempty"`
	TaskID      uuid.UUID  `json:"task_id"`
	SessionID   string     `json:"session_id"`
	RemoteIP    string     `json:"remote_ip"`
	Version     string     `json:"version"`
}

Token 认证结果

type TokenKind

type TokenKind string

TokenKind token 类型

const (
	OrchestratorToken TokenKind = "orshcestrator"
	AgentToken        TokenKind = "agent"
)

type TokenTeam

type TokenTeam struct {
	ID   string `json:"id"`
	Name string `json:"name"`
}

TokenTeam token 中的团队信息

type TokenUser

type TokenUser struct {
	ID        string     `json:"id"`
	Name      string     `json:"name"`
	AvatarURL string     `json:"avatar_url"`
	Email     string     `json:"email"`
	Team      *TokenTeam `json:"team"`
}

TokenUser token 中的用户信息

type UpdatePortForward

type UpdatePortForward struct {
	ID           string   `json:"id" query:"id" validate:"required"`
	ForwardID    string   `json:"forward_id"`
	WhitelistIPs []string `json:"whitelist_ips"`
}

UpdatePortForward 更新端口转发请求

type VirtualMachine

type VirtualMachine struct {
	ID            string               `json:"id"`
	AccessToken   string               `json:"access_token,omitempty"`
	EnvironmentID string               `json:"environment_id"`
	HostID        string               `json:"host_id"`
	Hostname      string               `json:"hostname"`
	Arch          string               `json:"arch"`
	OS            string               `json:"os"`
	Name          string               `json:"name"`
	Repository    string               `json:"repository"`
	Status        VirtualMachineStatus `json:"status"`
	StatusMessage string               `json:"status_message"`
	Cores         int32                `json:"cores"`
	Memory        uint64               `json:"memory"`
	Disk          uint64               `json:"disk"`
	TTL           TTL                  `json:"ttl"`
	ExternalIP    string               `json:"external_ip"`
	CreatedAt     int64                `json:"created_at"`
	Version       string               `json:"version"`
}

VirtualMachine 虚拟机信息

type VirtualMachineCondition

type VirtualMachineCondition struct {
	EnvID      string       `json:"env_id"`
	Conditions []*Condition `json:"conditions,omitempty"`
}

VirtualMachineCondition 虚拟机条件集合

type VirtualMachineInfoReq

type VirtualMachineInfoReq struct {
	ID     string `json:"id" query:"id"`
	UserID string `json:"user_id" query:"user_id"`
}

VirtualMachineInfoReq 虚拟机信息查询请求

type VirtualMachineStatus

type VirtualMachineStatus string

VirtualMachineStatus 虚拟机状态

const (
	VirtualMachineStatusUnknown    VirtualMachineStatus = "unknown"
	VirtualMachineStatusPending    VirtualMachineStatus = "pending"
	VirtualMachineStatusOnline     VirtualMachineStatus = "online"
	VirtualMachineStatusOffline    VirtualMachineStatus = "offline"
	VirtualMachineStatusHibernated VirtualMachineStatus = "hibernated"
)

type VirtualMachiner

type VirtualMachiner interface {
	Create(ctx context.Context, req *CreateVirtualMachineReq) (*VirtualMachine, error)
	Delete(ctx context.Context, req *DeleteVirtualMachineReq) error
	Hibernate(ctx context.Context, req *HibernateVirtualMachineReq) error
	Resume(ctx context.Context, req *ResumeVirtualMachineReq) error
	List(ctx context.Context, id string) ([]*VirtualMachine, error)
	Info(ctx context.Context, req VirtualMachineInfoReq) (*VirtualMachine, error)
	Terminal(ctx context.Context, req *TerminalReq) (Sheller, error)
	Reports(ctx context.Context, req ReportSubscribeReq) (Reporter, error)
	TerminalList(ctx context.Context, id string) ([]*Terminal, error)
	CloseTerminal(ctx context.Context, req *CloseTerminalReq) error
	IsOnline(ctx context.Context, req *IsOnlineReq[string]) (*IsOnlineResp, error)
}

VirtualMachiner 虚拟机管理接口

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL