paperclipai/paperclip · error · Error

Review unavailable

Error message

Review unavailable

What it means

IssueChatThread's uncertain-submission review button throws this when the review flow is clicked but no `onReviewConversation` callback was supplied to the component. The component cannot perform the review conversation request itself, so it fails fast instead of silently doing nothing. It is caught by the surrounding try/catch which sets `reviewError` and shows an inline error UI.

Solutions

  1. Pass an `onReviewConversation` prop when rendering IssueChatThread wherever uncertain submissions can occur.
  2. If the context truly has no review capability, hide the review button by not rendering uncertain submission UI (or gate on the prop).
  3. Check the parent that renders IssueChatThread for a recently dropped prop in git history.

Example fix

// before
<IssueChatThread issueId={id} onSubmit={submit} />
// after
<IssueChatThread issueId={id} onSubmit={submit} onReviewConversation={reviewConversation} />
Defensive patterns

Strategy: try-catch

Validate before calling

if (typeof onReviewConversation !== 'function') console.warn('IssueChatThread: review disabled — no onReviewConversation');

Type guard

const canReview = (p: unknown): p is () => Promise<void> => typeof p === 'function';

Try / catch

try { await onReviewConversation(); } catch { setReviewError(true); }

Prevention

When it happens

Trigger: Rendering <IssueChatThread> without an `onReviewConversation` prop while an uncertain submission exists, then clicking the 'review' outline button.

Common situations: Embedding IssueChatThread in a custom page or storybook harness that wires chat submission but forgets the review callback; a refactor removing the prop wiring from a parent page.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of paperclipai/paperclip@3f1d897a7c (2026-09-18). Data as JSON: /api/errors/ba5778eefd171532. Report an issue: GitHub.

Appendix: source

Thrown at ui/src/components/IssueChatThread.tsx:5396

      {uncertainSubmission ? (
        <div
          role="alert"
          className="mb-3 space-y-2 rounded-md border border-border bg-muted p-3 text-sm"
        >
          <p>
            We couldn’t confirm whether this comment was saved. It may already
            be in the conversation. Review it before starting another draft.
          </p>
          <Button
            type="button"
            variant="outline"
            size="sm"
            onClick={async () => {
              setReviewError(false);
              try {
                if (!onReviewConversation)
                  throw new Error("Review unavailable");
                await onReviewConversation();
                if (mountedTaskKey.current !== draftKey) return;
                const reviewed = { ...uncertainSubmission, reviewed: true };
                setUncertainSubmission(reviewed);
                if (
                  draftKey &&
                  loadDraftSubmission(draftKey)?.attemptId ===
                    reviewed.attemptId
                )
                  saveDraftSubmission(draftKey, reviewed);
              } catch {
                setReviewError(true);
              }
            }}
          >
            Review conversation
          </Button>
          {reviewError ? (

View on GitHub (pinned to 3f1d897a7c)