jackwener/OpenCLI · info · EmptyResultError

No IndexedDB databases.

Error message

No IndexedDB databases.

What it means

EmptyResultError thrown by kimi idb-list when indexedDB.databases() returns an empty array, a non-array, or is unavailable (the script returns [] when indexedDB.databases is missing). It means no IndexedDB databases exist on the Kimi origin.

Source

Thrown at clis/kimi/storage.js:165

    site: 'kimi',
    name: 'idb-list',
    access: 'read',
    description: 'List IndexedDB databases on kimi.com.',
    domain: KIMI_DOMAIN,
    strategy: Strategy.COOKIE,
    browser: true,
    siteSession: 'persistent',
    navigateBefore: false,
    args: [],
    columns: STORAGE_COLUMNS,
    func: async (page) => {
        await ensureOnKimi(page);
        const dbs = await page.evaluate(`(async () => {
      if (!indexedDB.databases) return [];
      return await indexedDB.databases();
    })()`);
        if (!Array.isArray(dbs) || !dbs.length) {
            throw new EmptyResultError('kimi idb-list', 'No IndexedDB databases.');
        }
        return dbs.map((d, i) => ({ Index: i + 1, Database: d.name || '(unnamed)', Version: String(d.version || '') }));
    },
});

View on GitHub (pinned to 49907e53dc)

Solutions

  1. Confirm in DevTools (Application > IndexedDB) that databases exist on this origin
  2. Check localStorage instead (kimi storage keys) if the app may not use IndexedDB
  3. Upgrade the browser/automation context if indexedDB.databases is unavailable
  4. Trigger the app feature that creates the database, then re-run the command

Example fix

// before
await kimi(['storage', 'idb-list']); // throws if no IDB
// after
const keys = await kimi(['storage', 'keys']);
if (keys.length) {
  // data lives in web storage, not IndexedDB
} else {
  await kimi(['storage', 'idb-list']);
}
Defensive patterns

Strategy: fallback

Validate before calling

const keys = await kimi(['storage', 'keys']);
if (keys.length) console.warn('data is in web storage, IndexedDB likely empty');

Type guard

const hasDatabases = (dbs) => Array.isArray(dbs) && dbs.length > 0;

Try / catch

try {
  return await kimi(['storage', 'idb-list']);
} catch (e) {
  if (/No IndexedDB databases/.test(e.message)) {
    // fall back to web storage inspection
    return await kimi(['storage', 'keys']);
  }
  throw e;
}

Prevention

When it happens

Trigger: Running `kimi storage idb-list` on a fresh Kimi origin where no IndexedDB has been created, in a browser/context lacking indexedDB.databases() (older browsers), or in a private/incognito context that blocks storage.

Common situations: Assuming Kimi uses IndexedDB when it stores everything in localStorage, running against a brand-new browser profile, or older WebView/browser versions without the databases() API.

Understand the failure class

Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.

Related errors


AI-assisted analysis of jackwener/OpenCLI@49907e53dc (2026-08-29). Data as JSON: /api/errors/24ddd6ec8532caac. Report an issue: GitHub.