The tool runner is not told who called, so a hook, a managed setting, a permission rule or a tool server registered through these tools could come from an agent confined on another node and run as the operator there (hq issue 340). They are set at the controller's terminal now; a skill, subagent or command that runs something by itself is refused too, kept hooks and settings are never rendered, and claude_code_registrations lists what is registered and by which node.
140 lines
3.5 KiB
JSON
140 lines
3.5 KiB
JSON
{
|
|
"module": "claude-code",
|
|
"version": "1",
|
|
"slug": "agent",
|
|
"capabilities": [
|
|
"package-manager"
|
|
],
|
|
"requires": [
|
|
"mcp-endpoint"
|
|
],
|
|
"binds": {
|
|
"mcp-endpoint": "${dir:state}/mcp-endpoint.json"
|
|
},
|
|
"state": [
|
|
"servers",
|
|
"holdings",
|
|
"config"
|
|
],
|
|
"reads": [
|
|
"claude-licence-manager.bindings"
|
|
],
|
|
"tools": [
|
|
"claude_code_status",
|
|
"claude_code_render",
|
|
"claude_code_guard",
|
|
"claude_code_pull",
|
|
"claude_code_grant",
|
|
"claude_code_add_api_key",
|
|
"claude_code_registrations",
|
|
"claude_code_mcp_list",
|
|
"claude_code_mcp_register",
|
|
"claude_code_mcp_unregister",
|
|
"claude_code_skill_list",
|
|
"claude_code_skill_register",
|
|
"claude_code_skill_unregister",
|
|
"claude_code_agent_list",
|
|
"claude_code_agent_register",
|
|
"claude_code_agent_unregister",
|
|
"claude_code_command_list",
|
|
"claude_code_command_register",
|
|
"claude_code_command_unregister",
|
|
"claude_code_hook_list",
|
|
"claude_code_hook_register",
|
|
"claude_code_hook_unregister",
|
|
"claude_code_output_style_list",
|
|
"claude_code_output_style_register",
|
|
"claude_code_output_style_unregister",
|
|
"claude_code_instructions_list",
|
|
"claude_code_instructions_register",
|
|
"claude_code_instructions_unregister",
|
|
"claude_code_settings_get",
|
|
"claude_code_settings_set",
|
|
"claude_code_settings_clear",
|
|
"claude_code_permission_add",
|
|
"claude_code_permission_remove",
|
|
"claude_code_config_list",
|
|
"claude_code_config_show",
|
|
"claude_code_config_status",
|
|
"claude_code_config_import",
|
|
"claude_code_home_show",
|
|
"claude_code_home_remove",
|
|
"claude_code_home_removed",
|
|
"claude_code_home_restore"
|
|
],
|
|
"data": {
|
|
"own": [
|
|
{
|
|
"id": "agent-home",
|
|
"path": "${dir:agent-home}",
|
|
"class": "valuable",
|
|
"why": "the operator's agent's own files: its memory, history and projects"
|
|
}
|
|
]
|
|
},
|
|
"resources": [
|
|
{
|
|
"id": "package",
|
|
"type": "package",
|
|
"package": "claude-code"
|
|
},
|
|
{
|
|
"id": "managed",
|
|
"type": "directory",
|
|
"path": "/etc/claude-code",
|
|
"mode": "0755"
|
|
},
|
|
{
|
|
"id": "agent-home",
|
|
"type": "directory",
|
|
"path": "${machine:account-home}/.claude",
|
|
"mode": "0700",
|
|
"owner": "${machine:account}"
|
|
},
|
|
{
|
|
"id": "state",
|
|
"type": "directory",
|
|
"mode": "0700",
|
|
"owner": "${machine:account}",
|
|
"place": "."
|
|
},
|
|
{
|
|
"id": "facts",
|
|
"type": "file",
|
|
"path": "${dir:state}/facts.json",
|
|
"mode": "0600",
|
|
"owner": "${machine:account}",
|
|
"content": "{\n \"node\": \"${machine:name}\",\n \"console\": \"http://127.0.0.1:${bound:mcp-endpoint:port}/mcp\"\n}\n"
|
|
},
|
|
{
|
|
"id": "settings",
|
|
"type": "file",
|
|
"path": "${dir:state}/settings.json",
|
|
"mode": "0600",
|
|
"owner": "${machine:account}",
|
|
"merge": "json",
|
|
"content": "{\n \"role\": \"\",\n \"mcp_servers\": {},\n \"managed_settings\": {}\n}\n"
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/claude-code",
|
|
"binary": "claude-code",
|
|
"loads": [
|
|
"claude-code"
|
|
],
|
|
"env": {
|
|
"MESH_CLAUDE_CODE_STATE": "${dir:state}",
|
|
"MESH_CLAUDE_CODE_FACTS": "${dir:state}/facts.json",
|
|
"MESH_CLAUDE_CODE_SETTINGS": "${dir:state}/settings.json"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|