chatboxai/chatbox · warning · Error
No task ID found for this record
Error message
No task ID found for this record
What it means
resumeGeneration requires record.taskId to re-poll the remote task. If the record exists but never received a taskId, resume cannot query the backend — there is no task to poll. The check at line 452 guards pollImageTask(record.taskId, ...) against an undefined id.
Source
Thrown at src/renderer/stores/imageGenerationActions.ts:453
export function clearCurrentRecord(): void {
imageGenerationStore.getState().setCurrentRecordId(null)
}
export async function resumeGeneration(recordId: string): Promise<ImageGeneration | null> {
const store = imageGenerationStore.getState()
if (store.currentGeneratingId !== null) {
throw new Error('Another image is being generated. Please wait.')
}
const record = await platform.getImageGenerationStorage().getById(recordId)
if (!record) {
throw new Error('Record not found')
}
if (!record.taskId) {
throw new Error('No task ID found for this record')
}
const licenseKey = getLicenseKey()
store.setCurrentGeneratingId(recordId)
// Create AbortController for resume operation
currentAbortController = new AbortController()
const signal = currentAbortController.signal
try {
// Check current status, then poll if not finished
const currentStatus = await pollImageTask(record.taskId, licenseKey, signal)
let finalResult = currentStatus
if (!currentStatus.is_finished) {
finalResult = await pollTaskUntilComplete(record.taskId, licenseKey, { signal })
}
View on GitHub (pinned to 81571269ad)
Solutions
- Offer retry (not resume) in the UI when record.taskId is missing; resume only when taskId is present.
- Ensure submitImageGeneration writes taskId to the record in the same transaction as creation.
- Return a typed error so the UI can redirect the user to retry.
- Filter the resume action by record.taskId truthiness in the record card component.
Example fix
// before
if (!record.taskId) {
throw new Error('No task ID found for this record')
}
// after
if (!record.taskId) {
throw new RetryableGenerationError('No task ID found for this record')
} Defensive patterns
Strategy: type-guard
Validate before calling
const record = await platform.getImageGenerationStorage().getById(recordId)
if (record && !record.taskId) {
// offer retry, not resume
promptRetry()
return null
} Type guard
function hasTaskId(r: { taskId?: string | null } | null | undefined): r is { taskId: string } {
return !!r && typeof r.taskId === 'string' && r.taskId.length > 0
} Prevention
- Offer retry (not resume) in the UI when record.taskId is missing.
- Persist taskId in the same transaction as record creation.
- Filter the resume action by record.taskId truthiness.
When it happens
Trigger: The record was created (createRecord) but submitImageGeneration either failed or did not persist the returned taskId before the session ended. Also fires after retryGeneration, which intentionally clears taskId (line ~532) — calling resume on a record mid-retry hits this.
Common situations: A previous generation crashed between record creation and taskId persistence (network drop during submit), or the UI offered a resume action on a record that retryGeneration already reset.
Related errors
- Record not found
- The image record linked to this approved tool call no longer
- No readable text content found in EPUB file
- Embedding batch failed: expected ${batchTexts.length}, got $
- Only failed session attachments can be retried
AI-assisted analysis of chatboxai/chatbox@81571269ad (2026-08-12).
Data as JSON: /api/errors/185adf37160a288d.
Report an issue: GitHub.