{"record":{"id":"057f2322879c77a0","repo":"jackwener/OpenCLI","slug":"antigravity-storage-keys-no-keys-match-flt","errorCode":null,"errorMessage":"antigravity storage-keys: No keys match \"${flt}\".","messagePattern":"antigravity storage-keys: No keys match \"(.+?)\"\\.","errorType":"exception","errorClass":"EmptyResultError","httpStatus":null,"severity":"warning","filePath":"clis/antigravity/storage.js","lineNumber":105,"sourceCode":"        { name: 'limit', type: 'int', required: false, default: 100, help: 'Max rows to return' },\n    ],\n    columns: STORAGE_COLUMNS,\n    func: async (page, kwargs) => {\n        const s = String(kwargs?.storage || 'local').trim().toLowerCase();\n        if (s !== 'local' && s !== 'session') throw new ArgumentError('storage', 'must be \"local\" or \"session\"');\n        const store = s === 'session' ? 'sessionStorage' : 'localStorage';\n        const raw = unwrapEvaluateResult(await page.evaluate(`(() => {\n      const s = ${store};\n      const out = [];\n      for (let i = 0; i < s.length; i++) {\n        const k = s.key(i); const v = s.getItem(k) || '';\n        out.push({ k, bytes: v.length });\n      }\n      return out;\n    })()`));\n        const flt = kwargs?.filter ? String(kwargs.filter).toLowerCase() : null;\n        const filtered = flt ? raw.filter((r) => r.k.toLowerCase().includes(flt)) : raw;\n        if (!filtered.length) throw new EmptyResultError('antigravity storage-keys', flt ? `No keys match \"${flt}\".` : `${store} is empty.`);\n        filtered.sort((a, b) => a.k.localeCompare(b.k));\n        const limit = Number.isInteger(kwargs?.limit) && kwargs.limit > 0 ? kwargs.limit : 100;\n        return filtered.slice(0, limit).map((r, i) => ({ Index: i + 1, Key: r.k, Bytes: r.bytes }));\n    },\n});\n\n// ====== Renderer-side: storage-get ======\ncli({\n    site: 'antigravity',\n    name: 'storage-get',\n    access: 'read',\n    description: 'Read a single localStorage / sessionStorage value on the Antigravity renderer.',\n    domain: '127.0.0.1',\n    strategy: Strategy.UI,\n    browser: true,\n    args: [\n        { name: 'key', positional: true, required: true, help: 'Storage key name' },\n        { name: 'storage', required: false, default: 'local', help: '\"local\" or \"session\"' },","sourceCodeStart":87,"sourceCodeEnd":123,"githubUrl":"https://github.com/jackwener/OpenCLI/blob/49907e53dc3ade5c223ff0c4c2c2785687cec4e6/clis/antigravity/storage.js#L87-L123","documentation":"storage-keys fetched all keys from the chosen store on the renderer, applied the case-insensitive substring --filter, and found zero matching keys. EmptyResultError signals an empty (filtered) result set rather than a failure — the command ran fine but nothing matched \"<flt>\".","triggerScenarios":"Running `opencli antigravity storage-keys --filter myapp` when no localStorage/sessionStorage key on the current renderer page contains the substring 'myapp' (case-insensitively), or filtering the wrong store (filter applies to the store selected by --storage).","commonSituations":"Antigravity stores keys under vendor prefixes (workbench.*, vscode.*, auth.*) while the user filters for their extension's key; searching sessionStorage when the data lives in localStorage; the page was freshly reloaded and keys were cleared.","solutions":["Run without --filter to list all keys, then grep the output.","Shorten the filter to a distinctive substring that definitely appears in the key.","Check the other store: add --storage session (or drop it for local).","Confirm the renderer has actually loaded the state that sets the keys (open the relevant panel in Antigravity)."],"exampleFix":"// before\nopencli antigravity storage-keys --filter myExtension.settings\n// after\nopencli antigravity storage-keys --filter myextension","handlingStrategy":"fallback","validationCode":"// Confirm matching keys exist before filtering\nconst all = execSync('opencli antigravity storage-keys --storage local', {encoding:'utf8'});\nif (!all.toLowerCase().includes(filter.toLowerCase())) console.warn(`filter \"${filter}\" matches nothing; listing all keys instead`);","typeGuard":"function hasMatchingKey(keys, filter) {\n  return Array.isArray(keys) && keys.some((k) => typeof k === 'string' && k.toLowerCase().includes(String(filter).toLowerCase()));\n}","tryCatchPattern":"try {\n  run('opencli antigravity storage-keys --filter ' + flt);\n} catch (e) {\n  if (/No keys match/.test(e.message)) {\n    run('opencli antigravity storage-keys'); // unfiltered fallback\n  } else throw e;\n}","preventionTips":["Run unfiltered first to discover the real key namespace/prefixes.","Keep filters short (a distinctive substring), not full key names.","Remember the filter applies to the store selected by --storage.","Treat EmptyResultError as informational, not a failure."],"tags":["empty-result","filter","storage","antigravity"],"backgroundTag":"no-results-for-filter","analyzedSha":"49907e53dc3ade5c223ff0c4c2c2785687cec4e6","analyzedAt":"2026-08-29T08:14:47.543Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}