fix: expand local session results and reject unsafe search targets

This commit is contained in:
2026-09-06 01:24:50 +08:00
parent 93f4583737
commit c35a4a1051
16 changed files with 557 additions and 46 deletions
+6 -6
View File
@@ -351,7 +351,7 @@ try
case "session" when args[1] == "search":
{
var query = GetRequiredOption(args, "--query");
var results = await WechatChatClient.SearchSessionsAsync(query, HasOption(args, "--exact"), cancellationToken);
var results = await WechatChatClient.SearchSessionsAsync(query, HasOption(args, "--exact"), cancellationToken, GetOption(args, "--ui-output"));
WriteJson(new { query, results });
return 0;
}
@@ -362,7 +362,7 @@ try
}
case "session" when args[1] == "open":
{
WriteJson(await WechatChatClient.OpenSessionAsync(GetRequiredOption(args, "--name"), cancellationToken));
WriteJson(await WechatChatClient.OpenSessionAsync(GetRequiredOption(args, "--name"), cancellationToken, GetOption(args, "--query")));
return 0;
}
case "db" when args[1] == "scan":
@@ -585,10 +585,10 @@ static int ValidateCommandLine(string[] values)
ValidateOptions(values, 2, ["--timeout"], []);
return 30;
case "search":
ValidateOptions(values, 2, ["--query", "--timeout"], ["--exact"]);
ValidateOptions(values, 2, ["--query", "--ui-output", "--timeout"], ["--exact"]);
return 30;
case "open":
ValidateOptions(values, 2, ["--name", "--timeout"], []);
ValidateOptions(values, 2, ["--name", "--query", "--timeout"], []);
return 30;
default:
throw new WxAgentException(WxAgentErrorCode.InvalidArgument, "Unknown session command. Run WxAgent.Host help.");
@@ -742,9 +742,9 @@ WxAgent.Host commands:
chat monitor [--seconds 60] [--session <name>] [--independent] [--state-file <path>] [--include-content] [--timeout <seconds>]
chat listen [--seconds 30] [--include-content] [--timeout <seconds>]
session list [--timeout 30]
session search --query <text> [--exact] [--timeout 30]
session search --query <text> [--exact] [--ui-output <path>] [--timeout 30]
session current [--timeout 30]
session open --name <session-name> [--timeout 30]
session open --name <session-name> [--query <keyword>] [--timeout 30]
db scan [--data-root <xwechat_files>] [--save] [--key-file <path>] [--timeout 120]
db status [--key-file <path>] [--timeout 30]
db query --account <fingerprint> --database <relative-path> [--key-file <path>] [--timeout 30]