GatewayConnection: validate agent message

This commit is contained in:
Peter Steinberger
2025-12-17 16:09:22 +01:00
parent 6fdc62c008
commit a1940418fb
4 changed files with 13 additions and 6 deletions

View File

@@ -165,9 +165,11 @@ extension GatewayConnection {
channel: String? = nil,
idempotencyKey: String = UUID().uuidString) async -> (ok: Bool, error: String?)
{
let trimmed = message.trimmingCharacters(in: .whitespacesAndNewlines)
guard !trimmed.isEmpty else { return (false, "message empty") }
do {
let params: [String: Any] = [
"message": message,
"message": trimmed,
"sessionKey": sessionKey,
"thinking": thinking ?? "default",
"deliver": deliver,

View File

@@ -2,16 +2,21 @@ import Testing
@testable import Clawdis
@testable import ClawdisIPC
@Suite(.serialized) struct AgentRPCTests {
@Suite(.serialized) struct GatewayConnectionControlTests {
@Test func statusFailsWhenProcessMissing() async {
let result = await AgentRPC.shared.status()
let result = await GatewayConnection.shared.status()
// We don't assert ok because the worker may not be available in CI.
// Instead, ensure the call returns without throwing and provides a message.
#expect(result.ok == true || result.error != nil)
}
@Test func rejectEmptyMessage() async {
let result = await AgentRPC.shared.send(text: "", thinking: nil, sessionKey: "main", deliver: false, to: nil)
let result = await GatewayConnection.shared.sendAgent(
message: "",
thinking: nil,
sessionKey: "main",
deliver: false,
to: nil)
#expect(result.ok == false)
}
}