diff --git a/Partner-Main/src/main/java/work/slhaf/partner/common/Constant.java b/Partner-Main/src/main/java/work/slhaf/partner/common/Constant.java index fd7d3985..4ca7bb11 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/common/Constant.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/common/Constant.java @@ -6,7 +6,7 @@ public final class Constant { public static final String DATA = "./data"; public static final String MEMORY_DATA = DATA + "/memory"; public static final String ACTION_PROGRAM = DATA + "/action"; - public static final String TMP_ACTION_DIR_LOCAL = DATA + "/tmp"; + public static final String TMP_ACTION_DIR_LOCAL = ACTION_PROGRAM + "/tmp"; } } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/McpData.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/McpData.java new file mode 100644 index 00000000..aa8121a7 --- /dev/null +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/entity/McpData.java @@ -0,0 +1,5 @@ +package work.slhaf.partner.core.action.entity; + +public class McpData { + +} diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java index 08257d3c..fd2185ed 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/LocalRunnerClient.java @@ -5,6 +5,8 @@ import com.alibaba.fastjson2.JSONObject; import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.jetbrains.annotations.NotNull; + +import work.slhaf.partner.core.action.entity.McpData; import work.slhaf.partner.core.action.entity.MetaAction; import work.slhaf.partner.core.action.entity.MetaActionInfo; import work.slhaf.partner.core.action.entity.MetaActionType; @@ -52,37 +54,36 @@ public class LocalRunnerClient extends RunnerClient { return response; } + private RunnerResponse doRunWithOrigin(MetaAction metaAction) { + RunnerResponse response = new RunnerResponse(); + + return response; + } + private RunnerResponse doRunWithMcp(MetaAction metaAction) { RunnerResponse response = new RunnerResponse(); return response; } - private RunnerResponse doRunWithPlugin(MetaAction metaAction) { - RunnerResponse response = new RunnerResponse(); - - return response; - } - - private RunnerResponse doRunWithScript(MetaAction metaAction) { - RunnerResponse response = new RunnerResponse(); - - return response; - } - @Override - protected Path doBuildTempPath(MetaAction tempAction, String codeType) { + public Path buildTmpPath(MetaAction tempAction, String codeType) { return Path.of(TMP_ACTION_DIR_LOCAL, System.currentTimeMillis() + "-" + tempAction.getKey() + codeType); } @Override - protected void doSerialize(MetaAction tempAction, String code, String codeType) throws IOException { + public void tmpSerialize(MetaAction tempAction, String code, String codeType) throws IOException { Path path = tempAction.getPath(); File file = path.toFile(); file.createNewFile(); Files.writeString(path, code); } + @Override + public void persistSerialize(MetaActionInfo metaActionInfo, McpData mcpData) { + throw new UnsupportedOperationException("Unimplemented method 'doPersistSerialize'"); + } + @Override public JSONObject listSysDependencies() { // 先只列出系统/环境的 Python 依赖 @@ -252,7 +253,7 @@ public class LocalRunnerClient extends RunnerClient { } private void handleParentDirEvent(WatchEvent.Kind kind, Path thisDir, Path context, - WatchService watchService) { + WatchService watchService) { Path path = Path.of(thisDir.toString(), context.toString()); // MODIFY 事件不进行处理 if (kind == StandardWatchEventKinds.ENTRY_CREATE) { @@ -316,4 +317,5 @@ public class LocalRunnerClient extends RunnerClient { } } + } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java index 92c5799f..da80db13 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/RunnerClient.java @@ -3,7 +3,7 @@ package work.slhaf.partner.core.action.runner; import com.alibaba.fastjson2.JSONObject; import lombok.Data; import lombok.extern.slf4j.Slf4j; -import work.slhaf.partner.core.action.entity.GeneratedData; +import work.slhaf.partner.core.action.entity.McpData; import work.slhaf.partner.core.action.entity.MetaAction; import work.slhaf.partner.core.action.entity.MetaAction.Result; import work.slhaf.partner.core.action.entity.MetaAction.ResultStatus; @@ -42,58 +42,13 @@ public abstract class RunnerClient { result.setStatus(response.isOk() ? ResultStatus.SUCCESS : ResultStatus.FAILED); } - //TODO 将执行划分为 MCP、OriginalScript两种类型,SCRIPT、PLUGIN、MCP的分类不再必要 protected abstract RunnerResponse doRun(MetaAction metaAction); - /** - * 将临时行动程序放入等待队列,根据其是否需要持久序列化,监听其执行状态,执行成功则持久序列化 - * - * @throws IOException - */ - public Path getPathAndSerialize(MetaAction tempAction, GeneratedData generatedData) throws IOException { - String code = generatedData.getCode(); - String codeType = generatedData.getCodeType(); + public abstract Path buildTmpPath(MetaAction tempAction, String codeType); - Path path = doBuildTempPath(tempAction, codeType); - tempAction.setPath(path); - doSerialize(tempAction, code, codeType); - if (generatedData.isSerialize()) { - waitingSerialize(tempAction, code, codeType, generatedData.getResponseSchema()); - } - return path; - } + public abstract void tmpSerialize(MetaAction tempAction, String code, String codeType) throws IOException; - private void waitingSerialize(MetaAction tempAction, String code, String codeType, JSONObject jsonObject) { - executor.execute(() -> { - Result result = tempAction.getResult(); - while (true) { - switch (result.getStatus()) { - case ResultStatus.WAITING -> { - try { - Thread.sleep(300); - } catch (InterruptedException ignored) { - } - } - case ResultStatus.FAILED -> { - break; - } - case ResultStatus.SUCCESS -> { - tempAction.resetPath(); - try { - doSerialize(tempAction, code, codeType); - } catch (IOException e) { - log.error("行动程序序列化出错: {}", tempAction.getKey(), e); - } - } - } - } - }); - - } - - protected abstract Path doBuildTempPath(MetaAction tempAction, String codeType); - - protected abstract void doSerialize(MetaAction tempAction, String code, String codeType) throws IOException; + public abstract void persistSerialize(MetaActionInfo metaActionInfo, McpData mcpData); /** * 列出执行环境下的系统依赖情况 @@ -105,4 +60,4 @@ public abstract class RunnerClient { private boolean ok; private String data; } -} \ No newline at end of file +} diff --git a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/SandboxRunnerClient.java b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/SandboxRunnerClient.java index 4013a696..86bdd6b5 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/SandboxRunnerClient.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/core/action/runner/SandboxRunnerClient.java @@ -1,9 +1,12 @@ package work.slhaf.partner.core.action.runner; import com.alibaba.fastjson2.JSONObject; + +import work.slhaf.partner.core.action.entity.McpData; import work.slhaf.partner.core.action.entity.MetaAction; import work.slhaf.partner.core.action.entity.MetaActionInfo; +import java.io.IOException; import java.nio.file.Path; import java.util.Map; import java.util.concurrent.ExecutorService; @@ -24,18 +27,6 @@ import java.util.concurrent.ExecutorService; */ public class SandboxRunnerClient extends RunnerClient { - @Override - protected Path doBuildTempPath(MetaAction tempAction, String codeType) { - // TODO Auto-generated method stub - return null; - } - - @Override - protected void doSerialize(MetaAction tempAction, String code, String codeType) { - // TODO Auto-generated method stub - - } - public SandboxRunnerClient(Map existedMetaActions, ExecutorService executor) { // 连接沙盒执行器(websocket) super(existedMetaActions, executor); } @@ -47,8 +38,22 @@ public class SandboxRunnerClient extends RunnerClient { @Override public JSONObject listSysDependencies() { - // TODO Auto-generated method stub return null; } + @Override + public Path buildTmpPath(MetaAction tempAction, String codeType) { + throw new UnsupportedOperationException("Unimplemented method 'buildTmpPath'"); + } + + @Override + public void tmpSerialize(MetaAction tempAction, String code, String codeType) throws IOException { + throw new UnsupportedOperationException("Unimplemented method 'tmpSerialize'"); + } + + @Override + public void persistSerialize(MetaActionInfo metaActionInfo, McpData mcpData) { + throw new UnsupportedOperationException("Unimplemented method 'persistSerialize'"); + } + } diff --git a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/DynamicActionGenerator.java b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/DynamicActionGenerator.java index 1677f2c8..763ebe7f 100644 --- a/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/DynamicActionGenerator.java +++ b/Partner-Main/src/main/java/work/slhaf/partner/module/modules/action/dispatcher/executor/DynamicActionGenerator.java @@ -16,8 +16,6 @@ import work.slhaf.partner.core.action.runner.RunnerClient; import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.GeneratorInput; import work.slhaf.partner.module.modules.action.dispatcher.executor.entity.GeneratorResult; -import java.nio.file.Path; - /** * 负责依据输入内容生成可执行的动态行动单元,并选择是否持久化至 SandboxRunner 容器内 */ @@ -50,8 +48,11 @@ public class DynamicActionGenerator extends AgentRunningSubModule