feat: 完善 Agent 标准交互与安全运行时

- 接入 AG-UI 运行投影、Turn 时间线和审批隔离

- 增加 Agent Skill 冻结绑定与运行时消费闭环

- 增加受控工作区、内置工具和私有 Artifact 生命周期
This commit is contained in:
2026-08-19 22:13:41 +08:00
parent 91d66e636d
commit 4e8640dcaf
241 changed files with 24382 additions and 2777 deletions

View File

@@ -3,7 +3,9 @@ import type { AgentStudioNodeData } from './types';
import { computed } from 'vue';
import { Connection, Cpu, Files, Link, Share } from '@element-plus/icons-vue';
import { KnowledgeIcon, SkillIcon } from '@easyflow/icons';
import { Connection, Cpu, Link, Share } from '@element-plus/icons-vue';
import { ElIcon } from 'element-plus';
const props = defineProps<{
@@ -13,9 +15,10 @@ const props = defineProps<{
const iconComponent = computed(() => {
const icons = {
base: Cpu,
knowledge: Files,
knowledge: KnowledgeIcon,
mcp: Link,
plugin: Connection,
skill: SkillIcon,
workflow: Share,
};
return icons[props.data.iconKey];
@@ -45,6 +48,12 @@ const iconComponent = computed(() => {
<span v-if="data.detail" class="agent-studio-node__detail">
{{ data.detail }}
</span>
<span v-if="data.previewItems?.length" class="agent-studio-node__preview">
<span v-for="item in data.previewItems" :key="item">{{ item }}</span>
<span v-if="data.remainingCount" class="agent-studio-node__remaining">
+{{ data.remainingCount }}
</span>
</span>
</span>
</button>
</template>
@@ -119,6 +128,12 @@ const iconComponent = computed(() => {
min-height: 78px;
}
.agent-studio-node--skill {
align-items: flex-start;
width: 240px;
min-height: 120px;
}
.agent-studio-node__icon {
display: inline-flex;
flex: 0 0 auto;
@@ -200,6 +215,30 @@ const iconComponent = computed(() => {
-webkit-box-orient: vertical;
}
.agent-studio-node__preview {
display: flex;
flex-direction: column;
gap: var(--space-1);
padding-top: var(--space-2);
margin-top: var(--space-2);
overflow: hidden;
font-size: 12px;
line-height: 18px;
color: var(--el-text-color-regular);
border-top: 1px solid hsl(var(--line-subtle));
}
.agent-studio-node__preview > span {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.agent-studio-node__remaining {
font-weight: 650;
color: var(--el-color-primary);
}
@supports not (color: color-mix(in srgb, red, blue)) {
.agent-studio-node:hover {
border-color: var(--el-color-primary-light-7);