@a3t/rapid 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/bin.js
CHANGED
|
@@ -16,7 +16,10 @@ import {
|
|
|
16
16
|
addMcpServerFromTemplate,
|
|
17
17
|
getSecretReferences,
|
|
18
18
|
writeMcpConfig,
|
|
19
|
-
writeOpenCodeConfig
|
|
19
|
+
writeOpenCodeConfig,
|
|
20
|
+
RAPID_METHODOLOGY,
|
|
21
|
+
MCP_USAGE_GUIDELINES,
|
|
22
|
+
GIT_GUIDELINES
|
|
20
23
|
} from "@a3t/rapid-core";
|
|
21
24
|
import ora from "ora";
|
|
22
25
|
var initCommand = new Command("init").description("Initialize RAPID in a project").option("-t, --template <name>", "Template to use", "default").option("--force", "Overwrite existing files", false).option("--agent <name>", "Default agent to configure", "claude").option("--no-devcontainer", "Skip devcontainer creation").option("--mcp <servers>", "MCP servers to enable (comma-separated)", "context7,tavily").option("--no-mcp", "Skip MCP server configuration").action(async (options) => {
|
|
@@ -138,12 +141,9 @@ This file contains instructions for Claude Code when working on this project.
|
|
|
138
141
|
|
|
139
142
|
<!-- Describe your project here -->
|
|
140
143
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
- Write tests for new functionality
|
|
145
|
-
- Update documentation when making changes
|
|
146
|
-
|
|
144
|
+
${RAPID_METHODOLOGY}
|
|
145
|
+
${MCP_USAGE_GUIDELINES}
|
|
146
|
+
${GIT_GUIDELINES}
|
|
147
147
|
## Key Files
|
|
148
148
|
|
|
149
149
|
- \`rapid.json\` - RAPID configuration
|
|
@@ -172,13 +172,9 @@ This file contains instructions for AI coding agents working on this project.
|
|
|
172
172
|
|
|
173
173
|
<!-- Describe your project here -->
|
|
174
174
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
- Write tests for new functionality
|
|
179
|
-
- Update documentation when making changes
|
|
180
|
-
- Commit changes with clear, descriptive messages
|
|
181
|
-
|
|
175
|
+
${RAPID_METHODOLOGY}
|
|
176
|
+
${MCP_USAGE_GUIDELINES}
|
|
177
|
+
${GIT_GUIDELINES}
|
|
182
178
|
## Project Structure
|
|
183
179
|
|
|
184
180
|
\`\`\`
|
|
@@ -193,7 +189,7 @@ This file contains instructions for AI coding agents working on this project.
|
|
|
193
189
|
|
|
194
190
|
1. Review the project structure
|
|
195
191
|
2. Check \`rapid.json\` for configuration
|
|
196
|
-
3. Follow the
|
|
192
|
+
3. Follow the RAPID methodology above when making changes
|
|
197
193
|
`;
|
|
198
194
|
}
|
|
199
195
|
|
|
@@ -1639,4 +1635,4 @@ program.action(() => {
|
|
|
1639
1635
|
export {
|
|
1640
1636
|
program
|
|
1641
1637
|
};
|
|
1642
|
-
//# sourceMappingURL=chunk-
|
|
1638
|
+
//# sourceMappingURL=chunk-MNZPKPED.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/commands/init.ts","../src/commands/dev.ts","../src/commands/status.ts","../src/commands/agent.ts","../src/commands/start.ts","../src/commands/stop.ts","../src/commands/secrets.ts","../src/commands/auth.ts","../src/commands/mcp.ts"],"sourcesContent":["/**\n * RAPID CLI\n */\n\nimport { Command } from 'commander';\nimport { setLogLevel, logger } from '@a3t/rapid-core';\nimport { readFileSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport { dirname, join } from 'node:path';\n\nimport { initCommand } from './commands/init.js';\nimport { devCommand } from './commands/dev.js';\nimport { statusCommand } from './commands/status.js';\nimport { agentCommand } from './commands/agent.js';\nimport { startCommand } from './commands/start.js';\nimport { stopCommand } from './commands/stop.js';\nimport { secretsCommand } from './commands/secrets.js';\nimport { authCommand } from './commands/auth.js';\nimport { mcpCommand } from './commands/mcp.js';\n\n// Read version from package.json\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'));\nconst VERSION = packageJson.version;\n\nexport const program = new Command();\n\nprogram\n .name('rapid')\n .description('AI-assisted development with dev containers')\n .version(VERSION, '-v, --version', 'Show version')\n .option('--verbose', 'Verbose output')\n .option('-q, --quiet', 'Minimal output')\n .option('--config <path>', 'Path to rapid.json')\n .hook('preAction', (thisCommand) => {\n const opts = thisCommand.opts();\n if (opts.verbose) {\n setLogLevel('debug');\n } else if (opts.quiet) {\n setLogLevel('error');\n }\n });\n\n// Register commands\nprogram.addCommand(initCommand);\nprogram.addCommand(startCommand);\nprogram.addCommand(devCommand);\nprogram.addCommand(stopCommand);\nprogram.addCommand(statusCommand);\nprogram.addCommand(agentCommand);\nprogram.addCommand(secretsCommand);\nprogram.addCommand(authCommand);\nprogram.addCommand(mcpCommand);\n\n// Default action - show help\nprogram.action(() => {\n console.log();\n console.log(` ${logger.brand('RAPID')} ${logger.dim(`v${VERSION}`)}`);\n console.log(` ${logger.dim('AI-assisted development with dev containers')}`);\n console.log();\n program.help();\n});\n","/**\n * rapid init - Initialize RAPID in a project\n */\n\nimport { Command } from 'commander';\nimport { writeFile, access } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport {\n getDefaultConfig,\n logger,\n MCP_SERVER_TEMPLATES,\n addMcpServerFromTemplate,\n getSecretReferences,\n writeMcpConfig,\n writeOpenCodeConfig,\n RAPID_METHODOLOGY,\n MCP_USAGE_GUIDELINES,\n GIT_GUIDELINES,\n type RapidConfig,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const initCommand = new Command('init')\n .description('Initialize RAPID in a project')\n .option('-t, --template <name>', 'Template to use', 'default')\n .option('--force', 'Overwrite existing files', false)\n .option('--agent <name>', 'Default agent to configure', 'claude')\n .option('--no-devcontainer', 'Skip devcontainer creation')\n .option('--mcp <servers>', 'MCP servers to enable (comma-separated)', 'context7,tavily')\n .option('--no-mcp', 'Skip MCP server configuration')\n .action(async (options) => {\n const spinner = ora('Initializing RAPID...').start();\n\n try {\n const cwd = process.cwd();\n const configPath = join(cwd, 'rapid.json');\n\n // Check if config already exists\n if (!options.force) {\n try {\n await access(configPath);\n spinner.fail('rapid.json already exists. Use --force to overwrite.');\n process.exit(1);\n } catch {\n // File doesn't exist, continue\n }\n }\n\n // Parse MCP servers option\n const mcpServers: string[] =\n options.mcp === false ? [] : options.mcp.split(',').map((s: string) => s.trim());\n\n // Create config with MCP servers\n let config = createConfig(options);\n\n // Add MCP servers\n if (mcpServers.length > 0) {\n spinner.text = 'Configuring MCP servers...';\n for (const serverName of mcpServers) {\n if (MCP_SERVER_TEMPLATES[serverName]) {\n config = addMcpServerFromTemplate(config, serverName);\n } else {\n logger.warn(`Unknown MCP server template: ${serverName}`);\n }\n }\n\n // Add secret references for MCP servers\n const secretRefs = getSecretReferences(mcpServers);\n if (Object.keys(secretRefs).length > 0) {\n config.secrets = {\n ...config.secrets,\n provider: '1password',\n vault: 'Development',\n items: {\n ...config.secrets?.items,\n ...secretRefs,\n },\n };\n }\n }\n\n spinner.text = 'Writing rapid.json...';\n await writeFile(configPath, JSON.stringify(config, null, 2) + '\\n');\n\n // Generate MCP config files if MCP servers are configured\n if (mcpServers.length > 0) {\n spinner.text = 'Generating MCP configuration files...';\n await writeMcpConfig(cwd, config);\n await writeOpenCodeConfig(cwd, config);\n }\n\n // Create CLAUDE.md if using claude\n if (config.agents.available.claude) {\n spinner.text = 'Creating CLAUDE.md...';\n const claudeMdPath = join(cwd, 'CLAUDE.md');\n await writeFile(claudeMdPath, getClaudeMdTemplate(cwd));\n }\n\n // Create AGENTS.md\n spinner.text = 'Creating AGENTS.md...';\n const agentsMdPath = join(cwd, 'AGENTS.md');\n await writeFile(agentsMdPath, getAgentsMdTemplate(cwd));\n\n spinner.succeed('RAPID initialized successfully!');\n\n logger.blank();\n logger.info('Created files:');\n console.log(` ${logger.dim('•')} rapid.json`);\n if (mcpServers.length > 0) {\n console.log(` ${logger.dim('•')} .mcp.json`);\n console.log(` ${logger.dim('•')} opencode.json`);\n }\n console.log(` ${logger.dim('•')} CLAUDE.md`);\n console.log(` ${logger.dim('•')} AGENTS.md`);\n\n // Show configured MCP servers\n if (mcpServers.length > 0) {\n logger.blank();\n logger.info('MCP servers configured:');\n for (const serverName of mcpServers) {\n const template = MCP_SERVER_TEMPLATES[serverName];\n if (template) {\n console.log(` ${logger.brand('•')} ${serverName} - ${template.description}`);\n }\n }\n }\n\n logger.blank();\n logger.info('Next steps:');\n console.log(` ${logger.dim('1.')} Run ${logger.brand('rapid dev')} to start coding`);\n console.log(` ${logger.dim('2.')} Edit ${logger.dim('rapid.json')} to customize your setup`);\n if (mcpServers.length > 0) {\n console.log(\n ` ${logger.dim('3.')} Add API keys to ${logger.dim('secrets.items')} in rapid.json`\n );\n }\n logger.blank();\n } catch (error) {\n spinner.fail('Failed to initialize RAPID');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\nfunction createConfig(options: { agent: string; template: string }): RapidConfig {\n const defaults = getDefaultConfig();\n\n return {\n $schema: 'https://getrapid.dev/schema/v1/rapid.json',\n version: '1.0',\n agents: {\n default: options.agent,\n available: defaults.agents.available,\n },\n secrets: {\n provider: 'env',\n },\n context: {\n files: ['README.md', 'CLAUDE.md', 'AGENTS.md'],\n generateAgentFiles: false, // We already created them\n },\n };\n}\n\nfunction getClaudeMdTemplate(projectPath: string): string {\n const projectName = projectPath.split('/').pop() || 'project';\n\n return `# Claude Instructions\n\n## Project: ${projectName}\n\nThis file contains instructions for Claude Code when working on this project.\n\n## Overview\n\n<!-- Describe your project here -->\n\n${RAPID_METHODOLOGY}\n${MCP_USAGE_GUIDELINES}\n${GIT_GUIDELINES}\n## Key Files\n\n- \\`rapid.json\\` - RAPID configuration\n- \\`README.md\\` - Project documentation\n\n## Commands\n\n\\`\\`\\`bash\n# Start development\nrapid dev\n\n# Check status\nrapid status\n\\`\\`\\`\n`;\n}\n\nfunction getAgentsMdTemplate(projectPath: string): string {\n const projectName = projectPath.split('/').pop() || 'project';\n\n return `# Agent Instructions\n\n## Project: ${projectName}\n\nThis file contains instructions for AI coding agents working on this project.\n\n## Overview\n\n<!-- Describe your project here -->\n\n${RAPID_METHODOLOGY}\n${MCP_USAGE_GUIDELINES}\n${GIT_GUIDELINES}\n## Project Structure\n\n\\`\\`\\`\n.\n├── rapid.json # RAPID configuration\n├── CLAUDE.md # Claude-specific instructions\n├── AGENTS.md # Generic agent instructions\n└── ...\n\\`\\`\\`\n\n## Getting Started\n\n1. Review the project structure\n2. Check \\`rapid.json\\` for configuration\n3. Follow the RAPID methodology above when making changes\n`;\n}\n","/**\n * rapid dev - Launch AI coding session inside the dev container\n */\n\nimport { Command } from 'commander';\nimport { writeFile } from 'node:fs/promises';\nimport { isAbsolute, join } from 'node:path';\nimport {\n loadConfig,\n getAgent,\n checkAgentAvailable,\n logger,\n getContainerStatus,\n startContainer,\n execInContainer,\n hasDevcontainerCli,\n loadSecrets,\n hasOpCli,\n isOpAuthenticated,\n type McpConfig,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const devCommand = new Command('dev')\n .description('Launch AI coding session in the dev container')\n .option('-a, --agent <name>', 'Agent to use')\n .option('--list', 'List available agents without launching')\n .option('--local', 'Run locally instead of in container (not recommended)')\n .option('--no-start', 'Do not auto-start container if stopped')\n .action(async (options) => {\n try {\n // Load config\n const spinner = ora('Loading configuration...').start();\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n spinner.succeed('Configuration loaded');\n\n // List mode\n if (options.list) {\n listAgents(config);\n return;\n }\n\n // Get the agent to use\n const agentName = options.agent || config.agents.default;\n const agent = getAgent(config, agentName);\n\n if (!agent) {\n logger.error(`Agent \"${agentName}\" not found in configuration`);\n logger.info('Available agents:');\n Object.keys(config.agents.available).forEach((name) => {\n const isDefault = name === config.agents.default;\n console.log(` ${isDefault ? '* ' : ' '}${name}${isDefault ? ' (default)' : ''}`);\n });\n process.exit(1);\n }\n\n // Check if running locally (not recommended)\n if (options.local) {\n logger.warn('Running locally instead of in container');\n logger.dim('This bypasses the isolated dev environment');\n logger.blank();\n await runLocally(agent, agentName, rootDir);\n return;\n }\n\n // Check for devcontainer CLI\n const hasDevCli = await hasDevcontainerCli();\n if (!hasDevCli) {\n logger.error('devcontainer CLI not found');\n logger.info('Install with: npm install -g @devcontainers/cli');\n logger.blank();\n logger.info('Or use --local to run without container (not recommended)');\n process.exit(1);\n }\n\n // Check container status\n spinner.start('Checking container status...');\n const status = await getContainerStatus(rootDir, config);\n\n if (!status.running) {\n if (options.start === false) {\n spinner.fail('Container not running. Use `rapid start` first.');\n process.exit(1);\n }\n\n // Auto-start the container\n spinner.text = 'Starting container...';\n spinner.stopAndPersist({ symbol: '🐳', text: 'Starting container...' });\n\n const result = await startContainer(rootDir, config, { quiet: false });\n if (!result.success) {\n logger.blank();\n logger.error('Failed to start container');\n logger.error(result.error || 'Unknown error');\n process.exit(1);\n }\n logger.blank();\n } else {\n spinner.succeed(`Container running (${status.containerName})`);\n }\n\n // Load secrets from 1Password (if configured)\n let secrets: Record<string, string> = {};\n if (config.secrets?.provider === '1password' && config.secrets.items) {\n spinner.start('Loading secrets from 1Password...');\n\n const hasOp = await hasOpCli();\n if (!hasOp) {\n spinner.warn('1Password CLI not found - secrets will not be loaded');\n logger.info('Install with: brew install 1password-cli');\n } else {\n const authenticated = await isOpAuthenticated();\n if (!authenticated) {\n spinner.warn('1Password not authenticated - secrets will not be loaded');\n logger.info('Run: eval $(op signin)');\n } else {\n try {\n secrets = await loadSecrets(config.secrets);\n const count = Object.keys(secrets).length;\n spinner.succeed(`Loaded ${count} secret${count !== 1 ? 's' : ''} from 1Password`);\n } catch (err) {\n spinner.warn('Failed to load secrets from 1Password');\n logger.debug(err instanceof Error ? err.message : String(err));\n }\n }\n }\n }\n\n // Launch the agent inside the container\n logger.blank();\n logger.info(`Launching ${logger.brand(agentName)} in container...`);\n logger.blank();\n\n const agentArgs = [agent.cli, ...(agent.args || [])];\n const mcpEnv = await prepareMcpEnv(rootDir, config.mcp);\n const mergedEnv = { ...secrets, ...(mcpEnv ?? {}) };\n\n // Inject secrets and MCP config as environment variables\n await execInContainer(rootDir, agentArgs, config, {\n interactive: true,\n tty: true,\n env: mergedEnv,\n });\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\nasync function prepareMcpEnv(\n rootDir: string,\n mcp?: McpConfig\n): Promise<Record<string, string> | undefined> {\n if (!mcp?.servers || Object.keys(mcp.servers).length === 0) {\n return undefined;\n }\n\n const configFile = mcp.configFile ?? '.mcp.json';\n const configPath = isAbsolute(configFile) ? configFile : join(rootDir, configFile);\n\n const servers: Record<string, unknown> = {};\n for (const [name, serverConfig] of Object.entries(mcp.servers)) {\n if (!serverConfig || typeof serverConfig !== 'object') {\n continue;\n }\n\n const { enabled, ...rest } = serverConfig as Record<string, unknown>;\n if (enabled === false) {\n continue;\n }\n\n servers[name] = rest;\n }\n\n if (Object.keys(servers).length === 0) {\n return undefined;\n }\n\n await writeFile(configPath, `${JSON.stringify({ servers }, null, 2)}\\n`, 'utf-8');\n\n return {\n MCP_CONFIG_FILE: configFile,\n };\n}\n\n/**\n * Run agent locally (fallback, not recommended)\n */\nasync function runLocally(\n agent: { cli: string; args?: string[] },\n agentName: string,\n rootDir: string\n): Promise<void> {\n const { execa } = await import('execa');\n\n // Check if agent CLI is available locally\n const status = await checkAgentAvailable(agent);\n if (!status.available) {\n logger.error(`${agentName} CLI not found locally`);\n process.exit(1);\n }\n\n logger.info(`Launching ${logger.brand(agentName)}...`);\n logger.dim(`Working directory: ${rootDir}`);\n logger.blank();\n\n await execa(agent.cli, agent.args || [], {\n cwd: rootDir,\n stdio: 'inherit',\n });\n}\n\nfunction listAgents(config: {\n agents: { default: string; available: Record<string, unknown> };\n}): void {\n logger.header('Available Agents');\n\n Object.keys(config.agents.available).forEach((name) => {\n const isDefault = name === config.agents.default;\n console.log(\n ` ${isDefault ? logger.brand('*') : ' '} ${name}${isDefault ? logger.dim(' (default)') : ''}`\n );\n });\n\n logger.blank();\n logger.dim('Use --agent <name> to select a specific agent');\n}\n","/**\n * rapid status - Show environment status\n */\n\nimport { Command } from 'commander';\nimport {\n loadConfig,\n checkAllAgents,\n logger,\n getContainerStatus,\n hasDevcontainerCli,\n hasDocker,\n loadDevcontainerConfig,\n verifySecrets,\n hasOpCli,\n hasVaultCli,\n isOpAuthenticated,\n isVaultAuthenticated,\n hasEnvrc,\n getProviderInfo,\n getAuthStatus,\n type DetectedCredential,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const statusCommand = new Command('status')\n .description('Show environment status')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const spinner = ora('Checking status...').start();\n\n // Load config\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n if (options.json) {\n console.log(JSON.stringify({ configured: false }, null, 2));\n }\n process.exit(1);\n }\n\n const { config, filepath, rootDir } = loaded;\n\n // Check container status\n spinner.text = 'Checking container...';\n const containerStatus = await getContainerStatus(rootDir, config);\n const devcontainerConfig = await loadDevcontainerConfig(rootDir, config);\n const hasDevCli = await hasDevcontainerCli();\n const dockerRunning = await hasDocker();\n\n // Check agents\n spinner.text = 'Checking agents...';\n const agentStatuses = await checkAllAgents(config);\n\n // Check secrets\n spinner.text = 'Checking secrets...';\n const secretsConfig = config.secrets;\n const provider = secretsConfig?.provider || 'env';\n let secretsStatus: {\n provider: string;\n cliInstalled: boolean;\n authenticated: boolean;\n envrcExists: boolean;\n secretsCount: number;\n allAvailable: boolean;\n } | null = null;\n\n if (secretsConfig) {\n let cliInstalled = true;\n let authenticated = true;\n\n if (provider === '1password') {\n cliInstalled = await hasOpCli();\n authenticated = cliInstalled && (await isOpAuthenticated());\n } else if (provider === 'vault') {\n cliInstalled = await hasVaultCli();\n authenticated = cliInstalled && (await isVaultAuthenticated());\n }\n\n const envrcExists = await hasEnvrc(rootDir, secretsConfig);\n const verified = await verifySecrets(secretsConfig);\n\n secretsStatus = {\n provider,\n cliInstalled,\n authenticated,\n envrcExists,\n secretsCount: secretsConfig.items ? Object.keys(secretsConfig.items).length : 0,\n allAvailable: verified.allAvailable,\n };\n }\n\n // Check auth\n spinner.text = 'Checking authentication...';\n const authStatus = await getAuthStatus();\n\n spinner.stop();\n\n if (options.json) {\n console.log(\n JSON.stringify(\n {\n configured: true,\n configPath: filepath,\n rootDir,\n defaultAgent: config.agents.default,\n container: {\n configured: !!devcontainerConfig,\n running: containerStatus.running,\n name: containerStatus.containerName,\n devcontainerCli: hasDevCli,\n docker: dockerRunning,\n },\n agents: agentStatuses,\n secrets: secretsStatus,\n auth: {\n authenticated: authStatus.authenticated,\n sources: authStatus.sources.map((s: DetectedCredential) => ({\n source: s.source,\n provider: s.provider,\n authType: s.authType,\n hasValue: !!s.value,\n })),\n },\n },\n null,\n 2\n )\n );\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('RAPID')} Status`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n console.log(` ${logger.dim('Config:')} ${filepath}`);\n console.log(` ${logger.dim('Root:')} ${rootDir}`);\n console.log();\n\n // Container status\n console.log(` ${logger.dim('Container:')}`);\n if (!devcontainerConfig) {\n console.log(` ${logger.dim('○')} ${logger.dim('No devcontainer.json configured')}`);\n } else if (!dockerRunning) {\n console.log(` ${logger.dim('○')} ${logger.dim('Docker not running')}`);\n } else if (!hasDevCli) {\n console.log(` ${logger.dim('○')} ${logger.dim('devcontainer CLI not installed')}`);\n } else if (containerStatus.running) {\n console.log(\n ` ${logger.brand('●')} Running ${logger.dim(`(${containerStatus.containerName})`)}`\n );\n } else if (containerStatus.exists) {\n console.log(\n ` ${logger.dim('○')} Stopped ${logger.dim(`(${containerStatus.containerName})`)}`\n );\n } else {\n console.log(` ${logger.dim('○')} Not started`);\n }\n console.log();\n\n // Agent status\n console.log(\n ` ${logger.dim('Agents:')} ${logger.dim(`(default: ${config.agents.default})`)}`\n );\n agentStatuses.forEach((status) => {\n const isDefault = status.name === config.agents.default;\n const icon = status.available ? logger.brand('✓') : logger.dim('○');\n const name = isDefault ? logger.bold(status.name) : status.name;\n const version = status.version ? logger.dim(` (${status.version})`) : '';\n\n console.log(` ${icon} ${name}${version}`);\n });\n\n console.log();\n\n // Secrets status\n if (secretsStatus) {\n const providerInfo = getProviderInfo(\n secretsStatus.provider as '1password' | 'vault' | 'env'\n );\n console.log(` ${logger.dim('Secrets:')} ${logger.dim(`(${providerInfo.name})`)}`);\n\n if (providerInfo.cliRequired) {\n const cliIcon = secretsStatus.cliInstalled ? logger.brand('✓') : logger.dim('○');\n console.log(\n ` ${cliIcon} CLI ${secretsStatus.cliInstalled ? 'installed' : 'not installed'}`\n );\n\n if (secretsStatus.cliInstalled) {\n const authIcon = secretsStatus.authenticated ? logger.brand('✓') : logger.dim('○');\n console.log(\n ` ${authIcon} ${secretsStatus.authenticated ? 'Authenticated' : 'Not authenticated'}`\n );\n }\n }\n\n if (secretsStatus.secretsCount > 0) {\n const allIcon = secretsStatus.allAvailable ? logger.brand('✓') : logger.dim('○');\n console.log(\n ` ${allIcon} ${secretsStatus.secretsCount} secret${secretsStatus.secretsCount !== 1 ? 's' : ''} ${secretsStatus.allAvailable ? 'available' : 'configured'}`\n );\n }\n\n const envrcIcon = secretsStatus.envrcExists ? logger.brand('✓') : logger.dim('○');\n console.log(\n ` ${envrcIcon} .envrc ${secretsStatus.envrcExists ? 'exists' : 'not generated'}`\n );\n\n console.log();\n }\n\n // Auth status\n console.log(` ${logger.dim('Auth:')}`);\n if (!authStatus.authenticated) {\n console.log(` ${logger.dim('○')} ${logger.dim('No authentication detected')}`);\n console.log(` ${logger.dim(' Run `rapid auth` for options')}`);\n } else {\n for (const cred of authStatus.sources) {\n const icon = cred.authType === 'oauth' ? logger.brand('●') : logger.dim('○');\n const authType = cred.authType === 'oauth' ? 'OAuth' : 'API Key';\n let info = `${cred.source} (${cred.provider}, ${authType})`;\n if (cred.accountInfo?.email) {\n info += ` - ${cred.accountInfo.email}`;\n }\n console.log(` ${icon} ${info}`);\n }\n }\n\n console.log();\n // Quick actions\n if (!containerStatus.running && devcontainerConfig && dockerRunning && hasDevCli) {\n logger.info('Run `rapid start` to start the container');\n } else if (containerStatus.running) {\n logger.info('Run `rapid dev` to start coding');\n }\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid agent - Manage AI agents\n */\n\nimport { Command } from 'commander';\nimport { loadConfig, checkAllAgents, logger } from '@a3t/rapid-core';\n\nexport const agentCommand = new Command('agent').description('Manage AI agents');\n\n// rapid agent list\nagentCommand\n .command('list')\n .description('List available agents')\n .action(async () => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config } = loaded;\n const statuses = await checkAllAgents(config);\n\n logger.header('Available Agents');\n\n statuses.forEach((status) => {\n const isDefault = status.name === config.agents.default;\n const icon = status.available ? '✓' : '○';\n const defaultTag = isDefault ? ' (default)' : '';\n const versionTag = status.version ? ` - ${status.version}` : '';\n\n if (status.available) {\n console.log(\n ` ${logger.brand(icon)} ${status.name}${defaultTag}${logger.dim(versionTag)}`\n );\n } else {\n console.log(\n ` ${logger.dim(icon)} ${logger.dim(status.name)}${defaultTag} ${logger.dim('[not installed]')}`\n );\n }\n });\n\n logger.blank();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n// rapid agent default\nagentCommand\n .command('default [name]')\n .description('Get or set default agent')\n .action(async (name) => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config } = loaded;\n\n if (!name) {\n // Show current default\n console.log(config.agents.default);\n return;\n }\n\n // Check if agent exists\n if (!config.agents.available[name]) {\n logger.error(`Agent \"${name}\" not found in configuration`);\n logger.info('Available agents:');\n Object.keys(config.agents.available).forEach((n) => {\n console.log(` - ${n}`);\n });\n process.exit(1);\n }\n\n // TODO: Write the updated config\n logger.warn('Setting default agent requires editing rapid.json');\n logger.info(`Set \"agents.default\" to \"${name}\" in your rapid.json`);\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid start - Start the development container\n */\n\nimport { Command } from 'commander';\nimport {\n loadConfig,\n logger,\n hasDevcontainerCli,\n hasDocker,\n loadDevcontainerConfig,\n getContainerStatus,\n startContainer,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const startCommand = new Command('start')\n .description('Start the development container')\n .option('--rebuild', 'Force rebuild the container', false)\n .option('--no-cache', 'Build without Docker cache', false)\n .action(async (options) => {\n const spinner = ora('Starting development environment...').start();\n\n try {\n // Load config\n spinner.text = 'Loading configuration...';\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n\n // Check for devcontainer CLI\n spinner.text = 'Checking devcontainer CLI...';\n const hasDevCli = await hasDevcontainerCli();\n if (!hasDevCli) {\n spinner.fail('devcontainer CLI not found');\n logger.blank();\n logger.info('Install with:');\n console.log(' npm install -g @devcontainers/cli');\n logger.blank();\n process.exit(1);\n }\n\n // Check Docker\n spinner.text = 'Checking Docker...';\n const dockerAvailable = await hasDocker();\n if (!dockerAvailable) {\n spinner.fail('Docker is not running');\n logger.info('Please start Docker Desktop and try again.');\n process.exit(1);\n }\n\n // Check for devcontainer.json\n spinner.text = 'Checking devcontainer configuration...';\n const devcontainerConfig = await loadDevcontainerConfig(rootDir, config);\n if (!devcontainerConfig) {\n spinner.fail('No devcontainer.json found');\n logger.blank();\n logger.info('Create a .devcontainer/devcontainer.json or run:');\n console.log(' rapid init --template <template>');\n logger.blank();\n process.exit(1);\n }\n\n // Check current status\n spinner.text = 'Checking container status...';\n const status = await getContainerStatus(rootDir, config);\n\n if (status.running && !options.rebuild) {\n spinner.succeed('Container already running');\n logger.info(`Container: ${status.containerName}`);\n logger.blank();\n logger.info('Run `rapid dev` to start coding');\n return;\n }\n\n // Start the container\n spinner.text = options.rebuild ? 'Rebuilding container...' : 'Starting container...';\n spinner.stopAndPersist({ symbol: '🐳', text: spinner.text });\n\n const result = await startContainer(rootDir, config, {\n rebuild: options.rebuild,\n quiet: false,\n });\n\n if (!result.success) {\n logger.blank();\n logger.error('Failed to start container');\n logger.error(result.error || 'Unknown error');\n process.exit(1);\n }\n\n logger.blank();\n logger.success('Development environment ready!');\n logger.blank();\n logger.info('Next steps:');\n console.log(` ${logger.dim('•')} Run ${logger.brand('rapid dev')} to start coding`);\n console.log(` ${logger.dim('•')} Run ${logger.brand('rapid stop')} when done`);\n logger.blank();\n } catch (error) {\n spinner.fail('Failed to start environment');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid stop - Stop the development container\n */\n\nimport { Command } from 'commander';\nimport { loadConfig, logger, getContainerStatus, stopContainer } from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const stopCommand = new Command('stop')\n .description('Stop the development container')\n .option('--remove', 'Remove container after stopping', false)\n .action(async (options) => {\n const spinner = ora('Stopping development environment...').start();\n\n try {\n // Load config\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n\n // Check current status\n spinner.text = 'Checking container status...';\n const status = await getContainerStatus(rootDir, config);\n\n if (!status.exists) {\n spinner.succeed('No container to stop');\n return;\n }\n\n if (!status.running) {\n if (options.remove) {\n spinner.text = 'Removing container...';\n await stopContainer(rootDir, config, { remove: true });\n spinner.succeed('Container removed');\n } else {\n spinner.succeed('Container already stopped');\n }\n return;\n }\n\n // Stop the container\n spinner.text = 'Stopping container...';\n const result = await stopContainer(rootDir, config, { remove: options.remove });\n\n if (!result.success) {\n spinner.fail('Failed to stop container');\n logger.error(result.error || 'Unknown error');\n process.exit(1);\n }\n\n spinner.succeed(options.remove ? 'Container stopped and removed' : 'Container stopped');\n } catch (error) {\n spinner.fail('Failed to stop environment');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid secrets - Manage project secrets\n */\n\nimport { Command } from 'commander';\nimport {\n loadConfig,\n logger,\n verifySecrets,\n loadSecrets,\n hasOpCli,\n hasVaultCli,\n isOpAuthenticated,\n isVaultAuthenticated,\n getOpAuthStatus,\n hasOpServiceAccountToken,\n generateEnvrc,\n writeEnvrc,\n hasEnvrc,\n getProviderInfo,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const secretsCommand = new Command('secrets').description('Manage project secrets');\n\n/**\n * rapid secrets verify - Verify all secrets are accessible\n */\nsecretsCommand\n .command('verify')\n .description('Verify all secrets are accessible')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n const spinner = ora('Verifying secrets...').start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n const { config } = loaded;\n const secretsConfig = config.secrets;\n\n if (!secretsConfig) {\n spinner.info('No secrets configured');\n return;\n }\n\n const provider = secretsConfig.provider || 'env';\n\n // Check CLI availability\n spinner.text = `Checking ${provider} availability...`;\n\n if (provider === '1password') {\n const hasOp = await hasOpCli();\n if (!hasOp) {\n spinner.fail('1Password CLI (op) not found');\n console.log();\n logger.info('Install with: brew install 1password-cli');\n logger.info('More info: https://developer.1password.com/docs/cli/get-started/');\n process.exit(1);\n }\n\n const authenticated = await isOpAuthenticated();\n if (!authenticated) {\n spinner.fail('1Password CLI not authenticated');\n console.log();\n logger.info('Run: eval $(op signin)');\n process.exit(1);\n }\n } else if (provider === 'vault') {\n const hasVault = await hasVaultCli();\n if (!hasVault) {\n spinner.fail('Vault CLI not found');\n console.log();\n logger.info('Install from: https://developer.hashicorp.com/vault/docs/install');\n process.exit(1);\n }\n\n const authenticated = await isVaultAuthenticated();\n if (!authenticated) {\n spinner.fail('Vault CLI not authenticated');\n console.log();\n logger.info('Run: vault login');\n process.exit(1);\n }\n }\n\n // Verify secrets\n spinner.text = 'Verifying secrets...';\n const status = await verifySecrets(secretsConfig);\n\n spinner.stop();\n\n if (options.json) {\n console.log(JSON.stringify(status, null, 2));\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('Secrets')} Verification`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n console.log(` ${logger.dim('Provider:')} ${getProviderInfo(provider).name}`);\n console.log(\n ` ${logger.dim('Auth:')} ${status.authenticated ? logger.brand('✓') : logger.dim('○')} ${status.authenticated ? 'Authenticated' : 'Not authenticated'}`\n );\n console.log();\n\n if (status.secrets.length === 0) {\n console.log(` ${logger.dim('No secrets configured in rapid.json')}`);\n console.log();\n return;\n }\n\n console.log(` ${logger.dim('Secrets:')}`);\n for (const secret of status.secrets) {\n const icon = secret.available ? logger.brand('✓') : '✗';\n const ref = logger.dim(`(${provider})`);\n const error = secret.error ? logger.dim(` - ${secret.error}`) : '';\n\n console.log(` ${icon} ${secret.name} ${ref}${error}`);\n }\n console.log();\n\n if (status.allAvailable) {\n logger.info('All secrets verified successfully!');\n } else {\n logger.error('Some secrets are not available');\n process.exit(1);\n }\n console.log();\n } catch (error) {\n spinner.fail('Failed to verify secrets');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid secrets list - List configured secrets\n */\nsecretsCommand\n .command('list')\n .description('List configured secrets (names only, not values)')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found');\n process.exit(1);\n }\n\n const { config } = loaded;\n const secretsConfig = config.secrets;\n\n if (!secretsConfig || !secretsConfig.items || Object.keys(secretsConfig.items).length === 0) {\n if (options.json) {\n console.log(JSON.stringify({ secrets: [] }, null, 2));\n } else {\n logger.info('No secrets configured');\n }\n return;\n }\n\n const provider = secretsConfig.provider || 'env';\n\n if (options.json) {\n const secrets = Object.entries(secretsConfig.items).map(([name, reference]) => ({\n name,\n reference,\n provider,\n }));\n console.log(JSON.stringify({ provider, secrets }, null, 2));\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('Configured Secrets')}`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n console.log(` ${logger.dim('Provider:')} ${getProviderInfo(provider).name}`);\n console.log();\n\n // Calculate padding for alignment\n const maxNameLen = Math.max(...Object.keys(secretsConfig.items).map((n) => n.length));\n\n for (const [name, reference] of Object.entries(secretsConfig.items)) {\n const paddedName = name.padEnd(maxNameLen);\n console.log(` ${logger.brand('•')} ${paddedName} ${logger.dim(reference)}`);\n }\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid secrets generate - Generate .envrc from configuration\n */\nsecretsCommand\n .command('generate')\n .description('Generate .envrc file from rapid.json configuration')\n .option('--force', 'Overwrite existing .envrc', false)\n .option('--stdout', 'Print to stdout instead of writing file', false)\n .action(async (options) => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n const secretsConfig = config.secrets;\n\n if (!secretsConfig) {\n logger.error('No secrets configuration in rapid.json');\n process.exit(1);\n }\n\n const content = generateEnvrc(secretsConfig);\n\n if (options.stdout) {\n console.log(content);\n return;\n }\n\n // Check if .envrc exists\n const envrcExists = await hasEnvrc(rootDir, secretsConfig);\n if (envrcExists && !options.force) {\n logger.error('.envrc already exists. Use --force to overwrite.');\n process.exit(1);\n }\n\n const spinner = ora('Generating .envrc...').start();\n\n const filepath = await writeEnvrc(rootDir, secretsConfig);\n\n spinner.succeed('Generated .envrc');\n console.log();\n console.log(` ${logger.dim('File:')} ${filepath}`);\n console.log();\n\n const itemCount = secretsConfig.items ? Object.keys(secretsConfig.items).length : 0;\n logger.info(`Generated .envrc with ${itemCount} secret${itemCount !== 1 ? 's' : ''}`);\n logger.info(`Run ${logger.brand('direnv allow')} to activate`);\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid secrets info - Show provider information and status\n */\nsecretsCommand\n .command('info')\n .description('Show secrets provider information and authentication status')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n const spinner = ora('Checking provider status...').start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n const secretsConfig = config.secrets || { provider: 'env' };\n const provider = secretsConfig.provider || 'env';\n\n const info = getProviderInfo(provider);\n\n let cliInstalled = true;\n let authenticated = true;\n\n let opAuthStatus: { authenticated: boolean; method: string; accountInfo?: string } | null =\n null;\n\n if (provider === '1password') {\n cliInstalled = await hasOpCli();\n if (cliInstalled) {\n opAuthStatus = await getOpAuthStatus();\n authenticated = opAuthStatus.authenticated;\n } else {\n authenticated = false;\n }\n } else if (provider === 'vault') {\n cliInstalled = await hasVaultCli();\n authenticated = cliInstalled && (await isVaultAuthenticated());\n }\n\n const envrcExists = await hasEnvrc(rootDir, secretsConfig);\n const hasServiceToken = hasOpServiceAccountToken();\n\n spinner.stop();\n\n const status = {\n provider,\n providerName: info.name,\n cliRequired: info.cliRequired,\n cliInstalled,\n authenticated,\n authMethod: opAuthStatus?.method,\n accountInfo: opAuthStatus?.accountInfo,\n hasServiceToken,\n envrcExists,\n envrcPath: secretsConfig.envrc?.path || '.envrc',\n secretsCount: secretsConfig.items ? Object.keys(secretsConfig.items).length : 0,\n };\n\n if (options.json) {\n console.log(JSON.stringify(status, null, 2));\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('Secrets')} Provider Info`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n console.log(` ${logger.dim('Provider:')} ${info.name}`);\n\n if (info.cliRequired) {\n const cliIcon = cliInstalled ? logger.brand('✓') : '✗';\n console.log(\n ` ${logger.dim('CLI:')} ${cliIcon} ${info.cliRequired} ${cliInstalled ? '' : logger.dim('(not installed)')}`\n );\n\n if (cliInstalled && provider === '1password' && opAuthStatus) {\n const authIcon = authenticated ? logger.brand('✓') : '✗';\n const methodLabel =\n opAuthStatus.method === 'service-account'\n ? 'Service Account'\n : opAuthStatus.method === 'user'\n ? 'User'\n : 'Not authenticated';\n const accountLabel = opAuthStatus.accountInfo ? ` (${opAuthStatus.accountInfo})` : '';\n console.log(` ${logger.dim('Auth:')} ${authIcon} ${methodLabel}${accountLabel}`);\n\n if (hasServiceToken) {\n console.log(\n ` ${logger.dim('Token:')} ${logger.brand('✓')} OP_SERVICE_ACCOUNT_TOKEN set`\n );\n }\n } else if (cliInstalled) {\n const authIcon = authenticated ? logger.brand('✓') : '✗';\n console.log(\n ` ${logger.dim('Auth:')} ${authIcon} ${authenticated ? 'Authenticated' : 'Not authenticated'}`\n );\n }\n\n if (info.installUrl && !cliInstalled) {\n console.log();\n console.log(` ${logger.dim('Install:')} ${info.installUrl}`);\n }\n\n if (info.authCommand && cliInstalled && !authenticated) {\n console.log();\n console.log(` ${logger.dim('Authenticate:')} ${info.authCommand}`);\n if (provider === '1password') {\n console.log(\n ` ${logger.dim('Or set:')} OP_SERVICE_ACCOUNT_TOKEN for non-interactive auth`\n );\n }\n }\n }\n\n console.log();\n\n const envrcIcon = envrcExists ? logger.brand('✓') : logger.dim('○');\n console.log(\n ` ${logger.dim('.envrc:')} ${envrcIcon} ${envrcExists ? 'Exists' : 'Not generated'}`\n );\n console.log(` ${logger.dim('Secrets:')} ${status.secretsCount} configured`);\n console.log();\n\n if (!envrcExists && status.secretsCount > 0) {\n logger.info(`Run ${logger.brand('rapid secrets generate')} to create .envrc`);\n console.log();\n }\n } catch (error) {\n spinner.fail('Failed to get provider info');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid secrets run -- <command> - Run a command with secrets injected\n */\nsecretsCommand\n .command('run')\n .description('Run a command with secrets loaded into environment')\n .argument('<command...>', 'Command to run with secrets')\n .option('--show', 'Show which secrets are being loaded (names only)', false)\n .action(async (commandArgs: string[], options) => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found');\n process.exit(1);\n }\n\n const { config } = loaded;\n const secretsConfig = config.secrets;\n\n if (!secretsConfig || !secretsConfig.items) {\n logger.error('No secrets configured in rapid.json');\n process.exit(1);\n }\n\n const provider = secretsConfig.provider || 'env';\n\n // Check CLI availability for 1Password\n if (provider === '1password') {\n const hasOp = await hasOpCli();\n if (!hasOp) {\n logger.error('1Password CLI (op) not found');\n logger.info('Install with: brew install 1password-cli');\n process.exit(1);\n }\n\n const authenticated = await isOpAuthenticated();\n if (!authenticated) {\n logger.error('1Password not authenticated');\n logger.info('Run: eval $(op signin)');\n process.exit(1);\n }\n }\n\n // Load secrets\n const secrets = await loadSecrets(secretsConfig);\n const secretCount = Object.keys(secrets).length;\n\n if (secretCount === 0) {\n logger.warn('No secrets were loaded');\n } else if (options.show) {\n logger.info(`Loaded ${secretCount} secret${secretCount !== 1 ? 's' : ''}:`);\n for (const name of Object.keys(secrets)) {\n console.log(` ${logger.brand('•')} ${name}`);\n }\n console.log();\n }\n\n // Run the command with secrets in environment\n const { execa } = await import('execa');\n const [cmd, ...args] = commandArgs;\n\n if (!cmd) {\n logger.error('No command specified');\n process.exit(1);\n }\n\n await execa(cmd, args, {\n stdio: 'inherit',\n env: {\n ...process.env,\n ...secrets,\n },\n });\n } catch (error) {\n if ((error as { exitCode?: number }).exitCode !== undefined) {\n process.exit((error as { exitCode: number }).exitCode);\n }\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid auth - Show and manage authentication status\n */\n\nimport { Command } from 'commander';\nimport {\n logger,\n getAuthStatus,\n detectAllCredentials,\n type DetectedCredential,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const authCommand = new Command('auth')\n .description('Show authentication status from external tools')\n .option('--json', 'Output as JSON')\n .option('--source <source>', 'Filter by source (claude-code, codex, gemini-cli, aider, env)')\n .option('--provider <provider>', 'Filter by provider (anthropic, openai, google)')\n .action(async (options) => {\n try {\n const spinner = ora('Checking authentication...').start();\n\n const status = await getAuthStatus();\n\n spinner.stop();\n\n if (options.json) {\n let credentials = status.sources;\n\n // Apply filters\n if (options.source) {\n credentials = credentials.filter((c: DetectedCredential) => c.source === options.source);\n }\n if (options.provider) {\n credentials = credentials.filter(\n (c: DetectedCredential) => c.provider === options.provider\n );\n }\n\n // Remove sensitive values for JSON output\n const sanitized = credentials.map((c: DetectedCredential) => ({\n source: c.source,\n provider: c.provider,\n authType: c.authType,\n envVar: c.envVar,\n expiresAt: c.expiresAt?.toISOString(),\n accountInfo: c.accountInfo,\n configPath: c.configPath,\n hasValue: !!c.value,\n }));\n\n console.log(\n JSON.stringify(\n {\n authenticated: sanitized.length > 0,\n sources: sanitized,\n warnings: status.warnings,\n },\n null,\n 2\n )\n );\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('RAPID')} Authentication`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n if (!status.authenticated) {\n console.log(` ${logger.dim('No authentication detected')}`);\n console.log();\n console.log(' To authenticate, use one of these methods:');\n console.log();\n console.log(` ${logger.brand('Claude Pro/Max:')}`);\n console.log(' Run `claude` and sign in with your Anthropic account');\n console.log();\n console.log(` ${logger.brand('OpenAI (ChatGPT Plus/Pro):')}`);\n console.log(' Run `codex` and sign in with ChatGPT');\n console.log();\n console.log(` ${logger.brand('Gemini:')}`);\n console.log(' Run `gemini` and sign in with your Google account');\n console.log();\n console.log(` ${logger.brand('API Keys:')}`);\n console.log(' Set ANTHROPIC_API_KEY, OPENAI_API_KEY, or GEMINI_API_KEY');\n console.log();\n return;\n }\n\n // Show detected credentials\n for (const cred of status.sources) {\n // Apply filters\n if (options.source && cred.source !== options.source) continue;\n if (options.provider && cred.provider !== options.provider) continue;\n\n const isPrimary = cred === status.preferredSource;\n const icon = isPrimary ? logger.brand('●') : logger.dim('○');\n const authIcon = cred.authType === 'oauth' ? logger.brand('OAuth') : logger.dim('API Key');\n\n console.log(` ${icon} ${logger.bold(cred.source)}`);\n console.log(` Provider: ${cred.provider}`);\n console.log(` Auth: ${authIcon}`);\n\n if (cred.accountInfo?.email) {\n console.log(` Account: ${cred.accountInfo.email}`);\n }\n if (cred.accountInfo?.organization) {\n console.log(` Org: ${cred.accountInfo.organization}`);\n }\n if (cred.accountInfo?.plan) {\n console.log(` Plan: ${logger.brand(cred.accountInfo.plan)}`);\n }\n if (cred.expiresAt) {\n const now = new Date();\n const expiresIn = Math.round((cred.expiresAt.getTime() - now.getTime()) / 1000 / 60);\n if (expiresIn > 0) {\n console.log(` Expires: in ${expiresIn} minutes`);\n } else {\n console.log(` Expires: ${logger.dim('EXPIRED')}`);\n }\n }\n if (cred.configPath) {\n console.log(` Config: ${logger.dim(cred.configPath)}`);\n }\n if (cred.envVar) {\n console.log(` Env: ${logger.dim(cred.envVar)}`);\n }\n\n if (isPrimary) {\n console.log(` ${logger.brand('→ Primary source')}`);\n }\n\n console.log();\n }\n\n // Warnings\n if (status.warnings && status.warnings.length > 0) {\n console.log(` ${logger.dim('Warnings:')}`);\n for (const warning of status.warnings) {\n console.log(` ! ${warning}`);\n }\n console.log();\n }\n\n // Helpful info\n console.log(` ${logger.dim('Tip:')} RAPID will automatically use detected`);\n console.log(` ${logger.dim(' ')} credentials when launching AI agents.`);\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n// Subcommand: rapid auth env\nauthCommand\n .command('env')\n .description('Show environment variables for detected credentials')\n .option('--export', 'Output as export statements')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const credentials = await detectAllCredentials();\n\n // Group by provider and prefer OAuth\n const byProvider = new Map<string, { envVar: string; masked: string }>();\n\n for (const cred of credentials) {\n if (!cred.value) continue;\n\n const existing = byProvider.get(cred.provider);\n if (!existing || (cred.authType === 'oauth' && cred.envVar)) {\n let envVar: string;\n switch (cred.provider) {\n case 'anthropic':\n envVar = cred.authType === 'oauth' ? 'ANTHROPIC_AUTH_TOKEN' : 'ANTHROPIC_API_KEY';\n break;\n case 'openai':\n envVar = cred.authType === 'oauth' ? 'OPENAI_AUTH_TOKEN' : 'OPENAI_API_KEY';\n break;\n case 'google':\n envVar =\n cred.authType === 'oauth' ? 'GOOGLE_AUTH_TOKEN' : cred.envVar || 'GEMINI_API_KEY';\n break;\n default:\n continue;\n }\n\n // Mask the value\n const masked = cred.value.slice(0, 8) + '...' + cred.value.slice(-4);\n\n byProvider.set(cred.provider, { envVar, masked });\n }\n }\n\n if (options.json) {\n const result: Record<string, string> = {};\n for (const [, { envVar, masked }] of byProvider) {\n result[envVar] = masked;\n }\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n if (options.export) {\n for (const [, { envVar }] of byProvider) {\n // Note: We don't actually export the real value for security\n // This is for documentation purposes\n console.log(`# ${envVar} detected from external auth`);\n console.log(`# export ${envVar}=\"<your-token>\"`);\n }\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('RAPID')} Auth Environment`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n if (byProvider.size === 0) {\n console.log(` ${logger.dim('No credentials detected')}`);\n console.log();\n return;\n }\n\n for (const [provider, { envVar, masked }] of byProvider) {\n console.log(` ${logger.brand(provider)}`);\n console.log(` ${envVar}=${masked}`);\n console.log();\n }\n\n console.log(` ${logger.dim('These will be automatically injected when running agents.')}`);\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid mcp - Manage MCP (Model Context Protocol) servers\n */\n\nimport { Command } from 'commander';\nimport { writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport {\n loadConfig,\n logger,\n getMcpServers,\n getMcpServerStatus,\n addMcpServerFromTemplate,\n addMcpServer,\n removeMcpServer,\n enableMcpServer,\n disableMcpServer,\n writeMcpConfig,\n writeOpenCodeConfig,\n MCP_SERVER_TEMPLATES,\n getMcpTemplate,\n type RapidConfig,\n type McpServerDefinition,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const mcpCommand = new Command('mcp').description(\n 'Manage MCP (Model Context Protocol) servers'\n);\n\n/**\n * Save updated config to rapid.json\n */\nasync function saveConfig(rootDir: string, config: RapidConfig): Promise<void> {\n const configPath = join(rootDir, 'rapid.json');\n await writeFile(configPath, JSON.stringify(config, null, 2) + '\\n', 'utf-8');\n}\n\n/**\n * rapid mcp list - List configured MCP servers\n */\nmcpCommand\n .command('list')\n .description('List configured MCP servers')\n .option('--json', 'Output as JSON')\n .option('--templates', 'Show available templates instead of configured servers')\n .action(async (options) => {\n try {\n if (options.templates) {\n // Show available templates\n if (options.json) {\n console.log(JSON.stringify(MCP_SERVER_TEMPLATES, null, 2));\n return;\n }\n\n console.log();\n console.log(` ${logger.brand('Available MCP Server Templates')}`);\n console.log(` ${logger.dim('─'.repeat(40))}`);\n console.log();\n\n for (const [name, template] of Object.entries(MCP_SERVER_TEMPLATES)) {\n const typeLabel =\n template.type === 'remote' ? logger.dim('(remote)') : logger.dim('(stdio)');\n const secretsLabel =\n template.requiredSecrets.length > 0\n ? logger.dim(` - requires: ${template.requiredSecrets.join(', ')}`)\n : logger.dim(' - no secrets required');\n\n console.log(` ${logger.brand('•')} ${name} ${typeLabel}`);\n console.log(` ${template.description}${secretsLabel}`);\n console.log();\n }\n\n logger.info(`Use ${logger.brand('rapid mcp add <name>')} to add a server`);\n console.log();\n return;\n }\n\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config } = loaded;\n const servers = getMcpServers(config);\n\n if (options.json) {\n console.log(JSON.stringify({ servers }, null, 2));\n return;\n }\n\n console.log();\n console.log(` ${logger.brand('MCP Servers')}`);\n console.log(` ${logger.dim('─'.repeat(40))}`);\n console.log();\n\n if (servers.length === 0) {\n console.log(` ${logger.dim('No MCP servers configured')}`);\n console.log();\n logger.info(`Use ${logger.brand('rapid mcp add <name>')} to add a server`);\n logger.info(`Use ${logger.brand('rapid mcp list --templates')} to see available templates`);\n console.log();\n return;\n }\n\n for (const server of servers) {\n const icon = server.enabled ? logger.brand('✓') : logger.dim('○');\n const typeLabel = server.type === 'remote' ? logger.dim('(remote)') : logger.dim('(stdio)');\n const statusLabel = server.enabled ? '' : logger.dim(' [disabled]');\n const location =\n server.type === 'remote'\n ? logger.dim(server.url || '')\n : logger.dim(server.command || '');\n\n console.log(` ${icon} ${server.name} ${typeLabel}${statusLabel}`);\n if (location) {\n console.log(` ${location}`);\n }\n console.log();\n }\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp add - Add an MCP server\n */\nmcpCommand\n .command('add')\n .description('Add an MCP server')\n .argument('<name>', 'Server name (or template name)')\n .option('--type <type>', 'Server type: remote or stdio')\n .option('--url <url>', 'URL for remote servers')\n .option('--command <cmd>', 'Command for stdio servers')\n .option('--args <args>', 'Arguments for stdio command (comma-separated)')\n .option('--header <header>', 'HTTP header for remote servers (name=value)', collectHeaders, {})\n .action(async (name: string, options) => {\n const spinner = ora(`Adding MCP server '${name}'...`).start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n let { config } = loaded;\n const { rootDir } = loaded;\n\n // Check if server already exists\n const existingServers = getMcpServers(config);\n if (existingServers.some((s) => s.name === name)) {\n spinner.fail(`MCP server '${name}' already exists`);\n logger.info(`Use ${logger.brand(`rapid mcp remove ${name}`)} to remove it first`);\n process.exit(1);\n }\n\n // Check if it's a template\n const template = getMcpTemplate(name);\n\n if (template && !options.type && !options.url && !options.command) {\n // Add from template\n config = addMcpServerFromTemplate(config, name);\n spinner.text = `Adding '${name}' from template...`;\n } else if (options.type || options.url || options.command) {\n // Add custom server\n const serverConfig: McpServerDefinition = {\n enabled: true,\n };\n\n if (options.type) {\n serverConfig.type = options.type as 'remote' | 'stdio';\n }\n\n if (options.url) {\n serverConfig.type = 'remote';\n serverConfig.url = options.url;\n }\n\n if (options.header && Object.keys(options.header).length > 0) {\n serverConfig.headers = options.header;\n }\n\n if (options.command) {\n serverConfig.type = 'stdio';\n serverConfig.command = options.command;\n }\n\n if (options.args) {\n serverConfig.args = options.args.split(',').map((a: string) => a.trim());\n }\n\n config = addMcpServer(config, name, serverConfig);\n } else if (template) {\n // Add from template (fallback)\n config = addMcpServerFromTemplate(config, name);\n } else {\n spinner.fail(`Unknown MCP server template: ${name}`);\n logger.info(`Use ${logger.brand('rapid mcp list --templates')} to see available templates`);\n logger.info('Or specify --type, --url, or --command for a custom server');\n process.exit(1);\n }\n\n // Save config\n await saveConfig(rootDir, config);\n\n // Regenerate MCP config files\n await writeMcpConfig(rootDir, config);\n await writeOpenCodeConfig(rootDir, config);\n\n spinner.succeed(`Added MCP server '${name}'`);\n console.log();\n\n // Show required secrets if any\n if (template?.requiredSecrets.length) {\n logger.info('Required secrets:');\n for (const secret of template.requiredSecrets) {\n const ref = template.secretReferences?.[secret];\n console.log(` ${logger.brand('•')} ${secret}${ref ? logger.dim(` (${ref})`) : ''}`);\n }\n console.log();\n logger.info(`Add these to ${logger.brand('rapid.json')} secrets.items section`);\n console.log();\n }\n } catch (error) {\n spinner.fail('Failed to add MCP server');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp remove - Remove an MCP server\n */\nmcpCommand\n .command('remove')\n .description('Remove an MCP server')\n .argument('<name>', 'Server name to remove')\n .action(async (name: string) => {\n const spinner = ora(`Removing MCP server '${name}'...`).start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n let { config } = loaded;\n const { rootDir } = loaded;\n\n // Remove the server\n config = removeMcpServer(config, name);\n\n // Save config\n await saveConfig(rootDir, config);\n\n // Regenerate MCP config files\n await writeMcpConfig(rootDir, config);\n await writeOpenCodeConfig(rootDir, config);\n\n spinner.succeed(`Removed MCP server '${name}'`);\n console.log();\n } catch (error) {\n spinner.fail('Failed to remove MCP server');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp enable - Enable a disabled MCP server\n */\nmcpCommand\n .command('enable')\n .description('Enable a disabled MCP server')\n .argument('<name>', 'Server name to enable')\n .action(async (name: string) => {\n const spinner = ora(`Enabling MCP server '${name}'...`).start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n let { config } = loaded;\n const { rootDir } = loaded;\n\n // Enable the server\n config = enableMcpServer(config, name);\n\n // Save config\n await saveConfig(rootDir, config);\n\n // Regenerate MCP config files\n await writeMcpConfig(rootDir, config);\n await writeOpenCodeConfig(rootDir, config);\n\n spinner.succeed(`Enabled MCP server '${name}'`);\n console.log();\n } catch (error) {\n spinner.fail('Failed to enable MCP server');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp disable - Disable an MCP server (without removing)\n */\nmcpCommand\n .command('disable')\n .description('Disable an MCP server (without removing)')\n .argument('<name>', 'Server name to disable')\n .action(async (name: string) => {\n const spinner = ora(`Disabling MCP server '${name}'...`).start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n let { config } = loaded;\n const { rootDir } = loaded;\n\n // Disable the server\n config = disableMcpServer(config, name);\n\n // Save config\n await saveConfig(rootDir, config);\n\n // Regenerate MCP config files\n await writeMcpConfig(rootDir, config);\n await writeOpenCodeConfig(rootDir, config);\n\n spinner.succeed(`Disabled MCP server '${name}'`);\n console.log();\n } catch (error) {\n spinner.fail('Failed to disable MCP server');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp status - Show MCP server status\n */\nmcpCommand\n .command('status')\n .description('Show MCP server status')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config } = loaded;\n const servers = getMcpServerStatus(config);\n\n if (options.json) {\n console.log(JSON.stringify({ servers }, null, 2));\n return;\n }\n\n console.log();\n console.log(` ${logger.brand('MCP Server Status')}`);\n console.log(` ${logger.dim('─'.repeat(40))}`);\n console.log();\n\n if (servers.length === 0) {\n console.log(` ${logger.dim('No MCP servers configured')}`);\n console.log();\n return;\n }\n\n let enabledCount = 0;\n let disabledCount = 0;\n\n for (const server of servers) {\n if (server.enabled) {\n enabledCount++;\n } else {\n disabledCount++;\n }\n\n const icon =\n server.status === 'enabled'\n ? logger.brand('✓')\n : server.status === 'disabled'\n ? logger.dim('○')\n : '✗';\n\n const statusLabel =\n server.status === 'enabled'\n ? 'enabled'\n : server.status === 'disabled'\n ? logger.dim('disabled')\n : logger.dim(`error: ${server.error}`);\n\n const typeLabel = server.type === 'remote' ? 'remote' : 'stdio';\n\n console.log(` ${icon} ${server.name}`);\n console.log(` ${logger.dim('Type:')} ${typeLabel}`);\n console.log(` ${logger.dim('Status:')} ${statusLabel}`);\n\n if (server.url) {\n console.log(` ${logger.dim('URL:')} ${server.url}`);\n }\n if (server.command) {\n console.log(` ${logger.dim('Cmd:')} ${server.command}`);\n }\n console.log();\n }\n\n console.log(` ${logger.dim('Summary:')} ${enabledCount} enabled, ${disabledCount} disabled`);\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp sync - Regenerate .mcp.json and opencode.json from rapid.json\n */\nmcpCommand\n .command('sync')\n .description('Regenerate .mcp.json and opencode.json from rapid.json')\n .action(async () => {\n const spinner = ora('Syncing MCP configuration files...').start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n\n // Regenerate MCP config files\n await writeMcpConfig(rootDir, config);\n await writeOpenCodeConfig(rootDir, config);\n\n const servers = getMcpServers(config);\n const enabledCount = servers.filter((s) => s.enabled).length;\n\n spinner.succeed('MCP configuration synced');\n console.log();\n console.log(` ${logger.dim('Files updated:')}`);\n console.log(` ${logger.brand('•')} .mcp.json`);\n console.log(` ${logger.brand('•')} opencode.json`);\n console.log();\n console.log(` ${logger.dim('Servers:')} ${enabledCount} enabled`);\n console.log();\n } catch (error) {\n spinner.fail('Failed to sync MCP configuration');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * Helper to collect multiple --header flags\n */\nfunction collectHeaders(value: string, previous: Record<string, string>): Record<string, string> {\n const [name, ...rest] = value.split('=');\n if (name && rest.length > 0) {\n previous[name] = rest.join('=');\n }\n return previous;\n}\n"],"mappings":"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","names":["Command","logger","join","Command","writeFile","join","logger","ora","Command","loadConfig","logger","getContainerStatus","hasDevcontainerCli","hasOpCli","isOpAuthenticated","ora","Command","loadConfig","checkAllAgents","logger","Command","loadConfig","logger","hasDevcontainerCli","hasDocker","loadDevcontainerConfig","getContainerStatus","startContainer","ora","Command","loadConfig","logger","getContainerStatus","ora","Command","loadConfig","logger","verifySecrets","loadSecrets","hasOpCli","hasVaultCli","isOpAuthenticated","isVaultAuthenticated","hasEnvrc","getProviderInfo","ora","Command","logger","getAuthStatus","ora","Command","writeFile","join","loadConfig","logger","addMcpServerFromTemplate","writeMcpConfig","writeOpenCodeConfig","MCP_SERVER_TEMPLATES","ora","join","Command","logger"]}
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@a3t/rapid",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "CLI for RAPID - AI-assisted development with dev containers",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Steve Rude <steve@rude.la>",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"commander": "^14.0.2",
|
|
38
38
|
"execa": "^9.6.1",
|
|
39
39
|
"ora": "^9.0.0",
|
|
40
|
-
"@a3t/rapid-core": "0.1.
|
|
40
|
+
"@a3t/rapid-core": "0.1.6"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "^25.0.8",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/commands/init.ts","../src/commands/dev.ts","../src/commands/status.ts","../src/commands/agent.ts","../src/commands/start.ts","../src/commands/stop.ts","../src/commands/secrets.ts","../src/commands/auth.ts","../src/commands/mcp.ts"],"sourcesContent":["/**\n * RAPID CLI\n */\n\nimport { Command } from 'commander';\nimport { setLogLevel, logger } from '@a3t/rapid-core';\nimport { readFileSync } from 'node:fs';\nimport { fileURLToPath } from 'node:url';\nimport { dirname, join } from 'node:path';\n\nimport { initCommand } from './commands/init.js';\nimport { devCommand } from './commands/dev.js';\nimport { statusCommand } from './commands/status.js';\nimport { agentCommand } from './commands/agent.js';\nimport { startCommand } from './commands/start.js';\nimport { stopCommand } from './commands/stop.js';\nimport { secretsCommand } from './commands/secrets.js';\nimport { authCommand } from './commands/auth.js';\nimport { mcpCommand } from './commands/mcp.js';\n\n// Read version from package.json\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf-8'));\nconst VERSION = packageJson.version;\n\nexport const program = new Command();\n\nprogram\n .name('rapid')\n .description('AI-assisted development with dev containers')\n .version(VERSION, '-v, --version', 'Show version')\n .option('--verbose', 'Verbose output')\n .option('-q, --quiet', 'Minimal output')\n .option('--config <path>', 'Path to rapid.json')\n .hook('preAction', (thisCommand) => {\n const opts = thisCommand.opts();\n if (opts.verbose) {\n setLogLevel('debug');\n } else if (opts.quiet) {\n setLogLevel('error');\n }\n });\n\n// Register commands\nprogram.addCommand(initCommand);\nprogram.addCommand(startCommand);\nprogram.addCommand(devCommand);\nprogram.addCommand(stopCommand);\nprogram.addCommand(statusCommand);\nprogram.addCommand(agentCommand);\nprogram.addCommand(secretsCommand);\nprogram.addCommand(authCommand);\nprogram.addCommand(mcpCommand);\n\n// Default action - show help\nprogram.action(() => {\n console.log();\n console.log(` ${logger.brand('RAPID')} ${logger.dim(`v${VERSION}`)}`);\n console.log(` ${logger.dim('AI-assisted development with dev containers')}`);\n console.log();\n program.help();\n});\n","/**\n * rapid init - Initialize RAPID in a project\n */\n\nimport { Command } from 'commander';\nimport { writeFile, access } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport {\n getDefaultConfig,\n logger,\n MCP_SERVER_TEMPLATES,\n addMcpServerFromTemplate,\n getSecretReferences,\n writeMcpConfig,\n writeOpenCodeConfig,\n type RapidConfig,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const initCommand = new Command('init')\n .description('Initialize RAPID in a project')\n .option('-t, --template <name>', 'Template to use', 'default')\n .option('--force', 'Overwrite existing files', false)\n .option('--agent <name>', 'Default agent to configure', 'claude')\n .option('--no-devcontainer', 'Skip devcontainer creation')\n .option('--mcp <servers>', 'MCP servers to enable (comma-separated)', 'context7,tavily')\n .option('--no-mcp', 'Skip MCP server configuration')\n .action(async (options) => {\n const spinner = ora('Initializing RAPID...').start();\n\n try {\n const cwd = process.cwd();\n const configPath = join(cwd, 'rapid.json');\n\n // Check if config already exists\n if (!options.force) {\n try {\n await access(configPath);\n spinner.fail('rapid.json already exists. Use --force to overwrite.');\n process.exit(1);\n } catch {\n // File doesn't exist, continue\n }\n }\n\n // Parse MCP servers option\n const mcpServers: string[] =\n options.mcp === false ? [] : options.mcp.split(',').map((s: string) => s.trim());\n\n // Create config with MCP servers\n let config = createConfig(options);\n\n // Add MCP servers\n if (mcpServers.length > 0) {\n spinner.text = 'Configuring MCP servers...';\n for (const serverName of mcpServers) {\n if (MCP_SERVER_TEMPLATES[serverName]) {\n config = addMcpServerFromTemplate(config, serverName);\n } else {\n logger.warn(`Unknown MCP server template: ${serverName}`);\n }\n }\n\n // Add secret references for MCP servers\n const secretRefs = getSecretReferences(mcpServers);\n if (Object.keys(secretRefs).length > 0) {\n config.secrets = {\n ...config.secrets,\n provider: '1password',\n vault: 'Development',\n items: {\n ...config.secrets?.items,\n ...secretRefs,\n },\n };\n }\n }\n\n spinner.text = 'Writing rapid.json...';\n await writeFile(configPath, JSON.stringify(config, null, 2) + '\\n');\n\n // Generate MCP config files if MCP servers are configured\n if (mcpServers.length > 0) {\n spinner.text = 'Generating MCP configuration files...';\n await writeMcpConfig(cwd, config);\n await writeOpenCodeConfig(cwd, config);\n }\n\n // Create CLAUDE.md if using claude\n if (config.agents.available.claude) {\n spinner.text = 'Creating CLAUDE.md...';\n const claudeMdPath = join(cwd, 'CLAUDE.md');\n await writeFile(claudeMdPath, getClaudeMdTemplate(cwd));\n }\n\n // Create AGENTS.md\n spinner.text = 'Creating AGENTS.md...';\n const agentsMdPath = join(cwd, 'AGENTS.md');\n await writeFile(agentsMdPath, getAgentsMdTemplate(cwd));\n\n spinner.succeed('RAPID initialized successfully!');\n\n logger.blank();\n logger.info('Created files:');\n console.log(` ${logger.dim('•')} rapid.json`);\n if (mcpServers.length > 0) {\n console.log(` ${logger.dim('•')} .mcp.json`);\n console.log(` ${logger.dim('•')} opencode.json`);\n }\n console.log(` ${logger.dim('•')} CLAUDE.md`);\n console.log(` ${logger.dim('•')} AGENTS.md`);\n\n // Show configured MCP servers\n if (mcpServers.length > 0) {\n logger.blank();\n logger.info('MCP servers configured:');\n for (const serverName of mcpServers) {\n const template = MCP_SERVER_TEMPLATES[serverName];\n if (template) {\n console.log(` ${logger.brand('•')} ${serverName} - ${template.description}`);\n }\n }\n }\n\n logger.blank();\n logger.info('Next steps:');\n console.log(` ${logger.dim('1.')} Run ${logger.brand('rapid dev')} to start coding`);\n console.log(` ${logger.dim('2.')} Edit ${logger.dim('rapid.json')} to customize your setup`);\n if (mcpServers.length > 0) {\n console.log(\n ` ${logger.dim('3.')} Add API keys to ${logger.dim('secrets.items')} in rapid.json`\n );\n }\n logger.blank();\n } catch (error) {\n spinner.fail('Failed to initialize RAPID');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\nfunction createConfig(options: { agent: string; template: string }): RapidConfig {\n const defaults = getDefaultConfig();\n\n return {\n $schema: 'https://getrapid.dev/schema/v1/rapid.json',\n version: '1.0',\n agents: {\n default: options.agent,\n available: defaults.agents.available,\n },\n secrets: {\n provider: 'env',\n },\n context: {\n files: ['README.md', 'CLAUDE.md', 'AGENTS.md'],\n generateAgentFiles: false, // We already created them\n },\n };\n}\n\nfunction getClaudeMdTemplate(projectPath: string): string {\n const projectName = projectPath.split('/').pop() || 'project';\n\n return `# Claude Instructions\n\n## Project: ${projectName}\n\nThis file contains instructions for Claude Code when working on this project.\n\n## Overview\n\n<!-- Describe your project here -->\n\n## Development Guidelines\n\n- Follow existing code patterns and conventions\n- Write tests for new functionality\n- Update documentation when making changes\n\n## Key Files\n\n- \\`rapid.json\\` - RAPID configuration\n- \\`README.md\\` - Project documentation\n\n## Commands\n\n\\`\\`\\`bash\n# Start development\nrapid dev\n\n# Check status\nrapid status\n\\`\\`\\`\n`;\n}\n\nfunction getAgentsMdTemplate(projectPath: string): string {\n const projectName = projectPath.split('/').pop() || 'project';\n\n return `# Agent Instructions\n\n## Project: ${projectName}\n\nThis file contains instructions for AI coding agents working on this project.\n\n## Overview\n\n<!-- Describe your project here -->\n\n## Development Guidelines\n\n- Follow existing code patterns and conventions\n- Write tests for new functionality\n- Update documentation when making changes\n- Commit changes with clear, descriptive messages\n\n## Project Structure\n\n\\`\\`\\`\n.\n├── rapid.json # RAPID configuration\n├── CLAUDE.md # Claude-specific instructions\n├── AGENTS.md # Generic agent instructions\n└── ...\n\\`\\`\\`\n\n## Getting Started\n\n1. Review the project structure\n2. Check \\`rapid.json\\` for configuration\n3. Follow the guidelines above when making changes\n`;\n}\n","/**\n * rapid dev - Launch AI coding session inside the dev container\n */\n\nimport { Command } from 'commander';\nimport { writeFile } from 'node:fs/promises';\nimport { isAbsolute, join } from 'node:path';\nimport {\n loadConfig,\n getAgent,\n checkAgentAvailable,\n logger,\n getContainerStatus,\n startContainer,\n execInContainer,\n hasDevcontainerCli,\n loadSecrets,\n hasOpCli,\n isOpAuthenticated,\n type McpConfig,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const devCommand = new Command('dev')\n .description('Launch AI coding session in the dev container')\n .option('-a, --agent <name>', 'Agent to use')\n .option('--list', 'List available agents without launching')\n .option('--local', 'Run locally instead of in container (not recommended)')\n .option('--no-start', 'Do not auto-start container if stopped')\n .action(async (options) => {\n try {\n // Load config\n const spinner = ora('Loading configuration...').start();\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n spinner.succeed('Configuration loaded');\n\n // List mode\n if (options.list) {\n listAgents(config);\n return;\n }\n\n // Get the agent to use\n const agentName = options.agent || config.agents.default;\n const agent = getAgent(config, agentName);\n\n if (!agent) {\n logger.error(`Agent \"${agentName}\" not found in configuration`);\n logger.info('Available agents:');\n Object.keys(config.agents.available).forEach((name) => {\n const isDefault = name === config.agents.default;\n console.log(` ${isDefault ? '* ' : ' '}${name}${isDefault ? ' (default)' : ''}`);\n });\n process.exit(1);\n }\n\n // Check if running locally (not recommended)\n if (options.local) {\n logger.warn('Running locally instead of in container');\n logger.dim('This bypasses the isolated dev environment');\n logger.blank();\n await runLocally(agent, agentName, rootDir);\n return;\n }\n\n // Check for devcontainer CLI\n const hasDevCli = await hasDevcontainerCli();\n if (!hasDevCli) {\n logger.error('devcontainer CLI not found');\n logger.info('Install with: npm install -g @devcontainers/cli');\n logger.blank();\n logger.info('Or use --local to run without container (not recommended)');\n process.exit(1);\n }\n\n // Check container status\n spinner.start('Checking container status...');\n const status = await getContainerStatus(rootDir, config);\n\n if (!status.running) {\n if (options.start === false) {\n spinner.fail('Container not running. Use `rapid start` first.');\n process.exit(1);\n }\n\n // Auto-start the container\n spinner.text = 'Starting container...';\n spinner.stopAndPersist({ symbol: '🐳', text: 'Starting container...' });\n\n const result = await startContainer(rootDir, config, { quiet: false });\n if (!result.success) {\n logger.blank();\n logger.error('Failed to start container');\n logger.error(result.error || 'Unknown error');\n process.exit(1);\n }\n logger.blank();\n } else {\n spinner.succeed(`Container running (${status.containerName})`);\n }\n\n // Load secrets from 1Password (if configured)\n let secrets: Record<string, string> = {};\n if (config.secrets?.provider === '1password' && config.secrets.items) {\n spinner.start('Loading secrets from 1Password...');\n\n const hasOp = await hasOpCli();\n if (!hasOp) {\n spinner.warn('1Password CLI not found - secrets will not be loaded');\n logger.info('Install with: brew install 1password-cli');\n } else {\n const authenticated = await isOpAuthenticated();\n if (!authenticated) {\n spinner.warn('1Password not authenticated - secrets will not be loaded');\n logger.info('Run: eval $(op signin)');\n } else {\n try {\n secrets = await loadSecrets(config.secrets);\n const count = Object.keys(secrets).length;\n spinner.succeed(`Loaded ${count} secret${count !== 1 ? 's' : ''} from 1Password`);\n } catch (err) {\n spinner.warn('Failed to load secrets from 1Password');\n logger.debug(err instanceof Error ? err.message : String(err));\n }\n }\n }\n }\n\n // Launch the agent inside the container\n logger.blank();\n logger.info(`Launching ${logger.brand(agentName)} in container...`);\n logger.blank();\n\n const agentArgs = [agent.cli, ...(agent.args || [])];\n const mcpEnv = await prepareMcpEnv(rootDir, config.mcp);\n const mergedEnv = { ...secrets, ...(mcpEnv ?? {}) };\n\n // Inject secrets and MCP config as environment variables\n await execInContainer(rootDir, agentArgs, config, {\n interactive: true,\n tty: true,\n env: mergedEnv,\n });\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\nasync function prepareMcpEnv(\n rootDir: string,\n mcp?: McpConfig\n): Promise<Record<string, string> | undefined> {\n if (!mcp?.servers || Object.keys(mcp.servers).length === 0) {\n return undefined;\n }\n\n const configFile = mcp.configFile ?? '.mcp.json';\n const configPath = isAbsolute(configFile) ? configFile : join(rootDir, configFile);\n\n const servers: Record<string, unknown> = {};\n for (const [name, serverConfig] of Object.entries(mcp.servers)) {\n if (!serverConfig || typeof serverConfig !== 'object') {\n continue;\n }\n\n const { enabled, ...rest } = serverConfig as Record<string, unknown>;\n if (enabled === false) {\n continue;\n }\n\n servers[name] = rest;\n }\n\n if (Object.keys(servers).length === 0) {\n return undefined;\n }\n\n await writeFile(configPath, `${JSON.stringify({ servers }, null, 2)}\\n`, 'utf-8');\n\n return {\n MCP_CONFIG_FILE: configFile,\n };\n}\n\n/**\n * Run agent locally (fallback, not recommended)\n */\nasync function runLocally(\n agent: { cli: string; args?: string[] },\n agentName: string,\n rootDir: string\n): Promise<void> {\n const { execa } = await import('execa');\n\n // Check if agent CLI is available locally\n const status = await checkAgentAvailable(agent);\n if (!status.available) {\n logger.error(`${agentName} CLI not found locally`);\n process.exit(1);\n }\n\n logger.info(`Launching ${logger.brand(agentName)}...`);\n logger.dim(`Working directory: ${rootDir}`);\n logger.blank();\n\n await execa(agent.cli, agent.args || [], {\n cwd: rootDir,\n stdio: 'inherit',\n });\n}\n\nfunction listAgents(config: {\n agents: { default: string; available: Record<string, unknown> };\n}): void {\n logger.header('Available Agents');\n\n Object.keys(config.agents.available).forEach((name) => {\n const isDefault = name === config.agents.default;\n console.log(\n ` ${isDefault ? logger.brand('*') : ' '} ${name}${isDefault ? logger.dim(' (default)') : ''}`\n );\n });\n\n logger.blank();\n logger.dim('Use --agent <name> to select a specific agent');\n}\n","/**\n * rapid status - Show environment status\n */\n\nimport { Command } from 'commander';\nimport {\n loadConfig,\n checkAllAgents,\n logger,\n getContainerStatus,\n hasDevcontainerCli,\n hasDocker,\n loadDevcontainerConfig,\n verifySecrets,\n hasOpCli,\n hasVaultCli,\n isOpAuthenticated,\n isVaultAuthenticated,\n hasEnvrc,\n getProviderInfo,\n getAuthStatus,\n type DetectedCredential,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const statusCommand = new Command('status')\n .description('Show environment status')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const spinner = ora('Checking status...').start();\n\n // Load config\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n if (options.json) {\n console.log(JSON.stringify({ configured: false }, null, 2));\n }\n process.exit(1);\n }\n\n const { config, filepath, rootDir } = loaded;\n\n // Check container status\n spinner.text = 'Checking container...';\n const containerStatus = await getContainerStatus(rootDir, config);\n const devcontainerConfig = await loadDevcontainerConfig(rootDir, config);\n const hasDevCli = await hasDevcontainerCli();\n const dockerRunning = await hasDocker();\n\n // Check agents\n spinner.text = 'Checking agents...';\n const agentStatuses = await checkAllAgents(config);\n\n // Check secrets\n spinner.text = 'Checking secrets...';\n const secretsConfig = config.secrets;\n const provider = secretsConfig?.provider || 'env';\n let secretsStatus: {\n provider: string;\n cliInstalled: boolean;\n authenticated: boolean;\n envrcExists: boolean;\n secretsCount: number;\n allAvailable: boolean;\n } | null = null;\n\n if (secretsConfig) {\n let cliInstalled = true;\n let authenticated = true;\n\n if (provider === '1password') {\n cliInstalled = await hasOpCli();\n authenticated = cliInstalled && (await isOpAuthenticated());\n } else if (provider === 'vault') {\n cliInstalled = await hasVaultCli();\n authenticated = cliInstalled && (await isVaultAuthenticated());\n }\n\n const envrcExists = await hasEnvrc(rootDir, secretsConfig);\n const verified = await verifySecrets(secretsConfig);\n\n secretsStatus = {\n provider,\n cliInstalled,\n authenticated,\n envrcExists,\n secretsCount: secretsConfig.items ? Object.keys(secretsConfig.items).length : 0,\n allAvailable: verified.allAvailable,\n };\n }\n\n // Check auth\n spinner.text = 'Checking authentication...';\n const authStatus = await getAuthStatus();\n\n spinner.stop();\n\n if (options.json) {\n console.log(\n JSON.stringify(\n {\n configured: true,\n configPath: filepath,\n rootDir,\n defaultAgent: config.agents.default,\n container: {\n configured: !!devcontainerConfig,\n running: containerStatus.running,\n name: containerStatus.containerName,\n devcontainerCli: hasDevCli,\n docker: dockerRunning,\n },\n agents: agentStatuses,\n secrets: secretsStatus,\n auth: {\n authenticated: authStatus.authenticated,\n sources: authStatus.sources.map((s: DetectedCredential) => ({\n source: s.source,\n provider: s.provider,\n authType: s.authType,\n hasValue: !!s.value,\n })),\n },\n },\n null,\n 2\n )\n );\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('RAPID')} Status`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n console.log(` ${logger.dim('Config:')} ${filepath}`);\n console.log(` ${logger.dim('Root:')} ${rootDir}`);\n console.log();\n\n // Container status\n console.log(` ${logger.dim('Container:')}`);\n if (!devcontainerConfig) {\n console.log(` ${logger.dim('○')} ${logger.dim('No devcontainer.json configured')}`);\n } else if (!dockerRunning) {\n console.log(` ${logger.dim('○')} ${logger.dim('Docker not running')}`);\n } else if (!hasDevCli) {\n console.log(` ${logger.dim('○')} ${logger.dim('devcontainer CLI not installed')}`);\n } else if (containerStatus.running) {\n console.log(\n ` ${logger.brand('●')} Running ${logger.dim(`(${containerStatus.containerName})`)}`\n );\n } else if (containerStatus.exists) {\n console.log(\n ` ${logger.dim('○')} Stopped ${logger.dim(`(${containerStatus.containerName})`)}`\n );\n } else {\n console.log(` ${logger.dim('○')} Not started`);\n }\n console.log();\n\n // Agent status\n console.log(\n ` ${logger.dim('Agents:')} ${logger.dim(`(default: ${config.agents.default})`)}`\n );\n agentStatuses.forEach((status) => {\n const isDefault = status.name === config.agents.default;\n const icon = status.available ? logger.brand('✓') : logger.dim('○');\n const name = isDefault ? logger.bold(status.name) : status.name;\n const version = status.version ? logger.dim(` (${status.version})`) : '';\n\n console.log(` ${icon} ${name}${version}`);\n });\n\n console.log();\n\n // Secrets status\n if (secretsStatus) {\n const providerInfo = getProviderInfo(\n secretsStatus.provider as '1password' | 'vault' | 'env'\n );\n console.log(` ${logger.dim('Secrets:')} ${logger.dim(`(${providerInfo.name})`)}`);\n\n if (providerInfo.cliRequired) {\n const cliIcon = secretsStatus.cliInstalled ? logger.brand('✓') : logger.dim('○');\n console.log(\n ` ${cliIcon} CLI ${secretsStatus.cliInstalled ? 'installed' : 'not installed'}`\n );\n\n if (secretsStatus.cliInstalled) {\n const authIcon = secretsStatus.authenticated ? logger.brand('✓') : logger.dim('○');\n console.log(\n ` ${authIcon} ${secretsStatus.authenticated ? 'Authenticated' : 'Not authenticated'}`\n );\n }\n }\n\n if (secretsStatus.secretsCount > 0) {\n const allIcon = secretsStatus.allAvailable ? logger.brand('✓') : logger.dim('○');\n console.log(\n ` ${allIcon} ${secretsStatus.secretsCount} secret${secretsStatus.secretsCount !== 1 ? 's' : ''} ${secretsStatus.allAvailable ? 'available' : 'configured'}`\n );\n }\n\n const envrcIcon = secretsStatus.envrcExists ? logger.brand('✓') : logger.dim('○');\n console.log(\n ` ${envrcIcon} .envrc ${secretsStatus.envrcExists ? 'exists' : 'not generated'}`\n );\n\n console.log();\n }\n\n // Auth status\n console.log(` ${logger.dim('Auth:')}`);\n if (!authStatus.authenticated) {\n console.log(` ${logger.dim('○')} ${logger.dim('No authentication detected')}`);\n console.log(` ${logger.dim(' Run `rapid auth` for options')}`);\n } else {\n for (const cred of authStatus.sources) {\n const icon = cred.authType === 'oauth' ? logger.brand('●') : logger.dim('○');\n const authType = cred.authType === 'oauth' ? 'OAuth' : 'API Key';\n let info = `${cred.source} (${cred.provider}, ${authType})`;\n if (cred.accountInfo?.email) {\n info += ` - ${cred.accountInfo.email}`;\n }\n console.log(` ${icon} ${info}`);\n }\n }\n\n console.log();\n // Quick actions\n if (!containerStatus.running && devcontainerConfig && dockerRunning && hasDevCli) {\n logger.info('Run `rapid start` to start the container');\n } else if (containerStatus.running) {\n logger.info('Run `rapid dev` to start coding');\n }\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid agent - Manage AI agents\n */\n\nimport { Command } from 'commander';\nimport { loadConfig, checkAllAgents, logger } from '@a3t/rapid-core';\n\nexport const agentCommand = new Command('agent').description('Manage AI agents');\n\n// rapid agent list\nagentCommand\n .command('list')\n .description('List available agents')\n .action(async () => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config } = loaded;\n const statuses = await checkAllAgents(config);\n\n logger.header('Available Agents');\n\n statuses.forEach((status) => {\n const isDefault = status.name === config.agents.default;\n const icon = status.available ? '✓' : '○';\n const defaultTag = isDefault ? ' (default)' : '';\n const versionTag = status.version ? ` - ${status.version}` : '';\n\n if (status.available) {\n console.log(\n ` ${logger.brand(icon)} ${status.name}${defaultTag}${logger.dim(versionTag)}`\n );\n } else {\n console.log(\n ` ${logger.dim(icon)} ${logger.dim(status.name)}${defaultTag} ${logger.dim('[not installed]')}`\n );\n }\n });\n\n logger.blank();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n// rapid agent default\nagentCommand\n .command('default [name]')\n .description('Get or set default agent')\n .action(async (name) => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config } = loaded;\n\n if (!name) {\n // Show current default\n console.log(config.agents.default);\n return;\n }\n\n // Check if agent exists\n if (!config.agents.available[name]) {\n logger.error(`Agent \"${name}\" not found in configuration`);\n logger.info('Available agents:');\n Object.keys(config.agents.available).forEach((n) => {\n console.log(` - ${n}`);\n });\n process.exit(1);\n }\n\n // TODO: Write the updated config\n logger.warn('Setting default agent requires editing rapid.json');\n logger.info(`Set \"agents.default\" to \"${name}\" in your rapid.json`);\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid start - Start the development container\n */\n\nimport { Command } from 'commander';\nimport {\n loadConfig,\n logger,\n hasDevcontainerCli,\n hasDocker,\n loadDevcontainerConfig,\n getContainerStatus,\n startContainer,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const startCommand = new Command('start')\n .description('Start the development container')\n .option('--rebuild', 'Force rebuild the container', false)\n .option('--no-cache', 'Build without Docker cache', false)\n .action(async (options) => {\n const spinner = ora('Starting development environment...').start();\n\n try {\n // Load config\n spinner.text = 'Loading configuration...';\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n\n // Check for devcontainer CLI\n spinner.text = 'Checking devcontainer CLI...';\n const hasDevCli = await hasDevcontainerCli();\n if (!hasDevCli) {\n spinner.fail('devcontainer CLI not found');\n logger.blank();\n logger.info('Install with:');\n console.log(' npm install -g @devcontainers/cli');\n logger.blank();\n process.exit(1);\n }\n\n // Check Docker\n spinner.text = 'Checking Docker...';\n const dockerAvailable = await hasDocker();\n if (!dockerAvailable) {\n spinner.fail('Docker is not running');\n logger.info('Please start Docker Desktop and try again.');\n process.exit(1);\n }\n\n // Check for devcontainer.json\n spinner.text = 'Checking devcontainer configuration...';\n const devcontainerConfig = await loadDevcontainerConfig(rootDir, config);\n if (!devcontainerConfig) {\n spinner.fail('No devcontainer.json found');\n logger.blank();\n logger.info('Create a .devcontainer/devcontainer.json or run:');\n console.log(' rapid init --template <template>');\n logger.blank();\n process.exit(1);\n }\n\n // Check current status\n spinner.text = 'Checking container status...';\n const status = await getContainerStatus(rootDir, config);\n\n if (status.running && !options.rebuild) {\n spinner.succeed('Container already running');\n logger.info(`Container: ${status.containerName}`);\n logger.blank();\n logger.info('Run `rapid dev` to start coding');\n return;\n }\n\n // Start the container\n spinner.text = options.rebuild ? 'Rebuilding container...' : 'Starting container...';\n spinner.stopAndPersist({ symbol: '🐳', text: spinner.text });\n\n const result = await startContainer(rootDir, config, {\n rebuild: options.rebuild,\n quiet: false,\n });\n\n if (!result.success) {\n logger.blank();\n logger.error('Failed to start container');\n logger.error(result.error || 'Unknown error');\n process.exit(1);\n }\n\n logger.blank();\n logger.success('Development environment ready!');\n logger.blank();\n logger.info('Next steps:');\n console.log(` ${logger.dim('•')} Run ${logger.brand('rapid dev')} to start coding`);\n console.log(` ${logger.dim('•')} Run ${logger.brand('rapid stop')} when done`);\n logger.blank();\n } catch (error) {\n spinner.fail('Failed to start environment');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid stop - Stop the development container\n */\n\nimport { Command } from 'commander';\nimport { loadConfig, logger, getContainerStatus, stopContainer } from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const stopCommand = new Command('stop')\n .description('Stop the development container')\n .option('--remove', 'Remove container after stopping', false)\n .action(async (options) => {\n const spinner = ora('Stopping development environment...').start();\n\n try {\n // Load config\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n\n // Check current status\n spinner.text = 'Checking container status...';\n const status = await getContainerStatus(rootDir, config);\n\n if (!status.exists) {\n spinner.succeed('No container to stop');\n return;\n }\n\n if (!status.running) {\n if (options.remove) {\n spinner.text = 'Removing container...';\n await stopContainer(rootDir, config, { remove: true });\n spinner.succeed('Container removed');\n } else {\n spinner.succeed('Container already stopped');\n }\n return;\n }\n\n // Stop the container\n spinner.text = 'Stopping container...';\n const result = await stopContainer(rootDir, config, { remove: options.remove });\n\n if (!result.success) {\n spinner.fail('Failed to stop container');\n logger.error(result.error || 'Unknown error');\n process.exit(1);\n }\n\n spinner.succeed(options.remove ? 'Container stopped and removed' : 'Container stopped');\n } catch (error) {\n spinner.fail('Failed to stop environment');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid secrets - Manage project secrets\n */\n\nimport { Command } from 'commander';\nimport {\n loadConfig,\n logger,\n verifySecrets,\n loadSecrets,\n hasOpCli,\n hasVaultCli,\n isOpAuthenticated,\n isVaultAuthenticated,\n getOpAuthStatus,\n hasOpServiceAccountToken,\n generateEnvrc,\n writeEnvrc,\n hasEnvrc,\n getProviderInfo,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const secretsCommand = new Command('secrets').description('Manage project secrets');\n\n/**\n * rapid secrets verify - Verify all secrets are accessible\n */\nsecretsCommand\n .command('verify')\n .description('Verify all secrets are accessible')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n const spinner = ora('Verifying secrets...').start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n const { config } = loaded;\n const secretsConfig = config.secrets;\n\n if (!secretsConfig) {\n spinner.info('No secrets configured');\n return;\n }\n\n const provider = secretsConfig.provider || 'env';\n\n // Check CLI availability\n spinner.text = `Checking ${provider} availability...`;\n\n if (provider === '1password') {\n const hasOp = await hasOpCli();\n if (!hasOp) {\n spinner.fail('1Password CLI (op) not found');\n console.log();\n logger.info('Install with: brew install 1password-cli');\n logger.info('More info: https://developer.1password.com/docs/cli/get-started/');\n process.exit(1);\n }\n\n const authenticated = await isOpAuthenticated();\n if (!authenticated) {\n spinner.fail('1Password CLI not authenticated');\n console.log();\n logger.info('Run: eval $(op signin)');\n process.exit(1);\n }\n } else if (provider === 'vault') {\n const hasVault = await hasVaultCli();\n if (!hasVault) {\n spinner.fail('Vault CLI not found');\n console.log();\n logger.info('Install from: https://developer.hashicorp.com/vault/docs/install');\n process.exit(1);\n }\n\n const authenticated = await isVaultAuthenticated();\n if (!authenticated) {\n spinner.fail('Vault CLI not authenticated');\n console.log();\n logger.info('Run: vault login');\n process.exit(1);\n }\n }\n\n // Verify secrets\n spinner.text = 'Verifying secrets...';\n const status = await verifySecrets(secretsConfig);\n\n spinner.stop();\n\n if (options.json) {\n console.log(JSON.stringify(status, null, 2));\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('Secrets')} Verification`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n console.log(` ${logger.dim('Provider:')} ${getProviderInfo(provider).name}`);\n console.log(\n ` ${logger.dim('Auth:')} ${status.authenticated ? logger.brand('✓') : logger.dim('○')} ${status.authenticated ? 'Authenticated' : 'Not authenticated'}`\n );\n console.log();\n\n if (status.secrets.length === 0) {\n console.log(` ${logger.dim('No secrets configured in rapid.json')}`);\n console.log();\n return;\n }\n\n console.log(` ${logger.dim('Secrets:')}`);\n for (const secret of status.secrets) {\n const icon = secret.available ? logger.brand('✓') : '✗';\n const ref = logger.dim(`(${provider})`);\n const error = secret.error ? logger.dim(` - ${secret.error}`) : '';\n\n console.log(` ${icon} ${secret.name} ${ref}${error}`);\n }\n console.log();\n\n if (status.allAvailable) {\n logger.info('All secrets verified successfully!');\n } else {\n logger.error('Some secrets are not available');\n process.exit(1);\n }\n console.log();\n } catch (error) {\n spinner.fail('Failed to verify secrets');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid secrets list - List configured secrets\n */\nsecretsCommand\n .command('list')\n .description('List configured secrets (names only, not values)')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found');\n process.exit(1);\n }\n\n const { config } = loaded;\n const secretsConfig = config.secrets;\n\n if (!secretsConfig || !secretsConfig.items || Object.keys(secretsConfig.items).length === 0) {\n if (options.json) {\n console.log(JSON.stringify({ secrets: [] }, null, 2));\n } else {\n logger.info('No secrets configured');\n }\n return;\n }\n\n const provider = secretsConfig.provider || 'env';\n\n if (options.json) {\n const secrets = Object.entries(secretsConfig.items).map(([name, reference]) => ({\n name,\n reference,\n provider,\n }));\n console.log(JSON.stringify({ provider, secrets }, null, 2));\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('Configured Secrets')}`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n console.log(` ${logger.dim('Provider:')} ${getProviderInfo(provider).name}`);\n console.log();\n\n // Calculate padding for alignment\n const maxNameLen = Math.max(...Object.keys(secretsConfig.items).map((n) => n.length));\n\n for (const [name, reference] of Object.entries(secretsConfig.items)) {\n const paddedName = name.padEnd(maxNameLen);\n console.log(` ${logger.brand('•')} ${paddedName} ${logger.dim(reference)}`);\n }\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid secrets generate - Generate .envrc from configuration\n */\nsecretsCommand\n .command('generate')\n .description('Generate .envrc file from rapid.json configuration')\n .option('--force', 'Overwrite existing .envrc', false)\n .option('--stdout', 'Print to stdout instead of writing file', false)\n .action(async (options) => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n const secretsConfig = config.secrets;\n\n if (!secretsConfig) {\n logger.error('No secrets configuration in rapid.json');\n process.exit(1);\n }\n\n const content = generateEnvrc(secretsConfig);\n\n if (options.stdout) {\n console.log(content);\n return;\n }\n\n // Check if .envrc exists\n const envrcExists = await hasEnvrc(rootDir, secretsConfig);\n if (envrcExists && !options.force) {\n logger.error('.envrc already exists. Use --force to overwrite.');\n process.exit(1);\n }\n\n const spinner = ora('Generating .envrc...').start();\n\n const filepath = await writeEnvrc(rootDir, secretsConfig);\n\n spinner.succeed('Generated .envrc');\n console.log();\n console.log(` ${logger.dim('File:')} ${filepath}`);\n console.log();\n\n const itemCount = secretsConfig.items ? Object.keys(secretsConfig.items).length : 0;\n logger.info(`Generated .envrc with ${itemCount} secret${itemCount !== 1 ? 's' : ''}`);\n logger.info(`Run ${logger.brand('direnv allow')} to activate`);\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid secrets info - Show provider information and status\n */\nsecretsCommand\n .command('info')\n .description('Show secrets provider information and authentication status')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n const spinner = ora('Checking provider status...').start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n const secretsConfig = config.secrets || { provider: 'env' };\n const provider = secretsConfig.provider || 'env';\n\n const info = getProviderInfo(provider);\n\n let cliInstalled = true;\n let authenticated = true;\n\n let opAuthStatus: { authenticated: boolean; method: string; accountInfo?: string } | null =\n null;\n\n if (provider === '1password') {\n cliInstalled = await hasOpCli();\n if (cliInstalled) {\n opAuthStatus = await getOpAuthStatus();\n authenticated = opAuthStatus.authenticated;\n } else {\n authenticated = false;\n }\n } else if (provider === 'vault') {\n cliInstalled = await hasVaultCli();\n authenticated = cliInstalled && (await isVaultAuthenticated());\n }\n\n const envrcExists = await hasEnvrc(rootDir, secretsConfig);\n const hasServiceToken = hasOpServiceAccountToken();\n\n spinner.stop();\n\n const status = {\n provider,\n providerName: info.name,\n cliRequired: info.cliRequired,\n cliInstalled,\n authenticated,\n authMethod: opAuthStatus?.method,\n accountInfo: opAuthStatus?.accountInfo,\n hasServiceToken,\n envrcExists,\n envrcPath: secretsConfig.envrc?.path || '.envrc',\n secretsCount: secretsConfig.items ? Object.keys(secretsConfig.items).length : 0,\n };\n\n if (options.json) {\n console.log(JSON.stringify(status, null, 2));\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('Secrets')} Provider Info`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n console.log(` ${logger.dim('Provider:')} ${info.name}`);\n\n if (info.cliRequired) {\n const cliIcon = cliInstalled ? logger.brand('✓') : '✗';\n console.log(\n ` ${logger.dim('CLI:')} ${cliIcon} ${info.cliRequired} ${cliInstalled ? '' : logger.dim('(not installed)')}`\n );\n\n if (cliInstalled && provider === '1password' && opAuthStatus) {\n const authIcon = authenticated ? logger.brand('✓') : '✗';\n const methodLabel =\n opAuthStatus.method === 'service-account'\n ? 'Service Account'\n : opAuthStatus.method === 'user'\n ? 'User'\n : 'Not authenticated';\n const accountLabel = opAuthStatus.accountInfo ? ` (${opAuthStatus.accountInfo})` : '';\n console.log(` ${logger.dim('Auth:')} ${authIcon} ${methodLabel}${accountLabel}`);\n\n if (hasServiceToken) {\n console.log(\n ` ${logger.dim('Token:')} ${logger.brand('✓')} OP_SERVICE_ACCOUNT_TOKEN set`\n );\n }\n } else if (cliInstalled) {\n const authIcon = authenticated ? logger.brand('✓') : '✗';\n console.log(\n ` ${logger.dim('Auth:')} ${authIcon} ${authenticated ? 'Authenticated' : 'Not authenticated'}`\n );\n }\n\n if (info.installUrl && !cliInstalled) {\n console.log();\n console.log(` ${logger.dim('Install:')} ${info.installUrl}`);\n }\n\n if (info.authCommand && cliInstalled && !authenticated) {\n console.log();\n console.log(` ${logger.dim('Authenticate:')} ${info.authCommand}`);\n if (provider === '1password') {\n console.log(\n ` ${logger.dim('Or set:')} OP_SERVICE_ACCOUNT_TOKEN for non-interactive auth`\n );\n }\n }\n }\n\n console.log();\n\n const envrcIcon = envrcExists ? logger.brand('✓') : logger.dim('○');\n console.log(\n ` ${logger.dim('.envrc:')} ${envrcIcon} ${envrcExists ? 'Exists' : 'Not generated'}`\n );\n console.log(` ${logger.dim('Secrets:')} ${status.secretsCount} configured`);\n console.log();\n\n if (!envrcExists && status.secretsCount > 0) {\n logger.info(`Run ${logger.brand('rapid secrets generate')} to create .envrc`);\n console.log();\n }\n } catch (error) {\n spinner.fail('Failed to get provider info');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid secrets run -- <command> - Run a command with secrets injected\n */\nsecretsCommand\n .command('run')\n .description('Run a command with secrets loaded into environment')\n .argument('<command...>', 'Command to run with secrets')\n .option('--show', 'Show which secrets are being loaded (names only)', false)\n .action(async (commandArgs: string[], options) => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found');\n process.exit(1);\n }\n\n const { config } = loaded;\n const secretsConfig = config.secrets;\n\n if (!secretsConfig || !secretsConfig.items) {\n logger.error('No secrets configured in rapid.json');\n process.exit(1);\n }\n\n const provider = secretsConfig.provider || 'env';\n\n // Check CLI availability for 1Password\n if (provider === '1password') {\n const hasOp = await hasOpCli();\n if (!hasOp) {\n logger.error('1Password CLI (op) not found');\n logger.info('Install with: brew install 1password-cli');\n process.exit(1);\n }\n\n const authenticated = await isOpAuthenticated();\n if (!authenticated) {\n logger.error('1Password not authenticated');\n logger.info('Run: eval $(op signin)');\n process.exit(1);\n }\n }\n\n // Load secrets\n const secrets = await loadSecrets(secretsConfig);\n const secretCount = Object.keys(secrets).length;\n\n if (secretCount === 0) {\n logger.warn('No secrets were loaded');\n } else if (options.show) {\n logger.info(`Loaded ${secretCount} secret${secretCount !== 1 ? 's' : ''}:`);\n for (const name of Object.keys(secrets)) {\n console.log(` ${logger.brand('•')} ${name}`);\n }\n console.log();\n }\n\n // Run the command with secrets in environment\n const { execa } = await import('execa');\n const [cmd, ...args] = commandArgs;\n\n if (!cmd) {\n logger.error('No command specified');\n process.exit(1);\n }\n\n await execa(cmd, args, {\n stdio: 'inherit',\n env: {\n ...process.env,\n ...secrets,\n },\n });\n } catch (error) {\n if ((error as { exitCode?: number }).exitCode !== undefined) {\n process.exit((error as { exitCode: number }).exitCode);\n }\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid auth - Show and manage authentication status\n */\n\nimport { Command } from 'commander';\nimport {\n logger,\n getAuthStatus,\n detectAllCredentials,\n type DetectedCredential,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const authCommand = new Command('auth')\n .description('Show authentication status from external tools')\n .option('--json', 'Output as JSON')\n .option('--source <source>', 'Filter by source (claude-code, codex, gemini-cli, aider, env)')\n .option('--provider <provider>', 'Filter by provider (anthropic, openai, google)')\n .action(async (options) => {\n try {\n const spinner = ora('Checking authentication...').start();\n\n const status = await getAuthStatus();\n\n spinner.stop();\n\n if (options.json) {\n let credentials = status.sources;\n\n // Apply filters\n if (options.source) {\n credentials = credentials.filter((c: DetectedCredential) => c.source === options.source);\n }\n if (options.provider) {\n credentials = credentials.filter(\n (c: DetectedCredential) => c.provider === options.provider\n );\n }\n\n // Remove sensitive values for JSON output\n const sanitized = credentials.map((c: DetectedCredential) => ({\n source: c.source,\n provider: c.provider,\n authType: c.authType,\n envVar: c.envVar,\n expiresAt: c.expiresAt?.toISOString(),\n accountInfo: c.accountInfo,\n configPath: c.configPath,\n hasValue: !!c.value,\n }));\n\n console.log(\n JSON.stringify(\n {\n authenticated: sanitized.length > 0,\n sources: sanitized,\n warnings: status.warnings,\n },\n null,\n 2\n )\n );\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('RAPID')} Authentication`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n if (!status.authenticated) {\n console.log(` ${logger.dim('No authentication detected')}`);\n console.log();\n console.log(' To authenticate, use one of these methods:');\n console.log();\n console.log(` ${logger.brand('Claude Pro/Max:')}`);\n console.log(' Run `claude` and sign in with your Anthropic account');\n console.log();\n console.log(` ${logger.brand('OpenAI (ChatGPT Plus/Pro):')}`);\n console.log(' Run `codex` and sign in with ChatGPT');\n console.log();\n console.log(` ${logger.brand('Gemini:')}`);\n console.log(' Run `gemini` and sign in with your Google account');\n console.log();\n console.log(` ${logger.brand('API Keys:')}`);\n console.log(' Set ANTHROPIC_API_KEY, OPENAI_API_KEY, or GEMINI_API_KEY');\n console.log();\n return;\n }\n\n // Show detected credentials\n for (const cred of status.sources) {\n // Apply filters\n if (options.source && cred.source !== options.source) continue;\n if (options.provider && cred.provider !== options.provider) continue;\n\n const isPrimary = cred === status.preferredSource;\n const icon = isPrimary ? logger.brand('●') : logger.dim('○');\n const authIcon = cred.authType === 'oauth' ? logger.brand('OAuth') : logger.dim('API Key');\n\n console.log(` ${icon} ${logger.bold(cred.source)}`);\n console.log(` Provider: ${cred.provider}`);\n console.log(` Auth: ${authIcon}`);\n\n if (cred.accountInfo?.email) {\n console.log(` Account: ${cred.accountInfo.email}`);\n }\n if (cred.accountInfo?.organization) {\n console.log(` Org: ${cred.accountInfo.organization}`);\n }\n if (cred.accountInfo?.plan) {\n console.log(` Plan: ${logger.brand(cred.accountInfo.plan)}`);\n }\n if (cred.expiresAt) {\n const now = new Date();\n const expiresIn = Math.round((cred.expiresAt.getTime() - now.getTime()) / 1000 / 60);\n if (expiresIn > 0) {\n console.log(` Expires: in ${expiresIn} minutes`);\n } else {\n console.log(` Expires: ${logger.dim('EXPIRED')}`);\n }\n }\n if (cred.configPath) {\n console.log(` Config: ${logger.dim(cred.configPath)}`);\n }\n if (cred.envVar) {\n console.log(` Env: ${logger.dim(cred.envVar)}`);\n }\n\n if (isPrimary) {\n console.log(` ${logger.brand('→ Primary source')}`);\n }\n\n console.log();\n }\n\n // Warnings\n if (status.warnings && status.warnings.length > 0) {\n console.log(` ${logger.dim('Warnings:')}`);\n for (const warning of status.warnings) {\n console.log(` ! ${warning}`);\n }\n console.log();\n }\n\n // Helpful info\n console.log(` ${logger.dim('Tip:')} RAPID will automatically use detected`);\n console.log(` ${logger.dim(' ')} credentials when launching AI agents.`);\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n// Subcommand: rapid auth env\nauthCommand\n .command('env')\n .description('Show environment variables for detected credentials')\n .option('--export', 'Output as export statements')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const credentials = await detectAllCredentials();\n\n // Group by provider and prefer OAuth\n const byProvider = new Map<string, { envVar: string; masked: string }>();\n\n for (const cred of credentials) {\n if (!cred.value) continue;\n\n const existing = byProvider.get(cred.provider);\n if (!existing || (cred.authType === 'oauth' && cred.envVar)) {\n let envVar: string;\n switch (cred.provider) {\n case 'anthropic':\n envVar = cred.authType === 'oauth' ? 'ANTHROPIC_AUTH_TOKEN' : 'ANTHROPIC_API_KEY';\n break;\n case 'openai':\n envVar = cred.authType === 'oauth' ? 'OPENAI_AUTH_TOKEN' : 'OPENAI_API_KEY';\n break;\n case 'google':\n envVar =\n cred.authType === 'oauth' ? 'GOOGLE_AUTH_TOKEN' : cred.envVar || 'GEMINI_API_KEY';\n break;\n default:\n continue;\n }\n\n // Mask the value\n const masked = cred.value.slice(0, 8) + '...' + cred.value.slice(-4);\n\n byProvider.set(cred.provider, { envVar, masked });\n }\n }\n\n if (options.json) {\n const result: Record<string, string> = {};\n for (const [, { envVar, masked }] of byProvider) {\n result[envVar] = masked;\n }\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n if (options.export) {\n for (const [, { envVar }] of byProvider) {\n // Note: We don't actually export the real value for security\n // This is for documentation purposes\n console.log(`# ${envVar} detected from external auth`);\n console.log(`# export ${envVar}=\"<your-token>\"`);\n }\n return;\n }\n\n // Pretty output\n console.log();\n console.log(` ${logger.brand('RAPID')} Auth Environment`);\n console.log(` ${logger.dim('─'.repeat(24))}`);\n console.log();\n\n if (byProvider.size === 0) {\n console.log(` ${logger.dim('No credentials detected')}`);\n console.log();\n return;\n }\n\n for (const [provider, { envVar, masked }] of byProvider) {\n console.log(` ${logger.brand(provider)}`);\n console.log(` ${envVar}=${masked}`);\n console.log();\n }\n\n console.log(` ${logger.dim('These will be automatically injected when running agents.')}`);\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n","/**\n * rapid mcp - Manage MCP (Model Context Protocol) servers\n */\n\nimport { Command } from 'commander';\nimport { writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport {\n loadConfig,\n logger,\n getMcpServers,\n getMcpServerStatus,\n addMcpServerFromTemplate,\n addMcpServer,\n removeMcpServer,\n enableMcpServer,\n disableMcpServer,\n writeMcpConfig,\n writeOpenCodeConfig,\n MCP_SERVER_TEMPLATES,\n getMcpTemplate,\n type RapidConfig,\n type McpServerDefinition,\n} from '@a3t/rapid-core';\nimport ora from 'ora';\n\nexport const mcpCommand = new Command('mcp').description(\n 'Manage MCP (Model Context Protocol) servers'\n);\n\n/**\n * Save updated config to rapid.json\n */\nasync function saveConfig(rootDir: string, config: RapidConfig): Promise<void> {\n const configPath = join(rootDir, 'rapid.json');\n await writeFile(configPath, JSON.stringify(config, null, 2) + '\\n', 'utf-8');\n}\n\n/**\n * rapid mcp list - List configured MCP servers\n */\nmcpCommand\n .command('list')\n .description('List configured MCP servers')\n .option('--json', 'Output as JSON')\n .option('--templates', 'Show available templates instead of configured servers')\n .action(async (options) => {\n try {\n if (options.templates) {\n // Show available templates\n if (options.json) {\n console.log(JSON.stringify(MCP_SERVER_TEMPLATES, null, 2));\n return;\n }\n\n console.log();\n console.log(` ${logger.brand('Available MCP Server Templates')}`);\n console.log(` ${logger.dim('─'.repeat(40))}`);\n console.log();\n\n for (const [name, template] of Object.entries(MCP_SERVER_TEMPLATES)) {\n const typeLabel =\n template.type === 'remote' ? logger.dim('(remote)') : logger.dim('(stdio)');\n const secretsLabel =\n template.requiredSecrets.length > 0\n ? logger.dim(` - requires: ${template.requiredSecrets.join(', ')}`)\n : logger.dim(' - no secrets required');\n\n console.log(` ${logger.brand('•')} ${name} ${typeLabel}`);\n console.log(` ${template.description}${secretsLabel}`);\n console.log();\n }\n\n logger.info(`Use ${logger.brand('rapid mcp add <name>')} to add a server`);\n console.log();\n return;\n }\n\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config } = loaded;\n const servers = getMcpServers(config);\n\n if (options.json) {\n console.log(JSON.stringify({ servers }, null, 2));\n return;\n }\n\n console.log();\n console.log(` ${logger.brand('MCP Servers')}`);\n console.log(` ${logger.dim('─'.repeat(40))}`);\n console.log();\n\n if (servers.length === 0) {\n console.log(` ${logger.dim('No MCP servers configured')}`);\n console.log();\n logger.info(`Use ${logger.brand('rapid mcp add <name>')} to add a server`);\n logger.info(`Use ${logger.brand('rapid mcp list --templates')} to see available templates`);\n console.log();\n return;\n }\n\n for (const server of servers) {\n const icon = server.enabled ? logger.brand('✓') : logger.dim('○');\n const typeLabel = server.type === 'remote' ? logger.dim('(remote)') : logger.dim('(stdio)');\n const statusLabel = server.enabled ? '' : logger.dim(' [disabled]');\n const location =\n server.type === 'remote'\n ? logger.dim(server.url || '')\n : logger.dim(server.command || '');\n\n console.log(` ${icon} ${server.name} ${typeLabel}${statusLabel}`);\n if (location) {\n console.log(` ${location}`);\n }\n console.log();\n }\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp add - Add an MCP server\n */\nmcpCommand\n .command('add')\n .description('Add an MCP server')\n .argument('<name>', 'Server name (or template name)')\n .option('--type <type>', 'Server type: remote or stdio')\n .option('--url <url>', 'URL for remote servers')\n .option('--command <cmd>', 'Command for stdio servers')\n .option('--args <args>', 'Arguments for stdio command (comma-separated)')\n .option('--header <header>', 'HTTP header for remote servers (name=value)', collectHeaders, {})\n .action(async (name: string, options) => {\n const spinner = ora(`Adding MCP server '${name}'...`).start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n let { config } = loaded;\n const { rootDir } = loaded;\n\n // Check if server already exists\n const existingServers = getMcpServers(config);\n if (existingServers.some((s) => s.name === name)) {\n spinner.fail(`MCP server '${name}' already exists`);\n logger.info(`Use ${logger.brand(`rapid mcp remove ${name}`)} to remove it first`);\n process.exit(1);\n }\n\n // Check if it's a template\n const template = getMcpTemplate(name);\n\n if (template && !options.type && !options.url && !options.command) {\n // Add from template\n config = addMcpServerFromTemplate(config, name);\n spinner.text = `Adding '${name}' from template...`;\n } else if (options.type || options.url || options.command) {\n // Add custom server\n const serverConfig: McpServerDefinition = {\n enabled: true,\n };\n\n if (options.type) {\n serverConfig.type = options.type as 'remote' | 'stdio';\n }\n\n if (options.url) {\n serverConfig.type = 'remote';\n serverConfig.url = options.url;\n }\n\n if (options.header && Object.keys(options.header).length > 0) {\n serverConfig.headers = options.header;\n }\n\n if (options.command) {\n serverConfig.type = 'stdio';\n serverConfig.command = options.command;\n }\n\n if (options.args) {\n serverConfig.args = options.args.split(',').map((a: string) => a.trim());\n }\n\n config = addMcpServer(config, name, serverConfig);\n } else if (template) {\n // Add from template (fallback)\n config = addMcpServerFromTemplate(config, name);\n } else {\n spinner.fail(`Unknown MCP server template: ${name}`);\n logger.info(`Use ${logger.brand('rapid mcp list --templates')} to see available templates`);\n logger.info('Or specify --type, --url, or --command for a custom server');\n process.exit(1);\n }\n\n // Save config\n await saveConfig(rootDir, config);\n\n // Regenerate MCP config files\n await writeMcpConfig(rootDir, config);\n await writeOpenCodeConfig(rootDir, config);\n\n spinner.succeed(`Added MCP server '${name}'`);\n console.log();\n\n // Show required secrets if any\n if (template?.requiredSecrets.length) {\n logger.info('Required secrets:');\n for (const secret of template.requiredSecrets) {\n const ref = template.secretReferences?.[secret];\n console.log(` ${logger.brand('•')} ${secret}${ref ? logger.dim(` (${ref})`) : ''}`);\n }\n console.log();\n logger.info(`Add these to ${logger.brand('rapid.json')} secrets.items section`);\n console.log();\n }\n } catch (error) {\n spinner.fail('Failed to add MCP server');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp remove - Remove an MCP server\n */\nmcpCommand\n .command('remove')\n .description('Remove an MCP server')\n .argument('<name>', 'Server name to remove')\n .action(async (name: string) => {\n const spinner = ora(`Removing MCP server '${name}'...`).start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n let { config } = loaded;\n const { rootDir } = loaded;\n\n // Remove the server\n config = removeMcpServer(config, name);\n\n // Save config\n await saveConfig(rootDir, config);\n\n // Regenerate MCP config files\n await writeMcpConfig(rootDir, config);\n await writeOpenCodeConfig(rootDir, config);\n\n spinner.succeed(`Removed MCP server '${name}'`);\n console.log();\n } catch (error) {\n spinner.fail('Failed to remove MCP server');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp enable - Enable a disabled MCP server\n */\nmcpCommand\n .command('enable')\n .description('Enable a disabled MCP server')\n .argument('<name>', 'Server name to enable')\n .action(async (name: string) => {\n const spinner = ora(`Enabling MCP server '${name}'...`).start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n let { config } = loaded;\n const { rootDir } = loaded;\n\n // Enable the server\n config = enableMcpServer(config, name);\n\n // Save config\n await saveConfig(rootDir, config);\n\n // Regenerate MCP config files\n await writeMcpConfig(rootDir, config);\n await writeOpenCodeConfig(rootDir, config);\n\n spinner.succeed(`Enabled MCP server '${name}'`);\n console.log();\n } catch (error) {\n spinner.fail('Failed to enable MCP server');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp disable - Disable an MCP server (without removing)\n */\nmcpCommand\n .command('disable')\n .description('Disable an MCP server (without removing)')\n .argument('<name>', 'Server name to disable')\n .action(async (name: string) => {\n const spinner = ora(`Disabling MCP server '${name}'...`).start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n let { config } = loaded;\n const { rootDir } = loaded;\n\n // Disable the server\n config = disableMcpServer(config, name);\n\n // Save config\n await saveConfig(rootDir, config);\n\n // Regenerate MCP config files\n await writeMcpConfig(rootDir, config);\n await writeOpenCodeConfig(rootDir, config);\n\n spinner.succeed(`Disabled MCP server '${name}'`);\n console.log();\n } catch (error) {\n spinner.fail('Failed to disable MCP server');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp status - Show MCP server status\n */\nmcpCommand\n .command('status')\n .description('Show MCP server status')\n .option('--json', 'Output as JSON')\n .action(async (options) => {\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n logger.error('No rapid.json found. Run `rapid init` first.');\n process.exit(1);\n }\n\n const { config } = loaded;\n const servers = getMcpServerStatus(config);\n\n if (options.json) {\n console.log(JSON.stringify({ servers }, null, 2));\n return;\n }\n\n console.log();\n console.log(` ${logger.brand('MCP Server Status')}`);\n console.log(` ${logger.dim('─'.repeat(40))}`);\n console.log();\n\n if (servers.length === 0) {\n console.log(` ${logger.dim('No MCP servers configured')}`);\n console.log();\n return;\n }\n\n let enabledCount = 0;\n let disabledCount = 0;\n\n for (const server of servers) {\n if (server.enabled) {\n enabledCount++;\n } else {\n disabledCount++;\n }\n\n const icon =\n server.status === 'enabled'\n ? logger.brand('✓')\n : server.status === 'disabled'\n ? logger.dim('○')\n : '✗';\n\n const statusLabel =\n server.status === 'enabled'\n ? 'enabled'\n : server.status === 'disabled'\n ? logger.dim('disabled')\n : logger.dim(`error: ${server.error}`);\n\n const typeLabel = server.type === 'remote' ? 'remote' : 'stdio';\n\n console.log(` ${icon} ${server.name}`);\n console.log(` ${logger.dim('Type:')} ${typeLabel}`);\n console.log(` ${logger.dim('Status:')} ${statusLabel}`);\n\n if (server.url) {\n console.log(` ${logger.dim('URL:')} ${server.url}`);\n }\n if (server.command) {\n console.log(` ${logger.dim('Cmd:')} ${server.command}`);\n }\n console.log();\n }\n\n console.log(` ${logger.dim('Summary:')} ${enabledCount} enabled, ${disabledCount} disabled`);\n console.log();\n } catch (error) {\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * rapid mcp sync - Regenerate .mcp.json and opencode.json from rapid.json\n */\nmcpCommand\n .command('sync')\n .description('Regenerate .mcp.json and opencode.json from rapid.json')\n .action(async () => {\n const spinner = ora('Syncing MCP configuration files...').start();\n\n try {\n const loaded = await loadConfig();\n\n if (!loaded) {\n spinner.fail('No rapid.json found');\n process.exit(1);\n }\n\n const { config, rootDir } = loaded;\n\n // Regenerate MCP config files\n await writeMcpConfig(rootDir, config);\n await writeOpenCodeConfig(rootDir, config);\n\n const servers = getMcpServers(config);\n const enabledCount = servers.filter((s) => s.enabled).length;\n\n spinner.succeed('MCP configuration synced');\n console.log();\n console.log(` ${logger.dim('Files updated:')}`);\n console.log(` ${logger.brand('•')} .mcp.json`);\n console.log(` ${logger.brand('•')} opencode.json`);\n console.log();\n console.log(` ${logger.dim('Servers:')} ${enabledCount} enabled`);\n console.log();\n } catch (error) {\n spinner.fail('Failed to sync MCP configuration');\n logger.error(error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n });\n\n/**\n * Helper to collect multiple --header flags\n */\nfunction collectHeaders(value: string, previous: Record<string, string>): Record<string, string> {\n const [name, ...rest] = value.split('=');\n if (name && rest.length > 0) {\n previous[name] = rest.join('=');\n }\n return previous;\n}\n"],"mappings":"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","names":["Command","logger","join","Command","writeFile","join","logger","ora","Command","loadConfig","logger","getContainerStatus","hasDevcontainerCli","hasOpCli","isOpAuthenticated","ora","Command","loadConfig","checkAllAgents","logger","Command","loadConfig","logger","hasDevcontainerCli","hasDocker","loadDevcontainerConfig","getContainerStatus","startContainer","ora","Command","loadConfig","logger","getContainerStatus","ora","Command","loadConfig","logger","verifySecrets","loadSecrets","hasOpCli","hasVaultCli","isOpAuthenticated","isVaultAuthenticated","hasEnvrc","getProviderInfo","ora","Command","logger","getAuthStatus","ora","Command","writeFile","join","loadConfig","logger","addMcpServerFromTemplate","writeMcpConfig","writeOpenCodeConfig","MCP_SERVER_TEMPLATES","ora","join","Command","logger"]}
|