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:
@@ -62,9 +62,12 @@ Requires Python ≥ 3.10. No third-party packages — the server is pure stdlib.
|
||||
| `sleep_unschedule` | remove the nightly cron entry |
|
||||
|
||||
Default backend is `mock` (no API spend); the `claude`, `codex`, and `copilot`
|
||||
backends use the corresponding authenticated CLI and budget. The seven tools
|
||||
call the same `python -m skillopt_sleep` actions as the other shared-engine
|
||||
integrations.
|
||||
backends use the corresponding authenticated CLI and budget. The `handoff`
|
||||
backend runs the cycle with no model subprocess or API key — the engine writes
|
||||
pending model calls to `.skillopt-sleep-handoff/PROMPTS.md` + `pending.json`
|
||||
(exit code 3) and resumes after answers are placed in `answers/<id>.md`; re-run
|
||||
`sleep_run` with the same arguments to resume. The seven tools call the same
|
||||
`python -m skillopt_sleep` actions as the other shared-engine integrations.
|
||||
|
||||
## Data boundary
|
||||
|
||||
|
||||
@@ -24,7 +24,10 @@ Always pass the absolute Devin workspace as `project`, especially for
|
||||
`sleep_adopt`. Default backend is `mock` (no provider calls). The `claude`,
|
||||
`codex`, and `copilot` backend values use the corresponding installed and
|
||||
authenticated CLI; they do not require this plugin to implement a separate
|
||||
API-key flow.
|
||||
API-key flow. The `handoff` backend runs the cycle with no model subprocess
|
||||
or API key — the engine writes pending model calls to
|
||||
`.skillopt-sleep-handoff/` and exits; answer each prompt in a fresh context
|
||||
and re-run `sleep_run` to resume (typically 3–6 rounds).
|
||||
|
||||
The Devin conversion and mock workflow stay local. A real backend sends
|
||||
truncated transcript excerpts and derived tasks to the selected provider for
|
||||
|
||||
@@ -62,8 +62,8 @@ _TOOL_SCHEMA = {
|
||||
"properties": {
|
||||
"project": {"type": "string",
|
||||
"description": "Project dir to evolve (default: cwd)."},
|
||||
"backend": {"type": "string", "enum": ["mock", "claude", "codex", "copilot"],
|
||||
"description": "mock = no API spend (default); claude/codex/copilot = real."},
|
||||
"backend": {"type": "string", "enum": ["mock", "claude", "codex", "copilot", "handoff"],
|
||||
"description": "mock = no API spend (default); claude/codex/copilot = real; handoff = session answers prompts, no API subprocess."},
|
||||
"scope": {"type": "string", "enum": ["invoked", "all"],
|
||||
"description": "Harvest scope (default: invoked project only)."},
|
||||
"source": {"type": "string", "enum": ["claude", "codex", "auto"],
|
||||
|
||||
Reference in New Issue
Block a user