mirror of
https://github.com/slhaf/Partner.git
synced 2026-05-12 16:53:04 +08:00
refactor(action-core): wrap runner submit flow with Result.runCatching and centralize action error handling
This commit is contained in:
@@ -23,7 +23,7 @@ import java.util.concurrent.ExecutorService;
|
|||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class LocalRunnerClient extends RunnerClient implements AutoCloseable {
|
public class LocalRunnerClient extends RunnerClient {
|
||||||
|
|
||||||
public static final String MCP_NAME_DESC = "mcp-desc";
|
public static final String MCP_NAME_DESC = "mcp-desc";
|
||||||
public static final String MCP_NAME_DYNAMIC = "mcp-dynamic";
|
public static final String MCP_NAME_DYNAMIC = "mcp-dynamic";
|
||||||
@@ -139,20 +139,12 @@ public class LocalRunnerClient extends RunnerClient implements AutoCloseable {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected RunnerResponse doRun(MetaAction metaAction) {
|
protected RunnerResponse doRun(MetaAction metaAction) {
|
||||||
log.debug("执行行动: {}", metaAction);
|
|
||||||
RunnerResponse response;
|
RunnerResponse response;
|
||||||
try {
|
response = switch (metaAction.getType()) {
|
||||||
response = switch (metaAction.getType()) {
|
case MCP -> mcpActionExecutor.run(metaAction);
|
||||||
case MCP -> mcpActionExecutor.run(metaAction);
|
case ORIGIN -> originExecutionService.run(metaAction);
|
||||||
case ORIGIN -> originExecutionService.run(metaAction);
|
case BUILTIN -> doRunWithBuiltin(metaAction);
|
||||||
case BUILTIN -> doRunWithBuiltin(metaAction);
|
};
|
||||||
};
|
|
||||||
} catch (Exception e) {
|
|
||||||
response = new RunnerResponse();
|
|
||||||
response.setOk(false);
|
|
||||||
response.setData(e.getLocalizedMessage());
|
|
||||||
}
|
|
||||||
log.debug("行动执行结果: {}", response);
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -60,14 +60,24 @@ public abstract class RunnerClient implements AutoCloseable {
|
|||||||
* 执行行动程序
|
* 执行行动程序
|
||||||
*/
|
*/
|
||||||
public void submit(MetaAction metaAction) {
|
public void submit(MetaAction metaAction) {
|
||||||
|
log.debug("执行行动: {}", metaAction);
|
||||||
// 获取已存在行动列表
|
// 获取已存在行动列表
|
||||||
Result result = metaAction.getResult();
|
Result result = metaAction.getResult();
|
||||||
if (!result.getStatus().equals(Result.Status.WAITING)) {
|
if (!result.getStatus().equals(Result.Status.WAITING)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RunnerResponse response = doRun(metaAction);
|
RunnerResponse response = work.slhaf.partner.framework.agent.support.Result.runCatching(() -> doRun(metaAction)).fold(
|
||||||
|
runnerResponse -> runnerResponse,
|
||||||
|
ex -> {
|
||||||
|
RunnerResponse r = new RunnerResponse();
|
||||||
|
r.setOk(false);
|
||||||
|
r.setData(ex.getLocalizedMessage());
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
);
|
||||||
result.setData(response.getData());
|
result.setData(response.getData());
|
||||||
result.setStatus(response.isOk() ? Result.Status.SUCCESS : Result.Status.FAILED);
|
result.setStatus(response.isOk() ? Result.Status.SUCCESS : Result.Status.FAILED);
|
||||||
|
log.debug("行动执行结果: {}", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract RunnerResponse doRun(MetaAction metaAction);
|
protected abstract RunnerResponse doRun(MetaAction metaAction);
|
||||||
@@ -85,13 +95,8 @@ public abstract class RunnerClient implements AutoCloseable {
|
|||||||
response.setData("BuiltinActionRegistry 未初始化");
|
response.setData("BuiltinActionRegistry 未初始化");
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
try {
|
response.setData(builtinActionRegistry.call(metaAction.getKey(), metaAction.getParams()));
|
||||||
response.setData(builtinActionRegistry.call(metaAction.getKey(), metaAction.getParams()));
|
response.setOk(true);
|
||||||
response.setOk(true);
|
|
||||||
} catch (Exception e) {
|
|
||||||
response.setOk(false);
|
|
||||||
response.setData(e.getLocalizedMessage());
|
|
||||||
}
|
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user