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

@@ -69,8 +69,10 @@ public class SkillApprovalSubjectHandlerContentReferenceTest {
saToken = mockStatic(SaTokenUtil.class);
saToken.when(SaTokenUtil::getLoginAccount).thenReturn(account);
when(skillMapper.updateApprovalState(any(), any(), any(), any())).thenReturn(1);
when(skillMapper.publish(any(), any(), any(), any(), any(), any())).thenReturn(1);
when(skillMapper.publishApproved(any(), any(), any(), any(), any(), any(), any())).thenReturn(1);
when(skillMapper.publish(any(), any(), any(), any(), any(), any(), any())).thenReturn(1);
when(skillMapper.publishApproved(any(), any(), any(), any(), any(), any(), any(), any())).thenReturn(1);
when(skillService.extractContentSnapshot(any())).thenAnswer(invocation -> invocation.getArgument(0));
when(skillService.extractToolBindingsSnapshot(any())).thenReturn(Map.of());
when(skillMapper.markOfflineApproved(any(), any(), any())).thenReturn(1);
when(skillMapper.restoreApprovalState(any(), any(), any(), any())).thenReturn(1);
handler = new SkillApprovalSubjectHandler(
@@ -124,7 +126,7 @@ public class SkillApprovalSubjectHandlerContentReferenceTest {
ApprovalActionType.PUBLISH.getCode(), SKILL_ID, candidate, OPERATOR_ID);
verify(skillMapper).publish(
eq(SKILL_ID), eq(BigInteger.ONE), same(candidate), any(Date.class),
eq(SKILL_ID), eq(BigInteger.ONE), same(candidate), eq(Map.of()), any(Date.class),
eq(OPERATOR_ID), isNull());
verify(skillService).releaseSnapshotContents(previous);
verify(skillService, never()).releaseSnapshotContents(candidate);
@@ -228,6 +230,7 @@ public class SkillApprovalSubjectHandlerContentReferenceTest {
eq(BigInteger.ONE),
eq(instanceId),
same(candidate),
eq(Map.of()),
any(Date.class),
eq(OPERATOR_ID),
eq("candidate-hash"));
@@ -253,7 +256,7 @@ public class SkillApprovalSubjectHandlerContentReferenceTest {
BigInteger.valueOf(99)));
assertEquals(409, exception.getHttpStatus());
verify(skillMapper, never()).publishApproved(any(), any(), any(), any(), any(), any(), any());
verify(skillMapper, never()).publishApproved(any(), any(), any(), any(), any(), any(), any(), any());
}
/**
@@ -273,7 +276,7 @@ public class SkillApprovalSubjectHandlerContentReferenceTest {
handler.applyApprovedAction(
ApprovalActionType.PUBLISH.getCode(), SKILL_ID, candidate, OPERATOR_ID, instanceId);
verify(skillMapper, never()).publishApproved(any(), any(), any(), any(), any(), any(), any());
verify(skillMapper, never()).publishApproved(any(), any(), any(), any(), any(), any(), any(), any());
verify(skillService, never()).releaseSnapshotContents(any());
}