{"record":{"id":"c3b3a6934529b734","repo":"jackwener/OpenCLI","slug":"antigravity-workspaces-list-no-workspace-storage","errorCode":null,"errorMessage":"antigravity workspaces-list: No workspace storage.","messagePattern":"antigravity workspaces-list: No workspace storage\\.","errorType":"exception","errorClass":"EmptyResultError","httpStatus":null,"severity":"info","filePath":"clis/antigravity/storage.js","lineNumber":309,"sourceCode":"    name: 'workspaces-list',\n    access: 'read',\n    description: 'List Antigravity workspaceStorage entries (each represents a previously-opened folder).',\n    domain: 'localhost',\n    strategy: Strategy.LOCAL,\n    browser: false,\n    args: [\n        { name: 'limit', type: 'int', required: false, default: 50, help: 'Max rows to return' },\n    ],\n    columns: STORAGE_COLUMNS,\n    func: async (args) => {\n        if (!fs.existsSync(AG_WORKSPACE_STORAGE)) {\n            throw new CommandExecutionError(`workspaceStorage not found: ${AG_WORKSPACE_STORAGE}`, '');\n        }\n        const dirs = fs.readdirSync(AG_WORKSPACE_STORAGE).filter((n) => {\n            const full = path.join(AG_WORKSPACE_STORAGE, n);\n            return fs.statSync(full).isDirectory();\n        });\n        if (!dirs.length) throw new EmptyResultError('antigravity workspaces-list', 'No workspace storage.');\n        const rows = dirs.map((id) => {\n            const dir = path.join(AG_WORKSPACE_STORAGE, id);\n            const wj = path.join(dir, 'workspace.json');\n            let folder = '(no workspace.json)';\n            if (fs.existsSync(wj)) {\n                try {\n                    const outer = JSON.parse(fs.readFileSync(wj, 'utf-8'));\n                    if (outer.folder) folder = decodeURI(outer.folder.replace(/^file:\\/\\//, ''));\n                    else if (outer.workspace) folder = '(multi-folder) ' + decodeURI(outer.workspace.replace(/^file:\\/\\//, ''));\n                } catch { folder = '(invalid workspace.json)'; }\n            }\n            return { id, folder, mtime: fs.statSync(dir).mtimeMs };\n        }).sort((a, b) => b.mtime - a.mtime);\n        const limit = Number.isInteger(args?.limit) && args.limit > 0 ? args.limit : 50;\n        return rows.slice(0, limit).map((r, i) => ({\n            Index: i + 1,\n            'Workspace Id': r.id,\n            Folder: r.folder.slice(0, 120),","sourceCodeStart":291,"sourceCodeEnd":327,"githubUrl":"https://github.com/jackwener/OpenCLI/blob/49907e53dc3ade5c223ff0c4c2c2785687cec4e6/clis/antigravity/storage.js#L291-L327","documentation":"Thrown by `antigravity workspaces-list` as an EmptyResultError when the workspaceStorage directory exists but contains no subdirectories. The library filters AG_WORKSPACE_STORAGE entries to directories only; an empty list means no workspace metadata has ever been stored. It is thrown instead of printing an empty table.","triggerScenarios":"Running `opencli antigravity workspaces-list` after readdirSync succeeds but the dirs filter (isDirectory) yields zero entries.","commonSituations":"Antigravity launched once but no folder/workspace was ever opened; all workspace subdirectories were manually deleted; only stray files (not directories) exist in workspaceStorage.","solutions":["Open a folder in Antigravity to create a workspace entry, then rerun","List contents to confirm only files/emptiness: ls -la ~/Library/Application\\ Support/Antigravity/User/workspaceStorage","Remove leftover non-directory files if a cleanup left debris, though the error itself is informational"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"import * as fs from 'node:fs';\nconst dir = path.join(process.env.HOME, 'Library/Application Support/Antigravity/User/workspaceStorage');\nconst hasWorkspaces = fs.existsSync(dir) &&\n  fs.readdirSync(dir, { withFileTypes: true }).some((d) => d.isDirectory());\nif (!hasWorkspaces) console.log('No workspaces stored yet; open a folder in Antigravity.');","typeGuard":null,"tryCatchPattern":"try {\n  await cli.run(['antigravity', 'workspaces-list']);\n} catch (e) {\n  if (e.name === 'EmptyResultError') return []; // no workspaces yet\n  throw e;\n}","preventionTips":["Open at least one folder/workspace in Antigravity before listing","Check directory contents yourself to distinguish files vs. subdirectories","Make scripts idempotent to an empty workspace list"],"tags":["empty-result","filesystem","antigravity"],"backgroundTag":"empty-query-result","analyzedSha":"49907e53dc3ade5c223ff0c4c2c2785687cec4e6","analyzedAt":"2026-08-29T08:14:47.543Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}