contract

package
v0.2.9 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AITeammateTemplate added in v0.1.22

type AITeammateTemplate struct {
	ID             uint      `json:"id"`
	Code           string    `json:"code"`
	Name           string    `json:"name"`
	Description    string    `json:"description"`
	Avatar         string    `json:"avatar"`
	Provider       string    `json:"provider"`
	SystemPrompt   string    `json:"system_prompt"`
	Expertise      []string  `json:"expertise"`
	Category       string    `json:"category"`
	Tags           []string  `json:"tags"`
	SortOrder      int       `json:"sort_order"`
	UseCount       int64     `json:"use_count"`
	RecommendCount int64     `json:"recommend_count"`
	Status         string    `json:"status"`
	IsSystem       bool      `json:"is_system"`
	CreatedAt      time.Time `json:"created_at"`
	UpdatedAt      time.Time `json:"updated_at"`
}

AITeammateTemplate is the API view for a preset AI teammate template.

type AITeammateTemplateList added in v0.1.22

type AITeammateTemplateList struct {
	Total  int64                `json:"total"`
	Offset int                  `json:"offset"`
	Limit  int                  `json:"limit"`
	Items  []AITeammateTemplate `json:"items"`
}

AITeammateTemplateList is a paginated template list response.

type AITeammateTemplateService added in v0.1.22

type AITeammateTemplateService interface {
	ListAITeammateTemplates(ctx context.Context, req *ListAITeammateTemplateRequest) (*AITeammateTemplateList, error)
	GetAITeammateTemplate(ctx context.Context, req *GetAITeammateTemplateRequest) (*AITeammateTemplate, error)
	IncrementAITeammateTemplateUseCount(ctx context.Context, req *IncrementAITeammateTemplateCountRequest) (*AITeammateTemplate, error)
	IncrementAITeammateTemplateRecommendCount(ctx context.Context, req *IncrementAITeammateTemplateCountRequest) (*AITeammateTemplate, error)
}

AITeammateTemplateService defines preset AI teammate template operations.

type AITeammateTemplateStatus added in v0.1.22

type AITeammateTemplateStatus string

AITeammateTemplateStatus AI 队友模板状态。

const (
	// AITeammateTemplateStatusActive 表示模板可展示和使用。
	AITeammateTemplateStatusActive AITeammateTemplateStatus = "active"
	// AITeammateTemplateStatusInactive 表示模板暂不展示和使用。
	AITeammateTemplateStatusInactive AITeammateTemplateStatus = "inactive"
)

type AccountCredential

type AccountCredential struct {
	AccountID    string            `json:"account_id"`
	GrantType    string            `json:"grant_type"`
	AccessToken  string            `json:"access_token,omitempty"`
	RefreshToken string            `json:"refresh_token,omitempty"`
	ExpiresAt    *time.Time        `json:"expires_at,omitempty"`
	Metadata     map[string]string `json:"metadata,omitempty"`
}

AccountCredential 表示账户当前可用的授权材料

type AddFileRequest added in v0.1.2

type AddFileRequest struct {
	PublicID string `json:"public_id" binding:"required"`
}

AddFileRequest 将已上传文件关联到项目的请求

type AddMessageRequest

type AddMessageRequest struct {
	Role          string                    `json:"role" binding:"required"`
	Content       string                    `json:"content" binding:"required"`
	ExecutionMode agent.ExecutionMode       `json:"execution_mode,omitempty" binding:"omitempty,oneof=default plan"`
	AssistantIDs  []string                  `json:"assistant_ids,omitempty"`
	MessageType   string                    `json:"message_type,omitempty"`
	Chunks        []types.MessageChunk      `json:"chunks,omitempty"`
	Attachments   []types.MessageAttachment `json:"attachments,omitempty"`
	Thinking      string                    `json:"thinking,omitempty"`
	Metadata      *types.ObjectMetadata     `json:"metadata,omitempty"`
	Usage         *types.MessageUsage       `json:"usage,omitempty"`
}

AddMessageRequest adds a message to a session.

type AuthOrgInfo

type AuthOrgInfo struct {
	ID           uint   `json:"id"`
	PublicID     string `json:"public_id"`
	Code         string `json:"code"`
	Name         string `json:"name"`
	IsDefault    bool   `json:"is_default,omitempty"`
	CreatedByUin uint   `json:"created_by_uin,omitempty"`
}

type AuthService

type AuthService interface {
	RegisterByEmail(ctx context.Context, req *RegisterByEmailRequest) (*AuthTokenResponse, error)
	LoginByEmail(ctx context.Context, req *LoginByEmailRequest) (*AuthTokenResponse, error)
	SendPhoneLoginCode(ctx context.Context, req *SendPhoneLoginCodeRequest) (*SendPhoneLoginCodeResponse, error)
	LoginByPhoneCode(ctx context.Context, req *LoginByPhoneCodeRequest) (*AuthTokenResponse, error)
	RefreshToken(ctx context.Context, req *RefreshTokenRequest) (*AuthTokenResponse, error)
	SwitchOrganization(ctx context.Context, req *SwitchOrganizationRequest) (*AuthTokenResponse, error)
	CreateOrganization(ctx context.Context, req *CreateOrganizationRequest) (*AuthTokenResponse, error)
	AuthSession(ctx context.Context) (*AuthSessionResponse, error)
}

AuthService defines local account authentication capabilities.

type AuthSessionResponse added in v0.1.23

type AuthSessionResponse struct {
	UserInfo      AuthUserInfo  `json:"user_info"`
	Org           AuthOrgInfo   `json:"org"`
	Organizations []AuthOrgInfo `json:"organizations,omitempty"`
}

type AuthTokenResponse

type AuthTokenResponse struct {
	LoginStatus   string        `json:"login_status"`
	JwtToken      string        `json:"jwt_token"`
	RefreshToken  string        `json:"refresh_token"`
	ExpiredAt     int64         `json:"expired_at"`
	Uin           uint          `json:"uin"`
	UserInfo      AuthUserInfo  `json:"user_info"`
	Org           AuthOrgInfo   `json:"org"`
	Organizations []AuthOrgInfo `json:"organizations,omitempty"`
}

type AuthUserInfo

type AuthUserInfo struct {
	ID          uint   `json:"id"`
	PublicID    string `json:"public_id"`
	Name        string `json:"name"`
	Email       string `json:"email"`
	Phone       string `json:"phone,omitempty"`
	GithubLogin string `json:"github_login,omitempty"`
	AvatarURL   string `json:"avatar_url,omitempty"`
}

type AuthorizationCallbackRequest

type AuthorizationCallbackRequest struct {
	Provider string `json:"provider"`
	State    string `json:"state"`
	Code     string `json:"code"`
}

AuthorizationCallbackRequest 表示 OAuth 回调请求

type AuthorizationResult

type AuthorizationResult struct {
	Account    *AuthorizedAccount `json:"account"`
	Credential *AccountCredential `json:"credential"`
}

AuthorizationResult 表示完成授权后的结果

type AuthorizedAccount

type AuthorizedAccount struct {
	ID                string            `json:"id"`
	UserID            string            `json:"user_id"`
	Provider          string            `json:"provider"`
	OwnerType         string            `json:"owner_type"`
	AccountType       string            `json:"account_type"`
	ExternalAccountID string            `json:"external_account_id"`
	DisplayName       string            `json:"display_name"`
	Scopes            []string          `json:"scopes"`
	Status            string            `json:"status"`
	Metadata          map[string]string `json:"metadata,omitempty"`
	CreatedAt         time.Time         `json:"created_at"`
	UpdatedAt         time.Time         `json:"updated_at"`
}

AuthorizedAccount 表示授权后可被系统复用的第三方账户

type CancelSessionRunRequest added in v0.1.17

type CancelSessionRunRequest struct {
	SessionID   string `json:"session_id" binding:"required"`
	RunID       string `json:"run_id,omitempty"`
	AssistantID string `json:"assistant_id,omitempty"`
	Reason      string `json:"reason,omitempty"`
}

CancelSessionRunRequest is the request body for cancelling a session agent run.

type CancelSessionRunResponse added in v0.1.17

type CancelSessionRunResponse struct {
	SessionID string `json:"session_id"`
	Status    string `json:"status"` // "cancelled" | "no_active_run"
}

CancelSessionRunResponse is the response for a cancel session run request.

type CompleteSessionMessageRequest

type CompleteSessionMessageRequest struct {
	SessionID         string                  `json:"session_id"`
	Content           string                  `json:"content"`
	ReplyToMessageIDs []string                `json:"reply_to_message_ids,omitempty"`
	Chunks            []types.MessageChunk    `json:"chunks,omitempty"`
	Artifacts         []types.MessageArtifact `json:"artifacts,omitempty"`
	Metadata          *types.ObjectMetadata   `json:"metadata,omitempty"`
	Usage             *types.MessageUsage     `json:"usage,omitempty"`
	Seq               int64                   `json:"seq"`
	CreatedAt         time.Time               `json:"created_at"`
	RunID             string                  `json:"run_id,omitempty"`
	AssistantID       uint                    `json:"assistant_id,omitempty"`
}

CompleteSessionMessageRequest persists a completed assistant message.

type CreateDepartmentRequest added in v0.1.23

type CreateDepartmentRequest struct {
	Name     string `json:"name" binding:"required"`
	ParentID uint   `json:"parent_id,omitempty"`
	Sort     uint   `json:"sort,omitempty"`
	OrgID    uint   `json:"org_id" binding:"required"`
}

type CreateDigitalAssistantFromTemplateRequest added in v0.1.22

type CreateDigitalAssistantFromTemplateRequest struct {
	TemplateID   uint     `json:"template_id" binding:"required"`
	Name         string   `json:"name"`
	Description  string   `json:"description"`
	Avatar       string   `json:"avatar"`
	SystemPrompt string   `json:"system_prompt"`
	Expertise    []string `json:"expertise"`
}

CreateDigitalAssistantFromTemplateRequest 基于模板创建数字助手请求

type CreateDigitalAssistantRequest

type CreateDigitalAssistantRequest struct {
	Name         string   `json:"name" binding:"required"`
	Description  string   `json:"description"`
	Avatar       string   `json:"avatar"`
	SystemPrompt string   `json:"system_prompt"`
	Expertise    []string `json:"expertise"`
	TemplateID   *uint    `json:"template_id,omitempty"`
	Source       string   `json:"source"`
}

CreateDigitalAssistantRequest 创建数字助手请求

type CreateLLMModelRequest

type CreateLLMModelRequest struct {
	Name        string                 `json:"name,omitempty"`
	Description string                 `json:"description,omitempty"`
	Provider    string                 `json:"provider,omitempty"`
	Model       string                 `json:"model" binding:"required"`
	BaseURL     string                 `json:"base_url" binding:"required"`
	APIKey      string                 `json:"api_key" binding:"required"`
	Status      string                 `json:"status,omitempty"`
	IsDefault   bool                   `json:"is_default,omitempty"`
	Config      map[string]interface{} `json:"config,omitempty"`
}

CreateLLMModelRequest 创建LLM模型配置请求

type CreateMemberDepartmentRequest added in v0.1.23

type CreateMemberDepartmentRequest struct {
	Uin          uint `json:"uin" binding:"required"`
	DepartmentID uint `json:"department_id" binding:"required"`
	IsPrimary    bool `json:"is_primary,omitempty"`
}

type CreateOrgMemberRequest

type CreateOrgMemberRequest struct {
	UserID        string `json:"user_id,omitempty"`
	OrgID         string `json:"org_id,omitempty"`
	IsDefault     bool   `json:"is_default,omitempty"`
	Name          string `json:"name,omitempty"`
	Phone         string `json:"phone,omitempty"`
	DepartmentIDs []uint `json:"department_ids,omitempty"`
}

type CreateOrgRequest

type CreateOrgRequest struct {
	Name        string `json:"name" binding:"required"`
	Code        string `json:"code" binding:"required"`
	Type        string `json:"type,omitempty"`
	Status      string `json:"status,omitempty"`
	Description string `json:"description,omitempty"`
	Address     string `json:"address,omitempty"`
	Website     string `json:"website,omitempty"`
}

type CreateOrganizationRequest added in v0.1.23

type CreateOrganizationRequest struct {
	Name string `json:"name" binding:"required"`
}

type CreateProjectRequest

type CreateProjectRequest struct {
	Name        string                 `json:"name" binding:"required"`
	Description string                 `json:"description,omitempty"`
	Objective   string                 `json:"objective,omitempty"`
	Metadata    map[string]interface{} `json:"metadata,omitempty"`
	Members     []MemberInput          `json:"members,omitempty"`
}

CreateProjectRequest 创建项目请求

type CreateSessionRequest

type CreateSessionRequest struct {
	SessionID   string                `json:"session_id,omitempty"`
	Type        string                `json:"type" binding:"required"`
	AssistantID string                `json:"assistant_id,omitempty"`
	Title       string                `json:"title,omitempty"`
	Metadata    *types.ObjectMetadata `json:"metadata,omitempty"`
	ExpiredAt   *time.Time            `json:"expired_at,omitempty"`
}

CreateSessionRequest creates a session.

type CreateTaskRequest

type CreateTaskRequest struct {
	ProjectID   string                 `json:"project_id" binding:"required"`
	Title       string                 `json:"title" binding:"required"`
	Description string                 `json:"description,omitempty"`
	TaskType    *string                `json:"task_type,omitempty"`
	AssigneeID  *uint                  `json:"assignee_id,omitempty"`
	Deadline    *time.Time             `json:"deadline,omitempty"`
	Metadata    map[string]interface{} `json:"metadata,omitempty"`
}

CreateTaskRequest 创建任务请求

type CreateUserRequest

type CreateUserRequest struct {
	GithubLogin string `json:"github_login" binding:"required"`
	Password    string `json:"password,omitempty"`
	Name        string `json:"name" binding:"required"`
	Email       string `json:"email,omitempty"`
	AvatarURL   string `json:"avatar_url,omitempty"`
	Bio         string `json:"bio,omitempty"`
	Company     string `json:"company,omitempty"`
	Location    string `json:"location,omitempty"`
}

type Department added in v0.1.23

type Department struct {
	ID        uint      `json:"id"`
	Name      string    `json:"name"`
	ParentID  uint      `json:"parent_id"`
	ParentIDs []uint    `json:"parent_ids,omitempty"`
	Sort      uint      `json:"sort"`
	OrgID     uint      `json:"org_id"`
	CreatedAt time.Time `json:"created_at"`
	UpdatedAt time.Time `json:"updated_at"`
}

type DepartmentList added in v0.1.23

type DepartmentList struct {
	Total  int64        `json:"total"`
	Offset int          `json:"offset"`
	Limit  int          `json:"limit"`
	Items  []Department `json:"items"`
}

type DepartmentService added in v0.1.23

type DepartmentService interface {
	CreateDepartment(ctx context.Context, req *CreateDepartmentRequest) (*Department, error)
	GetDepartment(ctx context.Context, id uint) (*Department, error)
	UpdateDepartment(ctx context.Context, id uint, req *UpdateDepartmentRequest) (*Department, error)
	DeleteDepartment(ctx context.Context, id uint) error
	ListDepartments(ctx context.Context, req *ListDepartmentsRequest) (*DepartmentList, error)
}

type DigitalAssistant

type DigitalAssistant struct {
	ID           uint                    `json:"id"`
	PublicID     string                  `json:"public_id"`
	OrgID        uint                    `json:"org_id"`
	OwnerID      uint                    `json:"owner_id"`
	Name         string                  `json:"name"`
	Description  string                  `json:"description"`
	Avatar       string                  `json:"avatar"`
	Status       string                  `json:"status"`
	Version      int                     `json:"version"`
	SystemPrompt string                  `json:"system_prompt"`
	Expertise    []string                `json:"expertise"`
	TemplateID   *uint                   `json:"template_id,omitempty"`
	Source       string                  `json:"source"`
	Deployment   *WorkerDeploymentStatus `json:"deployment,omitempty"`
	CreatedAt    time.Time               `json:"created_at"`
	UpdatedAt    time.Time               `json:"updated_at"`
}

DigitalAssistant 数字助手信息

type DigitalAssistantDetail

type DigitalAssistantDetail struct {
	DigitalAssistant
}

DigitalAssistantDetail 数字助手详情响应

type DigitalAssistantList

type DigitalAssistantList struct {
	Total  int64              `json:"total"`
	Offset int                `json:"offset"`
	Limit  int                `json:"limit"`
	Items  []DigitalAssistant `json:"items"`
}

DigitalAssistantList 数字助手列表响应

type DigitalAssistantService

type DigitalAssistantService interface {
	// 创建数字助手
	CreateDigitalAssistant(ctx context.Context, req *CreateDigitalAssistantRequest) (*DigitalAssistant, error)

	// 根据 ID 获取数字助手详情(从上下文获取权限信息)
	GetDigitalAssistantByID(ctx context.Context, id uint) (*DigitalAssistantDetail, error)

	// 根据 PublicID 获取数字助手详情(从上下文获取权限信息)
	GetDigitalAssistantByPublicID(ctx context.Context, publicID string) (*DigitalAssistantDetail, error)

	// 更新数字助手信息(从上下文获取权限信息)
	UpdateDigitalAssistant(ctx context.Context, id uint, req *UpdateDigitalAssistantRequest) (*DigitalAssistant, error)

	// 删除数字助手(从上下文获取权限信息)
	DeleteDigitalAssistant(ctx context.Context, id uint) error

	// 查询数字助手列表(从上下文获取权限信息)
	ListDigitalAssistant(ctx context.Context, req *ListDigitalAssistantRequest) (*DigitalAssistantList, error)

	// 更新数字助手状态(从上下文获取权限信息)
	UpdateDigitalAssistantStatus(ctx context.Context, id uint, req *UpdateDigitalAssistantStatusRequest) error

	// 基于模板创建数字助手(从上下文获取权限信息)
	CreateDigitalAssistantFromTemplate(ctx context.Context, req *CreateDigitalAssistantFromTemplateRequest) (*DigitalAssistant, error)
}

DigitalAssistantService 定义数字助手服务接口

type DigitalAssistantStatus

type DigitalAssistantStatus string

DigitalAssistantStatus 数字助手状态常量

const (
	DigitalAssistantStatusDraft    DigitalAssistantStatus = "draft"
	DigitalAssistantStatusActive   DigitalAssistantStatus = "active"
	DigitalAssistantStatusInactive DigitalAssistantStatus = "inactive"
	DigitalAssistantStatusArchived DigitalAssistantStatus = "archived"
)

type DownloadSkillRequest added in v0.1.13

type DownloadSkillRequest struct {
	Source  string `form:"source" json:"source"`
	SkillID string `form:"skill_id" json:"skill_id"`
	Version string `form:"version" json:"version"`
}

DownloadSkillRequest 从缓存下载 Skill 包的请求。

type FailedSessionMessageRequest

type FailedSessionMessageRequest struct {
	SessionID         string                  `json:"session_id"`
	Content           string                  `json:"content,omitempty"`
	ReplyToMessageIDs []string                `json:"reply_to_message_ids,omitempty"`
	Chunks            []types.MessageChunk    `json:"chunks,omitempty"`
	Artifacts         []types.MessageArtifact `json:"artifacts,omitempty"`
	ErrorMsg          string                  `json:"error_msg"`
	ErrorCode         string                  `json:"error_code,omitempty"`
	Status            string                  `json:"status,omitempty"`
	Metadata          *types.ObjectMetadata   `json:"metadata,omitempty"`
	Usage             *types.MessageUsage     `json:"usage,omitempty"`
	Seq               int64                   `json:"seq"`
	CreatedAt         time.Time               `json:"created_at"`
	RunID             string                  `json:"run_id,omitempty"`
	AssistantID       uint                    `json:"assistant_id,omitempty"`
}

FailedSessionMessageRequest persists a failed assistant message.

type FileDownloadInfo added in v0.1.2

type FileDownloadInfo struct {
	FileName  string
	MimeType  string
	Size      int64
	PublicURL string
}

type FileObjectInfo added in v0.1.2

type FileObjectInfo struct {
	Key          string `json:"key"`
	Filename     string `json:"filename"`
	OriginalName string `json:"original_name"`
	MimeType     string `json:"mime_type"`
	FileSize     int64  `json:"file_size"`
	PublicID     string `json:"public_id"`
	ModTime      int64  `json:"mod_time,omitempty"`
	URL          string `json:"url,omitempty"`
}

type FileService added in v0.1.2

type FileService interface {
	UploadFile(ctx context.Context, req *UploadFileRequest) (*UploadFileResult, error)
	DownloadFile(ctx context.Context, orgID uint, fileID string) (io.ReadCloser, *FileDownloadInfo, error)
	PresignDownloadURL(ctx context.Context, orgID uint, publicID, storageURI string) (string, error)
}

type FileTreeNode

type FileTreeNode struct {
	Name                string          `json:"name"`                  // 文件/目录名
	Path                string          `json:"path"`                  // 相对路径,兼做节点标识
	Type                string          `json:"type"`                  // "file" | "directory"
	Children            []*FileTreeNode `json:"children,omitempty"`    // 仅目录有
	Size                int64           `json:"size,omitempty"`        // 仅文件有
	MimeType            string          `json:"mime_type,omitempty"`   // 仅文件有
	ModTime             int64           `json:"mod_time,omitempty"`    // 最后修改时间,Unix 时间戳(秒)
	CreatedAt           int64           `json:"created_at,omitempty"`  // 文件首次 commit 时间,Unix 秒;未找到则为 0
	PublicID            string          `json:"public_id,omitempty"`   // 上传文件关联的 public_id,仓库文件为空
	StorageURI          string          `json:"storage_uri,omitempty"` // 对象存储 URI,用于文件预览
	Sha256              string          `json:"sha256,omitempty"`      // 文件 SHA256 校验值
	InitialFilePublicID string          `json:"initial_file_public_id,omitempty"`
	VersionNo           int             `json:"version_no,omitempty"`
	VersionLabel        string          `json:"version_label,omitempty"`
	VersionCount        int             `json:"version_count,omitempty"`
}

FileTreeNode 文件树节点,递归结构

type FileUploadResult

type FileUploadResult struct {
	PublicID string `json:"public_id"`     // 文件记录 public_id
	Path     string `json:"path"`          // 相对 repo 根目录的路径
	Filename string `json:"filename"`      // 文件名
	Size     int64  `json:"size"`          // 文件大小(字节)
	URL      string `json:"url,omitempty"` // 文件访问 URL
}

FileUploadResult 文件上传结果

type GetAITeammateTemplateRequest added in v0.1.22

type GetAITeammateTemplateRequest struct {
	ID   *uint   `json:"id,omitempty"`
	Code *string `json:"code,omitempty"`
}

GetAITeammateTemplateRequest gets a template by ID or code.

type GetSessionMessagesRequest added in v0.1.4

type GetSessionMessagesRequest struct {
	SessionID string `json:"session_id"`
	Page      int    `json:"page,omitempty"`
	PerPage   int    `json:"per_page,omitempty"`
}

GetSessionMessagesRequest queries paged session messages.

type ImportSkillFromGitHubRequest added in v0.1.14

type ImportSkillFromGitHubRequest struct {
	GitHubURL string `json:"github_url" binding:"required"`
}

ImportSkillFromGitHubRequest 从 GitHub 链接导入 Skill 的请求。

type ImportSkillRequest added in v0.1.10

type ImportSkillRequest struct {
	FileUploadID string `json:"file_upload_id" binding:"required"`
}

ImportSkillRequest 从已上传文件导入 Skill 的请求。

type ImportSkillResponse added in v0.1.10

type ImportSkillResponse struct {
	Status  string `json:"status"`
	Message string `json:"message"`
}

ImportSkillResponse Skill 导入响应。

type IncrementAITeammateTemplateCountRequest added in v0.1.22

type IncrementAITeammateTemplateCountRequest struct {
	ID   *uint   `json:"id,omitempty"`
	Code *string `json:"code,omitempty"`
}

IncrementAITeammateTemplateCountRequest increments a template counter.

type InstallSkillRequest added in v0.1.1

type InstallSkillRequest struct {
	Source  string `json:"source" binding:"required"`
	SkillID string `json:"skill_id" binding:"required"`
	Version string `json:"version,omitempty"`
}

InstallSkillRequest Skill 安装请求。

type InstallSkillResponse added in v0.1.1

type InstallSkillResponse struct {
	Status  string `json:"status"`
	Message string `json:"message"`
}

InstallSkillResponse Skill 安装响应(异步,仅表示已接受)。

type InstalledSkillsRequest added in v0.1.10

type InstalledSkillsRequest struct{}

InstalledSkillsRequest 查询 worker 上已安装 Skill 的请求。

type InstalledSkillsResponse added in v0.1.10

type InstalledSkillsResponse struct {
	Skills []SkillInstalledItem `json:"skills"`
}

InstalledSkillsResponse 已安装 Skill 列表响应。

type LLMModel

type LLMModel struct {
	ID           uint                   `json:"id"`
	OrgID        uint                   `json:"org_id"`
	Code         string                 `json:"code"`
	Name         string                 `json:"name"`
	Description  string                 `json:"description"`
	Provider     string                 `json:"provider"`
	Model        string                 `json:"model"`
	BaseURL      string                 `json:"base_url"`
	BaseURLHasV1 bool                   `json:"base_url_has_v1"`
	APIKey       string                 `json:"api_key"`
	MaxTokens    int                    `json:"max_tokens"`
	Temperature  float64                `json:"temperature"`
	TimeoutSec   int                    `json:"timeout_sec"`
	Status       string                 `json:"status"`
	IsDefault    bool                   `json:"is_default"`
	IsSystem     bool                   `json:"is_system"`
	Config       map[string]interface{} `json:"config,omitempty"`
	CreatedAt    time.Time              `json:"created_at"`
	UpdatedAt    time.Time              `json:"updated_at"`
}

LLMModel LLM模型配置响应结构

type LLMModelList

type LLMModelList struct {
	Total  int64      `json:"total"`
	Offset int        `json:"offset"`
	Limit  int        `json:"limit"`
	Items  []LLMModel `json:"items"`
}

LLMModelList LLM模型配置列表响应

type LLMModelService

type LLMModelService interface {
	// 创建LLM模型配置
	CreateLLMModel(ctx context.Context, req *CreateLLMModelRequest) (*LLMModel, error)

	// 根据ID或Code获取LLM模型配置
	GetLLMModel(ctx context.Context, id uint, code string) (*LLMModel, error)

	// 获取组织默认LLM模型配置
	GetDefaultLLMModel(ctx context.Context) (*LLMModel, error)

	// 更新LLM模型配置
	UpdateLLMModel(ctx context.Context, id uint, req *UpdateLLMModelRequest) (*LLMModel, error)

	// 删除LLM模型配置
	DeleteLLMModel(ctx context.Context, id uint) error

	// 查询LLM模型配置列表
	ListLLMModels(ctx context.Context, req *ListLLMModelsRequest) (*LLMModelList, error)

	// 测试LLM模型配置连通性
	TestLLMModel(ctx context.Context, req *TestLLMModelRequest) (*TestLLMModelResponse, error)
}

LLMModelService 定义LLM模型配置服务接口

type ListAITeammateTemplateRequest added in v0.1.22

type ListAITeammateTemplateRequest struct {
	Keyword  *string `json:"keyword,omitempty"`
	Category *string `json:"category,omitempty"`
	Status   *string `json:"status,omitempty"`
	types.Pagination
}

ListAITeammateTemplateRequest queries AI teammate templates.

type ListDepartmentsRequest added in v0.1.23

type ListDepartmentsRequest struct {
	Keyword  *string `json:"keyword,omitempty"`
	Name     *string `json:"name,omitempty"`
	ParentID *uint   `json:"parent_id,omitempty"`
	OrgID    *uint   `json:"org_id,omitempty"`
	types.Pagination
}

type ListDigitalAssistantRequest

type ListDigitalAssistantRequest struct {
	Status  *string `json:"status,omitempty"`
	Keyword *string `json:"keyword,omitempty"`
	Source  *string `json:"source,omitempty"`
	types.Pagination
}

ListDigitalAssistantRequest 查询数字助手列表请求

type ListLLMModelsRequest

type ListLLMModelsRequest struct {
	Provider *string `json:"provider,omitempty"`
	Status   *string `json:"status,omitempty"`
	Keyword  *string `json:"keyword,omitempty"`
	types.Pagination
}

ListLLMModelsRequest 查询LLM模型配置列表请求

type ListMemberDepartmentsRequest added in v0.1.23

type ListMemberDepartmentsRequest struct {
	Uin          *uint `json:"uin,omitempty"`
	DepartmentID *uint `json:"department_id,omitempty"`
	OrgID        *uint `json:"org_id,omitempty"`
	IsPrimary    *bool `json:"is_primary,omitempty"`
	types.Pagination
}

type ListOrgMembersRequest

type ListOrgMembersRequest struct {
	OrgID        *uint   `json:"org_id,omitempty"`
	UserID       *string `json:"user_id,omitempty"`
	DepartmentID *uint   `json:"department_id,omitempty"`
	types.Pagination
}

type ListOrgsRequest

type ListOrgsRequest struct {
	Keyword *string `json:"keyword,omitempty"`
	Status  *string `json:"status,omitempty"`
	types.Pagination
}

type ListProjectActivitiesRequest added in v0.2.1

type ListProjectActivitiesRequest struct {
	ProjectID   string   `json:"project_id,omitempty"`
	OperatorID  string   `json:"operator_id,omitempty"`
	OperatorIDs []string `json:"operator_ids,omitempty"`
	Cursor      string   `json:"cursor,omitempty"`
	Limit       int      `json:"limit,omitempty"`
}

ListProjectActivitiesRequest 查询项目操作动态请求。

type ListProjectsRequest

type ListProjectsRequest struct {
	Keyword *string `json:"keyword,omitempty"`
	Status  *string `json:"status,omitempty"`
	types.Pagination
}

ListProjectsRequest 查询项目列表请求

type ListSessionsRequest

type ListSessionsRequest struct {
	Type        *string `json:"type,omitempty"`
	Status      *string `json:"status,omitempty"`
	AssistantID *string `json:"assistant_id,omitempty"`
	Keyword     *string `json:"keyword,omitempty"`
	types.Pagination
}

ListSessionsRequest queries sessions.

type ListTasksRequest

type ListTasksRequest struct {
	Keyword    *string `json:"keyword,omitempty"`
	Status     *string `json:"status,omitempty"`
	ProjectID  *string `json:"project_id,omitempty"`
	TaskType   *string `json:"task_type,omitempty"`
	AssigneeID *uint   `json:"assignee_id,omitempty"`
	types.Pagination
}

ListTasksRequest 查询任务列表请求

type ListUsersRequest

type ListUsersRequest struct {
	Keyword     *string `json:"keyword,omitempty"`
	GithubLogin *string `json:"github_login,omitempty"`
	types.Pagination
}

type LoginByEmailRequest

type LoginByEmailRequest struct {
	Email    string `json:"email" binding:"required"`
	Password string `json:"password" binding:"required"`
	OrgID    uint   `json:"org_id,omitempty"`
}

type LoginByPhoneCodeRequest added in v0.1.12

type LoginByPhoneCodeRequest struct {
	Phone string `json:"phone" binding:"required"`
	Code  string `json:"code" binding:"required"`
	OrgID uint   `json:"org_id,omitempty"`
}

type MemberDepartment added in v0.1.23

type MemberDepartment struct {
	ID           uint      `json:"id"`
	Uin          uint      `json:"uin"`
	OrgID        uint      `json:"org_id"`
	DepartmentID uint      `json:"department_id"`
	IsPrimary    bool      `json:"is_primary"`
	CreatedAt    time.Time `json:"created_at"`
	UpdatedAt    time.Time `json:"updated_at"`
}

type MemberDepartmentList added in v0.1.23

type MemberDepartmentList struct {
	Total  int64              `json:"total"`
	Offset int                `json:"offset"`
	Limit  int                `json:"limit"`
	Items  []MemberDepartment `json:"items"`
}

type MemberDepartmentService added in v0.1.23

type MemberDepartmentService interface {
	CreateMemberDepartment(ctx context.Context, req *CreateMemberDepartmentRequest) (*MemberDepartment, error)
	GetMemberDepartment(ctx context.Context, id uint) (*MemberDepartment, error)
	UpdateMemberDepartment(ctx context.Context, id uint, req *UpdateMemberDepartmentRequest) (*MemberDepartment, error)
	DeleteMemberDepartment(ctx context.Context, id uint) error
	ListMemberDepartments(ctx context.Context, req *ListMemberDepartmentsRequest) (*MemberDepartmentList, error)
}

type MemberInput added in v0.1.26

type MemberInput struct {
	Type string `json:"type" binding:"required"` // "user" | "assistant"
	ID   string `json:"id" binding:"required"`   // user 传 public_id, assistant 传 public_id
	Role string `json:"role,omitempty"`          // 仅 type=user 生效,可选 owner|admin|member,空值默认 member
}

MemberInput 创建/编辑项目时传入的成员项

type MessageList

type MessageList struct {
	Total int64            `json:"total"`
	Page  int              `json:"page"`
	Items []SessionMessage `json:"items"`
}

MessageList is a paginated session message response.

type NewMessageRequest

type NewMessageRequest struct {
	Content       string                    `json:"content,omitempty"`
	ExecutionMode types.ExecutionMode       `json:"execution_mode,omitempty" binding:"omitempty,oneof=default plan"`
	ProjectID     string                    `json:"project_id,omitempty"`
	TaskID        string                    `json:"task_id,omitempty"`
	AssistantIDs  []string                  `json:"assistant_ids,omitempty"`
	MessageType   string                    `json:"message_type,omitempty"`
	Objective     string                    `json:"objective,omitempty"`
	Attachments   []types.MessageAttachment `json:"attachments,omitempty"`
	Metadata      *types.ObjectMetadata     `json:"metadata,omitempty"`
}

NewMessageRequest is the homepage new-message request that atomically creates Project + Task + Session and dispatches to the allocated AgentWorker.

type NewMessageResponse

type NewMessageResponse struct {
	ProjectID   string `json:"project_id"`
	TaskID      string `json:"task_id"`
	SessionID   string `json:"session_id"`
	MessageID   string `json:"message_id"`
	AssistantID string `json:"assistant_id"`
}

NewMessageResponse is the homepage new-message response containing IDs of all created entities so the frontend can navigate to the session.

type Org

type Org struct {
	PublicID    string    `json:"public_id"`
	Type        string    `json:"type"`
	Code        string    `json:"code"`
	Name        string    `json:"name"`
	Status      string    `json:"status"`
	Description string    `json:"description,omitempty"`
	Address     string    `json:"address,omitempty"`
	Website     string    `json:"website,omitempty"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
}

type OrgList

type OrgList struct {
	Total  int64 `json:"total"`
	Offset int   `json:"offset"`
	Limit  int   `json:"limit"`
	Items  []Org `json:"items"`
}

type OrgMember

type OrgMember struct {
	ID          uint                  `json:"id"`
	Uin         uint                  `json:"uin"`
	UserID      string                `json:"user_id"`
	OrgID       string                `json:"org_id"`
	IsDefault   bool                  `json:"is_default"`
	UserName    string                `json:"user_name,omitempty"`
	UserLogin   string                `json:"user_login,omitempty"`
	UserPhone   string                `json:"user_phone,omitempty"`
	AvatarURL   string                `json:"avatar_url,omitempty"`
	OrgName     string                `json:"org_name,omitempty"`
	Departments []OrgMemberDepartment `json:"departments,omitempty"`
	CreatedAt   time.Time             `json:"created_at"`
	UpdatedAt   time.Time             `json:"updated_at"`
}

type OrgMemberDepartment added in v0.2.1

type OrgMemberDepartment struct {
	ID           uint   `json:"id"`
	DepartmentID uint   `json:"department_id"`
	Name         string `json:"name"`
	IsPrimary    bool   `json:"is_primary"`
}

type OrgMemberList

type OrgMemberList struct {
	Total  int64       `json:"total"`
	Offset int         `json:"offset"`
	Limit  int         `json:"limit"`
	Items  []OrgMember `json:"items"`
}

type OrgService

type OrgService interface {
	CreateOrg(ctx context.Context, req *CreateOrgRequest) (*Org, error)
	GetOrg(ctx context.Context, publicID string, code string) (*Org, error)
	UpdateOrg(ctx context.Context, publicID string, req *UpdateOrgRequest) (*Org, error)
	DeleteOrg(ctx context.Context, publicID string) error
	ListOrgs(ctx context.Context, req *ListOrgsRequest) (*OrgList, error)

	CreateOrgMember(ctx context.Context, req *CreateOrgMemberRequest) (*OrgMember, error)
	GetOrgMember(ctx context.Context, id uint, uin uint) (*OrgMember, error)
	UpdateOrgMember(ctx context.Context, id uint, req *UpdateOrgMemberRequest) (*OrgMember, error)
	ListOrgMembers(ctx context.Context, req *ListOrgMembersRequest) (*OrgMemberList, error)
}

type Project

type Project struct {
	PublicID    string                 `json:"public_id"`
	Name        string                 `json:"name"`
	Description string                 `json:"description"`
	Objective   string                 `json:"objective,omitempty"`
	OwnerID     uint                   `json:"owner_id"`
	Status      string                 `json:"status"`
	TaskCount   int64                  `json:"task_count"`
	Metadata    map[string]interface{} `json:"metadata,omitempty"`
	CreatedAt   time.Time              `json:"created_at"`
	UpdatedAt   time.Time              `json:"updated_at"`
}

Project 项目响应结构

type ProjectActivityActor added in v0.2.1

type ProjectActivityActor struct {
	ID        string `json:"id"`
	Name      string `json:"name,omitempty"`
	AvatarURL string `json:"avatar_url,omitempty"`
}

ProjectActivityActor 是动态中的用户或 AI 队友展示信息。

type ProjectActivityItem added in v0.2.1

type ProjectActivityItem struct {
	ID         uint                       `json:"id"`
	ProjectID  string                     `json:"project_id"`
	OperatorID string                     `json:"operator_id"`
	Operator   *ProjectActivityActor      `json:"operator,omitempty"`
	ActionType string                     `json:"action_type"`
	Payload    ProjectActivityPayloadView `json:"payload"`
	CreatedAt  time.Time                  `json:"created_at"`
}

ProjectActivityItem 项目动态响应项。

type ProjectActivityList added in v0.2.1

type ProjectActivityList struct {
	Items      []ProjectActivityItem `json:"items"`
	NextCursor string                `json:"next_cursor,omitempty"`
}

ProjectActivityList 项目动态列表响应。

type ProjectActivityPayloadView added in v0.2.1

type ProjectActivityPayloadView struct {
	AddedSkills        []ProjectActivitySkill `json:"added_skills"`
	RemovedSkills      []ProjectActivitySkill `json:"removed_skills"`
	AddedMembers       []ProjectActivityActor `json:"added_members"`
	RemovedMembers     []ProjectActivityActor `json:"removed_members"`
	AddedAITeammates   []ProjectActivityActor `json:"added_ai_teammates"`
	RemovedAITeammates []ProjectActivityActor `json:"removed_ai_teammates"`
}

ProjectActivityPayloadView 是补全展示信息后的动态 payload。

type ProjectActivitySkill added in v0.2.1

type ProjectActivitySkill struct {
	ID   string `json:"id"`
	Name string `json:"name,omitempty"`
	Icon string `json:"icon,omitempty"`
}

ProjectActivitySkill 是动态中的技能展示信息。

type ProjectDetail

type ProjectDetail struct {
	Project
	Session *Session            `json:"session,omitempty"`
	Tasks   []ProjectTaskItem   `json:"tasks"`
	Members []ProjectMemberItem `json:"members"`
}

ProjectDetail 项目详情响应,包含关联的会话、任务、产物和成员

type ProjectFileVersion added in v0.2.3

type ProjectFileVersion struct {
	PublicID            string `json:"public_id"`
	InitialFilePublicID string `json:"initial_file_public_id"`
	RelativePath        string `json:"relative_path"`
	Name                string `json:"name"`
	VersionNo           int    `json:"version_no"`
	VersionLabel        string `json:"version_label"`
	Size                int64  `json:"size,omitempty"`
	MimeType            string `json:"mime_type,omitempty"`
	CreatedAt           int64  `json:"created_at,omitempty"`
	StorageURI          string `json:"storage_uri,omitempty"`
	Sha256              string `json:"sha256,omitempty"`
}

ProjectFileVersion describes one concrete version in a logical project file chain.

type ProjectFileVersionList added in v0.2.3

type ProjectFileVersionList struct {
	InitialFilePublicID string               `json:"initial_file_public_id"`
	CurrentFilePublicID string               `json:"current_file_public_id"`
	Items               []ProjectFileVersion `json:"items"`
}

ProjectFileVersionList contains all versions of one logical project file.

type ProjectList

type ProjectList struct {
	Total  int64     `json:"total"`
	Offset int       `json:"offset"`
	Limit  int       `json:"limit"`
	Items  []Project `json:"items"`
}

ProjectList 项目列表响应

type ProjectMemberItem

type ProjectMemberItem struct {
	MemberID   uint      `json:"member_id"`
	PublicID   string    `json:"public_id,omitempty"`
	MemberType string    `json:"member_type"`
	MemberRole string    `json:"member_role"`
	IsDefault  bool      `json:"is_default"`
	JoinedAt   time.Time `json:"joined_at"`
	Name       string    `json:"name,omitempty"`
	AvatarURL  string    `json:"avatar_url,omitempty"`
}

ProjectMemberItem 项目详情中的成员项,包含用户基本信息

type ProjectMemory

type ProjectMemory struct {
	Entries []string `json:"entries"`
	Total   int      `json:"total"`
}

ProjectMemory 项目记忆响应

type ProjectService

type ProjectService interface {
	CreateProject(ctx context.Context, req *CreateProjectRequest) (*Project, error)

	GetProject(ctx context.Context, publicID string) (*Project, error)

	UpdateProject(ctx context.Context, publicID string, req *UpdateProjectRequest) (*Project, error)

	DeleteProject(ctx context.Context, publicID string) error

	LeaveProject(ctx context.Context, publicID string) error

	ListProjects(ctx context.Context, req *ListProjectsRequest) (*ProjectList, error)

	ListProjectActivities(ctx context.Context, req *ListProjectActivitiesRequest) (*ProjectActivityList, error)

	GetWorkbenchRecentContext(ctx context.Context) (*WorkbenchRecentContext, error)

	SaveWorkbenchRecentContext(ctx context.Context, req *SaveWorkbenchRecentContextRequest) (*WorkbenchRecentContext, error)

	DetailProject(ctx context.Context, publicID string) (*ProjectDetail, error)

	GetProjectMemory(ctx context.Context, publicID string) (*ProjectMemory, error)

	GetProjectFileTree(ctx context.Context, publicID string, resourceType string, taskPublicID string) ([]*FileTreeNode, error)

	DownloadProjectFile(ctx context.Context, publicID string, filePath string) (io.ReadCloser, string, int64, error)

	GetProjectFileVersions(ctx context.Context, publicID string, filePublicID string) (*ProjectFileVersionList, error)

	DownloadProjectFileByPublicID(ctx context.Context, publicID string, filePublicID string) (io.ReadCloser, string, int64, error)

	RestoreProjectFileVersion(ctx context.Context, publicID string, filePublicID string) (*FileTreeNode, error)
}

ProjectService 定义项目服务接口

type ProjectTaskItem

type ProjectTaskItem struct {
	Task
	Session *Session `json:"session,omitempty"`
}

ProjectTaskItem 项目详情中的任务项,包含关联的会话信息

type RefreshTokenRequest

type RefreshTokenRequest struct {
	RefreshToken string `json:"refresh_token" binding:"required"`
}

type RegisterByEmailRequest

type RegisterByEmailRequest struct {
	Email           string `json:"email" binding:"required"`
	Password        string `json:"password" binding:"required"`
	ConfirmPassword string `json:"confirm_password" binding:"required"`
	Name            string `json:"name,omitempty"`
}

type ResolveAuthorizationRequest

type ResolveAuthorizationRequest struct {
	UserID    string `json:"user_id"`
	Provider  string `json:"provider"`
	AccountID string `json:"account_id,omitempty"`
}

ResolveAuthorizationRequest 表示运行时授权解析请求

type ResolvedAuthorization

type ResolvedAuthorization struct {
	Account    *AuthorizedAccount `json:"account"`
	Credential *AccountCredential `json:"credential"`
}

ResolvedAuthorization 表示解析完成的授权结果

type SaveWorkbenchRecentContextRequest added in v0.1.21

type SaveWorkbenchRecentContextRequest struct {
	ProjectID string  `json:"project_id" binding:"required"`
	TaskID    *string `json:"task_id,omitempty"`
}

SaveWorkbenchRecentContextRequest 保存首页工作台最近使用上下文的请求。

type SearchSkillMarketplaceRequest added in v0.1.1

type SearchSkillMarketplaceRequest struct {
	Keyword     string   `form:"keyword" json:"keyword,omitempty"`
	Category    string   `form:"category" json:"category,omitempty"`
	SourceTypes []string `form:"source_types" json:"source_types,omitempty"`
	Limit       int      `form:"limit" json:"limit,omitempty"`
}

SearchSkillMarketplaceRequest Skill 市场搜索请求。

type SearchSkillMarketplaceResponse added in v0.1.1

type SearchSkillMarketplaceResponse struct {
	Items    []SkillMarketplaceItemView `json:"items"`
	Warnings []SkillSourceWarning       `json:"warnings,omitempty"`
}

SearchSkillMarketplaceResponse Skill 市场搜索响应。

type SendPhoneLoginCodeRequest added in v0.1.12

type SendPhoneLoginCodeRequest struct {
	Phone string `json:"phone" binding:"required"`
}

type SendPhoneLoginCodeResponse added in v0.1.12

type SendPhoneLoginCodeResponse struct {
	Phone       string `json:"phone"`
	ExpiresIn   int64  `json:"expires_in"`
	ResendAfter int64  `json:"resend_after"`
}

type Session

type Session struct {
	SessionID        string                `json:"session_id"`
	Type             string                `json:"type"`
	Uin              uint                  `json:"uin"`
	OrgID            uint                  `json:"org_id"`
	Status           string                `json:"status"`
	RuntimeStatus    string                `json:"runtime_status"`
	Title            string                `json:"title"`
	TitleManuallySet bool                  `json:"title_manually_set,omitempty"`
	Metadata         *types.ObjectMetadata `json:"metadata,omitempty"`
	MessageCount     int                   `json:"message_count"`
	LastMessageAt    *time.Time            `json:"last_message_at,omitempty"`
	ExpiredAt        *time.Time            `json:"expired_at,omitempty"`
	CreatedAt        time.Time             `json:"created_at"`
	UpdatedAt        time.Time             `json:"updated_at"`
}

type SessionEvent

type SessionEvent struct {
	Type        string      `json:"type"`
	SessionID   string      `json:"session_id"`
	AssistantID string      `json:"assistant_id,omitempty"`
	Payload     interface{} `json:"payload,omitempty"`
	Sequence    int64       `json:"sequence"`
	Timestamp   int64       `json:"timestamp"`
}

SessionEvent is the public event shape embedded in persisted message chunks.

type SessionEventSink added in v0.1.22

type SessionEventSink interface {
	EmitSessionEvent(ctx context.Context, event *SessionEvent) error
}

SessionEventSink receives projected Server session events.

type SessionEventSinkFunc added in v0.1.22

type SessionEventSinkFunc func(ctx context.Context, event *SessionEvent) error

SessionEventSinkFunc adapts a function to SessionEventSink.

func (SessionEventSinkFunc) EmitSessionEvent added in v0.1.22

func (f SessionEventSinkFunc) EmitSessionEvent(
	ctx context.Context,
	event *SessionEvent,
) error

EmitSessionEvent calls the adapted function.

type SessionList

type SessionList struct {
	Total  int64     `json:"total"`
	Offset int       `json:"offset"`
	Limit  int       `json:"limit"`
	Items  []Session `json:"items"`
}

SessionList is a paginated session response.

type SessionMessage

type SessionMessage struct {
	ID          string                    `json:"id"`
	SessionID   string                    `json:"session_id"`
	Role        string                    `json:"role"`
	Content     string                    `json:"content"`
	ErrorMsg    string                    `json:"error_msg,omitempty"`
	Chunks      []SessionEvent            `json:"chunks,omitempty"`
	Artifacts   []types.MessageArtifact   `json:"artifacts,omitempty"`
	Attachments []types.MessageAttachment `json:"attachments,omitempty"`
	Timestamp   int64                     `json:"timestamp"`
	MessageType string                    `json:"message_type,omitempty"`
	Metadata    *types.ObjectMetadata     `json:"metadata,omitempty"`
	Usage       *types.MessageUsage       `json:"usage,omitempty"`
	Sequence    int64                     `json:"sequence"`
	CreatedAt   time.Time                 `json:"created_at"`
	SenderUin   *uint                     `json:"sender_uin,omitempty"`
	SenderName  string                    `json:"sender_name,omitempty"`
	RunID       string                    `json:"run_id,omitempty"`
	AssistantID uint                      `json:"assistant_id,omitempty"`
}

SessionMessage is the API response shape for a persisted conversation message.

type SessionRunStartedRequest added in v0.1.10

type SessionRunStartedRequest struct {
	SessionID         string   `json:"session_id"`
	ReplyToMessageIDs []string `json:"reply_to_message_ids,omitempty"`
	RequestID         string   `json:"request_id,omitempty"`
	StreamStartSeq    uint64   `json:"stream_start_seq"`
	StateStartSeq     uint64   `json:"state_start_seq,omitempty"`
	RunID             string   `json:"run_id,omitempty"`
	AssistantID       uint     `json:"assistant_id,omitempty"`
}

SessionRunStartedRequest marks user messages as processing when a worker run starts.

type SessionService

type SessionService interface {
	// Session CRUD
	CreateSession(ctx context.Context, req *CreateSessionRequest) (*Session, error)
	GetSession(ctx context.Context, sessionID string) (*Session, error)
	UpdateSession(ctx context.Context, sessionID string, req *UpdateSessionRequest) (*Session, error)
	DeleteSession(ctx context.Context, sessionID string) error
	ListSessions(ctx context.Context, req *ListSessionsRequest) (*SessionList, error)

	// Message management
	AddMessage(ctx context.Context, sessionID string, req *AddMessageRequest) (*SessionMessage, error)
	GetSessionMessages(ctx context.Context, sessionID string, page, perPage int) (*MessageList, error)
	DeleteMessage(ctx context.Context, messageID uint) error
	ClearSessionMessages(ctx context.Context, sessionID string) error

	// Event streaming
	// When assistantID is non-empty, only RunEvents whose Route.WorkerID matches the
	// requested AI teammate are delivered; assistantID == "" disables filtering.
	StreamSessionEvents(ctx context.Context, sessionID string, replay bool, assistantID string, sink SessionEventSink) error

	// StreamGlobalEvents subscribes the caller to project-level global notify events
	// (message.created, etc.) for all projects the caller is a member of.
	// Events are delivered via ch; the call blocks until ctx is cancelled.
	StreamGlobalEvents(ctx context.Context, orgID, userID uint, replaySinceSeq uint64, ch chan<- *messaging.GlobalEventPayload) error

	// HandleSessionRunStarted marks source user messages as processing and records replay metadata.
	HandleSessionRunStarted(ctx context.Context, req *SessionRunStartedRequest) error

	// CompleteSessionMessage persists the final assistant message for a completed session run.
	CompleteSessionMessage(ctx context.Context, req *CompleteSessionMessageRequest) error
	// FailedSessionMessage persists the final assistant message for a failed session run.
	FailedSessionMessage(ctx context.Context, req *FailedSessionMessageRequest) error

	// SubmitApproval forwards an approval decision to the worker via NATS.
	SubmitApproval(ctx context.Context, req *SubmitApprovalRequest) error

	// SubmitQuestionAnswer forwards a question answer to the worker via NATS.
	SubmitQuestionAnswer(ctx context.Context, req *SubmitQuestionAnswerRequest) error

	// CancelSessionRun cancels an active agent run for the given session.
	CancelSessionRun(ctx context.Context, sessionID string, req *CancelSessionRunRequest) (*CancelSessionRunResponse, error)

	// SetSessionStreamStartSeq records the NATS stream sequence for the first
	// run.stream event of a session, used by the stream projector for SSE replay.
	SetSessionStreamStartSeq(ctx context.Context, sessionID string, streamSeq uint64) error

	// CreateInitialMessage atomically creates Project + Task + Session and optionally posts
	// the first message, then dispatches to the allocated AgentWorker.
	CreateInitialMessage(ctx context.Context, req *NewMessageRequest) (*NewMessageResponse, error)
}

SessionService defines the session service contract.

type SkillDetailRequest added in v0.1.10

type SkillDetailRequest struct {
	Source  string `json:"source" binding:"required"`   // "Leros" for marketplace, "installed" for installed skills
	SkillID string `json:"skill_id" binding:"required"` // skill identifier
	Version string `json:"version,omitempty"`           // optional version, default "latest" for external sources
}

SkillDetailRequest 获取 Skill 详情的请求。

type SkillDetailResponse added in v0.1.10

type SkillDetailResponse struct {
	SkillID     string   `json:"skill_id"`
	Source      string   `json:"source"`
	Name        string   `json:"name"`
	DisplayName string   `json:"display_name,omitempty"`
	Description string   `json:"description"`
	SkillMD     string   `json:"skill_md"`
	Version     string   `json:"version"`
	Author      string   `json:"author"`
	Category    string   `json:"category"`
	Tags        []string `json:"tags"`
	Icon        string   `json:"icon,omitempty"`
	Installs    int64    `json:"installs"`
	Verified    bool     `json:"verified"`
	SourceType  string   `json:"source_type"`
	Files       []string `json:"files"`
	Installed   bool     `json:"installed"`
}

SkillDetailResponse Skill 详情响应,包含完整元数据和 SKILL.md 正文。

type SkillInstalledItem added in v0.1.10

type SkillInstalledItem struct {
	Name        string `json:"name"`
	DisplayName string `json:"display_name,omitempty"`
	Description string `json:"description"`
	Category    string `json:"category"`
	Source      string `json:"source"`
	Trust       string `json:"trust"`
}

SkillInstalledItem 表示 worker 上已安装的 Skill。

type SkillMarketplaceItemView added in v0.1.1

type SkillMarketplaceItemView struct {
	SourceType  string   `json:"source_type"`
	SkillID     string   `json:"skill_id"`
	Name        string   `json:"name"`
	DisplayName string   `json:"display_name,omitempty"`
	Description string   `json:"description"`
	Version     string   `json:"version"`
	Author      string   `json:"author"`
	Category    string   `json:"category"`
	Tags        []string `json:"tags"`
	Icon        string   `json:"icon,omitempty"`
	Installs    int64    `json:"installs"`
}

SkillMarketplaceItemView Skill 市场条目视图。

type SkillMarketplaceService added in v0.1.1

type SkillMarketplaceService interface {
	SearchSkillMarketplace(ctx context.Context, req *SearchSkillMarketplaceRequest) (*SearchSkillMarketplaceResponse, error)
	DownloadBuiltinSkill(ctx context.Context, skillID string) (*SkillPackageDownload, error)
	DownloadSkillPackage(ctx context.Context, req *DownloadSkillRequest) (*SkillPackageDownload, error)
	InstallSkill(ctx context.Context, req *InstallSkillRequest) (*InstallSkillResponse, error)
	InstalledSkills(ctx context.Context, req *InstalledSkillsRequest) (*InstalledSkillsResponse, error)
	UninstallSkill(ctx context.Context, req *UninstallSkillRequest) (*UninstallSkillResponse, error)
	GetSkillDetail(ctx context.Context, req *SkillDetailRequest) (*SkillDetailResponse, error)
	ImportSkill(ctx context.Context, req *ImportSkillRequest) (*ImportSkillResponse, error)
	ImportSkillFromGitHub(ctx context.Context, req *ImportSkillFromGitHubRequest) (*ImportSkillResponse, error)
}

SkillMarketplaceService 定义 Skill 市场搜索服务接口。

type SkillPackageDownload added in v0.1.1

type SkillPackageDownload struct {
	Reader   io.ReadCloser
	FileName string
}

SkillPackageDownload 技能包下载结果。

type SkillService added in v0.1.15

type SkillService interface {
	ListRecentUsedSkills(ctx context.Context, orgID, uin uint, limit int) ([]SkillInstalledItem, error)
}

SkillService defines the skill management contract.

type SkillSourceWarning added in v0.1.1

type SkillSourceWarning struct {
	SourceType string `json:"source_type"`
	Message    string `json:"message"`
}

SkillSourceWarning 源查询警告信息。

type StartAuthorizationRequest

type StartAuthorizationRequest struct {
	UserID      string `json:"user_id"`
	Provider    string `json:"provider"`
	RedirectURI string `json:"redirect_uri,omitempty"`
}

StartAuthorizationRequest 表示发起授权请求

type SubmitApprovalRequest

type SubmitApprovalRequest struct {
	OrgID       uint   `json:"-"`
	SessionID   string `json:"session_id"`
	RequestID   string `json:"request_id"`
	Action      string `json:"action"`
	Reason      string `json:"reason,omitempty"`
	AssistantID string `json:"assistant_id" binding:"required"`
}

Session is the API response shape for a conversation. SubmitApprovalRequest forwards an approval decision to the worker via NATS.

type SubmitQuestionAnswerRequest added in v0.1.15

type SubmitQuestionAnswerRequest struct {
	OrgID       uint       `json:"-"`
	SessionID   string     `json:"session_id"`
	RequestID   string     `json:"request_id"`
	Answers     [][]string `json:"answers"`
	AssistantID string     `json:"assistant_id" binding:"required"`
}

SubmitQuestionAnswerRequest forwards a question answer to the worker via NATS.

type SwitchOrganizationRequest added in v0.1.23

type SwitchOrganizationRequest struct {
	OrgID uint `json:"org_id" binding:"required"`
}

type Task

type Task struct {
	PublicID    string                 `json:"public_id"`
	OrgID       uint                   `json:"org_id"`
	OwnerID     uint                   `json:"owner_id"`
	ProjectID   string                 `json:"project_id"`
	ProjectName string                 `json:"project_name"`
	SessionID   *uint                  `json:"session_id,omitempty"`
	TaskType    string                 `json:"task_type"`
	AssigneeID  *uint                  `json:"assignee_id,omitempty"`
	Title       string                 `json:"title"`
	Description string                 `json:"description"`
	Status      string                 `json:"status"`
	Deadline    *time.Time             `json:"deadline,omitempty"`
	Metadata    map[string]interface{} `json:"metadata,omitempty"`
	Session     *Session               `json:"session,omitempty"`
	CreatedAt   time.Time              `json:"created_at"`
	UpdatedAt   time.Time              `json:"updated_at"`
}

Task 任务响应结构

type TaskList

type TaskList struct {
	Total  int64  `json:"total"`
	Offset int    `json:"offset"`
	Limit  int    `json:"limit"`
	Items  []Task `json:"items"`
}

TaskList 任务列表响应

type TaskService

type TaskService interface {
	CreateTask(ctx context.Context, req *CreateTaskRequest) (*Task, error)

	GetTask(ctx context.Context, publicID string) (*Task, error)

	UpdateTask(ctx context.Context, publicID string, req *UpdateTaskRequest) (*Task, error)

	DeleteTask(ctx context.Context, publicID string) error

	ListTasks(ctx context.Context, req *ListTasksRequest) (*TaskList, error)
}

TaskService 定义任务服务接口

type TestLLMModelRequest

type TestLLMModelRequest struct {
	ID       *uint  `json:"id,omitempty"`
	Code     string `json:"code,omitempty"`
	Provider string `json:"provider,omitempty"`
	Model    string `json:"model,omitempty"`
	BaseURL  string `json:"base_url,omitempty"`
	APIKey   string `json:"api_key,omitempty"`
}

TestLLMModelRequest 测试LLM模型配置请求

type TestLLMModelResponse

type TestLLMModelResponse struct {
	Success      bool   `json:"success"`
	StatusCode   int    `json:"status_code"`
	Message      string `json:"message"`
	Endpoint     string `json:"endpoint"`
	LatencyMS    int64  `json:"latency_ms"`
	BaseURLHasV1 bool   `json:"base_url_has_v1"`
}

TestLLMModelResponse 测试LLM模型配置响应

type ThirdAuthService

type ThirdAuthService interface {
	// OAuth 流程启动 - 返回授权 URL
	StartAuthorization(ctx context.Context, req *StartAuthorizationRequest) (string, error)

	// OAuth 回调处理 - 处理 provider 回调,保存授权账户
	HandleAuthorizationCallback(ctx context.Context, req *AuthorizationCallbackRequest) (*AuthorizationResult, error)

	// 运行时授权解析 - 根据条件解析可用的授权账户
	ResolveAuthorization(ctx context.Context, req *ResolveAuthorizationRequest) (*ResolvedAuthorization, error)
}

ThirdAuthService 定义第三方平台授权服务接口

type UninstallSkillRequest added in v0.1.10

type UninstallSkillRequest struct {
	Name string `json:"name" binding:"required"`
}

UninstallSkillRequest 卸载 Skill 请求。

type UninstallSkillResponse added in v0.1.10

type UninstallSkillResponse struct {
	Status  string `json:"status"`
	Message string `json:"message"`
}

UninstallSkillResponse 卸载 Skill 响应(异步,仅表示已接受)。

type UpdateDepartmentRequest added in v0.1.23

type UpdateDepartmentRequest struct {
	Name     *string `json:"name,omitempty"`
	ParentID *uint   `json:"parent_id,omitempty"`
	Sort     *uint   `json:"sort,omitempty"`
	OrgID    *uint   `json:"org_id,omitempty"`
}

type UpdateDigitalAssistantRequest

type UpdateDigitalAssistantRequest struct {
	Name         string    `json:"name"`
	Description  string    `json:"description"`
	Avatar       string    `json:"avatar"`
	SystemPrompt *string   `json:"system_prompt,omitempty"`
	Expertise    *[]string `json:"expertise,omitempty"`
}

UpdateDigitalAssistantRequest 更新数字助手请求

type UpdateDigitalAssistantStatusRequest

type UpdateDigitalAssistantStatusRequest struct {
	Status string `json:"status" binding:"required"`
}

UpdateDigitalAssistantStatusRequest 更新数字助手状态请求

type UpdateLLMModelRequest

type UpdateLLMModelRequest struct {
	Name        string                  `json:"name,omitempty"`
	Description *string                 `json:"description,omitempty"`
	Provider    string                  `json:"provider,omitempty"`
	Model       string                  `json:"model,omitempty"`
	BaseURL     *string                 `json:"base_url,omitempty"`
	APIKey      *string                 `json:"api_key,omitempty"`
	Status      string                  `json:"status,omitempty"`
	IsDefault   *bool                   `json:"is_default,omitempty"`
	Config      *map[string]interface{} `json:"config,omitempty"`
}

UpdateLLMModelRequest 更新LLM模型配置请求

type UpdateMemberDepartmentRequest added in v0.1.23

type UpdateMemberDepartmentRequest struct {
	Uin          *uint `json:"uin,omitempty"`
	DepartmentID *uint `json:"department_id,omitempty"`
	IsPrimary    *bool `json:"is_primary,omitempty"`
}

type UpdateOrgMemberRequest

type UpdateOrgMemberRequest struct {
	OrgID         *string `json:"org_id,omitempty"`
	IsDefault     *bool   `json:"is_default,omitempty"`
	Name          *string `json:"name,omitempty"`
	DepartmentIDs []uint  `json:"department_ids,omitempty"`
}

type UpdateOrgRequest

type UpdateOrgRequest struct {
	Name        *string `json:"name,omitempty"`
	Type        *string `json:"type,omitempty"`
	Status      *string `json:"status,omitempty"`
	Description *string `json:"description,omitempty"`
	Address     *string `json:"address,omitempty"`
	Website     *string `json:"website,omitempty"`
}

type UpdateProjectRequest

type UpdateProjectRequest struct {
	Name        *string                 `json:"name,omitempty"`
	Description *string                 `json:"description,omitempty"`
	Objective   *string                 `json:"objective,omitempty"`
	OwnerID     *uint                   `json:"owner_id,omitempty"`
	Status      *string                 `json:"status,omitempty"`
	Metadata    *map[string]interface{} `json:"metadata,omitempty"`
	Members     []MemberInput           `json:"members,omitempty"`
}

UpdateProjectRequest 更新项目请求

type UpdateSessionRequest

type UpdateSessionRequest struct {
	Title     string                `json:"title,omitempty"`
	Metadata  *types.ObjectMetadata `json:"metadata,omitempty"`
	ExpiredAt *time.Time            `json:"expired_at,omitempty"`
}

UpdateSessionRequest updates basic session fields.

type UpdateTaskRequest

type UpdateTaskRequest struct {
	ProjectID   *string                 `json:"project_id,omitempty"`
	Title       *string                 `json:"title,omitempty"`
	Description *string                 `json:"description,omitempty"`
	TaskType    *string                 `json:"task_type,omitempty"`
	AssigneeID  *uint                   `json:"assignee_id,omitempty"`
	Status      *string                 `json:"status,omitempty"`
	Deadline    *time.Time              `json:"deadline,omitempty"`
	Metadata    *map[string]interface{} `json:"metadata,omitempty"`
}

UpdateTaskRequest 更新任务请求

type UpdateUserRequest

type UpdateUserRequest struct {
	GithubLogin *string `json:"github_login,omitempty"`
	Password    *string `json:"password,omitempty"`
	Name        *string `json:"name,omitempty"`
	Email       *string `json:"email,omitempty"`
	AvatarURL   *string `json:"avatar_url,omitempty"`
	Bio         *string `json:"bio,omitempty"`
	Company     *string `json:"company,omitempty"`
	Location    *string `json:"location,omitempty"`
}

type UploadFileRequest added in v0.1.2

type UploadFileRequest struct {
	OrgID    uint
	OwnerID  uint
	File     io.Reader
	Filename string
	FileSize int64
	MimeType string
	Purpose  string
	SourceID string
}

type UploadFileResult added in v0.1.2

type UploadFileResult struct {
	PublicID     string `json:"public_id"`
	Filename     string `json:"filename"`
	OriginalName string `json:"original_name"`
	MimeType     string `json:"mime_type"`
	FileSize     int64  `json:"file_size"`
	Sha256       string `json:"sha256"`
	StorageURI   string `json:"storage_uri"`
}

type UserInfo

type UserInfo struct {
	PublicID    string    `json:"public_id"`
	GithubID    int64     `json:"github_id,omitempty"`
	GithubLogin string    `json:"github_login"`
	Name        string    `json:"name"`
	Email       string    `json:"email,omitempty"`
	Phone       string    `json:"phone,omitempty"`
	AvatarURL   string    `json:"avatar_url,omitempty"`
	Bio         string    `json:"bio,omitempty"`
	Company     string    `json:"company,omitempty"`
	Location    string    `json:"location,omitempty"`
	PublicRepos int       `json:"public_repos,omitempty"`
	Followers   int       `json:"followers,omitempty"`
	CreatedAt   time.Time `json:"created_at"`
	UpdatedAt   time.Time `json:"updated_at"`
}

type UserList

type UserList struct {
	Total  int64      `json:"total"`
	Offset int        `json:"offset"`
	Limit  int        `json:"limit"`
	Items  []UserInfo `json:"items"`
}

type UserService

type UserService interface {
	CreateUser(ctx context.Context, req *CreateUserRequest) (*UserInfo, error)
	GetUser(ctx context.Context, publicID string, githubLogin string) (*UserInfo, error)
	UpdateUser(ctx context.Context, publicID string, req *UpdateUserRequest) (*UserInfo, error)
	DeleteUser(ctx context.Context, publicID string) error
	ListUsers(ctx context.Context, req *ListUsersRequest) (*UserList, error)
}

type WorkbenchRecentContext added in v0.1.21

type WorkbenchRecentContext struct {
	ProjectID   string    `json:"project_id"`
	ProjectName string    `json:"project_name"`
	TaskID      *string   `json:"task_id,omitempty"`
	TaskTitle   *string   `json:"task_title,omitempty"`
	UsedAt      time.Time `json:"used_at"`
}

WorkbenchRecentContext 首页工作台最近明确使用的项目/任务上下文。

type WorkerDeploymentStatus added in v0.1.22

type WorkerDeploymentStatus struct {
	PublicID  string `json:"public_id"`
	Status    string `json:"status"`
	LastError string `json:"last_error,omitempty"`
}

WorkerDeploymentStatus describes the runtime deployment state of an AI teammate.

Jump to

Keyboard shortcuts

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