{"record":{"id":"215d1341a975f1bd","repo":"jackwener/OpenCLI","slug":"no-visible-messages-found-for-conversation-agen","errorCode":null,"errorMessage":"`No visible messages found for conversation ${agentId}/${convId}. Verify the IDs are correct and that the session belongs to the current login.`","messagePattern":"`No visible messages found for conversation (.+?)/(.+?)\\. Verify the IDs are correct and that the session belongs to the current login\\.`","errorType":"exception","errorClass":"EmptyResultError","httpStatus":null,"severity":"error","filePath":"clis/yuanbao/detail.js","lineNumber":53,"sourceCode":"        await page.wait(2);\n        if (await hasLoginGate(page)) {\n            throw authRequired('Yuanbao opened a login gate when navigating to the conversation.');\n        }\n\n        // Poll up to ~20s for the transcript to render. The page shell loads\n        // before history is fetched, so a fixed wait races the empty render.\n        let bubbles = [];\n        const POLL_DEADLINE_MS = 20_000;\n        const POLL_INTERVAL_S = 1;\n        const startedAt = Date.now();\n        while (Date.now() - startedAt < POLL_DEADLINE_MS) {\n            bubbles = await getYuanbaoMessageBubbles(page);\n            if (bubbles.length > 0) break;\n            await page.wait(POLL_INTERVAL_S);\n        }\n\n        if (!bubbles.length) {\n            throw new EmptyResultError(\n                'yuanbao detail',\n                `No visible messages found for conversation ${agentId}/${convId}. Verify the IDs are correct and that the session belongs to the current login.`,\n            );\n        }\n        return bubbles.map((b) => ({\n            Role: b.role,\n            Text: b.role === 'Assistant' && b.html\n                ? (convertYuanbaoHtmlToMarkdown(b.html).trim() || b.text)\n                : b.text,\n        }));\n    },\n});\n","sourceCodeStart":35,"sourceCodeEnd":66,"githubUrl":"https://github.com/jackwener/OpenCLI/blob/49907e53dc3ade5c223ff0c4c2c2785687cec4e6/clis/yuanbao/detail.js#L35-L66","documentation":"An EmptyResultError from `yuanbao detail` thrown when, after polling the conversation page for ~20 seconds, no message bubbles rendered for the requested agentId/convId. The message guides the user toward the two usual causes: wrong IDs, or the conversation belongs to a different account than the current login. It prevents returning an empty transcript as if it were a real (empty) conversation.","triggerScenarios":"Running `yuanbao detail <url-or-id>` with a mistyped or truncated ID pair (a bare UUID instead of agentId/convId), a conversation deleted or belonging to another WeChat account, or the transcript failing to render within the 20s poll window.","commonSituations":"Copying only the convId UUID instead of the full chat URL; switching accounts so the session can't see the conversation; referencing a conversation from a colleague's account; slow page loads exceeding the poll deadline.","solutions":["Verify the ID is the full chat/<agentId>/<convId> pair (copy the whole conversation URL).","Confirm the conversation belongs to the account currently logged into the CLI session.","Re-run once in case rendering was just slow — if it recurs, the IDs/account are wrong.","List conversations from the same account first and use an ID from that list."],"exampleFix":"// before\n$ opencli yuanbao detail 3f2a9c...          # bare UUID\nEmptyResultError: No visible messages found...\n// after\n$ opencli yuanbao detail \"https://yuanbao.tencent.com/chat/<agentId>/<convId>\"","handlingStrategy":"validation","validationCode":"// Validate ID shape before invoking: must be agentId/convId, not a bare UUID\nconst m = id.match(/([a-z0-9-]+)\\/([a-z0-9-]+)/i);\nif (!m) throw new Error('Pass the full chat/<agentId>/<convId> URL or \"<agentId>/<convId>\" pair');","typeGuard":"const isConversationRef = (id) =>\n  typeof id === 'string' && /^[a-z0-9-]+\\/[a-z0-9-]+$/i.test(id.trim());","tryCatchPattern":"try {\n  const msgs = await run(['yuanbao', 'detail', ref]);\n} catch (e) {\n  if (e.name === 'EmptyResultError') {\n    // wrong IDs or wrong account: re-list conversations for the current login\n    const convos = await run(['yuanbao', 'list']);\n    return pickAndRetry(convos);\n  }\n  throw e;\n}","preventionTips":["Always copy the full conversation URL, never just the UUID","Confirm the conversation belongs to the currently logged-in account","List conversations first and select an ID from that output","Retry once for slow renders before concluding the IDs are wrong"],"tags":["yuanbao","empty-result","wrong-arguments","scraping"],"backgroundTag":"empty-result","analyzedSha":"49907e53dc3ade5c223ff0c4c2c2785687cec4e6","analyzedAt":"2026-08-29T08:14:47.543Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}