{"record":{"id":"070c6a393f066be6","repo":"tinyhumansai/openhuman","slug":"artifact-regenerate-failed","errorCode":null,"errorMessage":"[artifact] regenerate failed:","messagePattern":"\\[artifact\\] regenerate failed:","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/features/conversations/Conversations.tsx","lineNumber":2246,"sourceCode":"          // via `ai_regenerate` (#3162): the core reloads the persisted\n          // creation args and re-runs generation under the original\n          // artifact id, so the card swaps back to a spinner in place and\n          // then to ready/failed via the socket events.\n          const artifactThreadId = selectedThreadId ?? firstActiveThreadId;\n          const all = artifactThreadId ? (artifactsByThread[artifactThreadId] ?? []) : [];\n          const live = all.filter(a => a.status !== 'ready');\n          if (live.length === 0) return null;\n          return (\n            <div className=\"mb-2 flex flex-col gap-2\">\n              {live.map(artifact => (\n                <ArtifactCard\n                  key={artifact.artifactId}\n                  artifact={artifact}\n                  onRetry={\n                    artifactThreadId\n                      ? id => {\n                          void aiRegenerate(id, artifactThreadId).catch(err => {\n                            console.warn('[artifact] regenerate failed:', err);\n                          });\n                        }\n                      : undefined\n                  }\n                />\n              ))}\n            </div>\n          );\n        })()}\n\n        {/* Thread-scoped todo list the agent maintains as it works — read-only,\n            pinned above the composer. Distinct from the Intelligence-tab kanban\n            (global `user-tasks`). Renders nothing when the thread has no active\n            cards. */}\n        {/* Plan-mode review: the orchestrator parked the live turn on a\n            thread-scoped plan (request_plan_review gate). Surface it for the\n            user to Approve / Reject / send feedback on before anything executes;\n            the card resolves the parked turn via plan_review_decide. */}","sourceCodeStart":2228,"sourceCodeEnd":2264,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/app/src/features/conversations/Conversations.tsx#L2228-L2264","documentation":"Regenerating an in-flight artifact failed: the ai_regenerate path (#3162) that reloads the persisted creation args and re-runs generation under the original artifact id threw. The artifact card's spinner state is driven by socket events thereafter, so a failed regenerate leaves the artifact in its prior non-ready state rather than producing a new one.","triggerScenarios":"Thrown at app/src/features/conversations/Conversations.tsx:2246 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the warned error for the failure layer — RPC transport, artifact store read, or generation itself","Verify the artifact still exists and its persisted creation args are intact in the artifacts store","Retry the regenerate action from the artifact card once the underlying cause is fixed","Inspect core logs for the ai_regenerate handler and the generation run for the detailed error"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}