From d001430ce408fa5a1768f03941bcedb470fa0187 Mon Sep 17 00:00:00 2001 From: Dotta Date: Tue, 6 Oct 2026 20:04:49 -0500 Subject: [PATCH] Add synthetic Dot connection review previews Co-Authored-By: Paperclip --- doc/openai-dot-runner.md | 9 +++ .../openai-dot-runner/connected.jpg | Bin 0 -> 27790 bytes doc/screenshots/openai-dot-runner/pairing.jpg | Bin 0 -> 39623 bytes .../stories/dot-runner-connection.stories.tsx | 53 ++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 doc/screenshots/openai-dot-runner/connected.jpg create mode 100644 doc/screenshots/openai-dot-runner/pairing.jpg create mode 100644 ui/storybook/stories/dot-runner-connection.stories.tsx diff --git a/doc/openai-dot-runner.md b/doc/openai-dot-runner.md index 59b35935482..13b0dabbaae 100644 --- a/doc/openai-dot-runner.md +++ b/doc/openai-dot-runner.md @@ -155,3 +155,12 @@ an unexpected exit. A real Rust regression reproduces the failing order and passes with the fix. Four driver tests and 11 integration/pairing tests passed, including a failed connection refresh after successful revocation. Revocation clears the cached binding before refetch so that failure cannot restore it. + +Visual review uses the production `DotRunnerConnection` component in the +`Assistant connections/Dot Runner` Storybook stories. Pairing, event-test +waiting and revocation were exercised in the browser with synthetic API +responses. These screenshots show preview data, not a qualified Dot account: + +![Synthetic pairing preview](screenshots/openai-dot-runner/pairing.jpg) + +![Synthetic connected preview](screenshots/openai-dot-runner/connected.jpg) diff --git a/doc/screenshots/openai-dot-runner/connected.jpg b/doc/screenshots/openai-dot-runner/connected.jpg new file mode 100644 index 0000000000000000000000000000000000000000..458d610bc1f72a96debe117bf53ed3d02c328536 GIT binary patch literal 27790 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%0DliyA-M?VJJN_ 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�O)k>^WApCgVE@eoL8ul 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 U|CV|93;06o^(VL-fupH^0kOE>S^xk5 literal 0 HcmV?d00001 diff --git a/ui/storybook/stories/dot-runner-connection.stories.tsx b/ui/storybook/stories/dot-runner-connection.stories.tsx new file mode 100644 index 00000000000..fd00dd211b6 --- /dev/null +++ b/ui/storybook/stories/dot-runner-connection.stories.tsx @@ -0,0 +1,53 @@ +import { useState } from "react"; +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { expect, userEvent, within } from "storybook/test"; +import { DotRunnerConnection } from "@/components/DotRunnerConnection"; + +/** All connection mutations and pairing codes are synthetic and local. */ +function installFixture(connected: boolean) { + const original = window.fetch; + let binding = connected ? connection("connected") : null; + window.fetch = async (input, init) => { + const url = new URL(typeof input === "string" ? input : input instanceof URL ? input.href : input.url, location.origin); + if (!url.pathname.startsWith("/api/companies/dot-preview/agents/dot-preview/dot-binding")) return original(input, init); + const method = (init?.method ?? (input instanceof Request ? input.method : "GET")).toUpperCase(); + if (method === "DELETE") { binding = null; return new Response(null, { status: 204 }); } + if (method === "POST") { + if (url.pathname.endsWith("/event-test")) { if (binding) binding = { ...binding, hasPendingChallenge: true }; return Response.json({}); } + binding = connection("pairing"); + return Response.json({ bindingId: binding.id, pairingCode: "dot_pair_SYNTHETIC_PREVIEW_CODE", expiresAt: new Date(Date.now() + 600_000).toISOString() }); + } + return Response.json({ enabled: true, resourceUrl: "https://paperclip.example/mcp/runner", binding }); + }; + return () => { window.fetch = original; }; +} +function connection(status: "pairing" | "connected") { + return { id: "synthetic-dot-binding", status, connected: status === "connected", + subscriptionVerified: status === "connected", hasPendingChallenge: false }; +} +function ConnectionForm() { + const [bindingId, onBinding] = useState(""); + return
+

OpenAI Dot

+ +
; +} +const meta = { + title: "Assistant connections/Dot Runner", component: ConnectionForm, + parameters: { layout: "padded", docs: { description: { component: "Production Dot pairing component. API responses, pairing code and account state are synthetic. This preview does not qualify a real Dot account." } } }, + beforeEach: ({ parameters }) => installFixture(Boolean(parameters.connected)), +} satisfies Meta; +export default meta; +type Story = StoryObj; +export const Unpaired: Story = {}; +export const Pairing: Story = { play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + await userEvent.click(await canvas.findByRole("button", { name: "Pair Dot" })); + await canvas.findByText("dot_pair_SYNTHETIC_PREVIEW_CODE"); +} }; +export const Connected: Story = { parameters: { connected: true } }; +export const Revoked: Story = { parameters: { connected: true }, play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + await userEvent.click(await canvas.findByRole("button", { name: "Revoke connection" })); + await expect(await canvas.findByRole("button", { name: "Pair Dot" })).toBeEnabled(); +} };