CB-632: rename the member's MCP mount bridge -> fleet
Every launcher writes the bridge's MCP server into the config it hands its peer, and it named that server "bridge". So a member addressed its tools as mcp__bridge__fleet_send while the tools themselves are already fleet_*. The mount is named "fleet" now, and a member's tools are mcp__fleet__*. The name was a bare literal in three files: ClaudeCodeLauncher and LeadLauncher build a --mcp-config JSON string, OpenCodeLauncher writes an opencode.json node. Three hand-written copies of one name is how a rename lands in two of them, so the name is now one constant, PeerLauncher.MCP_MOUNT_NAME. The mount name is local to the peer — it is the label its own client puts on the server, and nothing in the daemon reads it back. Renaming it changes no wire call. Tests. Each launcher's test now asserts the mount is named fleet AND that nothing writes "bridge"; the second half is the part that would have caught a half-done rename. LeadLauncherTest never checked the name at all, only the URL, so it gained the assertion rather than had one updated. CLAUDE.md's role-detection ladder quoted mcp__bridge__* as the marker of a spawned member. It names mcp__fleet__* now, and says that a member spawned before this change still reports the old prefix. The portable block stays byte-identical with the wiki template (wiki 569a917). Build: cd bridged && mvn clean install, then read target/surefire-reports/*.xml directly — 884 tests, 0 failures, 0 errors.
This commit is contained in:
@@ -17,6 +17,7 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
import dev.ltms.fleet.peer.PeerLauncher;
|
||||
|
||||
/**
|
||||
* Starts the leads {@code fleet.leaders:} declares, when none is already running (CB-558).
|
||||
@@ -252,7 +253,8 @@ public final class LeadLauncher {
|
||||
List<String> argv = new ArrayList<>(profile.argv());
|
||||
if (profile.hasMcp()) {
|
||||
argv.add("--mcp-config");
|
||||
argv.add("{\"mcpServers\":{\"bridge\":{\"type\":\"http\",\"url\":\""
|
||||
argv.add("{\"mcpServers\":{\"" + PeerLauncher.MCP_MOUNT_NAME
|
||||
+ "\":{\"type\":\"http\",\"url\":\""
|
||||
+ profile.mcpUrl() + "\"}}}");
|
||||
}
|
||||
// Appended last, for the same reason the member launcher does it (CB-533): the argv is
|
||||
|
||||
@@ -6,6 +6,7 @@ import dev.ltms.fleet.herdr.Agent;
|
||||
import dev.ltms.fleet.herdr.AgentControl;
|
||||
import dev.ltms.fleet.herdr.WorkspaceControl;
|
||||
import dev.ltms.fleet.peer.Capability;
|
||||
import dev.ltms.fleet.peer.PeerLauncher;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -298,7 +299,8 @@ public final class ClaudeCodeLauncher extends HerdrPeerLauncher {
|
||||
}
|
||||
List<String> argv = mutableArgv(cfg.argv());
|
||||
if (cfg.hasMcp()) {
|
||||
String mcpJson = "{\"mcpServers\":{\"bridge\":{\"type\":\"http\",\"url\":\""
|
||||
String mcpJson = "{\"mcpServers\":{\"" + PeerLauncher.MCP_MOUNT_NAME
|
||||
+ "\":{\"type\":\"http\",\"url\":\""
|
||||
+ cfg.mcpUrl() + "\"}}}";
|
||||
argv.add("--mcp-config");
|
||||
argv.add(mcpJson);
|
||||
|
||||
@@ -9,6 +9,7 @@ import dev.ltms.fleet.herdr.WorkspaceControl;
|
||||
import dev.ltms.fleet.peer.Capability;
|
||||
import dev.ltms.fleet.peer.CharterReceipt;
|
||||
import dev.ltms.fleet.peer.PeerHandle;
|
||||
import dev.ltms.fleet.peer.PeerLauncher;
|
||||
import dev.ltms.fleet.peer.SpawnRequest;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -321,10 +322,10 @@ public final class OpenCodeLauncher extends HerdrPeerLauncher {
|
||||
}
|
||||
|
||||
if (cfg.hasMcp()) {
|
||||
ObjectNode bridge = root.putObject("mcp").putObject("bridge");
|
||||
bridge.put("type", "remote");
|
||||
bridge.put("url", cfg.mcpUrl());
|
||||
bridge.put("enabled", true);
|
||||
ObjectNode mount = root.putObject("mcp").putObject(PeerLauncher.MCP_MOUNT_NAME);
|
||||
mount.put("type", "remote");
|
||||
mount.put("url", cfg.mcpUrl());
|
||||
mount.put("enabled", true);
|
||||
}
|
||||
if (hasCustomProvider(cfg)) {
|
||||
addCustomProvider(root, cfg);
|
||||
|
||||
@@ -18,6 +18,18 @@ import java.util.Set;
|
||||
*/
|
||||
public interface PeerLauncher {
|
||||
|
||||
/**
|
||||
* The name every launcher gives the bridge's MCP server in the config it writes for its peer.
|
||||
* The peer's tools are addressed as {@code mcp__<this>__fleet_*}, and {@code CLAUDE.md}'s
|
||||
* role-detection ladder names that prefix, so the two must agree.
|
||||
*
|
||||
* <p>It is a constant because three launchers write it — {@code ClaudeCodeLauncher} and
|
||||
* {@code LeadLauncher} into a {@code --mcp-config} literal, {@code OpenCodeLauncher} into an
|
||||
* {@code opencode.json} node. Three hand-written copies of one name is how a rename lands in
|
||||
* two of them (CB-632).
|
||||
*/
|
||||
String MCP_MOUNT_NAME = "fleet";
|
||||
|
||||
/**
|
||||
* The set of {@link Capability capabilities} this launcher declares. A peer whose profile
|
||||
* opts into a git-forge token should include {@link Capability#SELF_PR}; the base set for
|
||||
|
||||
Reference in New Issue
Block a user