import type { Meta, StoryObj } from "@storybook/react-vite"; import type { Issue, IssueScheduledRetry } from "@paperclipai/shared"; import { IssueScheduledRetryCard } from "@/components/IssueScheduledRetryCard"; 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 inFifteenMinutes = () => new Date(Date.now() + 15 * 60_000).toISOString(); const justNow = () => new Date(Date.now() + 5_000).toISOString(); const inTwoDays = () => new Date(Date.now() + 2 * 24 * 60 * 60_000).toISOString(); const transientRetry: IssueScheduledRetry = { runId: "run-aaaaaaaa-1111-1111-1111-111111111111", status: "scheduled_retry", agentId: baseIssue.assigneeAgentId ?? "agent-1", agentName: "ClaudeCoder", retryOfRunId: "run-prev-2222-2222-2222-222222222222", scheduledRetryAt: inFifteenMinutes(), scheduledRetryAttempt: 4, scheduledRetryReason: "transient_failure", retryExhaustedReason: null, error: "Upstream provider returned 502", errorCode: "upstream_502", }; const continuationRetry: IssueScheduledRetry = { ...transientRetry, runId: "run-bbbbbbbb-3333-3333-3333-333333333333", retryOfRunId: "run-prev-4444-4444-4444-444444444444", scheduledRetryAt: inTwoDays(), scheduledRetryAttempt: 1, scheduledRetryReason: "max_turns_continuation", error: null, }; const dueNowRetry: IssueScheduledRetry = { ...transientRetry, runId: "run-cccccccc-5555-5555-5555-555555555555", scheduledRetryAt: justNow(), }; const issueWithRetry = (retry: IssueScheduledRetry): Issue => ({ ...baseIssue, scheduledRetry: retry, }); function ScheduledRetrySurfaceStories() { return (