diff --git a/ui/storybook/stories/monitor-surfaces.stories.tsx b/ui/storybook/stories/monitor-surfaces.stories.tsx new file mode 100644 index 00000000000..9d16c13e631 --- /dev/null +++ b/ui/storybook/stories/monitor-surfaces.stories.tsx @@ -0,0 +1,142 @@ +import type { Meta, StoryObj } from "@storybook/react-vite"; +import type { Issue } from "@paperclipai/shared"; +import { IssueMonitorActivityCard } from "@/components/IssueMonitorActivityCard"; +import { IssueProperties } from "@/components/IssueProperties"; +import { + storybookExecutionWorkspaces, + storybookIssueDocuments, + storybookIssues, +} from "../fixtures/paperclipData"; + +const issueDocumentSummaries = storybookIssueDocuments.map(({ body: _body, ...summary }) => summary); + +const baseIssue: Issue = { + ...storybookIssues[0]!, + planDocument: storybookIssueDocuments.find((document) => document.key === "plan") ?? null, + documentSummaries: issueDocumentSummaries, + currentExecutionWorkspace: storybookExecutionWorkspaces[0]!, +}; + +const inFiveMinutes = () => new Date(Date.now() + 5 * 60_000); +const inTwoHours = () => new Date(Date.now() + 2 * 60 * 60_000); + +const monitoredIssue: Issue = { + ...baseIssue, + monitorNextCheckAt: inFiveMinutes(), + monitorNotes: "Polling Greptile for completed analysis.", + monitorAttemptCount: 2, + executionPolicy: { + ...(baseIssue.executionPolicy ?? { mode: "normal", commentRequired: true, stages: [] }), + monitor: { + nextCheckAt: inFiveMinutes().toISOString(), + notes: "Polling Greptile for completed analysis.", + kind: "external_service", + scheduledBy: "assignee", + serviceName: "Greptile", + externalRef: "https://app.greptile.com/runs/abc123", + }, + }, +}; + +const longerWaitIssue: Issue = { + ...baseIssue, + monitorNextCheckAt: inTwoHours(), + monitorNotes: null, + monitorAttemptCount: 0, + executionPolicy: { + ...(baseIssue.executionPolicy ?? { mode: "normal", commentRequired: true, stages: [] }), + monitor: { + nextCheckAt: inTwoHours().toISOString(), + notes: null, + kind: null, + scheduledBy: "assignee", + serviceName: null, + externalRef: null, + }, + }, +}; + +function MonitorSurfaceStories() { + return ( +