aiwg
Version:
Cognitive architecture for AI-augmented software development with structured memory, ensemble validation, and closed-loop correction. FAIR-aligned artifacts, 84% cost reduction via human-in-the-loop, standards adopted by 100+ organizations.
111 lines (99 loc) • 3.17 kB
text/typescript
/**
* Workspace Management Handlers
*
* Handlers for workspace health, migration, and rollback operations.
* Delegates to existing CLI scripts in tools/cli/.
*
* @implements @.aiwg/architecture/decisions/ADR-001-unified-extension-system.md
* @source @src/cli/router.ts
* @issue #33
*/
import { CommandHandler, HandlerContext, HandlerResult } from './types.js';
import { createScriptRunner } from './script-runner.js';
import { getFrameworkRoot } from '../../channel/manager.mjs';
/**
* Handler for workspace status command
*
* Shows workspace health, installed frameworks, and migration status.
*
* Usage:
* aiwg -status
* aiwg --status
* aiwg -status --verbose
* aiwg -status --json
*/
export const statusHandler: CommandHandler = {
id: 'status',
name: 'Workspace Status',
description: 'Show workspace health and installed frameworks',
category: 'workspace',
aliases: ['-status', '--status'],
async execute(ctx: HandlerContext): Promise<HandlerResult> {
const frameworkRoot = await getFrameworkRoot();
const runner = createScriptRunner(frameworkRoot);
return runner.run('tools/cli/workspace-status.mjs', ctx.args, {
cwd: ctx.cwd,
});
},
};
/**
* Handler for workspace migration command
*
* Migrates legacy .aiwg/ workspace structure to framework-scoped structure.
* Provides interactive migration workflow with validation, backup, and reporting.
*
* Usage:
* aiwg -migrate-workspace
* aiwg --migrate-workspace
* aiwg -migrate-workspace --dry-run
* aiwg -migrate-workspace --no-backup
* aiwg -migrate-workspace --force
* aiwg -migrate-workspace --yes
*/
export const migrateWorkspaceHandler: CommandHandler = {
id: 'migrate-workspace',
name: 'Migrate Workspace',
description: 'Migrate legacy .aiwg/ to framework-scoped structure',
category: 'workspace',
aliases: ['-migrate-workspace', '--migrate-workspace'],
async execute(ctx: HandlerContext): Promise<HandlerResult> {
const frameworkRoot = await getFrameworkRoot();
const runner = createScriptRunner(frameworkRoot);
return runner.run('tools/cli/workspace-migrate.mjs', ctx.args, {
cwd: ctx.cwd,
});
},
};
/**
* Handler for workspace rollback command
*
* Rolls back workspace migration from backup.
*
* Usage:
* aiwg -rollback-workspace
* aiwg --rollback-workspace
* aiwg -rollback-workspace --list
* aiwg -rollback-workspace --backup <backup-path>
*/
export const rollbackWorkspaceHandler: CommandHandler = {
id: 'rollback-workspace',
name: 'Rollback Workspace',
description: 'Rollback workspace migration from backup',
category: 'workspace',
aliases: ['-rollback-workspace', '--rollback-workspace'],
async execute(ctx: HandlerContext): Promise<HandlerResult> {
const frameworkRoot = await getFrameworkRoot();
const runner = createScriptRunner(frameworkRoot);
return runner.run('tools/cli/workspace-rollback.mjs', ctx.args, {
cwd: ctx.cwd,
});
},
};
/**
* All workspace management handlers
*/
export const workspaceHandlers: CommandHandler[] = [
statusHandler,
migrateWorkspaceHandler,
rollbackWorkspaceHandler,
];