15 Commits

Author SHA1 Message Date
baiyanyun
c8a7bdc0f8 接入可配置概览服务并支持自适应缩放 2026-07-13 15:53:42 +08:00
baiyanyun
041964132a 调整扩展市场主菜单入口 2026-07-13 15:31:59 +08:00
baiyanyun
474a4866d2 接入可配置文档编辑与智能取数服务 2026-07-13 14:53:14 +08:00
baiyanyun
ab4e84004f 补充后端版本升级脚本 2026-07-13 09:14:01 +08:00
baiyanyun
d5b7178f72 调整后端启动配置与认证拦截 2026-07-13 09:13:54 +08:00
baiyanyun
a1a38f62d8 同步平台业务模块能力 2026-07-13 09:13:30 +08:00
baiyanyun
e612f5e434 同步智能体核心后端能力 2026-07-13 09:13:10 +08:00
baiyanyun
1148bf9213 同步前端页面与工作台能力 2026-07-13 09:12:31 +08:00
baiyanyun
d08d30a7ab 完善客户端市场与对话能力 2026-07-13 09:11:24 +08:00
baiyanyun
a69bb4b8a8 修复知识库文件解析和删除异常 2026-07-13 09:08:07 +08:00
baiyanyun
f8ee4023ff 完善自动化任务广场目标选择
自动化任务目标改为从广场发布资源获取,不再按当前空间筛选。

任务中心允许任务归档空间与发布目标空间不同,并在执行时透传组件、技能和模型参数。
2026-07-13 08:59:32 +08:00
baiyanyun
f0a2986cf3 feat: 重写原生AI对话页面 2026-07-02 17:44:13 +08:00
baiyanyun
38adf72939 feat: 完善本地MCP与扩展市场能力 2026-07-02 17:43:34 +08:00
baiyanyun
a574b2c661 重构客户端左侧导航 2026-06-30 15:49:58 +08:00
baiyanyun
5d87c9eee7 重构客户端登录页并更新品牌图标 2026-06-30 15:09:46 +08:00
1280 changed files with 130096 additions and 88904 deletions

View File

@@ -1,9 +0,0 @@
---
name:
description:
license:
---
# Processing Guide
## Overview

View File

@@ -1,5 +0,0 @@
#!/usr/bin/env python3
# Helper script for this skill
if __name__ == "__main__":
print("Process script placeholder")

View File

@@ -1,3 +0,0 @@
# API Documentation
Add interface descriptions related to skills here.

View File

@@ -104,10 +104,6 @@
<groupId>com.xspaceagi</groupId>
<artifactId>app-platform-bill-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<profiles>
<profile>

View File

@@ -143,6 +143,12 @@ public class AuthInterceptor implements HandlerInterceptor {
// ignore
}
}
}
if (tenantId == null) {
// 对于无需鉴权的路径(如飞书/钉钉 webhook使用默认租户不要求登录
if (isExcludedPath(originalRequestUri)) {
tenantId = 1L;
}
if (tenantId == null) {
tenantId = 1L;
}

View File

@@ -27,7 +27,7 @@ spring:
datasource:
# 主数据源 (MySQL)
master:
url: jdbc:mysql://${DB_HOST:localhost}:3306/${DB_NAME:agent_platform}?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowMultiQueries=true&socketTimeout=300000&useSSL=false
url: jdbc:mysql://${DB_HOST:localhost}:3306/${DB_NAME:agent_platform}?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowMultiQueries=true&socketTimeout=300000&allowPublicKeyRetrieval=true&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: ${DB_USERNAME:root}
password: ${DB_PASSWORD:your_mysql_password}
@@ -48,7 +48,7 @@ spring:
filters: stat # 启用 stat filter 用于监控
# Doris 数据源
doris:
url: jdbc:mysql://${DORIS_HOST:localhost}:3306/${DORIS_DB_NAME:agent_custom_table}?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowMultiQueries=true&socketTimeout=300000&useSSL=false
url: jdbc:mysql://${DORIS_HOST:localhost}:3306/${DORIS_DB_NAME:agent_custom_table}?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowMultiQueries=true&socketTimeout=300000&allowPublicKeyRetrieval=true&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: ${DORIS_USERNAME:root}
password: ${DORIS_PASSWORD:your_doris_password}
@@ -165,12 +165,17 @@ search:
username: ${ES_USERNAME:elastic}
password: ${ES_PASSWORD:your_elasticsearch_password}
api_key: ${ES_API_KEY:}
text_analyzer: ${ES_TEXT_ANALYZER:standard}
search_analyzer: ${ES_SEARCH_ANALYZER:standard}
# 生态市场模块配置
eco-market:
# 服务端配置
server:
# 远程server端的 ip端口配置
base-url: ${ECO_MARKET_SERVER_URL:https://test-agent-market-api.xspaceagi.com}
enabled: ${ECO_MARKET_SERVER_ENABLED:false}
base-url: ${ECO_MARKET_SERVER_URL:}
# 是否拉取官方生态市场通知,私有化部署默认关闭
pull-message-enabled: ${ECO_MARKET_PULL_MESSAGE_ENABLED:false}
client:
# 客户端配置
retry:
@@ -180,6 +185,15 @@ eco-market:
mcp:
proxy-base-url: ${MCP_PROXY_URL:http://localhost:8020}
overview-page:
service-url: ${OVERVIEW_SERVICE_URL:http://127.0.0.1:5173/_app/digital}
intelligent-data:
service-url: ${INTELLIGENT_DATA_SERVICE_URL:http://192.168.2.106:3000/test-console}
document-editor:
service-url: ${DOCUMENT_EDITOR_SERVICE_URL:}
knife4j:
# 开启增强配置
enable: true
@@ -230,4 +244,4 @@ model-api-proxy:
enable-model-proxy: ${MODEL_PROXY_ENABLE:true}
port: ${MODEL_PROXY_PORT:18086}
#记录日志
save-log: ${MODEL_PROXY_SAVE_LOG:true}
save-log: ${MODEL_PROXY_SAVE_LOG:true}

View File

@@ -27,7 +27,7 @@ spring:
datasource:
# 主数据源 (MySQL)
master:
url: jdbc:mysql://${DB_HOST:localhost}:3306/${DB_NAME:agent_platform}?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowMultiQueries=true&socketTimeout=300000&useSSL=false
url: jdbc:mysql://${DB_HOST:localhost}:3306/${DB_NAME:agent_platform}?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowMultiQueries=true&socketTimeout=300000&allowPublicKeyRetrieval=true&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: ${DB_USERNAME:root}
password: ${DB_PASSWORD:Byyagz@121}
@@ -48,7 +48,7 @@ spring:
filters: stat # 启用 stat filter 用于监控
# Doris 数据源
doris:
url: jdbc:mysql://${DORIS_HOST:localhost}:3306/${DORIS_DB_NAME:agent_platform}?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowMultiQueries=true&socketTimeout=300000&useSSL=false
url: jdbc:mysql://${DORIS_HOST:localhost}:3306/${DORIS_DB_NAME:agent_platform}?serverTimezone=Asia/Shanghai&characterEncoding=utf-8&allowMultiQueries=true&socketTimeout=300000&allowPublicKeyRetrieval=true&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: ${DORIS_USERNAME:root}
password: ${DORIS_PASSWORD:Byyagz@121}
@@ -89,7 +89,7 @@ jwt:
secretKey: ${JWT_SECRET_KEY:qiming-local-dev-jwt-secret-key-32-chars}
file:
uploadFolder: ${FILE_UPLOAD_FOLDER:D:/work/workspace/feitian-base/nvw/.dev/uploads}
uploadFolder: ${FILE_UPLOAD_FOLDER:/Users/qiming/qiming-work/uploads}
baseUrl: ${FILE_BASE_URL:http://localhost:18081/files/}
# Storage configuration
@@ -98,7 +98,7 @@ storage:
local:
upload:
folder: ${LOCAL_UPLOAD_FOLDER:D:/work/workspace/feitian-base/nvw/.dev/uploads}
folder: ${LOCAL_UPLOAD_FOLDER:/Users/qiming/qiming-work/uploads}
# Tencent Cloud COS configuration (takes effect when storage.type=cos)
cos:
@@ -165,12 +165,17 @@ search:
username: ${ES_USERNAME:}
password: ${ES_PASSWORD:}
api_key: ${ES_API_KEY:}
text_analyzer: ${ES_TEXT_ANALYZER:standard}
search_analyzer: ${ES_SEARCH_ANALYZER:standard}
# 生态市场模块配置
eco-market:
# 服务端配置
server:
# 远程server端的 ip端口配置
base-url: ${ECO_MARKET_SERVER_URL:https://test-agent-market-api.xspaceagi.com}
enabled: ${ECO_MARKET_SERVER_ENABLED:false}
base-url: ${ECO_MARKET_SERVER_URL:}
# 是否拉取官方生态市场通知,私有化部署默认关闭
pull-message-enabled: ${ECO_MARKET_PULL_MESSAGE_ENABLED:false}
client:
# 客户端配置
retry:
@@ -180,6 +185,15 @@ eco-market:
mcp:
proxy-base-url: ${MCP_PROXY_URL:http://localhost:18020}
overview-page:
service-url: ${OVERVIEW_SERVICE_URL:http://127.0.0.1:5173/_app/digital}
intelligent-data:
service-url: ${INTELLIGENT_DATA_SERVICE_URL:http://192.168.2.106:3000/test-console}
document-editor:
service-url: ${DOCUMENT_EDITOR_SERVICE_URL:}
knife4j:
# 开启增强配置
enable: true

View File

@@ -169,7 +169,10 @@ eco-market:
# 服务端配置
server:
# 远程server端的 ip端口配置
base-url: ${ECO_MARKET_SERVER_URL:https://agent-market-api.xspaceagi.com}
enabled: ${ECO_MARKET_SERVER_ENABLED:false}
base-url: ${ECO_MARKET_SERVER_URL:}
# 是否拉取官方生态市场通知,私有化部署默认关闭
pull-message-enabled: ${ECO_MARKET_PULL_MESSAGE_ENABLED:false}
client:
# 客户端配置
retry:
@@ -179,6 +182,15 @@ eco-market:
mcp:
proxy-base-url: ${MCP_PROXY_URL:http://localhost:8020}
overview-page:
service-url: ${OVERVIEW_SERVICE_URL:http://127.0.0.1:5173/_app/digital}
intelligent-data:
service-url: ${INTELLIGENT_DATA_SERVICE_URL:http://192.168.2.106:3000/test-console}
document-editor:
service-url: ${DOCUMENT_EDITOR_SERVICE_URL:}
knife4j:
# 开启增强配置
enable: true
@@ -229,4 +241,4 @@ model-api-proxy:
enable-model-proxy: ${MODEL_PROXY_ENABLE:true}
port: ${MODEL_PROXY_PORT:18086}
#记录日志
save-log: ${MODEL_PROXY_SAVE_LOG:true}
save-log: ${MODEL_PROXY_SAVE_LOG:true}

View File

@@ -169,7 +169,10 @@ eco-market:
# 服务端配置
server:
# 远程server端的 ip端口配置
base-url: ${ECO_MARKET_SERVER_URL:https://test-agent-market-api.xspaceagi.com}
enabled: ${ECO_MARKET_SERVER_ENABLED:false}
base-url: ${ECO_MARKET_SERVER_URL:}
# 是否拉取官方生态市场通知,私有化部署默认关闭
pull-message-enabled: ${ECO_MARKET_PULL_MESSAGE_ENABLED:false}
client:
# 客户端配置
retry:
@@ -179,6 +182,15 @@ eco-market:
mcp:
proxy-base-url: ${MCP_PROXY_URL:http://localhost:8020}
overview-page:
service-url: ${OVERVIEW_SERVICE_URL:http://127.0.0.1:5173/_app/digital}
intelligent-data:
service-url: ${INTELLIGENT_DATA_SERVICE_URL:http://192.168.2.106:3000/test-console}
document-editor:
service-url: ${DOCUMENT_EDITOR_SERVICE_URL:}
knife4j:
# 开启增强配置
enable: true
@@ -229,4 +241,4 @@ model-api-proxy:
enable-model-proxy: ${MODEL_PROXY_ENABLE:true}
port: ${MODEL_PROXY_PORT:18086}
#记录日志
save-log: ${MODEL_PROXY_SAVE_LOG:true}
save-log: ${MODEL_PROXY_SAVE_LOG:true}

View File

@@ -1,12 +1,11 @@
package com.xspaceagi.agent.core.adapter.application;
import com.xspaceagi.agent.core.adapter.dto.AgentDetailDto;
import com.xspaceagi.agent.core.adapter.dto.CardDto;
import com.xspaceagi.agent.core.adapter.dto.UserAgentDto;
import com.xspaceagi.agent.core.adapter.dto.*;
import com.xspaceagi.agent.core.adapter.dto.config.AgentComponentConfigDto;
import com.xspaceagi.agent.core.adapter.dto.config.AgentConfigDto;
import com.xspaceagi.agent.core.adapter.dto.config.Arg;
import com.xspaceagi.agent.core.adapter.dto.config.ModelConfigDto;
import com.xspaceagi.agent.core.adapter.repository.entity.AgentComponentConfig;
import java.util.List;
@@ -121,6 +120,8 @@ public interface AgentApplicationService {
*/
AgentComponentConfigDto queryComponentConfig(Long id);
List<AgentComponentConfigDto> queryComponentConfigListByAgentIdAndType(Long agentId, AgentComponentConfig.Type type);
List<Arg> getAgentNoneSystemVariables(Long agentId, Long spaceId);
/**
@@ -232,10 +233,17 @@ public interface AgentApplicationService {
/**
* 获取用户可选择的模型列表
*
* @param userId 用户ID
* @param userId 用户ID
* @param agentId 智能体ID
* @return 模型列表
*/
List<ModelConfigDto> queryUserCanSelectModelListForAgent(Long userId, Long agentId);
/**
* AI生成项目信息名称、描述、图标
*/
GenerateInfoResultDto generateInfo(GenerateInfoReqDto req);
String uploadSvgIcon(String svgIcon, String fileName);
}

View File

@@ -1,7 +1,8 @@
package com.xspaceagi.agent.core.adapter.application;
import com.xspaceagi.agent.core.adapter.dto.AddSkillsToWorkspaceDto;
import com.xspaceagi.agent.core.adapter.dto.CreateWorkspaceDto;
import com.xspaceagi.agent.core.adapter.dto.*;
import java.util.List;
public interface AgentWorkspaceApplicationService {
@@ -19,4 +20,48 @@ public interface AgentWorkspaceApplicationService {
*/
void addSkillsToWorkspace(AddSkillsToWorkspaceDto addSkillsToWorkspaceDto);
/**
* 初始化项目模板
* 根据项目类型和编程语言从 classpath 读取模板 zip传到工作空间
* 根据 git版本开关决定是否执行 git init + commit
*/
void initProjectTemplate(InitProjectTemplateDto dto);
/**
* 安装项目依赖
* TypeScript 项目执行 pnpm installPython 项目执行 pip install
*/
void installProject(InstallProjectDto dto);
/**
* 打包 Agent在沙箱工作空间执行打包脚本生成各平台压缩包上传到平台文件存储
*/
List<AgentPublishVersionDto> packageAgent(PackageAgentDto dto);
/**
* 从沙箱工作空间取回技能文件,上传到文件服务,用于技能发布
*/
List<SkillFileDto> snapshotSkillFilesFromSandbox(Long userId, Long cId, String targetType, Long skillId);
/**
* 删除沙箱工作空间
*/
void deleteWorkspace(Long userId, Long cId);
/**
* 从沙箱导出技能为 zip 包
*/
SkillExportResultDto exportSkillFromSandbox(Long userId, Long cId, String skillName);
/**
* 复制源沙箱工作空间到新的工作空间,并初始化 git
* 采用先打包下载,后上传到新空间的方式,可以实现跨主机的复制
*/
void copySandboxWorkspace(Long srcUserId, Long srcCId, Long destUserId, Long destCId);
/**
* 从指定 url 地址下载 zip 文件并上传到工作空间,初始化项目模板
*/
void uploadZipToWorkspace(Long userId, Long cId, String zipFileUrl);
}

View File

@@ -3,8 +3,9 @@ package com.xspaceagi.agent.core.adapter.application;
import java.util.List;
import com.xspaceagi.agent.core.adapter.dto.ComponentDto;
import com.xspaceagi.agent.core.adapter.repository.entity.Published;
public interface ComponentApplicationService {
List<ComponentDto> getComponentListBySpaceId(Long spaceId);
List<ComponentDto> getComponentListBySpaceId(Long spaceId, Long groupId, List<Published.TargetType> types);
}

View File

@@ -5,7 +5,6 @@ import com.xspaceagi.agent.core.adapter.repository.entity.Conversation;
import org.springframework.ai.chat.messages.Message;
import reactor.core.publisher.Flux;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -26,6 +25,8 @@ public interface ConversationApplicationService {
ConversationDto createConversationForTaskCenter(Long tenantId, Long userId, Long agentId);
ConversationDto createConversationForProjectDevelopment(Long tenantId, Long userId, Long spaceId, Long devAgentId, String targetType, Long targetId);
/**
* 创建任务会话,返回会话
*
@@ -52,6 +53,8 @@ public interface ConversationApplicationService {
void updateConversationStatus(Long cid, Conversation.ConversationTaskStatus status);
void updateConversationVariables(Long id, Map<String, Object> variables);
/**
* 删除会话
*
@@ -134,7 +137,15 @@ public interface ConversationApplicationService {
Long nextConversationId(Long agentId, String sandboxServerId);
Collection<? extends Message> getRoundMessages(String conversationId, int i);
List<Message> getRoundMessages(String conversationId, int i);
List<ChatMessageDto> getRoundMessages(String conversationId, Long minId);
void addRoundMessage(String conversationId, Message message);
void setChatStopStatus(String conversationId);
boolean isChatStop(String conversationId);
void clearChatStopStatus(String conversationId);
}

View File

@@ -1,105 +0,0 @@
package com.xspaceagi.agent.core.adapter.application;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeeAdminWorkbenchPageDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeeAdminActionPageDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeeAdminActionRequestDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeeAdminActionResultDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeeAdminRecordRequestDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeeAdminRecordResultDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeeBillingEstimateDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeeBusinessViewPageDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeePlanBusinessViewDetailDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeePolicySnapshotPageDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeeSyncRecordPageDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeeSyncRequestDto;
import com.xspaceagi.agent.core.adapter.dto.digital.DigitalEmployeeSyncResponseDto;
import java.util.Date;
import java.util.List;
public interface DigitalEmployeeSyncApplicationService {
DigitalEmployeeSyncResponseDto syncOutbox(DigitalEmployeeSyncRequestDto request);
DigitalEmployeeSyncRecordPageDto queryRecords(
String clientKey,
String deviceId,
String entityType,
String entityId,
String outboxId,
Long pageNo,
Long pageSize
);
DigitalEmployeeBusinessViewPageDto queryBusinessViews(
String entityType,
String clientKey,
String deviceId,
String entityId,
String status,
String syncStatus,
Date updatedFrom,
Date updatedTo,
Long pageNo,
Long pageSize
);
DigitalEmployeePlanBusinessViewDetailDto queryPlanBusinessViewDetail(
String planId,
String clientKey,
String deviceId
);
DigitalEmployeeAdminWorkbenchPageDto queryAdminWorkbench(
String view,
String clientKey,
String deviceId,
String entityType,
String entityId,
String status,
String kind,
String category,
String level,
String priority,
Date updatedFrom,
Date updatedTo,
Long pageNo,
Long pageSize
);
DigitalEmployeePolicySnapshotPageDto queryAdminPolicySnapshots(
String clientKey,
String deviceId,
String status,
String policyKind,
Date updatedFrom,
Date updatedTo,
Long pageNo,
Long pageSize
);
DigitalEmployeeAdminActionResultDto createAdminAction(DigitalEmployeeAdminActionRequestDto request);
DigitalEmployeeAdminActionPageDto queryPendingAdminActions(
String clientKey,
String deviceId,
Long pageNo,
Long pageSize
);
DigitalEmployeeAdminActionResultDto markAdminActionResult(
Long actionId,
String status,
List<String> reasonCodes
);
DigitalEmployeeAdminRecordResultDto recordDailyReportSendResult(DigitalEmployeeAdminRecordRequestDto request);
DigitalEmployeeBillingEstimateDto queryBillingEstimates(
String clientKey,
String deviceId,
Date updatedFrom,
Date updatedTo
);
DigitalEmployeeAdminRecordResultDto recordAuditArchive(DigitalEmployeeAdminRecordRequestDto request);
}

View File

@@ -19,31 +19,41 @@ public interface IComputerFileApplicationService {
/**
* 查询文件列表
*/
Map<String, Object> getFileList(Long userId, Long cId, String proxyPath, UserContext userContext);
Map<String, Object> getFileList(Long userId, Long cId, String proxyPath, UserContext userContext, String customTargetDir);
/**
* 更新文件
*/
Map<String, Object> filesUpdate(Long userId, Long cId, List<ComputerFileInfo> files, UserContext userContext);
Map<String, Object> filesUpdate(Long userId, Long cId, List<ComputerFileInfo> files, UserContext userContext, String customTargetDir);
/**
* 上传文件
*/
Map<String, Object> uploadFile(Long userId, Long cId, String filePath, MultipartFile file, UserContext userContext);
Map<String, Object> uploadFile(Long userId, Long cId, String filePath, MultipartFile file, UserContext userContext, String customTargetDir);
/**
* 批量上传文件
*/
Map<String, Object> uploadFiles(Long userId, Long cId, List<String> filePaths, List<MultipartFile> files, UserContext userContext);
Map<String, Object> uploadFiles(Long userId, Long cId, List<String> filePaths, List<MultipartFile> files, UserContext userContext, String customTargetDir);
/**
* 导入项目zip 替换工作空间,保留白名单目录)
*/
Map<String, Object> importProject(Long userId, Long cId, MultipartFile file, UserContext userContext, String customTargetDir);
/**
* 获取静态文件
*/
ResponseEntity<StreamingResponseBody> getStaticFile(Long cId, HttpServletRequest request);
ResponseEntity<StreamingResponseBody> getStaticFile(Long cId, HttpServletRequest request, String customTargetDir);
/**
* 下载全部文件zip
*/
ResponseEntity<StreamingResponseBody> downloadAllFiles(Long userId, Long cId, UserContext userContext);
ResponseEntity<StreamingResponseBody> downloadAllFiles(Long userId, Long cId, UserContext userContext, String customTargetDir);
/**
* 获取沙盒日志
*/
Map<String, Object> getLogs(Long userId, Long cId, int tailLines);
}

View File

@@ -2,6 +2,7 @@ package com.xspaceagi.agent.core.adapter.application;
import com.xspaceagi.agent.core.adapter.dto.CodeCheckResultDto;
import com.xspaceagi.agent.core.adapter.dto.ModelQueryDto;
import com.xspaceagi.agent.core.adapter.dto.SortUpdateDTO;
import com.xspaceagi.agent.core.adapter.dto.config.ModelConfigDto;
import org.springframework.core.ParameterizedTypeReference;
@@ -142,4 +143,6 @@ public interface ModelApplicationService {
String testModelConnectivity(ModelConfigDto modelConfig, String testPrompt);
List<ModelConfigDto> getMySystemModels(Long userId, String tab);
void updateModelSort(List<SortUpdateDTO> updateDTOS);
}

View File

@@ -0,0 +1,9 @@
package com.xspaceagi.agent.core.adapter.application;
import com.xspaceagi.agent.core.adapter.dto.ProjectCreateDTO;
import com.xspaceagi.agent.core.adapter.dto.ProjectCreateResultDTO;
public interface ProjectApplicationService {
ProjectCreateResultDTO createProject(ProjectCreateDTO projectCreateDTO);
}

View File

@@ -5,6 +5,8 @@ import com.xspaceagi.agent.core.adapter.dto.*;
import com.xspaceagi.agent.core.adapter.repository.entity.Published;
import com.xspaceagi.system.spec.dto.PageQueryVo;
import com.xspaceagi.system.spec.page.SuperPage;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@@ -15,6 +17,8 @@ public interface PublishApplicationService {
*/
SuperPage<PublishedDto> queryPublishedList(PublishedQueryDto publishedQueryDto);
List<ResourceGroupDto> queryGroupedPublishedList(PublishedQueryDto publishedQueryDto);
SuperPage<PublishedDto> queryPublishedListForAt(PublishedQueryDto publishedQueryDto);
List<PublishedDto> queryPublishedList(Published.TargetType targetType, List<Long> targetIds);
@@ -23,6 +27,8 @@ public interface PublishApplicationService {
List<PublishedDto> queryPublishedList(Published.TargetType targetType, List<Long> targetIds, String kw);
List<PublishedDto> queryPublishedList(Published.TargetType targetType, List<Long> targetIds, String kw, boolean returnConfig);
IPage<PublishedDto> queryPublishedListForManage(PublishedQueryDto publishedQueryDto);
/**
@@ -39,6 +45,8 @@ public interface PublishApplicationService {
*/
Long publishApply(PublishApplyDto publishApplyDto);
String publishOrApply(PublishApplySubmitDto publishApplySubmitDto);
/**
* 通过发布
*/
@@ -108,4 +116,6 @@ public interface PublishApplicationService {
void updateAccessControlStatus(Published.TargetType targetType, Long targetId, Integer status);
void updatePublishName(Published.TargetType targetType, Long targetId, String name);
Object checkPermissionAndReturnTargetConfig(Published.TargetType targetType, Long targetId);
}

View File

@@ -0,0 +1,27 @@
package com.xspaceagi.agent.core.adapter.application;
import com.xspaceagi.agent.core.adapter.dto.recommend.RecommendHomeResponse;
import com.xspaceagi.agent.core.adapter.dto.recommend.TargetRecommendPageRequest;
import com.xspaceagi.agent.core.adapter.dto.recommend.TargetRecommendResponse;
import com.xspaceagi.agent.core.adapter.dto.recommend.TargetRecommendSaveRequest;
import java.util.List;
public interface RecommendApplicationService {
void save(TargetRecommendSaveRequest request);
void update(TargetRecommendSaveRequest request);
void delete(Long id);
TargetRecommendResponse getById(Long id);
List<TargetRecommendResponse> page(TargetRecommendPageRequest request);
List<TargetRecommendResponse> list(String recType, String targetType);
void updateSort(Long id, Integer sort);
RecommendHomeResponse getRecommendations();
}

View File

@@ -0,0 +1,34 @@
package com.xspaceagi.agent.core.adapter.application;
import com.xspaceagi.agent.core.adapter.dto.ResourceGroupDto;
import com.xspaceagi.agent.core.adapter.repository.entity.ResourceGroupRelation;
import java.util.List;
import java.util.Map;
public interface ResourceGroupApplicationService {
Long add(ResourceGroupDto dto);
void update(ResourceGroupDto dto);
void delete(Long id);
ResourceGroupDto queryById(Long id);
ResourceGroupDto queryByName(Long spaceId, String type, String name);
List<ResourceGroupDto> queryList(String name, List<String> types, Long spaceId);
List<ResourceGroupDto> queryList(List<Long> groupIds);
void addResourceToGroup(Long groupId, String targetType, Long targetId);
void removeResourceFromGroup(Long groupId, String targetType, Long targetId);
List<ResourceGroupRelation> queryGroupRelations(Long groupId);
List<ResourceGroupRelation> queryGroupRelations(List<Map<String, Long>> targets);
ResourceGroupRelation queryResourceGroupRelation(String type, Long targetId);
}

View File

@@ -1,6 +1,7 @@
package com.xspaceagi.agent.core.adapter.application;
import com.xspaceagi.agent.core.adapter.dto.*;
import com.xspaceagi.agent.core.spec.enums.UsageScenarioEnum;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
@@ -68,6 +69,18 @@ public interface SkillApplicationService {
*/
Long importSkill(MultipartFile file, SkillConfigDto existSkill, Long targetSpaceId, SkillExtDto ext);
/**
* 导入技能支持文件或URL导入
*
* @param url 技能文件URL与file二选一
* @param file 上传的技能文件与url二选一
* @param targetSkillId 目标技能ID导入到已有技能为null时创建新技能
* @param targetSpaceId 目标空间ID创建新技能时必填
* @param usageScenarios 使用场景列表
* @return 技能ID
*/
Long importSkill(String url, MultipartFile file, Long targetSkillId, Long targetSpaceId, List<UsageScenarioEnum> usageScenarios);
/**
* 复制技能
*/
@@ -78,6 +91,11 @@ public interface SkillApplicationService {
*/
SkillConfigDto getSkillTemplate(InputStream inputStream);
/**
* 获取技能模板(从 classpath 自动读取 skill-template.json
*/
SkillConfigDto getSkillTemplate();
/**
* 校验空间技能权限
*/

View File

@@ -0,0 +1,12 @@
package com.xspaceagi.agent.core.adapter.application;
import com.xspaceagi.agent.core.adapter.dto.PageAppNewSqlDTO;
import com.xspaceagi.agent.core.adapter.dto.PageAppUpdateSqlDTO;
import com.xspaceagi.agent.core.adapter.dto.PageSqlResultDTO;
public interface TableWorkflowForPageApplicationService {
PageSqlResultDTO tableNewSql(PageAppNewSqlDTO pageAppNewSqlDTO);
PageSqlResultDTO tableUpdateSql(PageAppUpdateSqlDTO pageAppUpdateSqlDTO);
}

View File

@@ -88,6 +88,8 @@ public interface WorkflowApplicationService {
WorkflowConfigDto queryPublishedWorkflowConfig(Long workflowId, Long spaceId);
List<WorkflowConfigDto> queryPublishedWorkflowConfigs(List<Long> workflowIds);
/**
* 添加节点
*/

View File

@@ -31,4 +31,7 @@ public class AgentAddDto implements Serializable {
@Schema(description = "类型ChatBot 对话智能体TaskAgent 任务型智能体", requiredMode = Schema.RequiredMode.REQUIRED)
private String type;
@Schema(description = "子类型ChatBot 问答型、General 通用型、Custom 自定义、Flow 流程协作、Group 群组协作")
private String subType;
}

View File

@@ -0,0 +1,21 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.xspaceagi.agent.core.adapter.dto.config.AgentConfigDto;
import com.xspaceagi.agent.core.adapter.repository.entity.Published;
import lombok.Data;
import java.util.List;
@Data
public class AgentConfigCacheStatusVo {
private AgentConfigDto agentConfig;
private List<AgentComponentCacheStatusVo> components;
@Data
public static class AgentComponentCacheStatusVo {
private Published.TargetType targetType;
private Long targetId;
private Long lastUpdated;
}
}

View File

@@ -74,4 +74,13 @@ public class AgentConfigUpdateDto implements Serializable {
@Schema(description = "是否隐藏聊天区域1 隐藏0 不隐藏")
private Integer hideChatArea;
@Schema(description = "是否允许用户在对话框中选择模式, 1 允许,其他不允许")
private Integer allowChooseMode;
@Schema(description = "是否开启询问用户, 1 允许,其他不允许")
private Integer enableAskQuestion;
@Schema(description = "是否开启版本控制, 1 允许,其他不允许")
private Integer enableVersionControl;
}

View File

@@ -27,6 +27,9 @@ public class AgentDetailDto implements Serializable {
@Schema(description = "智能体类型ChatBot 对话智能体PageApp 网页应用智能体")
private String type;
@Schema(description = "子类型,ChatBot->ChatBot、PageApp->PageApp, TaskAgent -> General、Custom、Flow、Group")
private String subType;
@Schema(description = "智能体名称")
private String name;
@@ -107,6 +110,12 @@ public class AgentDetailDto implements Serializable {
@Schema(description = "是否允许用户在对话框中选择自己的电脑, 1 允许,其他不允许")
private Integer allowPrivateSandbox;
@Schema(description = "是否允许用户在对话框中选择模式, 1 允许,其他不允许")
private Integer allowChooseMode;
@Schema(description = "是否开启版本控制, 1 允许,其他不允许")
private Integer enableVersionControl;
@Schema(description = "扩展页面首页")
private String pageHomeIndex;
@@ -130,4 +139,7 @@ public class AgentDetailDto implements Serializable {
@Schema(description = "超出调用限制提示")
private boolean overCallLimit;
@Schema(description = "是否显示发布按钮")
private boolean showPublishBtn;
}

View File

@@ -25,6 +25,7 @@ public class AgentOutputDto implements Serializable {
PROCESSING_MESSAGE,
// 输出消息
MESSAGE,
STATE,
// 最终统计等消息
FINAL_RESULT,

View File

@@ -0,0 +1,34 @@
package com.xspaceagi.agent.core.adapter.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AgentPublishVersionDto implements Serializable {
private String version;
private String gitCommit;
@Builder.Default
private Boolean latest = true;
private List<PackageArtifact> packages;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class PackageArtifact implements Serializable {
private String platform;
private String url;
}
}

View File

@@ -1,17 +1,16 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.xspaceagi.agent.core.spec.enums.MessageTypeEnum;
import com.xspaceagi.agent.core.spec.utils.TikTokensUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.ai.chat.messages.Message;
import org.springframework.ai.chat.messages.MessageType;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.ai.chat.messages.*;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
@Data
@Builder
@@ -19,6 +18,8 @@ import java.util.Map;
@NoArgsConstructor
public class ChatMessageDto implements Message {
private static final int MAX_TOKEN_WINDOW_SIZE = 64 * 1024;
private Long index;
private Long tenantId;
@@ -72,7 +73,10 @@ public class ChatMessageDto implements Message {
@Override
public MessageType getMessageType() {
return MessageType.valueOf(role.name());
if (role != null) {
return MessageType.valueOf(role.name());
}
return MessageType.USER;
}
public enum Role {
@@ -84,6 +88,74 @@ public class ChatMessageDto implements Message {
public enum SenderType {
USER,
AGENT
AGENT,
REMINDER
}
public static List<Message> toMessages(List<ChatMessageDto> messages) {
List<Message> all = new ArrayList<>();
//cachedMessageList转Message
for (ChatMessageDto message : messages) {
if (message.getRole().name().equals(MessageType.USER.name())) {
String text = message.getText();
if (text != null) {
text = text.replaceAll("<user-memory>[\\s\\S]*?</user-memory>", "").trim();
}
all.add(new UserMessage(text == null ? "" : text));
}
if (message.getRole().name().equals(MessageType.ASSISTANT.name())) {
String text = removeSystemTagContent(message.getText());
if (text != null) {
text = text.replaceAll("\n<div><markdown-custom-process[^>]*>.*?</markdown-custom-process></div>\n\n", "");
text = text.replaceAll("<markdown-custom-process[^>]*>.*?</markdown-custom-process>", "");
}
all.add(new AssistantMessage(text));
}
if (message.getRole().name().equals(MessageType.SYSTEM.name())) {
all.add(new SystemMessage(message.getText()));
}
}
Collections.reverse(all);
Iterator<Message> iterator = all.iterator();
int tokenCount = 0;
MessageType messageType = MessageType.ASSISTANT;
while (iterator.hasNext()) {
Message next = iterator.next();
if (messageType != next.getMessageType()) {
iterator.remove();
continue;
}
messageType = messageType == MessageType.USER ? MessageType.ASSISTANT : MessageType.USER;
if (tokenCount >= MAX_TOKEN_WINDOW_SIZE) {
iterator.remove();
} else {
tokenCount += TikTokensUtil.tikTokensCount(next.getText());
}
}
Collections.reverse(all);
removeIfFirstMessageIsAssistant(all);
return all;
}
public static String removeSystemTagContent(String text) {
if (text == null) {
return null;
}
return text.replaceAll("<think>[\\s\\S]*?</think>", "").trim()
.replaceAll("```xml[\\s\\S]*?<tool_.*>[\\s\\S]*?</tool_.*>[\\s\\S]*?```", " ")
.replaceAll("<tool_.*>[\\s\\S]*?</tool_.*>", " ");
}
//移除第一条消息不是User的内容避免像deepseek第一条消息不是User消息时导致无法正常工具调用
private static void removeIfFirstMessageIsAssistant(List<Message> all) {
if (CollectionUtils.isEmpty(all)) {
return;
}
if (all.get(0).getMessageType() == MessageType.ASSISTANT) {
all.remove(0);
removeIfFirstMessageIsAssistant(all);
}
}
}

View File

@@ -1,15 +1,14 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.xspaceagi.agent.core.adapter.repository.entity.Published;
import com.xspaceagi.agent.core.spec.enums.ComponentTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import com.xspaceagi.agent.core.adapter.repository.entity.Published;
import com.xspaceagi.agent.core.spec.enums.ComponentTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class ComponentDto implements Serializable {
@@ -19,6 +18,9 @@ public class ComponentDto implements Serializable {
@Schema(description = "空间ID")
private Long spaceId;
@Schema(description = "分组ID")
private Long groupId;
@Schema(description = "组件类型")
private ComponentTypeEnum type;
@@ -54,4 +56,7 @@ public class ComponentDto implements Serializable {
@Schema(description = "是否启用")
private Integer enabled;
@Schema(description = "[插件专用]开发时使用的会话ID")
private Long devAgentConversationId;
}

View File

@@ -36,6 +36,9 @@ public class ConversationDto {
@Schema(description = "会话摘要,当开启长期记忆时,会对每次会话进行总结")
private String summary;
@Schema(description = "会话图标")
private String icon;
@Schema(description = "用户填写的会话变量内容")
private Map<String, Object> variables;
@@ -68,6 +71,13 @@ public class ConversationDto {
private String sandboxSessionId;
@Schema(description = "开发项目所在的空间ID")
private Long devSpaceId;
@Schema(description = "开发模式目标类型 Agent,PageApp,Skill,Plugin")
private String devTargetType;
@Schema(description = "开发模式目标ID")
private String devTargetId;
@Schema(description = "已分享的URI地址比对上了则不需要认证")
private List<String> sharedUris;

View File

@@ -18,4 +18,7 @@ public class ConversationUpdateDto implements Serializable {
@Schema(description = "会话主题可以不传firstMessage与topic二选一")
private String topic;
@Schema(description = "会话图标")
private String icon;
}

View File

@@ -10,6 +10,7 @@ import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@Data
@NoArgsConstructor
@@ -31,4 +32,17 @@ public class CreateWorkspaceDto implements Serializable {
@Schema(description = "子代理列表")
private List<SubagentDto> subagents;
@Schema(description = "MCP servers配置key为server名称value为server配置")
private Map<String, McpServerConfigDto> mcpServersConfig;
@Schema(description = "工具权限配置")
private PermissionsConfigDto permissionsConfig;
@Schema(description = "Hooks配置key为事件类型(如PreToolUse)value为Hook规则列表")
private Map<String, List<HookEntryDto>> hooksConfig;
@Schema(description = "Hook外挂脚本列表")
private List<HookScriptDto> hookScripts;
}

View File

@@ -1,4 +1,4 @@
package com.xspaceagi.agent.web.ui.controller.dto;
package com.xspaceagi.agent.core.adapter.dto;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import lombok.Data;

View File

@@ -0,0 +1,25 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GenerateInfoAiDto implements Serializable {
@JsonPropertyDescription("项目名称简洁有意义不超过20个字符")
private String name;
@JsonPropertyDescription("项目描述一句话概括功能和用途不超过100个字符")
private String description;
@JsonPropertyDescription("SVG图标内容根元素必须为 <svg width=\"200\" height=\"200\" viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\">;第一个元素必须是铺满画布的背景 rectx=0,y=0,width=100,height=100主图形需占满大部分画布约10-90坐标范围不要留大空白边距不使用外部资源")
private String svgIcon;
}

View File

@@ -0,0 +1,22 @@
package com.xspaceagi.agent.core.adapter.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "AI生成项目信息请求")
public class GenerateInfoReqDto implements Serializable {
@Schema(description = "用户需求描述", requiredMode = Schema.RequiredMode.REQUIRED)
@NotBlank
private String prompt;
}

View File

@@ -0,0 +1,26 @@
package com.xspaceagi.agent.core.adapter.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "AI生成项目信息结果")
public class GenerateInfoResultDto implements Serializable {
@Schema(description = "项目名称")
private String name;
@Schema(description = "项目描述")
private String description;
@Schema(description = "图标文件访问URL")
private String iconUrl;
}

View File

@@ -0,0 +1,25 @@
package com.xspaceagi.agent.core.adapter.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "Hook规则条目")
public class HookEntryDto implements Serializable {
// 过滤条件(如 "Bash" 仅针对 Bash 工具)
@Schema(description = "匹配器,如工具名或正则表达式")
private String matcher;
@Schema(description = "Hook配置列表每项为解析后的 JSON 对象")
private List<Object> hooks;
}

View File

@@ -0,0 +1,32 @@
package com.xspaceagi.agent.core.adapter.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "单个Hook脚本配置")
public class HookItemDto implements Serializable {
@Schema(description = "Hook类型" +
"command - 运行 shell 脚本、" +
"http - 调用 HTTP 端点、" +
"mcp_tool - 调用 MCP 工具、" +
"prompt - 向 Claude 发送提示、" +
"agent - 生成 subagent")
private String type;
@Schema(description = "要执行的命令")
private String command;
@Schema(description = "命令参数列表")
private List<String> args;
}

View File

@@ -0,0 +1,24 @@
package com.xspaceagi.agent.core.adapter.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "Hook外挂脚本DTO")
public class HookScriptDto implements Serializable {
// 比如传的相对路径hooks/my-script.sh实际存放路径是 ${PROJECT_DIR}/.claude/hooks/my-script.sh
@Schema(description = "脚本相对路径,如 hooks/my-script.sh")
private String path;
@Schema(description = "脚本文件内容")
private String content;
}

View File

@@ -0,0 +1,89 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonValue;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.Arrays;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "初始化项目模板请求DTO")
public class InitProjectTemplateDto implements Serializable {
@Schema(description = "用户ID", requiredMode = Schema.RequiredMode.REQUIRED)
private Long userId;
@Schema(description = "会话ID", requiredMode = Schema.RequiredMode.REQUIRED)
@JsonProperty("cId")
private Long cId;
@Schema(description = "项目类型", requiredMode = Schema.RequiredMode.REQUIRED)
private ProjectType projectType;
@Schema(description = "编程语言projectType=AGENT时必填")
private ProgrammingLanguage programmingLanguage;
public enum ProjectType {
AGENT("agent"),
SKILL("skill");
private final String value;
ProjectType(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
@JsonCreator
public static ProjectType fromValue(String value) {
if (value == null) {
return null;
}
return Arrays.stream(values())
.filter(e -> e.value.equalsIgnoreCase(value))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("Unknown projectType: " + value));
}
}
public enum ProgrammingLanguage {
TYPESCRIPT("typescript"),
PYTHON("python");
private final String value;
ProgrammingLanguage(String value) {
this.value = value;
}
@JsonValue
public String getValue() {
return value;
}
@JsonCreator
public static ProgrammingLanguage fromValue(String value) {
if (value == null) {
return null;
}
return Arrays.stream(values())
.filter(e -> e.value.equalsIgnoreCase(value))
.findFirst()
.orElseThrow(() -> new IllegalArgumentException("Unknown programmingLanguage: " + value));
}
}
}

View File

@@ -0,0 +1,29 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(description = "安装项目依赖请求DTO")
public class InstallProjectDto implements Serializable {
@Schema(description = "用户ID", hidden = true)
private Long userId;
@Schema(description = "会话ID", requiredMode = Schema.RequiredMode.REQUIRED)
@JsonProperty("cId")
private Long cId;
@Schema(description = "编程语言", requiredMode = Schema.RequiredMode.REQUIRED)
private InitProjectTemplateDto.ProgrammingLanguage programmingLanguage;
}

View File

@@ -0,0 +1,34 @@
package com.xspaceagi.agent.core.adapter.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "MCP Server配置")
public class McpServerConfigDto implements Serializable {
@Schema(description = "MCP Server类型stdio、http、streamable-http、sse、ws")
private String type;
@Schema(description = "远程HTTP端点URL")
private String url;
@Schema(description = "启动命令,如 npx、pythontype为stdio时使用")
private String command;
@Schema(description = "命令参数列表type为stdio时使用")
private List<String> args;
@Schema(description = "环境变量type为stdio时使用")
private Map<String, String> env;
}

View File

@@ -0,0 +1,30 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PackageAgentDto implements Serializable {
@NotNull
private Long userId;
@NotNull
@JsonProperty("cId")
private Long cId;
@NotNull
private Long agentId;
@NotNull
private InitProjectTemplateDto.ProgrammingLanguage programmingLanguage;
}

View File

@@ -0,0 +1,38 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.xspaceagi.agent.core.adapter.dto.config.Arg;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class PageAppNewSqlDTO {
@Schema(description = "空间ID环境变量中读取 DEV_SPACE_ID", requiredMode = Schema.RequiredMode.REQUIRED, hidden = true)
private Long spaceId;
@Schema(description = "项目ID环境变量中读取 DEV_PROJECT_ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String projectId;
@Schema(description = "给接口一个分组名称,便于管理,尽量将所有接口放在一个分组里")
private String groupName;
@Schema(description = "分组描述")
private String groupDescription;
@Schema(description = "参数,使用一级即可")
private List<Arg> args;
@Schema(description = "表ID")
private Long tableId;
@Schema(description = "SQLVariable placeholders do not need single quotes, e.g., SELECT * FROM custom_table WHERE agent_id = {{agent_id}};For LIKE fuzzy queries, use $+variable, e.g., SELECT * FROM custom_table WHERE agent_name LIKE '%${{agent_name}}%';", requiredMode = Schema.RequiredMode.REQUIRED)
private String sql;
@Schema(description = "API名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String apiName;
@Schema(description = "API描述", requiredMode = Schema.RequiredMode.REQUIRED)
private String description;
}

View File

@@ -0,0 +1,29 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.xspaceagi.agent.core.adapter.dto.config.Arg;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.List;
@Data
public class PageAppUpdateSqlDTO {
@Schema(description = "项目ID环境变量中读取 DEV_PROJECT_ID", requiredMode = Schema.RequiredMode.REQUIRED)
private String projectId;
@Schema(description = "API ID")
private Long apiId;
@Schema(description = "参数,使用一级即可")
private List<Arg> args;
@Schema(description = "SQLVariable placeholders do not need single quotes, e.g., SELECT * FROM custom_table WHERE agent_id = {{agent_id}};For LIKE fuzzy queries, use $+variable, e.g., SELECT * FROM custom_table WHERE agent_name LIKE '%${{agent_name}}%';", requiredMode = Schema.RequiredMode.REQUIRED)
private String sql;
@Schema(description = "API名称", requiredMode = Schema.RequiredMode.REQUIRED)
private String apiName;
@Schema(description = "API描述", requiredMode = Schema.RequiredMode.REQUIRED)
private String description;
}

View File

@@ -0,0 +1,14 @@
package com.xspaceagi.agent.core.adapter.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class PageSqlResultDTO {
@Schema(description = "接口ID")
private Long apiId;
@Schema(description = "接口Schema可用于调试")
private String apiSchema;
}

View File

@@ -0,0 +1,27 @@
package com.xspaceagi.agent.core.adapter.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "工具权限配置")
public class PermissionsConfigDto implements Serializable {
@Schema(description = "自动允许的工具规则列表,如 [\"Bash(npm run lint)\", \"Read(~/.zshrc)\"]")
private List<String> allow;
@Schema(description = "拒绝的工具规则列表,如 [\"Bash(curl *)\", \"Read(./.env)\"]")
private List<String> deny;
@Schema(description = "需要询问的工具规则列表,如 [\"Bash(git push *)\"]")
private List<String> ask;
}

View File

@@ -21,4 +21,6 @@ public class PluginExecuteRequestDto implements Serializable {
private Map<String, Object> params;
private boolean test;
private String apiKey;
}

View File

@@ -24,4 +24,7 @@ public class PluginUpdateDto<T> implements Serializable {
@Schema(description = "插件配置")
private T config;
@Schema(description = "开发智能体的会话ID")
private Long devAgentConversationId;
}

View File

@@ -0,0 +1,24 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.xspaceagi.agent.core.adapter.repository.entity.Published;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class ProjectCreateDTO {
@Schema(description = "项目所属空间ID不传则默认放在个人空间,可选")
private Long spaceId;
@Schema(description = "目标项目类型", requiredMode = Schema.RequiredMode.REQUIRED)
private Published.TargetType targetType;
@Schema(description = "目标项目名称,可选")
private String name;
@Schema(description = "目标项目创建者ID,可选", hidden = true)
private Long creatorId;
@Schema(description = "编程语言选择")
private InitProjectTemplateDto.ProgrammingLanguage programmingLanguage;
}

View File

@@ -0,0 +1,18 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.xspaceagi.agent.core.adapter.repository.entity.Published;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class ProjectCreateResultDTO {
@Schema(description = "目标项目类型")
private Published.TargetType targetType;
@Schema(description = "目标项目ID")
private String targetId;
@Schema(description = "开发智能体的关联的会话ID")
private Long conversationId;
}

View File

@@ -1,18 +1,17 @@
package com.xspaceagi.agent.core.adapter.dto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.xspaceagi.agent.core.adapter.repository.entity.Published;
import com.xspaceagi.agent.core.spec.enums.PluginTypeEnum;
import com.xspaceagi.agent.core.spec.enums.UsageScenarioEnum;
import com.xspaceagi.custompage.sdk.dto.SourceTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
public class PublishedDto implements Serializable {
@@ -23,6 +22,8 @@ public class PublishedDto implements Serializable {
private Long spaceId;
private Long groupId;
@Schema(description = "目标对象智能体、工作流、插件ID")
private Published.TargetType targetType;
@@ -102,6 +103,9 @@ public class PublishedDto implements Serializable {
@Schema(description = "价格")
private BigDecimal price;
@Schema(description = "价格类型, ONE_TIME 次SECOND 秒MILLION_TOKEN 百万Token")
private String pricingType;
@Schema(description = "是否已订阅,对智能体和技能有效")
private boolean subscribed;

View File

@@ -23,9 +23,15 @@ public class PublishedQueryDto implements Serializable {
@Schema(description = "子类型")
private Published.TargetSubType targetSubType;
@Schema(description = "智能体类型")
private List<String> agentTypes;
@Schema(description = "页码")
private Integer page;
@Schema(description = "上一页最后一条数据的时间戳与page二选一")
private Long lastTimestamp;
@Schema(description = "每页数量")
private Integer pageSize;
@@ -65,12 +71,21 @@ public class PublishedQueryDto implements Serializable {
@Schema(description = "查询的ID范围比如只查看推荐、官方标识的组件等", hidden = true)
private List<Long> targetIds;
@Schema(description = "推荐列表", hidden = true)
private List<Long> recommendIds;
@Schema(description = "排除列表", hidden = true)
private List<Long> excludeIds;
@Schema(description = "是否只返回官方标识的内容")
private Boolean official;
@Schema(description = "适用场景筛选参数,如 [TaskAgent, PageApp]")
private List<UsageScenarioEnum> usageScenarios;
@Schema(description = "是否返回配置信息", hidden = true)
private boolean returnConfig;
/**
* 获取页码
*

View File

@@ -0,0 +1,46 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.xspaceagi.agent.core.adapter.repository.entity.Published;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data
public class ResourceGroupDto implements Serializable {
private Long id;
private Long spaceId;
private String name;
private String description;
private String icon;
private Integer toolCount;
private String type;
@Schema(description = "目标对象(智能体、工作流、插件)类型,分组中第一个工具的类型")
private Published.TargetType targetType;
@Schema(description = "目标对象工作流、插件ID,分组中第一个工具的ID")
private Long targetId;
private Date created;
private Date modified;
@Schema(description = "是否需要付费")
private boolean paymentRequired;
@Schema(description = "发布者信息")
private PublishUserDto publishUser;
@Schema(description = "工具列表,选择使用")
private List<PublishedDto> tools;
}

View File

@@ -0,0 +1,6 @@
package com.xspaceagi.agent.core.adapter.dto;
import com.xspaceagi.agent.core.adapter.repository.entity.ResourceGroupRelation;
public class ResourceGroupRelationDto extends ResourceGroupRelation {
}

View File

@@ -56,4 +56,7 @@ public class SkillConfigDto implements Serializable {
@Schema(description = "技能发布zip代理下载地址")
private String zipFileUrl;
@Schema(description = "技能开发智能体的关联的会话ID")
private Long devAgentConversationId;
}

View File

@@ -23,4 +23,6 @@ public class SkillPublishedConfigDto {
@Schema(description = "技能发布zip代理下载地址")
private String zipFileUrl;
private Long devAgentConversationId;
}

View File

@@ -0,0 +1,10 @@
package com.xspaceagi.agent.core.adapter.dto;
import lombok.Data;
@Data
public class SortUpdateDTO {
private Long id;
private Integer sort;
}

View File

@@ -17,4 +17,6 @@ public class TopicGenDto implements Serializable {
@JsonPropertyDescription("Contextually appropriate titles, ≤50 characters. Do not generate titles unrelated to the topic. For meaningless contexts, such as user input errors or arbitrary content, no summary is needed; return empty. Output language based on the <content>")
private String topic;
@JsonPropertyDescription("SVG icon, viewBox='0 0 100 100'. Do not generate icons unrelated to the topic. For meaningless contexts, such as user input errors or arbitrary content, no icon is needed; return empty. Output language based on the <content>. \nSVG requirements: \n- Use simple geometric shapes and clean lines \n- Use a modern color palette (gradient or solid colors) \n- Must be a valid, self-contained SVG with no external references \n- Keep it simple and recognizable at small sizes \n- The SVG should be visually appealing and professional")
private String svgIcon;
}

View File

@@ -48,6 +48,9 @@ public class TryReqDto implements Serializable {
@Schema(description = "请求ID", hidden = true)
private String requestId;
@Schema(description = "代理模式")
private String agentMode;
@Data
public static class SelectedComponentDto {
@Schema(description = "组件ID")

View File

@@ -33,6 +33,8 @@ public class WorkflowExecuteRequestDto implements Serializable {
private boolean test;
private String apiKey;
public Map<String, Object> getParams() {
return params == null ? params = new HashMap<>() : params;
}

View File

@@ -2,10 +2,7 @@ package com.xspaceagi.agent.core.adapter.dto.config;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.xspaceagi.agent.core.adapter.dto.CreatorDto;
import com.xspaceagi.agent.core.adapter.dto.GuidQuestionDto;
import com.xspaceagi.agent.core.adapter.dto.PublishUserDto;
import com.xspaceagi.agent.core.adapter.dto.StatisticsDto;
import com.xspaceagi.agent.core.adapter.dto.*;
import com.xspaceagi.agent.core.adapter.dto.config.bind.*;
import com.xspaceagi.agent.core.adapter.repository.entity.AgentComponentConfig;
import com.xspaceagi.agent.core.adapter.repository.entity.AgentConfig;
@@ -36,6 +33,9 @@ public class AgentConfigDto implements Serializable {
@Schema(description = "类型ChatBot 对话智能体PageApp 网页应用智能体, TaskAgent 任务型智能体")
private String type;
@Schema(description = "子类型,ChatBot->ChatBot、PageApp->PageApp, TaskAgent -> General、Custom、Flow、Group")
private String subType;
@Schema(description = "商户ID")
private Long tenantId; // 商户ID
@@ -111,9 +111,12 @@ public class AgentConfigDto implements Serializable {
@Schema(description = "是否收藏", hidden = true)
private boolean isCollected;
@Schema(description = "开发会话ID")
@Schema(description = "debug调试会话ID")
private Long devConversationId;
@Schema(description = "开发Agent的会话ID")
private Long devAgentConversationId;
@Schema(description = "发布时间如果不为空与当前modified时间做对比如果发布时间小于modified则前端显示有更新未发布")
private Date publishDate;
@@ -162,6 +165,23 @@ public class AgentConfigDto implements Serializable {
@Schema(description = "是否允许用户在对话框中选择自己的电脑, 1 允许,其他不允许")
private Integer allowPrivateSandbox;
@Schema(description = "是否允许用户在对话框中选择模式, 1 允许,其他不允许")
private Integer allowChooseMode;
@Schema(description = "是否开启询问用户, 1 允许,其他不允许")
private Integer enableAskQuestion;
@Schema(description = "是否开启版本控制, 1 允许,其他不允许")
private Integer enableVersionControl;
@Schema(description = "发布版本列表")
private List<AgentPublishVersionDto> publishVersion;
@Schema(description = "已发布的空间ID", hidden = true)
private List<Long> publishedSpaceIds;
private List<CustomPageMenu> customPageMenus;
public String getPageHomeIndex() {
//设置默认页面首页
if (getAgentComponentConfigList() != null) {
@@ -249,6 +269,10 @@ public class AgentConfigDto implements Serializable {
VariableConfigDto variableConfigDto = JSON.parseObject(componentConfig.getBindConfig().toString(), VariableConfigDto.class);
componentConfig.setBindConfig(variableConfigDto);
}
case Hook -> {
HookConfigDto hookConfigDto = JSON.parseObject(componentConfig.getBindConfig().toString(), HookConfigDto.class);
componentConfig.setBindConfig(hookConfigDto);
}
case Mcp -> {
McpBindConfigDto mcpBindConfigDto = JSON.parseObject(componentConfig.getBindConfig().toString(), McpBindConfigDto.class);
componentConfig.setBindConfig(mcpBindConfigDto);
@@ -308,6 +332,11 @@ public class AgentConfigDto implements Serializable {
componentConfig.setBindConfig(new VariableConfigDto());
}
}
case Hook -> {
if (!(componentConfig.getBindConfig() instanceof HookConfigDto)) {
componentConfig.setBindConfig(new HookConfigDto());
}
}
case Mcp -> {
if (!(componentConfig.getBindConfig() instanceof McpBindConfigDto)) {
componentConfig.setBindConfig(new McpBindConfigDto());
@@ -350,4 +379,12 @@ public class AgentConfigDto implements Serializable {
@Schema(description = "是否选中")
private boolean selected;
}
public enum AgentType {
ChatBot, PageApp, TaskAgent
}
public enum AgentSubType {
ChatBot, PageApp, General, Custom, Flow, Group
}
}

View File

@@ -70,6 +70,9 @@ public class Arg implements Serializable {
private Long loopId;
@Schema(description = "参数更新策略")
private UpdateStrategy updateStrategy;
public void setSubArgs(List<Arg> subArgs) {
if (this.subArgs != null) {
return;
@@ -121,7 +124,14 @@ public class Arg implements Serializable {
Number,
//自动识别
AutoRecognition,
File,
Radio,
FixedValue,
}
public enum UpdateStrategy {
REPLACE, // Overwrite the existing value entirely
APPEND // Append to the existing value (string concatenation, list append, or numeric addition)
}
public static List<Arg> updateBindConfigArgs(String startKey, List<Arg> bindConfigArgs, List<Arg> configInputArgs) {

View File

@@ -0,0 +1,30 @@
package com.xspaceagi.agent.core.adapter.dto.config;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class HookConfigDto implements Serializable {
@Schema(description = "Hook列表")
private List<Hook> hooks;
@Data
public static class Hook {
@Schema(description = "Hook名称")
private String name;
@Schema(description = "Hook事件")
private String event;
@Schema(description = "Hook匹配规则")
private String matcher;
@Schema(description = "Hook类型")
private String type;
@Schema(description = "Hook配置")
private String config;
@Schema(description = "Hook状态,1 启用0 停用")
private Integer status;
}
}

View File

@@ -34,6 +34,9 @@ public class McpBindConfigDto implements Serializable {
@Schema(description = "是否默认选中0-否1-是")
private Integer defaultSelected;
@Schema(description = "是否需要审批0-否1-是")
private Integer callApproval;
public enum McpInvokeTypeEnum {
//自动调用、按需调用、手动选择、手动选择和按需调用
AUTO, ON_DEMAND, MANUAL, MANUAL_ON_DEMAND

View File

@@ -31,6 +31,9 @@ public class PluginBindConfigDto implements Serializable {
@Schema(description = "是否默认选中0-否1-是")
private Integer defaultSelected;
@Schema(description = "是否需要审批0-否1-是")
private Integer callApproval;
public enum PluginInvokeTypeEnum {
//自动调用、按需调用、手动选择、手动选择和按需调用
AUTO, ON_DEMAND, MANUAL, MANUAL_ON_DEMAND

View File

@@ -37,6 +37,9 @@ public class WorkflowBindConfigDto implements Serializable {
// 相同requestId时是否使用缓存的结果问答场景
private boolean useResultCache;
@Schema(description = "是否需要审批0-否1-是")
private Integer callApproval;
public enum WorkflowInvokeTypeEnum {
//自动调用、按需调用
AUTO, ON_DEMAND, MANUAL, MANUAL_ON_DEMAND

View File

@@ -72,6 +72,11 @@ public class PluginDto implements Serializable {
@Schema(description = "已发布的空间ID", hidden = true)
private List<Long> publishedSpaceIds;
@Schema(description = "开发时使用的会话ID")
private Long devAgentConversationId;
private String toolId;
public static PluginDto convertToPluginDto(String config) {
if (config == null) {
return null;

View File

@@ -0,0 +1,33 @@
package com.xspaceagi.agent.core.adapter.dto.config.workflow;
import com.xspaceagi.agent.core.adapter.dto.config.AgentConfigDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
public class AgentNodeConfigDto extends NodeConfigDto {
@Schema(description = "智能体ID")
private Long agentId;
@Schema(description = "节点名称")
private String name;
@Schema(description = "节点描述")
private String description;
@Schema(description = "节点图标")
private String icon;
@Schema(description = "补充提示词")
private String extraPrompt;
@Schema(description = "自身循环次数")
private int selfLoopTimes;
@Schema(description = "循环提醒提示词")
private String reminderPrompt;
@Schema(description = "智能体配置信息,执行阶段使用")
private AgentConfigDto agentConfigDto;
}

View File

@@ -35,6 +35,9 @@ public class IntentRecognitionNodeConfigDto extends NodeConfigDto {
@Schema(description = "token上限")
private Integer maxTokens; // token上限
@Schema(description = "系统提示词")
private String systemPrompt;
@Schema(description = "补充提示词")
private String extraPrompt;
@@ -55,12 +58,22 @@ public class IntentRecognitionNodeConfigDto extends NodeConfigDto {
@Schema(description = "唯一标识")
private String uuid;
@Schema(description = "意图描述")
@Schema(description = "意图名称")
private String name;
@Schema(description = "意图描述,兜底匹配")
private String intent;
@Schema(description = "意图类型,NORMAL正常添加配置,OTHER其他意图")
private IntentTypeEnum intentType;
//条件参数关系
@Schema(description = "条件参数之间关系")
private ConditionNodeConfigDto.ConditionTypeEnum conditionType;
//参数列表配置
@Schema(description = "参数列表配置")
private List<ConditionNodeConfigDto.ConditionArgDto> conditionArgs;
@Schema(description = "关联下级节点id列表")
private List<Long> nextNodeIds;

View File

@@ -0,0 +1,95 @@
package com.xspaceagi.agent.core.adapter.dto.config.workflow;
import com.xspaceagi.agent.core.adapter.dto.config.Arg;
import com.xspaceagi.agent.core.adapter.dto.config.InputArg;
import com.xspaceagi.agent.core.adapter.dto.config.OutputArg;
import com.xspaceagi.agent.core.spec.enums.DataTypeEnum;
import com.xspaceagi.system.spec.utils.I18nUtil;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@Data
public class KnowledgeInsertNodeConfigDto extends NodeConfigDto {
@Schema(description = "知识库ID配置", requiredMode = Schema.RequiredMode.REQUIRED)
private Long knowledgeBaseId;
@Schema(description = "节点名称")
private String name;
@Schema(description = "节点描述")
private String description;
@Schema(description = "节点图标")
private String icon;
/**
* 公共节点配置转条件节点配置
*
* @return 条件节点配置
*/
public static KnowledgeInsertNodeConfigDto addFrom(Long knowledgeBaseId) {
KnowledgeInsertNodeConfigDto knowledgeInsertNodeConfigDto = new KnowledgeInsertNodeConfigDto();
knowledgeInsertNodeConfigDto.setKnowledgeBaseId(knowledgeBaseId);
//设置默认输入参数和输出参数
List<Arg> args = new ArrayList<>();
InputArg arg = new InputArg();
arg.setKey(UUID.randomUUID().toString().replace("-", ""));
arg.setName("title");
arg.setDescription(I18nUtil.systemMessage("Backend.WorkflowKbArgs.title.description"));
arg.setDataType(DataTypeEnum.String);
args.add(arg);
arg = new InputArg();
arg.setKey(UUID.randomUUID().toString().replace("-", ""));
arg.setName("content");
arg.setDescription(I18nUtil.systemMessage("Backend.WorkflowKbArgs.content.description"));
arg.setDataType(DataTypeEnum.String);
args.add(arg);
arg = new InputArg();
arg.setKey(UUID.randomUUID().toString().replace("-", ""));
arg.setName("docUrl");
arg.setDescription(I18nUtil.systemMessage("Backend.WorkflowKbArgs.docUrl.description"));
arg.setDataType(DataTypeEnum.String);
args.add(arg);
//segment
arg = new InputArg();
arg.setKey(UUID.randomUUID().toString().replace("-", ""));
arg.setName("segment");
arg.setDescription(I18nUtil.systemMessage("Backend.WorkflowKbArgs.segment.description"));
arg.setDataType(DataTypeEnum.String);
arg.setBindValue("WORDS");
args.add(arg);
arg = new InputArg();
arg.setKey(UUID.randomUUID().toString().replace("-", ""));
arg.setName("words");
arg.setDescription(I18nUtil.systemMessage("Backend.WorkflowKbArgs.words.description"));
arg.setDataType(DataTypeEnum.Integer);
arg.setBindValue("800");
args.add(arg);
knowledgeInsertNodeConfigDto.setInputArgs(args);
List<Arg> outputArgs = new ArrayList<>();
Arg outArg = new OutputArg();
outArg.setName("success");
outArg.setDataType(DataTypeEnum.Boolean);
outArg.setDescription(I18nUtil.systemMessage("Backend.WorkflowKbArgs.success.description"));
outputArgs.add(outArg);
outArg = new OutputArg();
outArg.setName("message");
outArg.setDataType(DataTypeEnum.String);
outArg.setDescription(I18nUtil.systemMessage("Backend.WorkflowKbArgs.message.description"));
outputArgs.add(outArg);
outArg = new OutputArg();
outArg.setName("docId");
outArg.setDataType(DataTypeEnum.Number);
outArg.setDescription(I18nUtil.systemMessage("Backend.WorkflowKbArgs.docId.description"));
outputArgs.add(outArg);
knowledgeInsertNodeConfigDto.setOutputArgs(outputArgs);
return knowledgeInsertNodeConfigDto;
}
}

View File

@@ -11,6 +11,8 @@ import java.util.Map;
@Data
public class NodeConfigDto implements Serializable {
private ContextPassingType contextPassingType;
@Schema(description = "扩展字段,用于前端存储画布位置等相关配置")
private Map<String, Object> extension;
@@ -22,4 +24,9 @@ public class NodeConfigDto implements Serializable {
@Schema(description = "异常处理配置")
private ExceptionHandleConfigDto exceptionHandleConfig;
public enum ContextPassingType {
Auto,
Manual
}
}

View File

@@ -1,5 +1,6 @@
package com.xspaceagi.agent.core.adapter.dto.config.workflow;
import com.xspaceagi.agent.core.adapter.dto.config.Arg;
import com.xspaceagi.agent.core.adapter.dto.config.ModelConfigDto;
import com.xspaceagi.agent.core.adapter.dto.config.bind.ModelBindConfigDto;
import io.swagger.v3.oas.annotations.media.Schema;
@@ -35,6 +36,9 @@ public class QaNodeConfigDto extends NodeConfigDto {
@NotNull(message = "Answer type is required")
private AnswerTypeEnum answerType;
@Schema(description = "表单参数")
private List<Arg> formArgs;
//从回复中提取字段
@Schema(description = "从回复中提取字段")
private Boolean extractField;
@@ -53,7 +57,8 @@ public class QaNodeConfigDto extends NodeConfigDto {
public enum AnswerTypeEnum {
//直接回答、选项回答
TEXT,
SELECT
SELECT,
FORM
}
@Data

View File

@@ -44,6 +44,12 @@ public class WorkflowConfigDto {
@Schema(description = "图标地址")
private String icon;
@Schema(description = "工作流类型: Workflow、AgentFlow")
private String type;
@Schema(description = "AgentFlow时所属AgentID")
private Long agentId;
@Schema(description = "开始节点", hidden = true)
private WorkflowNodeDto startNode;
@@ -120,6 +126,12 @@ public class WorkflowConfigDto {
case Knowledge:
nodeConfigDto = JSON.parseObject(config, KnowledgeNodeConfigDto.class);
break;
case KnowledgeInsert:
nodeConfigDto = JSON.parseObject(config, KnowledgeInsertNodeConfigDto.class);
break;
case Agent:
nodeConfigDto = JSON.parseObject(config, AgentNodeConfigDto.class);
break;
case Loop:
nodeConfigDto = JSON.parseObject(config, LoopNodeConfigDto.class);
break;
@@ -216,4 +228,9 @@ public class WorkflowConfigDto {
}
return null;
}
public enum Type {
Workflow,
AgentFlow
}
}

View File

@@ -1,33 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
@Builder
public class DigitalEmployeeAdminActionDto {
private Long id;
@JsonProperty("client_key_masked")
private String clientKeyMasked;
@JsonProperty("device_id")
private String deviceId;
@JsonProperty("entity_type")
private String entityType;
@JsonProperty("entity_id")
private String entityId;
private String action;
private String status;
@JsonProperty("reason_codes")
private List<String> reasonCodes;
@JsonProperty("request_payload")
private Map<String, Object> requestPayload;
@JsonProperty("created_at")
private Date createdAt;
@JsonProperty("processed_at")
private Date processedAt;
}

View File

@@ -1,18 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class DigitalEmployeeAdminActionPageDto {
private Long total;
@JsonProperty("page_no")
private Long pageNo;
@JsonProperty("page_size")
private Long pageSize;
private List<DigitalEmployeeAdminActionDto> records;
}

View File

@@ -1,23 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.Map;
@Data
public class DigitalEmployeeAdminActionRequestDto {
@JsonProperty("sync_record_id")
private Long syncRecordId;
@JsonProperty("client_key")
private String clientKey;
@JsonProperty("device_id")
private String deviceId;
@JsonProperty("entity_type")
private String entityType;
@JsonProperty("entity_id")
private String entityId;
private String action;
@JsonProperty("request_payload")
private Map<String, Object> requestPayload;
}

View File

@@ -1,17 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class DigitalEmployeeAdminActionResultDto {
private Boolean ok;
private String status;
@JsonProperty("reason_codes")
private List<String> reasonCodes;
private DigitalEmployeeAdminActionDto action;
}

View File

@@ -1,33 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.util.Map;
@Data
public class DigitalEmployeeAdminRecordRequestDto {
@JsonAlias("sync_record_id")
private Long syncRecordId;
@JsonAlias("client_key")
private String clientKey;
@JsonAlias("device_id")
private String deviceId;
@JsonAlias("entity_type")
private String entityType;
@JsonAlias("entity_id")
private String entityId;
private String status;
private String endpoint;
@JsonAlias("remote_id")
private String remoteId;
@JsonAlias("archive_location")
private String archiveLocation;
@JsonAlias("archive_summary")
private Map<String, Object> archiveSummary;
private String reason;
@JsonProperty("request_payload")
@JsonAlias("requestPayload")
private Map<String, Object> requestPayload;
}

View File

@@ -1,17 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class DigitalEmployeeAdminRecordResultDto {
private Boolean ok;
private String status;
@JsonProperty("reason_codes")
private List<String> reasonCodes;
private DigitalEmployeeAdminActionDto record;
}

View File

@@ -1,18 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class DigitalEmployeeAdminWorkbenchPageDto {
private Long total;
@JsonProperty("page_no")
private Long pageNo;
@JsonProperty("page_size")
private Long pageSize;
private List<DigitalEmployeeAdminWorkbenchRowDto> records;
}

View File

@@ -1,364 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
@Builder
public class DigitalEmployeeAdminWorkbenchRowDto {
private String view;
@JsonProperty("sync_record_id")
private Long syncRecordId;
@JsonProperty("sync_record_url")
private String syncRecordUrl;
@JsonProperty("entity_type")
private String entityType;
@JsonProperty("entity_id")
private String entityId;
private String operation;
private String title;
private String status;
private String kind;
private String category;
private String level;
private String priority;
private String summary;
@JsonProperty("plan_id")
private String planId;
@JsonProperty("task_id")
private String taskId;
@JsonProperty("run_id")
private String runId;
@JsonProperty("step_id")
private String stepId;
@JsonProperty("dependency_status")
private String dependencyStatus;
@JsonProperty("lease_state")
private String leaseState;
@JsonProperty("lease_source")
private String leaseSource;
@JsonProperty("dispatch_status")
private String dispatchStatus;
@JsonProperty("dispatch_policy_key")
private String dispatchPolicyKey;
@JsonProperty("orchestration_id")
private String orchestrationId;
@JsonProperty("trigger_source")
private String triggerSource;
@JsonProperty("approval_id")
private String approvalId;
@JsonProperty("approval_policy_id")
private String approvalPolicyId;
@JsonProperty("conflict_policy_id")
private String conflictPolicyId;
@JsonProperty("decision_guard_status")
private String decisionGuardStatus;
@JsonProperty("batch_accept_remote_disabled")
private Boolean batchAcceptRemoteDisabled;
@JsonProperty("auto_decision_disabled")
private Boolean autoDecisionDisabled;
@JsonProperty("policy_reason")
private String policyReason;
@JsonProperty("governance_policy_id")
private String governancePolicyId;
@JsonProperty("policy_guard_status")
private String policyGuardStatus;
@JsonProperty("hard_interrupt_disabled")
private Boolean hardInterruptDisabled;
@JsonProperty("artifact_id")
private String artifactId;
@JsonProperty("artifact_graph_id")
private String artifactGraphId;
@JsonProperty("artifact_group_id")
private String artifactGroupId;
@JsonProperty("group_key")
private String groupKey;
@JsonProperty("related_artifact_ids")
private List<String> relatedArtifactIds;
@JsonProperty("artifact_count")
private Long artifactCount;
@JsonProperty("device_count")
private Long deviceCount;
@JsonProperty("version_count")
private Long versionCount;
@JsonProperty("latest_artifact_id")
private String latestArtifactId;
@JsonProperty("version_key")
private String versionKey;
@JsonProperty("cleanup_request_id")
private String cleanupRequestId;
@JsonProperty("cleanup_eligible_count")
private Long cleanupEligibleCount;
@JsonProperty("batch_cleanup_disabled")
private Boolean batchCleanupDisabled;
@JsonProperty("retention_conflict_status")
private String retentionConflictStatus;
@JsonProperty("cleanup_conflict_status")
private String cleanupConflictStatus;
@JsonProperty("remote_delete_disabled")
private Boolean remoteDeleteDisabled;
@JsonProperty("notification_id")
private String notificationId;
@JsonProperty("collaboration_thread_id")
private String collaborationThreadId;
@JsonProperty("subscription_policy_id")
private String subscriptionPolicyId;
@JsonProperty("subscription_conflict_status")
private String subscriptionConflictStatus;
@JsonProperty("notification_policy_id")
private String notificationPolicyId;
@JsonProperty("subscription_status")
private String subscriptionStatus;
@JsonProperty("desktop_enabled")
private Boolean desktopEnabled;
@JsonProperty("minimum_level")
private String minimumLevel;
private String channel;
@JsonProperty("delivery_status")
private String deliveryStatus;
@JsonProperty("delivery_attempt_id")
private String deliveryAttemptId;
@JsonProperty("send_request_id")
private String sendRequestId;
@JsonProperty("real_push_disabled")
private Boolean realPushDisabled;
@JsonProperty("conflict_status")
private String conflictStatus;
@JsonProperty("report_id")
private String reportId;
@JsonProperty("daily_report_fact_id")
private String dailyReportFactId;
@JsonProperty("daily_report_table")
private String dailyReportTable;
@JsonProperty("daily_report_materialized")
private Boolean dailyReportMaterialized;
@JsonProperty("daily_report_physical_fact_status")
private String dailyReportPhysicalFactStatus;
@JsonProperty("send_record_id")
private String sendRecordId;
@JsonProperty("send_channel")
private String sendChannel;
@JsonProperty("send_request_status")
private String sendRequestStatus;
@JsonProperty("send_record_status")
private String sendRecordStatus;
@JsonProperty("formal_daily_report_page_disabled")
private Boolean formalDailyReportPageDisabled;
@JsonProperty("external_send_disabled")
private Boolean externalSendDisabled;
@JsonProperty("third_party_channel_disabled")
private Boolean thirdPartyChannelDisabled;
@JsonProperty("approval_decision_status")
private String approvalDecisionStatus;
@JsonProperty("advanced_query_supported")
private Boolean advancedQuerySupported;
@JsonProperty("aggregation_scope")
private String aggregationScope;
@JsonProperty("materialized_source")
private String materializedSource;
@JsonProperty("daily_report_approval_id")
private String dailyReportApprovalId;
@JsonProperty("daily_report_approval_action")
private String dailyReportApprovalAction;
@JsonProperty("daily_report_approval_actor")
private String dailyReportApprovalActor;
@JsonProperty("daily_report_approval_reason")
private String dailyReportApprovalReason;
@JsonProperty("daily_report_approval_recorded_at")
private String dailyReportApprovalRecordedAt;
@JsonProperty("route_decision_id")
private String routeDecisionId;
@JsonProperty("service_id")
private String serviceId;
@JsonProperty("service_lease_id")
private String serviceLeaseId;
@JsonProperty("lease_holder")
private String leaseHolder;
@JsonProperty("lease_expires_at")
private String leaseExpiresAt;
@JsonProperty("restart_record_id")
private String restartRecordId;
@JsonProperty("restart_count")
private Long restartCount;
@JsonProperty("last_restart_at")
private String lastRestartAt;
@JsonProperty("recovery_policy_id")
private String recoveryPolicyId;
@JsonProperty("auto_recovery_status")
private String autoRecoveryStatus;
@JsonProperty("service_start_disabled")
private Boolean serviceStartDisabled;
@JsonProperty("service_stop_disabled")
private Boolean serviceStopDisabled;
@JsonProperty("lease_takeover_disabled")
private Boolean leaseTakeoverDisabled;
@JsonProperty("auto_recovery_disabled")
private Boolean autoRecoveryDisabled;
@JsonProperty("recovery_action_request_id")
private String recoveryActionRequestId;
@JsonProperty("start_request_id")
private String startRequestId;
@JsonProperty("stop_request_id")
private String stopRequestId;
@JsonProperty("lease_takeover_request_id")
private String leaseTakeoverRequestId;
@JsonProperty("auto_recovery_request_id")
private String autoRecoveryRequestId;
@JsonProperty("start_service_disabled")
private Boolean startServiceDisabled;
@JsonProperty("stop_service_disabled")
private Boolean stopServiceDisabled;
@JsonProperty("memory_id")
private String memoryId;
@JsonProperty("memory_key")
private String memoryKey;
@JsonProperty("governance_status")
private String governanceStatus;
@JsonProperty("merge_candidate_count")
private Long mergeCandidateCount;
@JsonProperty("duplicate_memory_ids")
private List<String> duplicateMemoryIds;
@JsonProperty("latest_memory_id")
private String latestMemoryId;
@JsonProperty("last_governance_action")
private String lastGovernanceAction;
@JsonProperty("last_reviewed_at")
private String lastReviewedAt;
@JsonProperty("memory_policy_id")
private String memoryPolicyId;
@JsonProperty("memory_policy_status")
private String memoryPolicyStatus;
@JsonProperty("merge_policy_id")
private String mergePolicyId;
@JsonProperty("merge_action_disabled")
private Boolean mergeActionDisabled;
@JsonProperty("remote_memory_policy_disabled")
private Boolean remoteMemoryPolicyDisabled;
@JsonProperty("skill_id")
private String skillId;
@JsonProperty("skill_version")
private String skillVersion;
@JsonProperty("install_status")
private String installStatus;
@JsonProperty("permission_scope")
private String permissionScope;
@JsonProperty("policy_source")
private String policySource;
@JsonProperty("policy_status")
private String policyStatus;
@JsonProperty("skill_install_request_id")
private String skillInstallRequestId;
@JsonProperty("skill_upgrade_request_id")
private String skillUpgradeRequestId;
@JsonProperty("permission_policy_id")
private String permissionPolicyId;
@JsonProperty("permission_edit_request_id")
private String permissionEditRequestId;
@JsonProperty("install_action_disabled")
private Boolean installActionDisabled;
@JsonProperty("upgrade_action_disabled")
private Boolean upgradeActionDisabled;
@JsonProperty("permission_edit_disabled")
private Boolean permissionEditDisabled;
@JsonProperty("tool_name")
private String toolName;
@JsonProperty("server_id")
private String serverId;
@JsonProperty("audit_archive_id")
private String auditArchiveId;
@JsonProperty("archive_status")
private String archiveStatus;
@JsonProperty("archive_location")
private String archiveLocation;
@JsonProperty("billing_estimate_id")
private String billingEstimateId;
@JsonProperty("billing_source")
private String billingSource;
private Boolean estimated;
@JsonProperty("diagnostic_id")
private String diagnosticId;
@JsonProperty("diagnostic_kind")
private String diagnosticKind;
@JsonProperty("issue_code")
private String issueCode;
@JsonProperty("repair_action")
private String repairAction;
@JsonProperty("repair_status")
private String repairStatus;
@JsonProperty("repair_reason")
private String repairReason;
@JsonProperty("safe_repair_disabled")
private Boolean safeRepairDisabled;
@JsonProperty("billing_actual_disabled")
private Boolean billingActualDisabled;
@JsonProperty("sandbox_archive_file_disabled")
private Boolean sandboxArchiveFileDisabled;
@JsonProperty("auto_repair_execution_disabled")
private Boolean autoRepairExecutionDisabled;
@JsonProperty("repair_approval_required")
private Boolean repairApprovalRequired;
@JsonProperty("recommended_action")
private String recommendedAction;
@JsonProperty("policy_kind")
private String policyKind;
@JsonProperty("policy_key")
private String policyKey;
@JsonProperty("policy_edit_request_id")
private String policyEditRequestId;
@JsonProperty("policy_edit_status")
private String policyEditStatus;
@JsonProperty("policy_edit_reason")
private String policyEditReason;
@JsonProperty("merge_request_id")
private String mergeRequestId;
@JsonProperty("memory_merge_request_id")
private String memoryMergeRequestId;
@JsonProperty("remote_memory_policy_request_id")
private String remoteMemoryPolicyRequestId;
@JsonProperty("merge_recommendation")
private String mergeRecommendation;
@JsonProperty("remote_policy_edit_disabled")
private Boolean remotePolicyEditDisabled;
@JsonProperty("auto_merge_disabled")
private Boolean autoMergeDisabled;
@JsonProperty("approval_policy_edit_disabled")
private Boolean approvalPolicyEditDisabled;
@JsonProperty("route_policy_edit_disabled")
private Boolean routePolicyEditDisabled;
@JsonProperty("route_recovery_disabled")
private Boolean routeRecoveryDisabled;
@JsonProperty("high_risk_execution_disabled")
private Boolean highRiskExecutionDisabled;
@JsonProperty("schedule_id")
private String scheduleId;
@JsonProperty("job_id")
private String jobId;
@JsonProperty("revision_id")
private String revisionId;
@JsonProperty("revision_fact_id")
private String revisionFactId;
@JsonProperty("revision_status")
private String revisionStatus;
@JsonProperty("revision_materialized")
private Boolean revisionMaterialized;
@JsonProperty("base_revision_id")
private String baseRevisionId;
@JsonProperty("changed_fields")
private List<String> changedFields;
@JsonProperty("occurred_at")
private String occurredAt;
@JsonProperty("synced_at")
private Date syncedAt;
@JsonProperty("client_key_masked")
private String clientKeyMasked;
@JsonProperty("device_id")
private String deviceId;
@JsonProperty("business_view")
private Map<String, Object> businessView;
private Map<String, Object> payload;
}

View File

@@ -1,47 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
@Builder
public class DigitalEmployeeBillingEstimateDto {
@JsonProperty("total_tokens")
private Long totalTokens;
@JsonProperty("input_tokens")
private Long inputTokens;
@JsonProperty("output_tokens")
private Long outputTokens;
@JsonProperty("estimated_cost_usd")
private BigDecimal estimatedCostUsd;
@JsonProperty("request_count")
private Long requestCount;
private Boolean estimated;
@JsonProperty("by_model")
private Map<String, ModelEstimate> byModel;
@JsonProperty("updated_at")
private Date updatedAt;
@JsonProperty("source_records")
private List<Long> sourceRecords;
@Data
@Builder
public static class ModelEstimate {
@JsonProperty("total_tokens")
private Long totalTokens;
@JsonProperty("input_tokens")
private Long inputTokens;
@JsonProperty("output_tokens")
private Long outputTokens;
@JsonProperty("estimated_cost_usd")
private BigDecimal estimatedCostUsd;
@JsonProperty("request_count")
private Long requestCount;
}
}

View File

@@ -1,18 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class DigitalEmployeeBusinessViewPageDto {
private Long total;
@JsonProperty("page_no")
private Long pageNo;
@JsonProperty("page_size")
private Long pageSize;
private List<DigitalEmployeeBusinessViewRowDto> records;
}

View File

@@ -1,68 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.Date;
import java.util.Map;
@Data
@Builder
public class DigitalEmployeeBusinessViewRowDto {
@JsonProperty("sync_record_id")
private Long syncRecordId;
@JsonProperty("sync_record_url")
private String syncRecordUrl;
@JsonProperty("entity_type")
private String entityType;
@JsonProperty("entity_id")
private String entityId;
private String operation;
private String title;
private String status;
private String summary;
@JsonProperty("plan_id")
private String planId;
@JsonProperty("task_id")
private String taskId;
@JsonProperty("run_id")
private String runId;
private String kind;
@JsonProperty("occurred_at")
private String occurredAt;
@JsonProperty("started_at")
private String startedAt;
@JsonProperty("finished_at")
private String finishedAt;
@JsonProperty("duration_ms")
private Long durationMs;
@JsonProperty("sync_status")
private String syncStatus;
@JsonProperty("client_key_masked")
private String clientKeyMasked;
@JsonProperty("device_id")
private String deviceId;
@JsonProperty("synced_at")
private Date syncedAt;
private Date modified;
private Date created;
@JsonProperty("business_view")
private Map<String, Object> businessView;
private Map<String, Object> payload;
@JsonProperty("task_count")
private Integer taskCount;
@JsonProperty("run_count")
private Integer runCount;
@JsonProperty("latest_event_at")
private String latestEventAt;
@JsonProperty("last_event_message")
private String lastEventMessage;
@JsonProperty("advanced_query_supported")
private Boolean advancedQuerySupported;
@JsonProperty("aggregation_scope")
private String aggregationScope;
@JsonProperty("materialized_source")
private String materializedSource;
private Boolean materialized;
}

View File

@@ -1,17 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class DigitalEmployeePlanBusinessViewDetailDto {
private DigitalEmployeeBusinessViewRowDto plan;
private List<DigitalEmployeeBusinessViewRowDto> tasks;
private List<DigitalEmployeeBusinessViewRowDto> runs;
private List<DigitalEmployeeBusinessViewRowDto> events;
private List<DigitalEmployeeBusinessViewRowDto> artifacts;
private List<DigitalEmployeeBusinessViewRowDto> approvals;
}

View File

@@ -1,18 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class DigitalEmployeePolicySnapshotPageDto {
private Long total;
@JsonProperty("page_no")
private Long pageNo;
@JsonProperty("page_size")
private Long pageSize;
private List<DigitalEmployeePolicySnapshotRowDto> records;
}

View File

@@ -1,72 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Data
@Builder
public class DigitalEmployeePolicySnapshotRowDto {
@JsonProperty("policy_kind")
private String policyKind;
@JsonProperty("policy_key")
private String policyKey;
private String status;
private String summary;
@JsonProperty("client_count")
private Integer clientCount;
@JsonProperty("device_count")
private Integer deviceCount;
@JsonProperty("conflict_keys")
private List<String> conflictKeys;
@JsonProperty("latest_synced_at")
private Date latestSyncedAt;
@JsonProperty("recommended_resolution")
private String recommendedResolution;
@JsonProperty("route_decision_count")
private Integer routeDecisionCount;
@JsonProperty("blocked_count")
private Integer blockedCount;
@JsonProperty("approval_required_count")
private Integer approvalRequiredCount;
@JsonProperty("missing_context_count")
private Integer missingContextCount;
@JsonProperty("not_mapped_count")
private Integer notMappedCount;
@JsonProperty("intervention_conflict_status")
private String interventionConflictStatus;
@JsonProperty("approval_policy_id")
private String approvalPolicyId;
@JsonProperty("conflict_policy_id")
private String conflictPolicyId;
@JsonProperty("decision_guard_status")
private String decisionGuardStatus;
@JsonProperty("batch_accept_remote_disabled")
private Boolean batchAcceptRemoteDisabled;
@JsonProperty("auto_decision_disabled")
private Boolean autoDecisionDisabled;
@JsonProperty("policy_reason")
private String policyReason;
@JsonProperty("dispatch_policy_key")
private String dispatchPolicyKey;
@JsonProperty("max_per_sweep")
private Long maxPerSweep;
@JsonProperty("auto_dispatch_ready_steps")
private Boolean autoDispatchReadySteps;
@JsonProperty("catch_up_on_startup")
private Boolean catchUpOnStartup;
@JsonProperty("max_run_history")
private Long maxRunHistory;
@JsonProperty("sync_record_url")
private String syncRecordUrl;
@JsonProperty("client_key_masked")
private String clientKeyMasked;
@JsonProperty("device_id")
private String deviceId;
@JsonProperty("business_view")
private Map<String, Object> businessView;
}

View File

@@ -1,18 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
@Data
@Builder
public class DigitalEmployeeSyncAckDto {
@JsonProperty("outbox_id")
private String outboxId;
@JsonProperty("entity_type")
private String entityType;
@JsonProperty("entity_id")
private String entityId;
@JsonProperty("remote_id")
private String remoteId;
}

View File

@@ -1,24 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonAlias;
import lombok.Data;
import java.util.Map;
@Data
public class DigitalEmployeeSyncItemDto {
@JsonAlias("outbox_id")
private String outboxId;
@JsonAlias("entity_type")
private String entityType;
@JsonAlias("entity_id")
private String entityId;
private String operation;
@JsonAlias("contract_version")
private String contractVersion;
@JsonAlias("entity_summary")
private Map<String, Object> entitySummary;
@JsonAlias("business_view")
private Map<String, Object> businessView;
private Map<String, Object> payload;
}

View File

@@ -1,35 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.Date;
@Data
@Builder
public class DigitalEmployeeSyncRecordDto {
private Long id;
@JsonProperty("client_key")
private String clientKey;
@JsonProperty("device_id")
private String deviceId;
@JsonProperty("outbox_id")
private String outboxId;
@JsonProperty("entity_type")
private String entityType;
@JsonProperty("entity_id")
private String entityId;
private String operation;
@JsonProperty("contract_version")
private String contractVersion;
@JsonProperty("entity_summary")
private String entitySummary;
@JsonProperty("business_view")
private String businessView;
private String payload;
@JsonProperty("synced_at")
private Date syncedAt;
private Date modified;
private Date created;
}

View File

@@ -1,18 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class DigitalEmployeeSyncRecordPageDto {
private Long total;
@JsonProperty("page_no")
private Long pageNo;
@JsonProperty("page_size")
private Long pageSize;
private List<DigitalEmployeeSyncRecordDto> records;
}

View File

@@ -1,15 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import com.fasterxml.jackson.annotation.JsonAlias;
import lombok.Data;
import java.util.List;
@Data
public class DigitalEmployeeSyncRequestDto {
@JsonAlias("client_key")
private String clientKey;
@JsonAlias("device_id")
private String deviceId;
private List<DigitalEmployeeSyncItemDto> items;
}

View File

@@ -1,12 +0,0 @@
package com.xspaceagi.agent.core.adapter.dto.digital;
import lombok.Builder;
import lombok.Data;
import java.util.List;
@Data
@Builder
public class DigitalEmployeeSyncResponseDto {
private List<DigitalEmployeeSyncAckDto> acked;
}

Some files were not shown because too many files have changed in this diff Show More