46 lines
2.1 KiB
GDScript
46 lines
2.1 KiB
GDScript
@tool
|
|
extends McpClient
|
|
|
|
|
|
func _init() -> void:
|
|
id = "deepseek_harness"
|
|
display_name = "DeepSeek Harness"
|
|
## DeepSeek Harness (dsh) has no `mcp` CLI verb — MCP servers register as
|
|
## `@deepseek-ai/dsh-mcp-client` plugin entries in the HOME patch layer
|
|
## `$DSH_HOME/cordis.patch.yml`, which dsh applies over every profile's
|
|
## own patch layer (the web GUI included). config_type "dsh" routes to
|
|
## `McpDshStrategy`. Verified live against dsh 0.1.0-rc.6: new entries
|
|
## must be `insert` rows; plain rows only override existing bundle ids.
|
|
config_type = "dsh"
|
|
## Home patch layer, not a per-profile file: one entry covers the web
|
|
## GUI, headless, tui, and any custom profile.
|
|
path_template = {
|
|
"unix": "~/.dsh/cordis.patch.yml",
|
|
"windows": "~/.dsh/cordis.patch.yml",
|
|
}
|
|
## Documented: `$DSH_HOME` relocates the whole harness home, and the
|
|
## loader reads `$DSH_HOME/cordis.patch.yml` (homePatchPath) — same
|
|
## false-success-write class as CODEX_HOME (#617), so the override must
|
|
## be declared.
|
|
config_home_env = "DSH_HOME"
|
|
config_home_env_subpath = "cordis.patch.yml"
|
|
## Installed detection: the harness home directory itself (dsh GUI and
|
|
## CLI both live there), or the config file once one exists.
|
|
detect_paths = PackedStringArray(["~/.dsh"])
|
|
## Attach migration (#838). The loader entry nests the launch under
|
|
## `config`; the mcp-client plugin requires `transport` next to
|
|
## command/args, and a `url` must never coexist with command fields.
|
|
command_shape = McpClient.CommandShape.FLAT
|
|
command_transport_key = "transport"
|
|
command_transport_value = "stdio"
|
|
command_legacy_keys = PackedStringArray(["url"])
|
|
## Fields the mcp-client plugin documents as user-owned; preserved on
|
|
## reconfigure and never drift-checked.
|
|
command_user_fields = PackedStringArray([
|
|
"env", "cwd", "toolCallTimeoutMs", "failOnStartupError", "reconnect",
|
|
])
|
|
command_timeout_fields = PackedStringArray(["toolCallTimeoutMs"])
|
|
## The bridge accepts `transport: streamable-http` with a `url`, so the
|
|
## manual instructions may offer the HTTP alternative.
|
|
command_supports_url_fallback = true
|