A login moves its node; an API key is added from any node, sealed (novox/hq ADR 0209)
The manager binds the node a login was adopted from to that login's licence, switching it if it was bound to another; serves public_key; adopt takes a key sealed to it. claude-code gains claude_code_add_api_key: read a file on this node, seal, hand to adopt, remove the file, optionally switch here.
This commit is contained in:
@@ -177,6 +177,25 @@ func tools(p Paths, servers ServerState, view *ServerView) []stdio.Tool {
|
||||
}
|
||||
return GrantFor(p, key)
|
||||
}},
|
||||
{Name: "claude_code_add_api_key",
|
||||
Description: "Add an Anthropic API key as a licence (ADR 0209): read from a file on this machine — never typed as an argument — sealed to the licence manager's key, handed over, and the file removed once taken. With use_here, this machine switches to it at once; other machines move with the manager's `switch`.",
|
||||
Input: map[string]any{
|
||||
"name": str("the licence's name, e.g. api"),
|
||||
"file": str("a file on this machine holding the key, e.g. ~/api-key (removed once the manager has it)"),
|
||||
"use_here": map[string]any{"type": "boolean", "description": "switch this machine to the new licence"},
|
||||
},
|
||||
Run: func(a map[string]any) (any, error) {
|
||||
name, _ := a["name"].(string)
|
||||
file, _ := a["file"].(string)
|
||||
if strings.TrimSpace(name) == "" || strings.TrimSpace(file) == "" {
|
||||
return nil, errors.New("name and file are required")
|
||||
}
|
||||
if strings.HasPrefix(file, "~/") {
|
||||
file = filepath.Join(p.Home, file[2:])
|
||||
}
|
||||
useHere, _ := a["use_here"].(bool)
|
||||
return AddAPIKey(p, strings.TrimSpace(name), file, useHere, ask)
|
||||
}},
|
||||
{Name: "claude_code_mcp_list",
|
||||
Description: "The MCP servers registered through this module: those that apply on this node (beside the console, `mesh`, and those set in the module's settings), and every registration on the mesh, by key — `all.<server>` for every node, `<node>.<server>` for one.",
|
||||
Run: func(map[string]any) (any, error) {
|
||||
|
||||
Reference in New Issue
Block a user