{"record":{"id":"d6ef69dc72702d85","repo":"jackwener/OpenCLI","slug":"no-indexeddb-databases-d6ef69","errorCode":null,"errorMessage":"No IndexedDB databases.","messagePattern":"No IndexedDB databases\\.","errorType":"exception","errorClass":"EmptyResultError","httpStatus":null,"severity":"info","filePath":"clis/trae-solo/renderer-storage.js","lineNumber":158,"sourceCode":"        }));\n    },\n});\n\n// -------- idb-list --------\ncli({\n    site: 'trae-solo',\n    name: 'idb-list',\n    access: 'read',\n    description: 'List IndexedDB databases on the Trae SOLO renderer. Trae ships an @byted/ve-rtc DB used by the Volcengine RTC voice/video infrastructure.',\n    domain: 'localhost',\n    strategy: Strategy.UI,\n    browser: true,\n    args: [],\n    columns: ['Index', 'Key', 'Bytes', 'Name', 'Preview', 'Database', 'Version'],\n    func: async (page) => {\n        const dbs = await page.evaluate(`(async () => indexedDB.databases ? await indexedDB.databases() : [])()`);\n        if (!Array.isArray(dbs) || !dbs.length) {\n            throw new EmptyResultError('trae-solo idb-list', 'No IndexedDB databases.');\n        }\n        return dbs.map((d, i) => ({\n            Index: i + 1,\n            Key: '',\n            Bytes: '',\n            Name: '',\n            Preview: '',\n            Database: d.name || '(unnamed)',\n            Version: String(d.version || ''),\n        }));\n    },\n});\n","sourceCodeStart":140,"sourceCodeEnd":171,"githubUrl":"https://github.com/jackwener/OpenCLI/blob/49907e53dc3ade5c223ff0c4c2c2785687cec4e6/clis/trae-solo/renderer-storage.js#L140-L171","documentation":"EmptyResultError from the trae-solo `idb-list` command when `indexedDB.databases()` returns an empty or non-array result in the Trae renderer, meaning no IndexedDB databases exist in that origin/session. The library throws rather than printing an empty table so callers know there is nothing to inspect.","triggerScenarios":"Inspecting a Trae page that never used IndexedDB (state kept in localStorage or files instead); databases() unsupported and returning [] via the fallback; browsing before any feature that creates an IDB store has run.","commonSituations":"Assuming an Electron app persists state in IndexedDB when it uses SQLite/JSON files; checking a fresh profile or a page whose origin has no IDB usage; probing the wrong renderer page.","solutions":["Confirm the data you seek is actually in IndexedDB — check Trae's on-disk state (e.g. workspace storage) instead.","Navigate/trigger the feature that creates the IDB store, then re-run.","Verify you are attached to the correct page/origin in the Trae window.","If databases() is unsupported in the Electron Chromium version, enumerate via known names with indexedDB.open() probes."],"exampleFix":"// before\nconst dbs = await cli('trae-solo', 'idb-list'); // EmptyResultError\n// after\nconst keys = await cli('trae-solo', 'storage-keys', {}); // check localStorage first\nconsole.log(keys);","handlingStrategy":"fallback","validationCode":null,"typeGuard":"const isDbList = (v) => Array.isArray(v) && v.every(d => typeof d?.name === 'string');","tryCatchPattern":"try {\n  dbs = await cli('trae-solo', 'idb-list');\n} catch (e) {\n  if (/No IndexedDB databases/.test(e.message)) {\n    console.warn('No IDB at this origin — inspecting localStorage instead');\n    fallback = await cli('trae-solo', 'storage-keys', {});\n  } else throw e;\n}","preventionTips":["Verify the app actually persists data in IndexedDB before probing (check disk profile or docs).","Trigger the feature that creates the IDB store before listing.","Ensure you are attached to the correct renderer page/origin.","Have a localStorage/file-storage inspection fallback for Electron apps."],"tags":["indexeddb","empty-result","electron","trae"],"backgroundTag":"no-indexeddb-databases","analyzedSha":"49907e53dc3ade5c223ff0c4c2c2785687cec4e6","analyzedAt":"2026-08-29T08:14:47.543Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}