Ignore dormant apps: per-app and per-store 'ignored' in the app list; apps ignore/unignore, watch, ws and apps list skip them; MCP tools

This commit is contained in:
CRTkafa 2026-10-23 00:57:42 +08:00
parent 75bf62e125
commit 13b91dd423
7 changed files with 278 additions and 30 deletions

View file

@ -35,7 +35,7 @@ import {
findWorkspace, overridesOf, readStoreApps, resolveApps, selectApps, type Store, type StoreAppsCache, studiosOf, toDesktopState, type Workspace, WORKSPACE_NAMES,
} from './lib/workspace';
import { FORBIDDEN_ARGS, TOOLS } from './mcp-tools';
import { addFolder, readRegistry, registryFile } from './lib/registry';
import { activeProjects, addFolder, readRegistry, registryFile } from './lib/registry';
import { checkVirtual, VIRTUAL_READS, virtualDir } from './serve';
/** One app of the workspace: a folder or a store-only app, with the credentials env its commands get. */
@ -159,7 +159,7 @@ async function loadAll(args: Args): Promise<LoadedWorkspace> {
if (args.get('workspace') || findWorkspace(process.cwd())) return loadWorkspace(process.cwd(), args.get('workspace'));
const reg = readRegistry();
if (!reg.projects.length) return loadWorkspace(process.cwd());
return { file: registryFile(), root: homedir(), ws: { apps: reg.projects.map(p => ({ path: p.path, ...(p.name ? { name: p.name } : {}) })) } };
return { file: registryFile(), root: homedir(), ws: { apps: activeProjects(reg).map(p => ({ path: p.path, ...(p.name ? { name: p.name } : {}) })) } };
}
function concurrencyOf(args: Args, ws: Workspace): number {