feat(tui): integrate with Herdr host

This commit is contained in:
Xubin Ren
2026-08-17 20:56:10 +08:00
parent 783d381710
commit 79d51be71f
17 changed files with 622 additions and 32 deletions
+16 -1
View File
@@ -243,19 +243,34 @@ describe("gateway protocol", () => {
socket.emit("message", {
data: JSON.stringify({ event: "attached", chat_id: "one", model_preset: 42 }),
})
socket.emit("message", {
data: JSON.stringify({ event: "turn_end", chat_id: "one", goal_state: [] }),
})
socket.emit("message", {
data: JSON.stringify({ event: "session_updated", chat_id: "one", scope: "metadata" }),
})
socket.emit("message", {
data: JSON.stringify({
event: "turn_end",
chat_id: "one",
goal_state: { active: false, status: "blocked", ui_summary: "Approval required" },
}),
})
socket.emit("message", { data: JSON.stringify({ event: "future_gateway_event" }) })
socket.emit("message", { data: JSON.stringify({ event: "error", detail: "global failure" }) })
expect(statuses).toContain("error:gateway sent an invalid event")
expect(statuses.filter((status) => status.includes("invalid event"))).toHaveLength(8)
expect(statuses.filter((status) => status.includes("invalid event"))).toHaveLength(9)
expect(events).toContainEqual({
event: "session_updated",
chat_id: "one",
scope: "metadata",
})
expect(events).toContainEqual({ event: "error", detail: "global failure" })
expect(events).toContainEqual({
event: "turn_end",
chat_id: "one",
goal_state: { active: false, status: "blocked", ui_summary: "Approval required" },
})
} finally {
Object.defineProperty(globalThis, "WebSocket", { configurable: true, value: original })
}