From e49318411b12d7b1ddeba9132919fbc0665acef7 Mon Sep 17 00:00:00 2001 From: Roomote Date: Fri, 11 Sep 2026 18:08:33 +0000 Subject: [PATCH] improve: label setup integration discovery --- .../FastSessionTranscript.client.test.tsx | 36 +++++++++++++++++++ .../SetupIntegrationsCard.client.test.tsx | 5 ++- .../trpc/commands/setup/setup-session.test.ts | 21 +++++++++++ .../src/trpc/commands/setup/setup-session.ts | 4 +-- 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/apps/web/src/app/(sandbox)/sessions/[sessionId]/FastSessionTranscript.client.test.tsx b/apps/web/src/app/(sandbox)/sessions/[sessionId]/FastSessionTranscript.client.test.tsx index 380e0e5a4b..3238c7c358 100644 --- a/apps/web/src/app/(sandbox)/sessions/[sessionId]/FastSessionTranscript.client.test.tsx +++ b/apps/web/src/app/(sandbox)/sessions/[sessionId]/FastSessionTranscript.client.test.tsx @@ -1201,6 +1201,42 @@ describe('FastSessionTranscript', () => { expect(document.querySelector('.lucide-git-branch')).toBeInTheDocument(); }); + it('renders integration discovery with the requested status copy and plug icon', () => { + const receipt = textMessage({ + id: 'integration-receipt', + role: 'user', + text: 'Asked about integrations.', + ts: 1, + inputKind: SETUP_RECEIPT_INPUT_KIND, + userId: 'user-1', + }); + receipt.payload = { + setupReceipt: { + kind: 'integration_discovery', + presentation: { + label: 'Asked about integrations', + iconKey: 'plug', + }, + }, + }; + + render( + , + ); + + expect(screen.getByText('Asked about integrations')).toBeInTheDocument(); + expect(document.querySelector('.lucide-plug')).toBeInTheDocument(); + }); + it('removes the running task indicator when the count returns to zero', () => { const { rerender } = render( diff --git a/apps/web/src/app/(sandbox)/sessions/[sessionId]/setup/SetupIntegrationsCard.client.test.tsx b/apps/web/src/app/(sandbox)/sessions/[sessionId]/setup/SetupIntegrationsCard.client.test.tsx index 77a6040ec7..7d9203cdf2 100644 --- a/apps/web/src/app/(sandbox)/sessions/[sessionId]/setup/SetupIntegrationsCard.client.test.tsx +++ b/apps/web/src/app/(sandbox)/sessions/[sessionId]/setup/SetupIntegrationsCard.client.test.tsx @@ -143,7 +143,10 @@ beforeEach(() => { }); it('shows only eligible option IDs in catalog order without badges or unmentioned defaults', () => { - render(); + const { container } = render( + , + ); + expect(container.querySelector('.lucide-plug')).toBeInTheDocument(); const rows = within( screen.getByRole('list', { name: 'Available integrations' }), ).getAllByRole('listitem'); diff --git a/apps/web/src/trpc/commands/setup/setup-session.test.ts b/apps/web/src/trpc/commands/setup/setup-session.test.ts index 82ed4e1ab7..d19f15eeb9 100644 --- a/apps/web/src/trpc/commands/setup/setup-session.test.ts +++ b/apps/web/src/trpc/commands/setup/setup-session.test.ts @@ -332,6 +332,27 @@ describe('optional setup integration discovery', () => { .from(fastAgentMessages) .where(eq(fastAgentMessages.eventId, 'event:integrations:response')); expect(response?.metadata).toMatchObject({ userId: auth.userId }); + const messages = await db + .select({ payload: fastAgentMessages.payload }) + .from(fastAgentMessages) + .where(eq(fastAgentMessages.conversationId, conversationId)); + expect( + messages.find( + ({ payload }) => + ( + payload as { + setupReceipt?: { kind?: string }; + } | null + )?.setupReceipt?.kind === 'integration_discovery', + )?.payload, + ).toMatchObject({ + setupReceipt: { + presentation: { + label: 'Asked about integrations', + iconKey: 'plug', + }, + }, + }); }); it('rejects setup replies from a collaborator instead of dropping setup guards', async () => { diff --git a/apps/web/src/trpc/commands/setup/setup-session.ts b/apps/web/src/trpc/commands/setup/setup-session.ts index f9fe20283f..a355974657 100644 --- a/apps/web/src/trpc/commands/setup/setup-session.ts +++ b/apps/web/src/trpc/commands/setup/setup-session.ts @@ -1145,10 +1145,10 @@ async function persistSetupPresetResponse(input: { fingerprint: input.request.payload.requestId, requestId: input.request.payload.requestId, presentation: { - label: 'Suggested integrations', + label: 'Asked about integrations', iconKey: 'plug', }, - text: 'Suggested integrations.', + text: 'Asked about integrations.', payload: {}, ts: now.getTime(), }),