feat(devin): expose handoff backend in MCP server enum (#3)
The Devin MCP server's backend enum only listed mock/claude/codex/copilot, excluding the handoff backend that was merged to the engine in #125. This made the subscription-friendly, no-API-key path unavailable to Devin users while Claude Code had a dedicated /skillopt-sleep-handoff command for it. Add "handoff" to the backend enum in _TOOL_SCHEMA so sleep_run accepts backend: "handoff". The engine already handles the prompt/answer file loop (exit code 3 + .skillopt-sleep-handoff/); the MCP server needs no special handling — it passes through the engine output showing pending prompts. Update the README, rules snippet, and test_backends_in_enum accordingly.
This commit is contained in:
@@ -46,7 +46,7 @@ class TestDevinMcpSchema(unittest.TestCase):
|
||||
|
||||
def test_backends_in_enum(self):
|
||||
backends = mcp_server._TOOL_SCHEMA["properties"]["backend"]["enum"]
|
||||
for b in ["mock", "claude", "codex", "copilot"]:
|
||||
for b in ["mock", "claude", "codex", "copilot", "handoff"]:
|
||||
self.assertIn(b, backends)
|
||||
|
||||
def test_schema_has_key_engine_params(self):
|
||||
@@ -64,6 +64,10 @@ class TestClaudeHomeExpansion(unittest.TestCase):
|
||||
(the documented mcp-config sets SKILLOPT_DEVIN_CLAUDE_HOME="~/...")."""
|
||||
|
||||
def test_env_tilde_is_expanded(self):
|
||||
# Re-insert the devin plugin path at position 0 so importlib.reload
|
||||
# picks up this module, not plugins/copilot/mcp_server.py when both
|
||||
# test modules are loaded in the same process.
|
||||
sys.path.insert(0, PLUGIN)
|
||||
os.environ["SKILLOPT_DEVIN_CLAUDE_HOME"] = "~/.skillopt-sleep-devin"
|
||||
try:
|
||||
importlib.reload(mcp_server)
|
||||
|
||||
Reference in New Issue
Block a user