diff --git a/mateclaw-server/src/main/java/vip/mate/channel/web/TalkModeWebSocketHandler.java b/mateclaw-server/src/main/java/vip/mate/channel/web/TalkModeWebSocketHandler.java index 81eda93f..1d529639 100644 --- a/mateclaw-server/src/main/java/vip/mate/channel/web/TalkModeWebSocketHandler.java +++ b/mateclaw-server/src/main/java/vip/mate/channel/web/TalkModeWebSocketHandler.java @@ -70,7 +70,9 @@ public class TalkModeWebSocketHandler extends AbstractWebSocketHandler { String type = (String) data.get("type"); if ("init".equals(type)) { - Long agentId = data.get("agentId") != null ? Long.valueOf(data.get("agentId").toString()) : null; + Object rawAgentId = data.get("agentId"); + Long agentId = (rawAgentId != null && !rawAgentId.toString().isBlank()) + ? Long.valueOf(rawAgentId.toString()) : null; String conversationId = (String) data.getOrDefault("conversationId", "talk-" + session.getId()); String username = (String) data.getOrDefault("username", "anonymous"); diff --git a/mateclaw-server/src/main/java/vip/mate/config/FlywayRepairConfig.java b/mateclaw-server/src/main/java/vip/mate/config/FlywayRepairConfig.java new file mode 100644 index 00000000..75b85d46 --- /dev/null +++ b/mateclaw-server/src/main/java/vip/mate/config/FlywayRepairConfig.java @@ -0,0 +1,32 @@ +package vip.mate.config; + +import lombok.extern.slf4j.Slf4j; +import org.flywaydb.core.Flyway; +import org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Flyway auto-repair configuration. + *
+ * Replaces the default {@link FlywayMigrationInitializer} with one that + * calls {@code flyway.repair()} before {@code flyway.migrate()}. + * This handles failed migrations and checksum mismatches transparently + * during version upgrades — especially important for Desktop app users + * who cannot manually run CLI commands. + * + * @author MateClaw Team + */ +@Slf4j +@Configuration +public class FlywayRepairConfig { + + @Bean + public FlywayMigrationInitializer flywayInitializer(Flyway flyway) { + return new FlywayMigrationInitializer(flyway, f -> { + log.info("[Flyway] Running repair before migrate (auto-fix failed/changed migrations)..."); + f.repair(); + f.migrate(); + }); + } +} diff --git a/mateclaw-server/src/main/java/vip/mate/tool/mcp/runtime/CwdAwareStdioClientTransport.java b/mateclaw-server/src/main/java/vip/mate/tool/mcp/runtime/CwdAwareStdioClientTransport.java index 435ffc87..36a7e86c 100644 --- a/mateclaw-server/src/main/java/vip/mate/tool/mcp/runtime/CwdAwareStdioClientTransport.java +++ b/mateclaw-server/src/main/java/vip/mate/tool/mcp/runtime/CwdAwareStdioClientTransport.java @@ -3,17 +3,50 @@ package vip.mate.tool.mcp.runtime; import io.modelcontextprotocol.client.transport.ServerParameters; import io.modelcontextprotocol.client.transport.StdioClientTransport; import io.modelcontextprotocol.json.McpJsonMapper; +import lombok.extern.slf4j.Slf4j; import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Map; /** - * 为 stdio MCP 子进程补充工作目录支持。 - * MCP SDK 1.0.0 的 ServerParameters 尚未暴露 cwd,这里通过覆写 ProcessBuilder 注入。 + * Enhanced stdio MCP transport with: + *
| {{ t('datasources.columns.name') }} | @@ -26,7 +25,7 @@
|---|
|
|
| {{ t('mcp.columns.name') }} | -{{ t('mcp.columns.lastStatus') }} | -{{ t('mcp.columns.toolCount') }} | -{{ t('mcp.columns.enabled') }} | -{{ t('mcp.columns.actions') }} | -||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
-
-
-
- {{ server.name }}
-
-
- {{ t('mcp.transport.' + server.transport) }}
-
+
+
+
+
+
{{ t('mcp.messages.empty') }} +{{ t('mcp.messages.emptyDesc') }} + |
+ ||||||||||||||||||||||||