clawdis-mac: enrich node list output

This commit is contained in:
Peter Steinberger
2025-12-17 20:03:30 +00:00
parent 079c1d8786
commit c452f8c430
3 changed files with 106 additions and 5 deletions

View File

@@ -433,6 +433,45 @@ struct ClawdisCLI {
return
}
if case .nodeList = parsed.request, let payload = response.payload {
struct NodeListResult: Decodable {
struct Node: Decodable {
var nodeId: String
var displayName: String?
var remoteAddress: String?
var connected: Bool
var capabilities: [String]?
}
var pairedNodeIds: [String]?
var connectedNodeIds: [String]?
var nodes: [Node]
}
if let decoded = try? JSONDecoder().decode(NodeListResult.self, from: payload) {
let pairedCount = decoded.pairedNodeIds?.count ?? decoded.nodes.count
let connectedCount = decoded.connectedNodeIds?.count ?? decoded.nodes.filter(\.connected).count
print("Paired: \(pairedCount) · Connected: \(connectedCount)")
for n in decoded.nodes {
let nameTrimmed = n.displayName?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
let name = nameTrimmed.isEmpty ? n.nodeId : nameTrimmed
let ipTrimmed = n.remoteAddress?.trimmingCharacters(in: .whitespacesAndNewlines) ?? ""
let ip = ipTrimmed.isEmpty ? nil : ipTrimmed
let caps = n.capabilities?.sorted().joined(separator: ",")
let capsText = caps.map { "[\($0)]" } ?? "?"
var parts: [String] = ["- \(name)", n.nodeId]
if let ip { parts.append(ip) }
parts.append(n.connected ? "connected" : "disconnected")
parts.append("caps: \(capsText)")
print(parts.joined(separator: " · "))
}
return
}
}
switch parsed.kind {
case .generic:
if let payload = response.payload, let text = String(data: payload, encoding: .utf8), !text.isEmpty {
@@ -509,7 +548,7 @@ struct ClawdisCLI {
[--session <key>] [--deliver] [--to <E.164>]
Nodes:
clawdis-mac node list
clawdis-mac node list # paired + connected nodes (+ capabilities when available)
clawdis-mac node invoke --node <id> --command <name> [--params-json <json>]
Canvas: