summaryrefslogtreecommitdiffhomepage
path: root/src/adapters
diff options
context:
space:
mode:
Diffstat (limited to 'src/adapters')
-rw-r--r--src/adapters/ws/logic.test.ts15
-rw-r--r--src/adapters/ws/logic.ts7
2 files changed, 21 insertions, 1 deletions
diff --git a/src/adapters/ws/logic.test.ts b/src/adapters/ws/logic.test.ts
index 113a731..dd2b773 100644
--- a/src/adapters/ws/logic.test.ts
+++ b/src/adapters/ws/logic.test.ts
@@ -283,6 +283,21 @@ describe("parseServerMessage", () => {
});
});
+ it("accepts the `queued` status (CR-13 — waiting for a concurrency slot)", () => {
+ const data = JSON.stringify({
+ type: "conversation.statusChanged",
+ conversationId: "c1",
+ status: "queued",
+ workspaceId: "w1",
+ });
+ expect(parseServerMessage(data)).toEqual({
+ type: "conversation.statusChanged",
+ conversationId: "c1",
+ status: "queued",
+ workspaceId: "w1",
+ });
+ });
+
it("returns null for conversation.statusChanged with missing workspaceId", () => {
expect(
parseServerMessage(
diff --git a/src/adapters/ws/logic.ts b/src/adapters/ws/logic.ts
index ba3e7ee..03ef763 100644
--- a/src/adapters/ws/logic.ts
+++ b/src/adapters/ws/logic.ts
@@ -126,7 +126,12 @@ export function parseServerMessage(data: string): WsServerMessage | null {
case "conversation.statusChanged": {
if (typeof parsed.conversationId !== "string") return null;
if (typeof parsed.status !== "string") return null;
- if (parsed.status !== "active" && parsed.status !== "idle" && parsed.status !== "closed") {
+ if (
+ parsed.status !== "active" &&
+ parsed.status !== "queued" &&
+ parsed.status !== "idle" &&
+ parsed.status !== "closed"
+ ) {
return null;
}
if (typeof parsed.workspaceId !== "string") return null;