fix(action): correct behavior of resume intervention

This commit is contained in:
2026-04-21 21:38:04 +08:00
parent 3a5d0f1cb4
commit 13d04f85e2

View File

@@ -71,7 +71,7 @@ class BuiltinInterventionActionProvider implements BuiltinActionProvider {
Function<Map<String, Object>, String> invoker = params -> { Function<Map<String, Object>, String> invoker = params -> {
String actionId = BuiltinActionRegistry.BuiltinActionDefinition.requireString(params, "actionId"); String actionId = BuiltinActionRegistry.BuiltinActionDefinition.requireString(params, "actionId");
try { try {
ExecutableAction executableAction = getExecutableAction(actionId); ExecutableAction executableAction = getExecutableAction(actionId, Action.Status.INTERRUPTED);
executableAction.resume(); executableAction.resume();
return "Resume succeed"; return "Resume succeed";
} catch (Exception e) { } catch (Exception e) {
@@ -147,7 +147,7 @@ class BuiltinInterventionActionProvider implements BuiltinActionProvider {
ExecutableAction executableAction = null; ExecutableAction executableAction = null;
try { try {
executableAction = getExecutableAction(actionId); executableAction = getExecutableAction(actionId, Action.Status.EXECUTING);
cognitionCapability.initiateTurn(input, target); cognitionCapability.initiateTurn(input, target);
boolean normal = executableAction.interrupt(timeout); boolean normal = executableAction.interrupt(timeout);
return normal ? target + "not resumed execution in time" : target + "answered, looking for related answer in recent-chat-messages"; return normal ? target + "not resumed execution in time" : target + "answered, looking for related answer in recent-chat-messages";
@@ -168,12 +168,12 @@ class BuiltinInterventionActionProvider implements BuiltinActionProvider {
); );
} }
private ExecutableAction getExecutableAction(String actionId) { private ExecutableAction getExecutableAction(String actionId, Action.Status status) {
return actionCapability.listActions(Action.Status.EXECUTING, null) return actionCapability.listActions(status, null)
.stream() .stream()
.filter(action -> action.getUuid().equals(actionId)) .filter(action -> action.getUuid().equals(actionId))
.findFirst() .findFirst()
.orElseThrow(); .orElseThrow(() -> new IllegalArgumentException("未找到对应状态的 Action: " + actionId + ", status=" + status));
} }
/** /**
@@ -324,8 +324,7 @@ class BuiltinInterventionActionProvider implements BuiltinActionProvider {
actionCapability.handleInterventions(List.of(intervention), target); actionCapability.handleInterventions(List.of(intervention), target);
ExecutableAction executableAction = getExecutableAction(targetId); target.resume();
executableAction.resume();
return JSONObject.of("ok", true).toJSONString(); return JSONObject.of("ok", true).toJSONString();
}; };