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
- Pass an `onReviewConversation` prop when rendering IssueChatThread wherever uncertain submissions can occur.
- If the context truly has no review capability, hide the review button by not rendering uncertain submission UI (or gate on the prop).
- 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
- Make onReviewConversation a required prop when uncertain submissions are enabled.
- Render the review button conditionally on the prop's presence.
- Add a storybook/test case rendering the composer without the prop.
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
- Discard is unavailable.
- Review unavailable
- Steering is unavailable.
- Agent not found
- Select an organization to test adapter environment
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)