diff --git a/apps/cli/src/commands/auth.command.ts b/apps/cli/src/commands/auth.command.ts index 97fd9683..f9553a04 100644 --- a/apps/cli/src/commands/auth.command.ts +++ b/apps/cli/src/commands/auth.command.ts @@ -14,6 +14,7 @@ import { type AuthCredentials } from '@tm/core/auth'; import * as ui from '../utils/ui.js'; +import { ContextCommand } from './context.command.js'; /** * Result type from auth command @@ -351,6 +352,11 @@ export class AuthCommand extends Command { chalk.gray(` Logged in as: ${credentials.email || credentials.userId}`) ); + // Post-auth: Set up workspace context + console.log(); // Add spacing + const contextCommand = new ContextCommand(); + await contextCommand.setupContextInteractive(); + return { success: true, action: 'login', diff --git a/apps/cli/src/commands/context.command.ts b/apps/cli/src/commands/context.command.ts index 630ba21f..13e86c60 100644 --- a/apps/cli/src/commands/context.command.ts +++ b/apps/cli/src/commands/context.command.ts @@ -720,6 +720,53 @@ export class ContextCommand extends Command { return this.authManager.getContext(); } + /** + * Interactive context setup (for post-auth flow) + * Prompts user to select org and brief + */ + async setupContextInteractive(): Promise<{ + success: boolean; + orgSelected: boolean; + briefSelected: boolean; + }> { + try { + // Ask if user wants to set up workspace context + const { setupContext } = await inquirer.prompt([ + { + type: 'confirm', + name: 'setupContext', + message: 'Would you like to set up your workspace context now?', + default: true + } + ]); + + if (!setupContext) { + return { success: true, orgSelected: false, briefSelected: false }; + } + + // Select organization + const orgResult = await this.selectOrganization(); + if (!orgResult.success || !orgResult.context?.orgId) { + return { success: false, orgSelected: false, briefSelected: false }; + } + + // Select brief + const briefResult = await this.selectBrief(orgResult.context.orgId); + return { + success: true, + orgSelected: true, + briefSelected: briefResult.success + }; + } catch (error) { + console.error( + chalk.yellow( + '\nContext setup skipped due to error. You can set it up later with "tm context"' + ) + ); + return { success: false, orgSelected: false, briefSelected: false }; + } + } + /** * Clean up resources */