Replace dasher-pack with unified animation-pack using original Blender bone names
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
@tool
|
||||
class_name McpClientRegistry
|
||||
extends RefCounted
|
||||
|
||||
## Central enumeration of every supported MCP client. Adding a new client
|
||||
## means: drop a file in clients/, then append one preload below.
|
||||
|
||||
const _CLIENT_SCRIPTS := [
|
||||
preload("res://addons/godot_ai/clients/claude_code.gd"),
|
||||
preload("res://addons/godot_ai/clients/claude_desktop.gd"),
|
||||
preload("res://addons/godot_ai/clients/codex.gd"),
|
||||
preload("res://addons/godot_ai/clients/antigravity.gd"),
|
||||
preload("res://addons/godot_ai/clients/cursor.gd"),
|
||||
preload("res://addons/godot_ai/clients/windsurf.gd"),
|
||||
preload("res://addons/godot_ai/clients/vscode.gd"),
|
||||
preload("res://addons/godot_ai/clients/vscode_insiders.gd"),
|
||||
preload("res://addons/godot_ai/clients/zed.gd"),
|
||||
preload("res://addons/godot_ai/clients/gemini_cli.gd"),
|
||||
preload("res://addons/godot_ai/clients/cline.gd"),
|
||||
preload("res://addons/godot_ai/clients/kilo_code.gd"),
|
||||
preload("res://addons/godot_ai/clients/roo_code.gd"),
|
||||
preload("res://addons/godot_ai/clients/kiro.gd"),
|
||||
preload("res://addons/godot_ai/clients/trae.gd"),
|
||||
preload("res://addons/godot_ai/clients/cherry_studio.gd"),
|
||||
preload("res://addons/godot_ai/clients/opencode.gd"),
|
||||
preload("res://addons/godot_ai/clients/qwen_code.gd"),
|
||||
preload("res://addons/godot_ai/clients/kimi_code.gd"),
|
||||
]
|
||||
|
||||
static var _instances: Array[McpClient] = []
|
||||
static var _by_id: Dictionary = {}
|
||||
|
||||
|
||||
static func all() -> Array[McpClient]:
|
||||
if _instances.is_empty():
|
||||
_load()
|
||||
return _instances
|
||||
|
||||
|
||||
static func get_by_id(id: String) -> McpClient:
|
||||
if _instances.is_empty():
|
||||
_load()
|
||||
return _by_id.get(id, null)
|
||||
|
||||
|
||||
static func ids() -> PackedStringArray:
|
||||
var out := PackedStringArray()
|
||||
for c in all():
|
||||
out.append(c.id)
|
||||
return out
|
||||
|
||||
|
||||
static func has_id(id: String) -> bool:
|
||||
if _instances.is_empty():
|
||||
_load()
|
||||
return _by_id.has(id)
|
||||
|
||||
|
||||
static func _load() -> void:
|
||||
_instances.clear()
|
||||
_by_id.clear()
|
||||
for script in _CLIENT_SCRIPTS:
|
||||
var inst: McpClient = script.new()
|
||||
if inst.id.is_empty():
|
||||
push_warning("MCP | client descriptor %s has empty id" % script.resource_path)
|
||||
continue
|
||||
if _by_id.has(inst.id):
|
||||
push_warning("MCP | duplicate client id: %s" % inst.id)
|
||||
continue
|
||||
_instances.append(inst)
|
||||
_by_id[inst.id] = inst
|
||||
Reference in New Issue
Block a user