diff --git a/apps/cli/src/application/lib/bus.ts b/apps/cli/src/application/lib/bus.ts index 0987978e..ebbc9428 100644 --- a/apps/cli/src/application/lib/bus.ts +++ b/apps/cli/src/application/lib/bus.ts @@ -29,7 +29,8 @@ export class InMemoryBus implements IBus { } this.subscribers.get(runId)!.push(handler); return () => { - this.subscribers.get(runId)!.splice(this.subscribers.get(runId)!.indexOf(handler), 1); + const idx = this.subscribers.get(runId)!.indexOf(handler); + if (idx !== -1) this.subscribers.get(runId)!.splice(idx, 1); }; } } \ No newline at end of file diff --git a/apps/rowboat/app/api/copilot-stream-response/[streamId]/route.ts b/apps/rowboat/app/api/copilot-stream-response/[streamId]/route.ts index 620dfd00..b151f04e 100644 --- a/apps/rowboat/app/api/copilot-stream-response/[streamId]/route.ts +++ b/apps/rowboat/app/api/copilot-stream-response/[streamId]/route.ts @@ -10,6 +10,15 @@ export async function GET(request: Request, props: { params: Promise<{ streamId: // get user data const user = await requireAuth(); + // Validate auth token + const apiKey = request.headers.get("Authorization")?.split(" ")[1]; + if (!apiKey) { + return new Response(JSON.stringify({ error: "Missing or invalid Authorization header" }), { + status: 401, + headers: { "Content-Type": "application/json" }, + }); + } + const runCopilotCachedTurnController = container.resolve("runCopilotCachedTurnController"); const encoder = new TextEncoder(); @@ -21,7 +30,7 @@ export async function GET(request: Request, props: { params: Promise<{ streamId: for await (const event of runCopilotCachedTurnController.execute({ caller: "user", userId: user.id, - apiKey: request.headers.get("Authorization")?.split(" ")[1], + apiKey, key: params.streamId, })) { // Check if this is a content event diff --git a/apps/x/packages/core/src/application/lib/bus.ts b/apps/x/packages/core/src/application/lib/bus.ts index 4cf2fbb5..d7c83d97 100644 --- a/apps/x/packages/core/src/application/lib/bus.ts +++ b/apps/x/packages/core/src/application/lib/bus.ts @@ -29,7 +29,8 @@ export class InMemoryBus implements IBus { } this.subscribers.get(runId)!.push(handler); return () => { - this.subscribers.get(runId)!.splice(this.subscribers.get(runId)!.indexOf(handler), 1); + const idx = this.subscribers.get(runId)!.indexOf(handler); + if (idx !== -1) this.subscribers.get(runId)!.splice(idx, 1); }; } } \ No newline at end of file