@mutagent/cli 0.1.198 → 0.1.199

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.
@@ -1,14 +1,18 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/lib/config.ts", "../src/lib/errors.ts", "../src/lib/sdk-client.ts", "../src/bin/cli.ts", "../src/commands/auth.ts", "../src/lib/output.ts", "../src/commands/onboarding.ts", "../src/lib/auth-flow.ts", "../src/lib/browser-auth.ts", "../src/commands/login.ts", "../src/commands/config.ts", "../src/commands/workspaces.ts", "../src/lib/ui-links.ts", "../src/commands/providers/index.ts", "../src/commands/providers/add.ts", "../src/commands/providers/update.ts", "../src/commands/providers/delete.ts", "../src/commands/init.ts", "../src/lib/framework-detection.ts", "../src/commands/skills.ts", "../src/generated/skill-content.ts", "../src/commands/usage.ts", "../src/commands/hooks/index.ts", "../src/commands/hooks/handlers-core.ts", "../src/commands/hooks/state.ts", "../src/commands/hooks/api.ts", "../src/commands/hooks/handlers-v2.ts", "../src/commands/hooks/install.ts", "../src/commands/feedback.ts", "../src/lib/transcript.ts", "../src/commands/install/index.ts", "../src/lib/installer.ts", "../src/lib/installer-helix.ts"],
3
+ "sources": ["../src/lib/config.ts", "../src/lib/errors.ts", "../src/lib/sdk-client.ts", "../src/bin/cli.ts", "../src/commands/auth.ts", "../src/lib/output.ts", "../src/commands/onboarding.ts", "../src/lib/rc-config.ts", "../src/lib/framework-detection.ts", "../src/lib/installer.ts", "../src/lib/installer-helix.ts", "../src/lib/auth-flow.ts", "../src/lib/browser-auth.ts", "../src/commands/login.ts", "../src/commands/config.ts", "../src/commands/workspaces.ts", "../src/lib/ui-links.ts", "../src/commands/providers/index.ts", "../src/commands/providers/add.ts", "../src/commands/providers/update.ts", "../src/commands/providers/delete.ts", "../src/commands/init.ts", "../src/commands/skills.ts", "../src/generated/skill-content.ts", "../src/commands/usage.ts", "../src/commands/hooks/index.ts", "../src/commands/hooks/handlers-core.ts", "../src/commands/hooks/state.ts", "../src/commands/hooks/api.ts", "../src/commands/hooks/handlers-v2.ts", "../src/commands/hooks/install.ts", "../src/commands/feedback.ts", "../src/lib/transcript.ts", "../src/commands/install/index.ts"],
4
4
  "sourcesContent": [
5
5
  "import { cosmiconfigSync } from 'cosmiconfig';\nimport { z } from 'zod';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';\nimport type { Config } from '../types/index.js';\n\nconst configSchema = z.object({\n apiKey: z.string().optional(),\n endpoint: z.string().default('https://api.mutagent.io'),\n format: z.enum(['table', 'json']).default('table'),\n timeout: z.number().default(30000),\n defaultWorkspace: z.string().optional(),\n defaultOrganization: z.string().optional(),\n});\n\nconst credentialsSchema = z.object({\n apiKey: z.string().optional(),\n endpoint: z.string().optional(),\n defaultWorkspace: z.string().optional(),\n defaultOrganization: z.string().optional(),\n expiresAt: z.string().optional(),\n}).loose();\n\nexport interface FullCredentials {\n apiKey: string;\n endpoint?: string;\n workspaceId?: string;\n organizationId?: string;\n expiresAt?: string;\n}\n\nconst CREDENTIALS_DIR = join(homedir(), '.config', 'mutagent');\nconst CREDENTIALS_FILE = join(CREDENTIALS_DIR, 'credentials.json');\n\nfunction parseJsonSafe<T>(content: string, schema: z.ZodType<T>): T | null {\n try {\n const parsed: unknown = JSON.parse(content);\n return schema.parse(parsed);\n } catch {\n return null;\n }\n}\n\nexport function loadConfig(): Config {\n // Load from cosmiconfig (rc files)\n const explorer = cosmiconfigSync('mutagent');\n const result = explorer.search();\n\n // Safely extract config from cosmiconfig result\n const rcConfig = result?.config as Record<string, unknown> | undefined;\n\n // Load from credentials file\n let credentials: z.infer<typeof credentialsSchema> | null = null;\n if (existsSync(CREDENTIALS_FILE)) {\n credentials = parseJsonSafe(readFileSync(CREDENTIALS_FILE, 'utf-8'), credentialsSchema);\n }\n\n // Merge configs: ENV > credentials > rc files > defaults\n const merged = {\n providers: {},\n environment: 'production',\n ...rcConfig,\n ...credentials,\n apiKey: process.env.MUTAGENT_API_KEY ?? credentials?.apiKey ?? (rcConfig?.apiKey as string | undefined),\n endpoint: process.env.MUTAGENT_ENDPOINT ?? credentials?.endpoint ?? (rcConfig?.endpoint as string | undefined),\n defaultWorkspace: credentials?.defaultWorkspace ?? (rcConfig?.defaultWorkspace as string | undefined),\n defaultOrganization: credentials?.defaultOrganization ?? (rcConfig?.defaultOrganization as string | undefined),\n };\n\n return configSchema.parse(merged) as Config;\n}\n\nexport function saveCredentials(apiKey: string, endpoint?: string): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n const config = loadConfig();\n const credentials = {\n apiKey,\n endpoint: endpoint ?? config.endpoint,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(credentials, null, 2));\n}\n\n/**\n * Save full credentials including workspace and organization info\n * Used by browser auth flow which returns complete credential set\n */\nexport function saveFullCredentials(creds: FullCredentials): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n // Load existing credentials to preserve any custom settings\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n const credentials = {\n ...existingCredentials,\n apiKey: creds.apiKey,\n endpoint: creds.endpoint ?? existingCredentials.endpoint ?? 'https://api.mutagent.io',\n defaultWorkspace: creds.workspaceId ?? existingCredentials.defaultWorkspace,\n defaultOrganization: creds.organizationId ?? existingCredentials.defaultOrganization,\n expiresAt: creds.expiresAt,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(credentials, null, 2));\n}\n\nexport function clearCredentials(): void {\n if (existsSync(CREDENTIALS_FILE)) {\n writeFileSync(CREDENTIALS_FILE, JSON.stringify({}));\n }\n}\n\nexport function hasCredentials(): boolean {\n if (process.env.MUTAGENT_API_KEY) return true;\n if (!existsSync(CREDENTIALS_FILE)) return false;\n\n const credentials = parseJsonSafe(readFileSync(CREDENTIALS_FILE, 'utf-8'), credentialsSchema);\n return credentials?.apiKey !== undefined && credentials.apiKey !== '';\n}\n\nexport function getApiKey(): string | undefined {\n return process.env.MUTAGENT_API_KEY ?? loadConfig().apiKey;\n}\n\nexport function setDefaultWorkspace(workspaceId: string): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n const updated = {\n ...existingCredentials,\n defaultWorkspace: workspaceId,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(updated, null, 2));\n}\n\nexport function setDefaultOrganization(organizationId: string): void {\n if (!existsSync(CREDENTIALS_DIR)) {\n mkdirSync(CREDENTIALS_DIR, { recursive: true });\n }\n\n let existingCredentials: Record<string, unknown> = {};\n if (existsSync(CREDENTIALS_FILE)) {\n try {\n existingCredentials = JSON.parse(readFileSync(CREDENTIALS_FILE, 'utf-8')) as Record<string, unknown>;\n } catch {\n // Ignore parse errors, start fresh\n }\n }\n\n const updated = {\n ...existingCredentials,\n defaultOrganization: organizationId,\n };\n\n writeFileSync(CREDENTIALS_FILE, JSON.stringify(updated, null, 2));\n}\n",
6
6
  "export class MutagentError extends Error {\n constructor(\n public code: string,\n message: string,\n public suggestion?: string,\n public exitCode = 1\n ) {\n super(message);\n this.name = 'MutagentError';\n }\n\n toJSON(): { success: false; error: string; code: string; suggestedAction?: string } {\n return {\n success: false,\n error: this.message,\n code: this.code,\n suggestedAction: this.suggestion,\n };\n }\n}\n\nexport interface AuthenticationErrorOptions {\n suggestions?: string[];\n cause?: Error;\n}\n\nexport const AUTH_REMEDIATION_MESSAGE = [\n 'Authentication required. Options:',\n ' Interactive: mutagent auth login --browser',\n ' Non-interactive: export MUTAGENT_API_KEY=<your-key>',\n ' CI/CD: mutagent auth login --api-key <key>',\n].join('\\n');\n\nexport class AuthenticationError extends MutagentError {\n readonly suggestions: string[];\n override readonly cause?: Error;\n\n constructor(\n message?: string,\n options: AuthenticationErrorOptions = {}\n ) {\n super(\n 'AUTH_REQUIRED',\n message ?? 'Authentication required. Please run \"mutagent auth login\"',\n options.suggestions ? options.suggestions[0] : 'Run: mutagent auth login --browser',\n 2\n );\n this.suggestions = options.suggestions ?? [\n 'mutagent auth login --browser',\n 'export MUTAGENT_API_KEY=<your-key>',\n 'mutagent auth login --api-key <key>',\n ];\n this.suggestion = options.suggestions ? options.suggestions[0] : 'Run: mutagent auth login --browser';\n this.cause = options.cause;\n }\n}\n\nexport class ApiError extends MutagentError {\n readonly statusCode: number;\n\n constructor(status: number, message: string) {\n super(\n `API_${String(status)}`,\n message,\n status === 401 ? 'Check your API key with: mutagent auth status' : undefined,\n 1\n );\n this.statusCode = status;\n }\n}\n\nexport const WORKSPACE_REMEDIATION_MESSAGE = [\n 'Workspace context missing. To fix:',\n ' mutagent config set workspace <workspace-id> # Set default workspace',\n ' mutagent workspaces list # List available workspaces',\n].join('\\n');\n\nexport class WorkspaceContextError extends MutagentError {\n constructor(message?: string) {\n super(\n 'WORKSPACE_REQUIRED',\n message ?? 'Workspace context is required but not configured',\n 'Run: mutagent config set workspace <workspace-id>',\n 3\n );\n }\n}\n\nexport class ValidationError extends MutagentError {\n constructor(message: string) {\n super(\n 'VALIDATION_ERROR',\n message,\n 'Check the command syntax with: mutagent <command> --help',\n 1\n );\n }\n}\n\n// =============================================================================\n// Additional Error Classes for Configuration & Auth System\n// =============================================================================\n\nexport class CredentialsExpiredError extends AuthenticationError {\n readonly expiredAt: Date;\n\n constructor(expiredAt: Date) {\n super();\n this.expiredAt = expiredAt;\n this.code = 'AUTH_EXPIRED';\n this.message = `Credentials expired at ${expiredAt.toISOString()}`;\n this.suggestion = 'Run \"mutagent auth login\" to refresh your credentials';\n }\n}\n\nexport class InvalidApiKeyError extends MutagentError {\n constructor(keyPreview?: string) {\n const preview = keyPreview ? ` (received: \"${keyPreview}...\")` : '';\n super(\n 'INVALID_API_KEY',\n `Invalid API key format${preview}`,\n 'API keys should start with \"sk_\" or \"sk-\" and be at least 20 characters',\n 2\n );\n }\n}\n\nexport interface ConfigErrorOptions {\n cause?: Error;\n suggestions?: string[];\n configPath?: string;\n}\n\nexport class ConfigError extends MutagentError {\n readonly configPath?: string;\n readonly suggestions: string[];\n override readonly cause?: Error;\n\n constructor(\n message: string,\n options: ConfigErrorOptions = {}\n ) {\n super(\n 'CONFIG_ERROR',\n message,\n options.suggestions ? options.suggestions[0] : 'Run \"mutagent config validate\" to check your configuration',\n 3\n );\n this.configPath = options.configPath;\n this.suggestions = options.suggestions ?? ['Run \"mutagent config validate\" to check your configuration'];\n this.suggestion = options.suggestions ? options.suggestions[0] : 'Run \"mutagent config validate\" to check your configuration';\n this.cause = options.cause;\n }\n}\n\nexport class ConfigNotFoundError extends ConfigError {\n constructor(configPath: string) {\n super(\n `Configuration file not found: ${configPath}`,\n { suggestions: ['Create a configuration file with \"mutagent config init\" or use --config'] }\n );\n this.code = 'CONFIG_NOT_FOUND';\n this.suggestion = 'Create a configuration file with \"mutagent config init\" or use --config';\n }\n}\n\nexport class ConfigParseError extends ConfigError {\n readonly parseError: Error;\n\n constructor(\n configPath: string,\n parseError: Error\n ) {\n super(\n `Failed to parse configuration file: ${configPath}`,\n { suggestions: ['Validate your JSON/JavaScript syntax and check for trailing commas'] }\n );\n this.code = 'CONFIG_PARSE_ERROR';\n this.suggestion = 'Validate your JSON/JavaScript syntax and check for trailing commas';\n this.parseError = parseError;\n }\n}\n\nexport interface PermissionErrorOptions {\n cause?: Error;\n}\n\nexport class PermissionError extends MutagentError {\n readonly path?: string;\n readonly operation: string;\n override readonly cause?: Error;\n\n constructor(\n operation: string,\n path?: string,\n options: PermissionErrorOptions = {}\n ) {\n const pathMsg = path ? ` at ${path}` : '';\n super(\n 'PERMISSION_ERROR',\n `Permission denied: ${operation}${pathMsg}`,\n 'Check file permissions and ensure the file is not read-only',\n 8\n );\n this.operation = operation;\n this.path = path;\n this.cause = options.cause;\n }\n}\n\nexport class NetworkError extends MutagentError {\n readonly url?: string;\n readonly statusCode?: number;\n\n constructor(\n message = 'Network error',\n url?: string,\n statusCode?: number\n ) {\n super(\n 'NETWORK_ERROR',\n message,\n 'Check your internet connection and verify the server URL',\n 5\n );\n this.url = url;\n this.statusCode = statusCode;\n }\n}\n\nexport class RateLimitError extends NetworkError {\n readonly retryAfter?: number;\n\n constructor(\n retryAfter?: number\n ) {\n super(\n 'Rate limit exceeded',\n undefined,\n 429\n );\n this.code = 'RATE_LIMIT_ERROR';\n this.suggestion = retryAfter \n ? `Wait ${String(retryAfter)} seconds before retrying`\n : 'Wait a few seconds before retrying';\n this.retryAfter = retryAfter;\n this.exitCode = 6;\n }\n}\n\nexport class NotFoundError extends MutagentError {\n constructor(resource: string, id: string) {\n super(\n 'NOT_FOUND',\n `${resource} not found: ${id}`,\n `Check the ID and try again. List available ${resource.toLowerCase()}s with the appropriate list command.`,\n 1\n );\n }\n}\n\nexport class QuotaExceededError extends MutagentError {\n constructor(message?: string) {\n super(\n 'QUOTA_EXCEEDED',\n message ?? 'Quota exceeded',\n 'Check your plan limits or contact support to upgrade',\n 1\n );\n }\n}\n\nexport class PrerequisiteMissingError extends MutagentError {\n constructor(what: string, howToFix: string) {\n super(\n 'PREREQUISITE_MISSING',\n what,\n howToFix,\n 1\n );\n }\n}\n\nexport class ProviderError extends MutagentError {\n constructor(message: string, suggestion?: string) {\n super(\n 'PROVIDER_ERROR',\n message,\n suggestion ?? 'Check your provider configuration with: mutagent providers list',\n 1\n );\n }\n}\n\n// =============================================================================\n// Error Factory Functions\n// =============================================================================\n\nexport function createErrorFromUnknown(error: unknown): MutagentError {\n if (error instanceof MutagentError) {\n return error;\n }\n\n if (error instanceof Error) {\n return new MutagentError(\n 'UNKNOWN_ERROR',\n error.message,\n undefined,\n 1\n );\n }\n\n return new MutagentError(\n 'UNKNOWN_ERROR',\n typeof error === 'string' ? error : 'An unknown error occurred',\n undefined,\n 1\n );\n}\n\nexport function handleError(error: unknown, isJson: boolean): never {\n if (error instanceof MutagentError) {\n if (isJson) {\n const jsonOutput = error.toJSON();\n // Include remediation info for auth errors\n if (error instanceof AuthenticationError) {\n (jsonOutput as Record<string, unknown>).remediation = {\n interactive: 'mutagent auth login --browser',\n nonInteractive: 'export MUTAGENT_API_KEY=<your-key>',\n ciCd: 'mutagent auth login --api-key <key>',\n };\n }\n // Include remediation info for workspace context errors\n if (error instanceof WorkspaceContextError) {\n (jsonOutput as Record<string, unknown>).remediation = {\n setWorkspace: 'mutagent config set workspace <workspace-id>',\n listWorkspaces: 'mutagent workspaces list',\n };\n }\n // Include auth recovery hint for 403 API errors\n if (error instanceof ApiError && error.statusCode === 403) {\n (jsonOutput as Record<string, unknown>).remediation = {\n interactive: 'mutagent auth login --browser',\n nonInteractive: 'export MUTAGENT_API_KEY=<your-key>',\n checkPermissions: 'Verify your API key has the required permissions',\n };\n }\n // Include _agentGuidance for AI agents to self-correct\n if (error.suggestion) {\n const helpMatch = /^Run:\\s+(mutagent\\s+[^\\n]+--help)/.exec(error.suggestion);\n const helpCommand = helpMatch ? helpMatch[1] : 'mutagent --help';\n (jsonOutput as Record<string, unknown>)._agentGuidance = {\n helpCommand,\n suggestion: error.suggestion,\n };\n }\n console.log(JSON.stringify(jsonOutput, null, 2));\n } else {\n console.error(`Error: ${error.message}`);\n if (error instanceof AuthenticationError) {\n console.error('');\n console.error(AUTH_REMEDIATION_MESSAGE);\n } else if (error instanceof WorkspaceContextError) {\n console.error('');\n console.error(WORKSPACE_REMEDIATION_MESSAGE);\n } else if (error instanceof ApiError && error.statusCode === 403) {\n console.error('');\n console.error('Access denied. To fix:');\n console.error(' mutagent auth login --browser # Re-authenticate');\n console.error(' export MUTAGENT_API_KEY=mt_xxx # Or use a different API key');\n } else if (error instanceof ValidationError) {\n if (error.suggestion) {\n console.error(`Suggestion: ${error.suggestion}`);\n }\n console.error('');\n console.error('Run `mutagent <command> --help` for usage information.');\n } else if (error.suggestion) {\n console.error(`Suggestion: ${error.suggestion}`);\n }\n // Show help hint for missing arguments or invalid input errors\n if (error.code === 'MISSING_ARGUMENTS' || error.code === 'INVALID_ARGUMENTS' || error.code === 'INVALID_INPUT') {\n console.error('');\n console.error('Run `mutagent <command> --help` for usage information.');\n }\n }\n process.exit(error.exitCode);\n }\n\n // Catch Speakeasy SDK internal errors that leaked past sdk-client wrapper\n if (error && typeof error === 'object') {\n const sdkErr = error as { name?: string; rawValue?: unknown; rawMessage?: string; message?: string };\n if (\n sdkErr.name === 'SDKValidationError' ||\n sdkErr.name === 'SDKError' ||\n sdkErr.rawValue !== undefined ||\n sdkErr.rawMessage !== undefined\n ) {\n const friendlyMessage = sdkErr.rawMessage ?? sdkErr.message ?? 'Request failed';\n const wrapped = new MutagentError(\n 'REQUEST_FAILED',\n friendlyMessage,\n 'Check your input and try again. Run the command with --help for usage details.'\n );\n if (isJson) {\n console.log(JSON.stringify(wrapped.toJSON(), null, 2));\n } else {\n console.error(`Error: ${wrapped.message}`);\n if (wrapped.suggestion) {\n console.error(`Suggestion: ${wrapped.suggestion}`);\n }\n }\n process.exit(1);\n }\n }\n\n // Unknown error\n const message = error instanceof Error ? error.message : 'Unknown error';\n if (isJson) {\n console.log(JSON.stringify({ success: false, error: message, code: 'UNKNOWN_ERROR' }, null, 2));\n } else {\n console.error(`Error: ${message}`);\n }\n process.exit(1);\n}\n",
7
7
  "// SDK Client wrapper for MutagenT API\n/// <reference lib=\"dom\" />\nimport { Mutagent, HTTPClient } from '@mutagent/sdk';\nimport type { Provider as SDKProviderEnum } from '@mutagent/sdk/models';\nimport type { Agent, CreateAgentInput, UpdateAgentInput, Workspace, Provider, ProviderTestResult } from '../types/index.js';\nimport { ApiError, AuthenticationError, MutagentError, WorkspaceContextError } from './errors.js';\nimport { getApiKey, loadConfig } from './config.js';\n\n/**\n * SDK Client Wrapper\n *\n * This class wraps the real @mutagent/sdk to provide a consistent interface\n * for CLI commands. It maps the SDK's method signatures to the interface\n * expected by the CLI.\n */\nclass SDKClientWrapper {\n private sdk: Mutagent;\n private apiKey: string;\n private endpoint: string;\n private workspaceId?: string;\n private organizationId?: string;\n\n constructor(opts: { apiKey: string; serverURL?: string; workspaceId?: string; organizationId?: string }) {\n this.apiKey = opts.apiKey;\n this.endpoint = opts.serverURL ?? 'http://localhost:3003';\n this.workspaceId = opts.workspaceId;\n this.organizationId = opts.organizationId;\n\n // Create HTTP client with tenancy header injection\n const httpClient = new HTTPClient();\n httpClient.addHook(\"beforeRequest\", (req) => {\n if (this.workspaceId) req.headers.set(\"x-workspace-id\", this.workspaceId);\n if (this.organizationId) req.headers.set(\"x-organization-id\", this.organizationId);\n return req;\n });\n\n this.sdk = new Mutagent({\n security: {\n apiKey: this.apiKey,\n },\n serverURL: this.endpoint,\n httpClient,\n });\n }\n\n /**\n * Helper to handle SDK errors and convert them to CLI errors.\n * Masks Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n * so users see clean, actionable messages instead of raw stack traces.\n */\n private handleError(error: unknown): never {\n if (error && typeof error === 'object') {\n const err = error as { statusCode?: number; message?: string; body?: string; name?: string; rawValue?: unknown; rawMessage?: string };\n\n if (err.statusCode === 401) {\n throw new AuthenticationError();\n }\n if (err.statusCode === 403) {\n throw new ApiError(403, err.message ?? err.body ?? 'Access denied');\n }\n\n // Detect workspace/org context errors from the server\n const errMessage = (err.message ?? err.body ?? '').toLowerCase();\n if (\n errMessage.includes('workspace') && (errMessage.includes('missing') || errMessage.includes('required')) ||\n errMessage.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(err.message ?? err.body ?? undefined);\n }\n\n if (err.statusCode) {\n throw new ApiError(err.statusCode, err.message ?? err.body ?? 'Unknown error');\n }\n\n // Catch Speakeasy SDK internal errors (SDKValidationError, SDKError, etc.)\n if (\n err.name === 'SDKValidationError' ||\n err.name === 'SDKError' ||\n err.rawValue !== undefined ||\n err.rawMessage !== undefined\n ) {\n const friendlyMessage = err.rawMessage ?? err.message ?? 'Request failed';\n throw new MutagentError(\n 'REQUEST_FAILED',\n friendlyMessage,\n 'Check your input and try again. Run the command with --help for usage details.'\n );\n }\n }\n\n // Catch network errors (fetch failures, DNS resolution, etc.)\n if (error instanceof TypeError && typeof error.message === 'string') {\n if (error.message.includes('fetch') || error.message.includes('network') || error.message.includes('ECONNREFUSED')) {\n throw new MutagentError(\n 'NETWORK_ERROR',\n 'Unable to connect to the MutagenT server',\n 'Check your internet connection and verify the server URL with: mutagent config list'\n );\n }\n }\n\n // Last resort: wrap unknown errors in MutagentError\n if (error instanceof Error) {\n throw new MutagentError(\n 'REQUEST_FAILED',\n error.message,\n 'Run the command with --help for usage details'\n );\n }\n\n throw new MutagentError(\n 'UNKNOWN_ERROR',\n 'An unexpected error occurred',\n 'Run the command with --help for usage details'\n );\n }\n\n /**\n * Helper for direct HTTP requests (for endpoints not yet in SDK)\n */\n private async request<T>(path: string, options?: RequestInit): Promise<T> {\n // Convert Headers object to plain object if needed\n const optHeaders = options?.headers;\n let extraHeaders: Record<string, string> = {};\n if (optHeaders instanceof Headers) {\n optHeaders.forEach((value, key) => {\n extraHeaders[key] = value;\n });\n } else if (optHeaders) {\n extraHeaders = optHeaders as Record<string, string>;\n }\n\n // Build tenancy headers from stored config\n const tenancyHeaders: Record<string, string> = {};\n if (this.workspaceId) tenancyHeaders['x-workspace-id'] = this.workspaceId;\n if (this.organizationId) tenancyHeaders['x-organization-id'] = this.organizationId;\n\n const response = await fetch(`${this.endpoint}${path}`, {\n ...options,\n headers: {\n 'x-api-key': this.apiKey,\n 'Content-Type': 'application/json',\n ...tenancyHeaders,\n ...extraHeaders,\n },\n });\n\n if (!response.ok) {\n if (response.status === 401) {\n throw new AuthenticationError();\n }\n if (response.status === 403) {\n throw new ApiError(403, await response.text() || 'Access denied');\n }\n const error = await response.text();\n // Detect workspace context errors from the server response body\n const errorLower = error.toLowerCase();\n if (\n errorLower.includes('workspace') && (errorLower.includes('missing') || errorLower.includes('required')) ||\n errorLower.includes('x-workspace-id')\n ) {\n throw new WorkspaceContextError(error);\n }\n throw new ApiError(response.status, error);\n }\n\n return response.json() as Promise<T>;\n }\n\n // =========================================================================\n // AGENTS\n // =========================================================================\n\n async listAgents(filters?: { limit?: number; offset?: number; name?: string; status?: string }): Promise<{ data: Agent[]; total: number }> {\n try {\n const response = await this.sdk.agents.listAgents({\n limit: filters?.limit,\n offset: filters?.offset,\n name: filters?.name,\n status: filters?.status,\n });\n return {\n data: response.result.data as unknown as Agent[],\n total: response.result.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getAgent(id: string): Promise<Agent> {\n try {\n const response = await this.sdk.agents.getAgent({\n id: parseInt(id, 10),\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createAgent(data: CreateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.createAgent({\n name: data.name,\n slug: data.slug,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updateAgent(id: string, data: UpdateAgentInput): Promise<Agent> {\n try {\n const response = await this.sdk.agents.updateAgent({\n id: parseInt(id, 10),\n body: {\n name: data.name ?? undefined,\n description: data.description ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n model: data.model ?? undefined,\n maxTurns: data.maxTurns ?? undefined,\n permissionMode: data.permissionMode ?? undefined,\n allowedTools: data.allowedTools ?? undefined,\n disallowedTools: data.disallowedTools ?? undefined,\n status: data.status ?? undefined,\n isPublic: data.isPublic ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n },\n });\n return response as unknown as Agent;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteAgent(id: string): Promise<void> {\n try {\n await this.sdk.agents.deleteAgent({\n id: parseInt(id, 10),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // WORKSPACES\n // =========================================================================\n\n async listWorkspaces(filters?: { limit?: number; offset?: number }): Promise<{ data: Workspace[]; total: number }> {\n try {\n const response = await this.sdk.workspaces.listWorkspaces({\n includeInactive: false,\n });\n // SDK returns { workspaces: [...], total } but CLI expects { data: [...], total }\n const workspaces = response.workspaces as unknown as Workspace[];\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? workspaces.length;\n return {\n data: workspaces.slice(offset, offset + limit),\n total: response.total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getWorkspace(id: string): Promise<Workspace> {\n try {\n const response = await this.sdk.workspaces.getWorkspace({\n wsId: id,\n });\n return response as unknown as Workspace;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // PROVIDERS\n // =========================================================================\n\n async listProviders(filters?: { limit?: number; offset?: number; type?: string }): Promise<{ data: Provider[]; total: number }> {\n try {\n const response = await this.sdk.providerConfigs.listProviders({\n provider: filters?.type,\n includeInactive: true,\n workspaceId: this.workspaceId,\n organizationId: this.organizationId,\n });\n // SDK (Speakeasy-generated) returns ProviderConfigsList: { configs: [...], total }\n // Guard against SDK regen wrapping the payload in a `result` envelope.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const raw = response as any;\n const configs = (raw.result?.configs ?? raw.configs ?? []) as Provider[];\n const total: number = raw.result?.total ?? raw.total ?? configs.length;\n // Apply client-side pagination if needed\n const offset = filters?.offset ?? 0;\n const limit = filters?.limit ?? configs.length;\n return {\n data: configs.slice(offset, offset + limit),\n total,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getProvider(id: string): Promise<Provider> {\n try {\n const response = await this.sdk.providerConfigs.getProvider({\n id: id,\n });\n return response as unknown as Provider;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getModelsCatalog(): Promise<{ models: { id: string; displayName: string; provider: { id: string; name: string; kind: string }; roles: string[] }[] }> {\n try {\n const wsId = this.workspaceId;\n if (!wsId) return { models: [] };\n const qs = `?workspaceId=${encodeURIComponent(wsId)}`;\n return await this.request<{ models: { id: string; displayName: string; provider: { id: string; name: string; kind: string }; roles: string[] }[] }>(`/api/providers/catalog${qs}`);\n } catch {\n return { models: [] };\n }\n }\n\n getCurrentWorkspaceId(): string | undefined {\n return this.workspaceId;\n }\n\n getCurrentOrgId(): string | undefined {\n return this.organizationId;\n }\n\n /**\n * Auto-resolve organization and workspace context when not provided via config.\n * Called once at client init so ALL commands benefit from tenancy headers.\n */\n async ensureContext(): Promise<void> {\n if (this.organizationId && this.workspaceId) return;\n\n if (!this.organizationId) {\n let orgs = await fetchOrganizations(this.apiKey, this.endpoint).catch(() => []);\n if (orgs.length === 0) {\n // Retry once after 1s for transient network failures\n await new Promise(r => setTimeout(r, 1000));\n orgs = await fetchOrganizations(this.apiKey, this.endpoint).catch(() => []);\n }\n if (orgs.length > 0 && orgs[0]) {\n this.organizationId = orgs[0].id;\n }\n }\n\n if (!this.workspaceId && this.organizationId) {\n try {\n const response = await this.sdk.workspaces.listWorkspaces({ includeInactive: false });\n const workspaces = response.workspaces as unknown as Workspace[];\n if (workspaces.length > 0) {\n const defaultWs = workspaces.find((ws: Workspace) => ws.isDefault) ?? workspaces[0];\n if (defaultWs) this.workspaceId = String(defaultWs.id);\n }\n } catch {\n /* best-effort */\n }\n }\n }\n\n async testProvider(id: string): Promise<ProviderTestResult> {\n try {\n const response = await this.sdk.providerConfigs.testProvider({\n id: id,\n });\n return response as unknown as ProviderTestResult;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createProvider(data: {\n name: string;\n provider: string;\n apiKey: string;\n scope?: { workspaceId?: string; organizationId?: string; userId?: string };\n baseUrl?: string;\n isDefault?: boolean;\n }): Promise<Provider> {\n try {\n const response = await this.sdk.providerConfigs.createProvider({\n name: data.name,\n provider: data.provider as SDKProviderEnum,\n apiKey: data.apiKey,\n scope: data.scope ?? {},\n baseUrl: data.baseUrl,\n isDefault: data.isDefault,\n });\n return response as unknown as Provider;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updateProvider(id: string, data: {\n name?: string;\n apiKey?: string;\n isActive?: boolean;\n isDefault?: boolean;\n baseUrl?: string | null;\n }): Promise<Provider> {\n try {\n const response = await this.sdk.providerConfigs.updateProvider({\n id,\n body: {\n name: data.name,\n apiKey: data.apiKey,\n isActive: data.isActive,\n isDefault: data.isDefault,\n baseUrl: data.baseUrl,\n },\n });\n return response as unknown as Provider;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteProvider(id: string): Promise<void> {\n try {\n await this.sdk.providerConfigs.deleteProvider({ id });\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n\n// Singleton SDK client\nlet sdkClient: SDKClientWrapper | null = null;\n\nexport async function getSDKClient(): Promise<SDKClientWrapper> {\n if (!sdkClient) {\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new AuthenticationError();\n }\n\n const config = loadConfig();\n sdkClient = new SDKClientWrapper({\n apiKey: apiKey,\n serverURL: config.endpoint,\n workspaceId: config.defaultWorkspace,\n organizationId: config.defaultOrganization,\n });\n\n // Auto-resolve org + workspace context so all commands get tenancy headers\n await sdkClient.ensureContext().catch((err: unknown) => {\n // Log to stderr (not stdout — don't pollute JSON output)\n if (process.env.MUTAGENT_DEBUG) {\n const message = err instanceof Error ? err.message : String(err);\n process.stderr.write(`[mutagent] Context resolution failed: ${message}\\n`);\n }\n });\n }\n\n return sdkClient;\n}\n\nexport function resetSDKClient(): void {\n sdkClient = null;\n}\n\nexport async function validateApiKey(apiKey: string, endpoint: string): Promise<boolean> {\n // Use /api/providers — works with workspace-scoped mg_live_ keys without requiring org context\n try {\n const response = await fetch(`${endpoint}/api/providers`, {\n headers: { 'x-api-key': apiKey },\n });\n return response.ok;\n } catch {\n return false;\n }\n}\n\n/**\n * Fetch organizations for the authenticated API key.\n * Returns array of { id, name } or empty array on failure.\n */\nexport async function fetchOrganizations(apiKey: string, endpoint: string): Promise<{ id: string; name: string }[]> {\n try {\n const response = await fetch(`${endpoint}/api/organizations`, {\n headers: { 'x-api-key': apiKey },\n });\n if (!response.ok) return [];\n const data = await response.json() as { data?: { id: string; name: string }[] };\n return data.data ?? [];\n } catch {\n return [];\n }\n}\n\n/**\n * Fetch workspaces for the given organization.\n * Returns array of { id, name, isDefault } or empty array on failure.\n */\nexport async function fetchWorkspaces(apiKey: string, endpoint: string, orgId: string): Promise<{ id: string; name: string; isDefault?: boolean }[]> {\n try {\n const response = await fetch(`${endpoint}/api/workspaces`, {\n headers: { 'x-api-key': apiKey, 'x-organization-id': orgId },\n });\n if (!response.ok) return [];\n const data = await response.json() as { workspaces?: { id: string; name: string; isDefault?: boolean }[] };\n return data.workspaces ?? [];\n } catch {\n return [];\n }\n}\n\n// Export the wrapper class for type compatibility\nexport { SDKClientWrapper as MutagentSDK };\n",
8
- "#!/usr/bin/env node\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { readFileSync, existsSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { createAuthCommand } from '../commands/auth.js';\nimport { createLoginCommand } from '../commands/login.js';\nimport { createConfigCommand } from '../commands/config.js';\nimport { createWorkspacesCommand } from '../commands/workspaces.js';\nimport { createProvidersCommand } from '../commands/providers/index.js';\nimport { createInitCommand } from '../commands/init.js';\nimport { createSkillsCommand } from '../commands/skills.js';\nimport { createUsageCommand } from '../commands/usage.js';\nimport { createHooksCommand } from '../commands/hooks/index.js';\nimport { createFeedbackCommand } from '../commands/feedback.js';\nimport { createInstallCommand } from '../commands/install/index.js';\nimport { hasCredentials } from '../lib/config.js';\nimport { hasRcConfig } from '../commands/init.js';\nimport { setCliVersion, getCompatMetadata } from '../lib/output.js';\n\n// NOTE (#1184 reduced surface): the active command surface was reduced —\n// several legacy command groups were retired. `agents` is deferred (source\n// kept dormant in ../commands/agents/, intentionally NOT registered). The\n// `helix` command group is not built yet — its install capability lives under\n// `install`. Claude Code session telemetry is handled by `hooks` via its own\n// batch-upload endpoint (unrelated to any retired read/query surface).\n\n/**\n * CLI Context Interface\n * Passed to all subcommands for shared state\n */\nexport interface CliContext {\n /** Output results as JSON */\n json: boolean;\n /** MutagenT API key */\n apiKey?: string;\n /** MutagenT server endpoint */\n endpoint?: string;\n /** Enable verbose logging */\n verbose: boolean;\n}\n\n// Read version: compile-time define > package.json > hardcoded fallback\nlet cliVersion = '0.1.1';\nif (process.env.CLI_VERSION) {\n cliVersion = process.env.CLI_VERSION;\n} else {\n try {\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkgPath = join(__dirname, '..', '..', 'package.json');\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as { version?: string };\n cliVersion = pkg.version ?? cliVersion;\n } catch {\n // Fallback to hardcoded version\n }\n}\n\n// Register cliVersion for _compat metadata injection (Scope D)\nsetCliVersion(cliVersion);\n\nconst program = new Command();\n\nprogram\n .name('mutagent')\n .description(`MutagenT CLI - command-line client for the MutagenT platform\n\n Documentation: https://docs.mutagent.io/cli\n Dashboard: https://app.mutagent.io`)\n .option('-v, --version', 'Display the version number')\n .option('--json', 'Output results as JSON (for AI agents)')\n .option('--api-key <key>', 'MutagenT API key')\n .option('--endpoint <url>', 'MutagenT server endpoint')\n .option('--non-interactive', 'Disable interactive prompts (for CI/AI agents)')\n .configureHelp({\n sortSubcommands: true,\n showGlobalOptions: true,\n });\n\n// Central help hub — self-contained navigation for CI/CD, coding agents, and humans\nprogram.addHelpText('after', `\n${chalk.bold.cyan('WORKFLOWS:')}\n ${chalk.bold('Setup')} mutagent login → mutagent init → mutagent skills install\n ${chalk.bold('Lifecycle Tools')} mutagent install <diagnostics|evaluator> ${chalk.dim('(login-gated; helix pending #1191)')}\n ${chalk.bold('Feedback')} mutagent feedback send \"<what happened>\" --category <cli|helix|stage:<x>> ${chalk.dim('[--session <id>] [--attach-transcript]')}\n\n${chalk.dim('For CLI usage guidance for AI agents, see the Skill at')}\n${chalk.cyan('.claude/skills/mutagent-cli/SKILL.md')} ${chalk.dim('(install via')} ${chalk.cyan('mutagent skills install')}${chalk.dim(')')}\n\n${chalk.yellow('Non-Interactive Mode (CI/CD & Coding Agents):')}\n export MUTAGENT_API_KEY=mt_... ${chalk.dim('or')} --api-key mt_...\n --json ${chalk.dim('for structured output')} --non-interactive ${chalk.dim('to disable prompts')}\n\n${chalk.yellow('Command Navigation:')}\n mutagent login ${chalk.dim('Login (browser OAuth — recommended)')}\n mutagent auth status ${chalk.dim('Check auth + workspace')}\n mutagent init ${chalk.dim('Initialize project (.mutagentrc.json)')}\n mutagent workspaces list --json ${chalk.dim('List workspaces (verify ID)')}\n mutagent config set workspace <id> ${chalk.dim('Set active workspace')}\n mutagent usage --json ${chalk.dim('Show account usage + provider status')}\n\n mutagent providers list --json ${chalk.dim('List configured BYOK providers')}\n mutagent providers list --models ${chalk.dim('See available models per provider')}\n\n mutagent install diagnostics ${chalk.dim('Install diagnostics from npm (login-gated)')}\n mutagent install evaluator --version 1.2.3 ${chalk.dim('Pin a version')}\n mutagent install --help ${chalk.dim('helix (pending #1191) | diagnostics | evaluator')}\n\n mutagent skills install ${chalk.dim('Install the MutagenT CLI skill for AI agents')}\n mutagent hooks --help ${chalk.dim('Hook setup for Claude Code session telemetry upload')}\n\n${chalk.bold.red('Report Issues:')}\n Hit a bug? Run: ${chalk.cyan('mutagent feedback send \"describe what went wrong\" --category cli')}\n Lifecycle-stage feedback: ${chalk.cyan('mutagent feedback send \"eval gate unclear\" --category stage:evaluate')}\n Link to a session: ${chalk.cyan('mutagent feedback send \"...\" --session <session-id>')}\n Attach your coding-agent session transcript: ${chalk.cyan('mutagent feedback send \"...\" --attach-transcript')}\n ${chalk.dim('--category accepts: cli | helix | stage:<spec|build|evaluate|diagnose|optimize>')}\n\n${chalk.yellow('Directive System:')}\n Every --json response may include:\n ${chalk.bold('_directive.display')} Type tag — 'status_card' for card-kind directives (drives test/docs guards)\n ${chalk.bold('_directive.renderedCard')} Pre-formatted card ${chalk.red('(MUST echo verbatim in chat whenever this field exists — see SKILL.md Verbatim Card Display Protocol)')}\n ${chalk.bold('_directive.instruction')} Next step for the agent (self-sufficient, no Skill required)\n ${chalk.bold('_directive.next')} Array of suggested follow-up commands\n ${chalk.bold('_links')} Dashboard/API URLs (format as markdown links)\n ${chalk.bold('_compat')} Compat metadata: cliVersion, skillVersion, skillMinCliVersion\n\n${chalk.yellow('AI Agent Rules (MANDATORY for coding agents):')}\n 0. If .claude/skills/mutagent-cli/SKILL.md does not exist, run mutagent skills install first\n 1. Login (two paths):\n - CI / fully automated: export MUTAGENT_API_KEY=mt_... then mutagent login --json\n - Helping a user onboard: mutagent login --browser --json\n (CLI prints an auth URL — surface it to the user verbatim, then the CLI\n polls for up to 5 minutes while the user authorizes in their browser.\n This IS agent-compatible. --non-interactive is NOT needed with --browser.)\n 2. EVERY command MUST include --json (no exceptions)\n 3. Run <command> --help BEFORE first use of any command\n 4. Parse _directive.renderedCard and copy it into your CHAT RESPONSE verbatim\n ${chalk.red('HARD STOP')}: do NOT run further commands until the card is rendered in chat\n 5. After mutagent init, verify workspace: mutagent workspaces list --json\n 6. ALL user interaction via AskUserQuestion — CLI is non-interactive\n${!hasCredentials() ? '\\n' + chalk.yellow(' Warning: Not authenticated. Run: mutagent login') + '\\n' : ''}${!hasRcConfig() ? '\\n' + chalk.green(' Get started: mutagent init') + '\\n' : ''}`);\n\n// Handle --version flag early (before parse) since it's a global option, not a subcommand\n// Commander's preAction hook only fires with subcommands — raw argv check is needed\nconst rawArgs = process.argv.slice(2);\nif (rawArgs.includes('-v') || rawArgs.includes('--version')) {\n if (rawArgs.includes('--json')) {\n // Scope D: include _compat metadata so the Skill can validate compatibility\n console.log(JSON.stringify({\n version: cliVersion,\n _compat: getCompatMetadata(cliVersion),\n }));\n } else {\n console.log(cliVersion);\n }\n process.exit(0);\n}\n\n// Propagate global options to env vars before subcommands run\n// This ensures --api-key, --endpoint, and --non-interactive flags are picked up\nprogram.hook('preAction', (thisCommand) => {\n const globalOpts: { apiKey?: string; endpoint?: string; nonInteractive?: boolean } = thisCommand.optsWithGlobals();\n if (globalOpts.apiKey && !process.env.MUTAGENT_API_KEY) {\n process.env.MUTAGENT_API_KEY = globalOpts.apiKey;\n }\n if (globalOpts.endpoint && !process.env.MUTAGENT_ENDPOINT) {\n process.env.MUTAGENT_ENDPOINT = globalOpts.endpoint;\n }\n if (globalOpts.nonInteractive || process.env.CI === 'true' || !process.stdin.isTTY) {\n process.env.MUTAGENT_NON_INTERACTIVE = 'true';\n }\n});\n\n// Add commands — reduced active surface (#1184)\nprogram.addCommand(createInitCommand()); // Init wizard\nprogram.addCommand(createLoginCommand()); // Top-level login\nprogram.addCommand(createAuthCommand());\nprogram.addCommand(createConfigCommand());\nprogram.addCommand(createWorkspacesCommand());\nprogram.addCommand(createProvidersCommand());\nprogram.addCommand(createSkillsCommand()); // Skills install\nprogram.addCommand(createUsageCommand()); // Usage & quota\nprogram.addCommand(createHooksCommand()); // Hook handlers (Claude Code telemetry)\nprogram.addCommand(createInstallCommand()); // Login-gated meta-installer (helix/diagnostics/evaluator)\nprogram.addCommand(createFeedbackCommand()); // Product feedback\n\n// C5: Runtime SKILL check — print a hint if SKILL is missing in interactive mode\n// Only print when running interactively (not --json, not CI, not hooks/skills commands)\nconst isInteractive = process.stdin.isTTY && !rawArgs.includes('--json') && process.env.CI !== 'true';\nconst isSkillCommand = rawArgs[0] === 'skills' || rawArgs[0] === 'hooks';\nif (isInteractive && !isSkillCommand) {\n const skillPath = join(process.cwd(), '.claude/skills/mutagent-cli/SKILL.md');\n if (!existsSync(skillPath)) {\n console.log(\n chalk.dim('MutagenT SKILL not installed. Install it for AI agent support? Run:'),\n chalk.cyan('mutagent skills install')\n );\n }\n}\n\n// Parse arguments\nprogram.parse();\n",
8
+ "#!/usr/bin/env node\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { createAuthCommand } from '../commands/auth.js';\nimport { createLoginCommand } from '../commands/login.js';\nimport { createConfigCommand } from '../commands/config.js';\nimport { createWorkspacesCommand } from '../commands/workspaces.js';\nimport { createProvidersCommand } from '../commands/providers/index.js';\nimport { createInitCommand } from '../commands/init.js';\nimport { createSkillsCommand } from '../commands/skills.js';\nimport { createUsageCommand } from '../commands/usage.js';\nimport { createHooksCommand } from '../commands/hooks/index.js';\nimport { createFeedbackCommand } from '../commands/feedback.js';\nimport { createInstallCommand } from '../commands/install/index.js';\nimport { hasCredentials } from '../lib/config.js';\nimport { hasRcConfig } from '../commands/init.js';\nimport { setCliVersion, getCompatMetadata } from '../lib/output.js';\n\n// NOTE (#1184 reduced surface): the active command surface was reduced —\n// several legacy command groups were retired. `agents` is deferred (source\n// kept dormant in ../commands/agents/, intentionally NOT registered). The\n// `helix` command group is not built yet — its install capability lives under\n// `install`. Claude Code session telemetry is handled by `hooks` via its own\n// batch-upload endpoint (unrelated to any retired read/query surface).\n\n/**\n * CLI Context Interface\n * Passed to all subcommands for shared state\n */\nexport interface CliContext {\n /** Output results as JSON */\n json: boolean;\n /** MutagenT API key */\n apiKey?: string;\n /** MutagenT server endpoint */\n endpoint?: string;\n /** Enable verbose logging */\n verbose: boolean;\n}\n\n// Read version: compile-time define > package.json > hardcoded fallback\nlet cliVersion = '0.1.1';\nif (process.env.CLI_VERSION) {\n cliVersion = process.env.CLI_VERSION;\n} else {\n try {\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkgPath = join(__dirname, '..', '..', 'package.json');\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as { version?: string };\n cliVersion = pkg.version ?? cliVersion;\n } catch {\n // Fallback to hardcoded version\n }\n}\n\n// Register cliVersion for _compat metadata injection (Scope D)\nsetCliVersion(cliVersion);\n\nconst program = new Command();\n\nprogram\n .name('mutagent')\n .description(`MutagenT CLI - command-line client for the MutagenT platform\n\n Documentation: https://docs.mutagent.io/cli\n Dashboard: https://app.mutagent.io`)\n .option('-v, --version', 'Display the version number')\n .option('--json', 'Output results as JSON (for AI agents)')\n .option('--api-key <key>', 'MutagenT API key')\n .option('--endpoint <url>', 'MutagenT server endpoint')\n .option('--non-interactive', 'Disable interactive prompts (for CI/AI agents)')\n .configureHelp({\n sortSubcommands: true,\n showGlobalOptions: true,\n });\n\n// Central help hub — self-contained navigation for CI/CD, coding agents, and humans\nprogram.addHelpText('after', `\n${chalk.bold.cyan('WORKFLOWS:')}\n ${chalk.bold('Setup')} mutagent login → mutagent init\n ${chalk.bold('Lifecycle Tools')} mutagent install <helix|diagnostics|evaluator> ${chalk.dim('(login-gated)')}\n ${chalk.bold('Feedback')} mutagent feedback send \"<what happened>\" --category <cli|helix|stage:<x>> ${chalk.dim('[--session <id>] [--attach-transcript]')}\n\n${chalk.dim('For CLI usage guidance for AI agents, see the Skill at')}\n${chalk.cyan('.claude/skills/mutagent-cli/SKILL.md')}\n\n${chalk.yellow('Non-Interactive Mode (CI/CD & Coding Agents):')}\n export MUTAGENT_API_KEY=mt_... ${chalk.dim('or')} --api-key mt_...\n --json ${chalk.dim('for structured output')} --non-interactive ${chalk.dim('to disable prompts')}\n\n${chalk.yellow('Command Navigation:')}\n mutagent login ${chalk.dim('Login (browser OAuth — recommended)')}\n mutagent auth status ${chalk.dim('Check auth + workspace')}\n mutagent init ${chalk.dim('Initialize project (.mutagentrc.json)')}\n mutagent workspaces list --json ${chalk.dim('List workspaces (verify ID)')}\n mutagent config set workspace <id> ${chalk.dim('Set active workspace')}\n mutagent usage --json ${chalk.dim('Show account usage + provider status')}\n\n mutagent providers list --json ${chalk.dim('List configured BYOK providers')}\n mutagent providers list --models ${chalk.dim('See available models per provider')}\n\n mutagent install helix ${chalk.dim('Install the ADL lifecycle conductor (login-gated)')}\n mutagent install evaluator --version 1.2.3 ${chalk.dim('Pin a version')}\n mutagent install --help ${chalk.dim('helix | diagnostics | evaluator')}\n\n mutagent hooks --help ${chalk.dim('Hook setup for Claude Code session telemetry upload')}\n\n${chalk.bold.red('Report Issues:')}\n Hit a bug? Run: ${chalk.cyan('mutagent feedback send \"describe what went wrong\" --category cli')}\n Lifecycle-stage feedback: ${chalk.cyan('mutagent feedback send \"eval gate unclear\" --category stage:evaluate')}\n Link to a session: ${chalk.cyan('mutagent feedback send \"...\" --session <session-id>')}\n Attach your coding-agent session transcript: ${chalk.cyan('mutagent feedback send \"...\" --attach-transcript')}\n ${chalk.dim('--category accepts: cli | helix | stage:<spec|build|evaluate|diagnose|optimize>')}\n\n${chalk.yellow('Directive System:')}\n Every --json response may include:\n ${chalk.bold('_directive.display')} Type tag — 'status_card' for card-kind directives (drives test/docs guards)\n ${chalk.bold('_directive.renderedCard')} Pre-formatted card ${chalk.red('(MUST echo verbatim in chat whenever this field exists — see SKILL.md Verbatim Card Display Protocol)')}\n ${chalk.bold('_directive.instruction')} Next step for the agent (self-sufficient, no Skill required)\n ${chalk.bold('_directive.next')} Array of suggested follow-up commands\n ${chalk.bold('_links')} Dashboard/API URLs (format as markdown links)\n ${chalk.bold('_compat')} Compat metadata: cliVersion, skillVersion, skillMinCliVersion\n\n${chalk.yellow('AI Agent Rules (MANDATORY for coding agents):')}\n 1. Login (two paths):\n - CI / fully automated: export MUTAGENT_API_KEY=mt_... then mutagent login --json\n - Helping a user onboard: mutagent login --browser --json\n (CLI prints an auth URL — surface it to the user verbatim, then the CLI\n polls for up to 5 minutes while the user authorizes in their browser.\n This IS agent-compatible. --non-interactive is NOT needed with --browser.)\n 2. EVERY command MUST include --json (no exceptions)\n 3. Run <command> --help BEFORE first use of any command\n 4. Parse _directive.renderedCard and copy it into your CHAT RESPONSE verbatim\n ${chalk.red('HARD STOP')}: do NOT run further commands until the card is rendered in chat\n 5. After mutagent init, verify workspace: mutagent workspaces list --json\n 6. ALL user interaction via AskUserQuestion — CLI is non-interactive\n${!hasCredentials() ? '\\n' + chalk.yellow(' Warning: Not authenticated. Run: mutagent login') + '\\n' : ''}${!hasRcConfig() ? '\\n' + chalk.green(' Get started: mutagent init') + '\\n' : ''}`);\n\n// Handle --version flag early (before parse) since it's a global option, not a subcommand\n// Commander's preAction hook only fires with subcommands — raw argv check is needed\nconst rawArgs = process.argv.slice(2);\nif (rawArgs.includes('-v') || rawArgs.includes('--version')) {\n if (rawArgs.includes('--json')) {\n // Scope D: include _compat metadata so the Skill can validate compatibility\n console.log(JSON.stringify({\n version: cliVersion,\n _compat: getCompatMetadata(cliVersion),\n }));\n } else {\n console.log(cliVersion);\n }\n process.exit(0);\n}\n\n// Propagate global options to env vars before subcommands run\n// This ensures --api-key, --endpoint, and --non-interactive flags are picked up\nprogram.hook('preAction', (thisCommand) => {\n const globalOpts: { apiKey?: string; endpoint?: string; nonInteractive?: boolean } = thisCommand.optsWithGlobals();\n if (globalOpts.apiKey && !process.env.MUTAGENT_API_KEY) {\n process.env.MUTAGENT_API_KEY = globalOpts.apiKey;\n }\n if (globalOpts.endpoint && !process.env.MUTAGENT_ENDPOINT) {\n process.env.MUTAGENT_ENDPOINT = globalOpts.endpoint;\n }\n if (globalOpts.nonInteractive || process.env.CI === 'true' || !process.stdin.isTTY) {\n process.env.MUTAGENT_NON_INTERACTIVE = 'true';\n }\n});\n\n// Add commands — reduced active surface (#1184)\nprogram.addCommand(createInitCommand()); // Init wizard\nprogram.addCommand(createLoginCommand()); // Top-level login\nprogram.addCommand(createAuthCommand());\nprogram.addCommand(createConfigCommand());\nprogram.addCommand(createWorkspacesCommand());\nprogram.addCommand(createProvidersCommand());\nprogram.addCommand(createSkillsCommand()); // Skills install\nprogram.addCommand(createUsageCommand()); // Usage & quota\nprogram.addCommand(createHooksCommand()); // Hook handlers (Claude Code telemetry)\nprogram.addCommand(createInstallCommand()); // Login-gated meta-installer (helix/diagnostics/evaluator)\nprogram.addCommand(createFeedbackCommand()); // Product feedback\n\n// Parse arguments\nprogram.parse();\n",
9
9
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { existsSync } from 'fs';\nimport { join } from 'path';\nimport { clearCredentials, getApiKey, loadConfig } from '../lib/config.js';\nimport { validateApiKey } from '../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError } from '../lib/errors.js';\nimport { runPostOnboarding } from './onboarding.js';\nimport { performLoginAction, buildLoginJsonResponse } from '../lib/auth-flow.js';\n\ninterface LoginOptions {\n endpoint: string;\n browser?: boolean;\n nonInteractive?: boolean;\n}\n\nexport function createAuthCommand(): Command {\n const auth = new Command('auth')\n .description('Authenticate with MutagenT platform')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth login\n ${chalk.dim('$')} mutagent auth login --browser\n ${chalk.dim('$')} mutagent auth status\n ${chalk.dim('$')} mutagent auth logout\n `);\n\n // Login command — back-compat alias for `mutagent login`\n // Both delegate to lib/auth-flow.ts performLoginAction.\n // See .memory/design-principles.md → \"Login Unification\".\n auth\n .command('login')\n .description('Authenticate and store API key')\n .option('--browser', 'Force browser-based authentication')\n .option('--non-interactive', 'Disable interactive prompts (auto-selects browser auth)')\n .option('--endpoint <url>', 'API endpoint', 'https://api.mutagent.io')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth login ${chalk.dim('# Interactive (choose method)')}\n ${chalk.dim('$')} mutagent auth login --browser ${chalk.dim('# Browser OAuth flow')}\n ${chalk.dim('$')} mutagent auth login --non-interactive ${chalk.dim('# Auto browser flow (AI agents)')}\n\n${chalk.dim('Note: this command is an alias for `mutagent login`.')}\n${chalk.dim('See `mutagent login --help` for full documentation.')}\n `)\n .action(async (options: LoginOptions) => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n try {\n const result = await performLoginAction({\n endpoint: options.endpoint,\n browser: options.browser,\n nonInteractive: options.nonInteractive,\n isJson,\n output,\n });\n\n if (isJson) {\n output.output(buildLoginJsonResponse(result));\n } else {\n output.success('Authenticated successfully');\n if (result.organization?.name) output.info(`Organization: ${result.organization.name}`);\n if (result.workspace?.name) output.info(`Workspace: ${result.workspace.name}`);\n output.info(`Endpoint: ${result.endpoint}`);\n output.info('Next: mutagent workspaces list --json');\n }\n\n // Post-onboarding wizard: only on first interactive login\n if (result.wasFirstLogin && process.stdin.isTTY && !isJson) {\n await runPostOnboarding();\n }\n } catch (error) {\n if (error instanceof MutagentError) {\n output.error(error.message);\n process.exit(error.exitCode);\n }\n throw error;\n }\n });\n\n\n // Status command\n auth\n .command('status')\n .description('Check authentication status')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth status\n ${chalk.dim('$')} mutagent auth status --json\n `)\n .action(async () => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n const apiKey = getApiKey();\n const config = loadConfig();\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n\n if (!apiKey) {\n if (isJson) {\n output.output({ authenticated: false, message: 'Not authenticated' });\n } else {\n output.error('Not authenticated');\n output.info('Run: mutagent auth login');\n }\n process.exit(0);\n }\n\n // Validate the key\n const isValid = await validateApiKey(apiKey, endpoint);\n\n // Check onboarding state\n const cwd = process.cwd();\n const hasOnboarding = existsSync(join(cwd, '.mutagentrc.json'));\n\n if (isJson) {\n const statusResult: Record<string, unknown> = {\n authenticated: isValid,\n endpoint,\n keyPrefix: `${apiKey.slice(0, 8)}...`,\n defaultWorkspace: config.defaultWorkspace,\n defaultOrganization: config.defaultOrganization,\n onboarding: hasOnboarding,\n };\n if (!isValid) {\n statusResult.message = 'Authentication invalid — run `mutagent auth login --browser`';\n statusResult.remediation = {\n interactive: 'mutagent auth login --browser',\n nonInteractive: 'export MUTAGENT_API_KEY=<your-key>',\n ciCd: 'export MUTAGENT_API_KEY=<key>',\n };\n }\n output.output(statusResult);\n } else {\n if (isValid) {\n output.success('Authentication: Authenticated');\n output.info(`Endpoint: ${endpoint}`);\n output.info(`Key: ${apiKey.slice(0, 8)}...`);\n if (config.defaultWorkspace) {\n output.info(`Workspace: ${config.defaultWorkspace}`);\n }\n if (config.defaultOrganization) {\n output.info(`Organization: ${config.defaultOrganization}`);\n }\n } else {\n output.error('Authentication: Invalid — run `mutagent auth login --browser`');\n console.error('');\n console.error('Authentication required. Options:');\n console.error(' Interactive: mutagent auth login --browser');\n console.error(' Non-interactive: export MUTAGENT_API_KEY=<your-key>');\n console.error(' CI/CD: export MUTAGENT_API_KEY=<key>');\n }\n\n // Onboarding status\n if (hasOnboarding) {\n output.success('Onboarding: Complete (.mutagentrc.json found)');\n } else {\n output.warn('Onboarding: Not initialized (run `mutagent init`)');\n }\n }\n\n if (!isValid) {\n process.exit(1);\n }\n });\n\n // Logout command\n auth\n .command('logout')\n .description('Clear stored credentials')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent auth logout\n `)\n .action(() => {\n const isJson = getJsonFlag(auth);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n clearCredentials();\n output.success('Logged out successfully');\n });\n\n return auth;\n}\n",
10
10
  "import chalk from 'chalk';\nimport { existsSync, readFileSync } from 'fs';\nimport { join } from 'path';\nimport type { Command } from 'commander';\nimport type { OutputFormat } from '../types/index.js';\n\n// ---------------------------------------------------------------------------\n// Compat metadata (Scope D)\n// ---------------------------------------------------------------------------\n\ninterface CompatMetadata {\n cliVersion: string;\n skillVersion: string;\n skillMinCliVersion: string;\n}\n\nlet _compatCache: CompatMetadata | null = null;\nlet _globalCliVersion = '0.0.0';\n\n/**\n * Set the global CLI version for compat metadata injection.\n * Called once from cli.ts after the version is resolved.\n */\nexport function setCliVersion(version: string): void {\n _globalCliVersion = version;\n _compatCache = null; // reset cache when version changes\n}\n\n/**\n * Build the _compat metadata block included in all --json output.\n * Reads SKILL.md frontmatter for metadata.skill_version and metadata.skill_min_cli_version.\n * Results are cached after the first call (process-lifetime cache).\n *\n * Per D4 (locked): warn-but-not-block when cliVersion < skillMinCliVersion.\n * The Skill compares these values and emits a prominent warn but continues.\n */\nexport function getCompatMetadata(cliVersion: string = _globalCliVersion): CompatMetadata {\n if (_compatCache !== null) return _compatCache;\n\n let skillVersion = 'unknown';\n let skillMinCliVersion = 'unknown';\n\n try {\n // Look for installed skill first (runtime path), then source path\n const candidatePaths = [\n join(process.cwd(), '.claude', 'skills', 'mutagent-cli', 'SKILL.md'),\n join(process.cwd(), 'mutagent-cli', '.claude', 'skills', 'mutagent-cli', 'SKILL.md'),\n ];\n for (const p of candidatePaths) {\n if (existsSync(p)) {\n const content = readFileSync(p, 'utf-8');\n // New spec shape: keys are indented under `metadata:` block, values are quoted strings.\n // Regex strips optional surrounding double-quotes from the captured value.\n const verMatch = /^\\s+skill_version:\\s+\"?([^\"\\n]+)\"?\\s*$/m.exec(content);\n const minMatch = /^\\s+skill_min_cli_version:\\s+\"?([^\"\\n]+)\"?\\s*$/m.exec(content);\n // Hard-error guard: if a `metadata:` block exists but neither key is found, throw so\n // the bug surfaces in CI rather than silently returning \"unknown\".\n if (/^metadata:/m.test(content) && !verMatch && !minMatch) {\n throw new Error(\n 'Bundled SKILL.md is missing metadata.skill_version / skill_min_cli_version' +\n ' — re-run `bun run sync-skill` to regenerate.'\n );\n }\n if (verMatch?.[1]) skillVersion = verMatch[1].trim();\n if (minMatch?.[1]) skillMinCliVersion = minMatch[1].trim();\n break;\n }\n }\n } catch (err) {\n // Pre-existing tolerance: SKILL.md may not exist in either candidate path (e.g. invoked\n // outside a project dir). That's OK — fall back to \"unknown\".\n // BUT: a `metadata:` block exists with neither expected key means sync-skill is broken.\n // Per plan D5 — fail loud so CI catches it, even if it crashes one CLI invocation.\n if (err instanceof Error && err.message.startsWith('Bundled SKILL.md is missing')) {\n throw err;\n }\n }\n\n _compatCache = { cliVersion, skillVersion, skillMinCliVersion };\n return _compatCache;\n}\n\n/**\n * Safely extract the --json flag from Commander options chain.\n * Handles the `any` type from Commander's opts() method.\n */\nexport function getJsonFlag(command: Command | undefined): boolean {\n if (!command) return false;\n // Navigate up the parent chain to find the root command options\n \n const parentOpts = command.parent ? command.parent.opts() : null;\n \n const ownOpts = command.opts();\n \n return Boolean(parentOpts?.json ?? ownOpts.json);\n}\n\nexport class OutputFormatter {\n constructor(private format: OutputFormat) {}\n\n output(data: unknown): void {\n if (this.format === 'json') {\n // Scope D: inject _compat into all directive-carrying JSON output\n let enriched = data;\n if (\n _globalCliVersion !== '0.0.0' &&\n data !== null &&\n typeof data === 'object' &&\n !Array.isArray(data) &&\n '_directive' in (data as Record<string, unknown>)\n ) {\n enriched = {\n ...(data as Record<string, unknown>),\n _compat: getCompatMetadata(_globalCliVersion),\n };\n }\n console.log(JSON.stringify(enriched, null, 2));\n } else {\n this.formatTable(data);\n }\n }\n\n private formatTable(data: unknown): void {\n if (Array.isArray(data)) {\n this.formatArray(data);\n } else if (data && typeof data === 'object') {\n this.formatObject(data as Record<string, unknown>);\n } else {\n console.log(data);\n }\n }\n\n private formatArray(data: unknown[]): void {\n if (data.length === 0) {\n console.log(chalk.gray('No results'));\n return;\n }\n\n // Get columns from first item\n const firstItem = data[0];\n if (!firstItem || typeof firstItem !== 'object') {\n data.forEach(item => { console.log(` ${String(item)}`); });\n return;\n }\n\n const keys = Object.keys(firstItem);\n \n // Helper to convert any value to display string\n const toDisplayString = (val: unknown): string => {\n if (val === null || val === undefined) return '';\n if (typeof val === 'object') return JSON.stringify(val);\n if (typeof val === 'string') return val;\n if (typeof val === 'number' || typeof val === 'boolean' || typeof val === 'bigint') {\n return val.toString();\n }\n return JSON.stringify(val);\n };\n\n // Calculate column widths\n const widths: Record<string, number> = {};\n keys.forEach(key => {\n widths[key] = Math.max(\n key.length,\n ...data.map(item => toDisplayString((item as Record<string, unknown>)[key]).length)\n );\n });\n\n // Print header\n const header = keys.map(key => chalk.bold(key.toUpperCase().padEnd(widths[key] ?? 10))).join(' ');\n console.log(header);\n console.log(keys.map(key => '-'.repeat(widths[key] ?? 10)).join(' '));\n\n // Print rows\n data.forEach(item => {\n const row = keys.map(key => {\n const value = toDisplayString((item as Record<string, unknown>)[key]);\n const width = widths[key] ?? 10;\n return value.padEnd(width).slice(0, width);\n }).join(' ');\n console.log(row);\n });\n\n console.log(chalk.gray(`\\n${String(data.length)} result(s)`));\n }\n\n private formatObject(data: Record<string, unknown>): void {\n const maxKeyLength = Math.max(...Object.keys(data).map(k => k.length));\n\n Object.entries(data).forEach(([key, value]) => {\n const formattedKey = chalk.bold(key.padEnd(maxKeyLength));\n let formattedValue: string;\n\n if (value === null || value === undefined) {\n formattedValue = '';\n } else if (typeof value === 'object') {\n formattedValue = JSON.stringify(value, null, 2);\n } else if (typeof value === 'string') {\n formattedValue = value;\n } else if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {\n formattedValue = value.toString();\n } else {\n formattedValue = JSON.stringify(value);\n }\n\n console.log(`${formattedKey} ${formattedValue}`);\n });\n }\n\n success(message: string): void {\n if (this.format === 'json') {\n console.log(JSON.stringify({ success: true, message }, null, 2));\n } else {\n console.log(chalk.green(`✓ ${message}`));\n }\n }\n\n error(message: string, code?: string, suggestedAction?: string): void {\n if (this.format === 'json') {\n const result: Record<string, unknown> = { success: false, error: message };\n if (code) result.code = code;\n if (suggestedAction) result.suggestedAction = suggestedAction;\n console.log(JSON.stringify(result, null, 2));\n } else {\n console.log(chalk.red(`✗ ${message}`));\n }\n }\n\n info(message: string): void {\n if (this.format !== 'json') {\n console.log(chalk.blue(`ℹ ${message}`));\n }\n }\n\n warn(message: string): void {\n if (this.format === 'json') {\n console.log(JSON.stringify({ warning: message }, null, 2));\n } else {\n console.log(chalk.yellow(`⚠ ${message}`));\n }\n }\n}\n\ninterface Spinner {\n start: () => Promise<unknown> | undefined;\n stop?: () => void;\n succeed?: () => void;\n fail?: () => void;\n}\n\nexport function createSpinner(text: string, isJson: boolean): Spinner {\n if (isJson) {\n // No-op spinner for JSON mode - returns undefined to match interface\n const noop = (): undefined => undefined;\n return {\n start: noop,\n stop: noop,\n succeed: noop,\n fail: noop,\n };\n }\n\n // Dynamic import for ora (ESM)\n const start = async (): Promise<unknown> => {\n const { default: ora } = await import('ora');\n return ora(text).start();\n };\n\n return { start };\n}\n",
11
- "import chalk from 'chalk';\n\n/**\n * Post-onboarding flow presented after successful first interactive login.\n *\n * Reduced-surface release (#1184): the legacy onboarding paths were retired.\n * This now prints a concise next-steps guide that points only at the active\n * command surface (init, skills, install, providers, feedback).\n *\n * IMPORTANT: This function is APPENDED to the auth login success handler.\n * It must NOT modify any auth state or credentials.\n */\nexport async function runPostOnboarding(): Promise<void> {\n const inquirer = (await import('inquirer')).default;\n\n console.log('');\n console.log(chalk.bold.cyan(' You are authenticated. What would you like to do next?'));\n console.log('');\n\n const { path: selectedPath } = await inquirer.prompt<{ path: 'init' | 'install' | 'exit' }>([{\n type: 'list',\n name: 'path',\n message: 'Choose your path:',\n choices: [\n {\n name: `${chalk.green('A')} Initialize this project create .mutagentrc.json + install the CLI skill`,\n value: 'init',\n },\n {\n name: `${chalk.green('B')} Install a lifecycle tool helix / diagnostics / evaluator`,\n value: 'install',\n },\n {\n name: `${chalk.green('C')} Exit explore the CLI on your own`,\n value: 'exit',\n },\n ],\n }]);\n\n console.log('');\n\n if (selectedPath === 'init') {\n console.log(chalk.bold(' Project setup:'));\n console.log('');\n console.log(` 1. ${chalk.green('mutagent init')}`);\n console.log(' Scaffold .mutagentrc.json and select your workspace');\n console.log('');\n console.log(` 2. ${chalk.green('mutagent skills install')}`);\n console.log(' Install the MutagenT CLI skill for AI coding agents');\n console.log('');\n console.log(` 3. ${chalk.green('mutagent providers list')}`);\n console.log(' Confirm an LLM provider is configured');\n console.log('');\n } else if (selectedPath === 'install') {\n console.log(chalk.bold(' Install a lifecycle tool:'));\n console.log('');\n console.log(` ${chalk.green('mutagent install diagnostics')} ${chalk.dim('Root-cause analysis from your traces')}`);\n console.log(` ${chalk.green('mutagent install evaluator')} ${chalk.dim('Build trustworthy eval suites')}`);\n console.log(` ${chalk.green('mutagent install helix')} ${chalk.dim('The ADL lifecycle conductor')}`);\n console.log('');\n console.log(chalk.dim(' All installs are login-gated. Run `mutagent install --help` for flags.'));\n console.log('');\n } else {\n console.log(chalk.dim(' You can run `mutagent --help` anytime to see available commands.'));\n console.log(chalk.dim(' Hit a snag? Send feedback: mutagent feedback send \"what happened\"'));\n console.log('');\n }\n}\n",
11
+ "import chalk from 'chalk';\nimport { scaffoldRcConfig, type RcScaffoldResult } from '../lib/rc-config.js';\nimport { installPackage, type InstallOptions, type InstallResult } from '../lib/installer.js';\nimport { MutagentError } from '../lib/errors.js';\n\n/**\n * Post-onboarding flow presented after a successful first interactive login.\n *\n * Streamlined release: on first login we ALWAYS auto-create `.mutagentrc.json`\n * (no prompt it is always needed), then present a two-option menu:\n * 1) Install Helix — runs the login-brokered helix install inline\n * 2) Exit — a short hint on how to explore the CLI\n *\n * The CLI skill is NOT installed here and is not mentioned — `mutagent skills\n * install` still exists but is no longer pushed during onboarding.\n *\n * IMPORTANT: This function is APPENDED to the auth login success handler.\n * It MUST NOT modify any auth state or credentials.\n */\n\nexport type OnboardingAction = 'helix' | 'exit';\n\nexport interface OnboardingChoice {\n name: string;\n value: OnboardingAction;\n}\n\n/** The two-option menu, numbered `1)` / `2)`. Option 1 is the default highlight. */\nexport const ONBOARDING_CHOICES: OnboardingChoice[] = [\n { name: '1) Install Helix — set up the ADL lifecycle conductor here', value: 'helix' },\n { name: '2) Exit — explore the CLI on your own', value: 'exit' },\n];\n\n/** Injectable seams so the flow is unit-testable without prompts, fs, or network. */\nexport interface OnboardingDeps {\n /** Working directory for config creation (default: process.cwd()). */\n cwd?: string;\n /** Config-creation seam (default: real scaffoldRcConfig fs + loadConfig). */\n scaffoldRcConfig?: (cwd: string) => RcScaffoldResult;\n /** Menu-selection seam (default: interactive inquirer list). */\n selectAction?: (choices: OnboardingChoice[]) => Promise<OnboardingAction>;\n /** Helix install seam (default: real installPackage login-brokered R2 flow). */\n installPackage?: (\n pkg: string,\n opts: InstallOptions,\n ) => Promise<InstallResult>;\n}\n\n/** Default menu promptinquirer list with option 1 highlighted by default. */\nasync function defaultSelectAction(choices: OnboardingChoice[]): Promise<OnboardingAction> {\n const inquirer = (await import('inquirer')).default;\n const { action } = await inquirer.prompt<{ action: OnboardingAction }>([{\n type: 'list',\n name: 'action',\n message: 'What would you like to do next?',\n choices,\n default: 'helix',\n }]);\n return action;\n}\n\nexport async function runPostOnboarding(deps: OnboardingDeps = {}): Promise<void> {\n const cwd = deps.cwd ?? process.cwd();\n const scaffold = deps.scaffoldRcConfig ?? scaffoldRcConfig;\n const select = deps.selectAction ?? defaultSelectAction;\n const install = deps.installPackage ?? installPackage;\n\n console.log('');\n console.log(chalk.bold.cyan(' You are authenticated.'));\n console.log('');\n\n // 1. Always auto-create .mutagentrc.json (no prompt). Never clobber.\n const rc = scaffold(cwd);\n if (rc.alreadyPresent) {\n console.log(` ${chalk.green('')} .mutagentrc.json already present`);\n } else {\n console.log(` ${chalk.green('')} Created .mutagentrc.json`);\n }\n console.log('');\n\n // 2. Two-option menu.\n const action = await select(ONBOARDING_CHOICES);\n console.log('');\n\n if (action === 'helix') {\n // 3. Install Helix inline via the login-brokered installPackage path.\n console.log(chalk.bold(' Installing Helix…'));\n console.log(chalk.dim(' Downloading + verifying the plugin, then writing .claude/ + .codex/'));\n console.log('');\n try {\n await install('helix', { harness: 'claude-code', global: true });\n console.log('');\n console.log(` ${chalk.green('')} Helix ready — run ${chalk.cyan('*help')} inside your agent`);\n console.log('');\n } catch (error) {\n // Surface the installer's error cleanly and exit non-zero — never crash.\n console.log('');\n if (error instanceof MutagentError) {\n console.error(` ${chalk.red('✗')} Helix install failed: ${error.message}`);\n if (error.suggestion) console.error(` ${chalk.yellow('')} ${error.suggestion}`);\n } else {\n const message = error instanceof Error ? error.message : String(error);\n console.error(` ${chalk.red('✗')} Helix install failed: ${message}`);\n }\n console.error('');\n process.exitCode = 1;\n }\n } else {\n // 4. Exit — a short hint.\n console.log(chalk.dim(` Run ${chalk.cyan('mutagent --help')} to explore the CLI.`));\n console.log(chalk.dim(' Hit a snag? Send feedback: mutagent feedback send \"what happened\"'));\n console.log('');\n }\n}\n",
12
+ "/**\n * Shared `.mutagentrc.json` scaffolding.\n *\n * The config write used to live inline in `commands/init.ts`. It is extracted\n * here so BOTH `mutagent init` and the post-login onboarding flow write the\n * config through the SAME code path (no reimplementation, no drift).\n *\n * `scaffoldRcConfig()` is the non-interactive creation path: it derives the\n * config from `loadConfig()` — which resolves the credentials file the login\n * flow just wrote (endpoint + defaultWorkspace + defaultOrganization) — and\n * never clobbers an existing `.mutagentrc.json`.\n */\n\nimport { join } from 'path';\nimport { writeFileSync } from 'fs';\nimport { loadConfig } from './config.js';\nimport { hasRcConfig } from './framework-detection.js';\n\nexport interface MutagentRcConfig {\n defaultWorkspace?: string;\n defaultOrganization?: string;\n endpoint?: string;\n framework?: string;\n}\n\n/** Write `.mutagentrc.json` to `cwd`. Overwrites — callers guard with hasRcConfig. */\nexport function writeRcConfig(config: MutagentRcConfig, cwd: string = process.cwd()): void {\n const rcPath = join(cwd, '.mutagentrc.json');\n writeFileSync(rcPath, JSON.stringify(config, null, 2) + '\\n');\n}\n\nexport interface RcScaffoldResult {\n /** True when a new `.mutagentrc.json` was written. */\n created: boolean;\n /** True when a `.mutagentrc.json` already existed and was left untouched. */\n alreadyPresent: boolean;\n /** The config that was written (or that already-present skipped writing). */\n config: MutagentRcConfig;\n}\n\n/** Injectable seams so the fs/config path is unit-testable without real IO. */\nexport interface RcScaffoldDeps {\n loadConfig?: typeof loadConfig;\n hasRcConfig?: (cwd: string) => boolean;\n writeRcConfig?: (config: MutagentRcConfig, cwd: string) => void;\n}\n\n/**\n * Non-interactively create `.mutagentrc.json` in `cwd` from the post-login\n * config. Reads endpoint + defaultWorkspace + defaultOrganization from\n * `loadConfig()` (no re-prompt for workspace). NEVER clobbers an existing file.\n */\nexport function scaffoldRcConfig(\n cwd: string = process.cwd(),\n deps: RcScaffoldDeps = {},\n): RcScaffoldResult {\n const load = deps.loadConfig ?? loadConfig;\n const hasRc = deps.hasRcConfig ?? hasRcConfig;\n const write = deps.writeRcConfig ?? writeRcConfig;\n\n const cfg = load();\n const rcConfig: MutagentRcConfig = {\n endpoint: cfg.endpoint ?? 'https://api.mutagent.io',\n ...(cfg.defaultWorkspace ? { defaultWorkspace: cfg.defaultWorkspace } : {}),\n ...(cfg.defaultOrganization ? { defaultOrganization: cfg.defaultOrganization } : {}),\n };\n\n if (hasRc(cwd)) {\n return { created: false, alreadyPresent: true, config: rcConfig };\n }\n\n write(rcConfig, cwd);\n return { created: true, alreadyPresent: false, config: rcConfig };\n}\n",
13
+ "import { existsSync, readFileSync } from 'fs';\nimport { execSync } from 'child_process';\nimport { join } from 'path';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type PackageManager = 'bun' | 'npm' | 'yarn' | 'pnpm';\n\nexport interface FrameworkDetection {\n name: string;\n displayName: string;\n npmPackage: string;\n mutagentPackage?: string;\n}\n\n// =============================================================================\n// Framework Detection Map\n// =============================================================================\n\n/**\n * Maps package.json dependency names to framework info.\n * Order matters: more specific packages should come first.\n */\nexport const FRAMEWORK_DETECTION_MAP: Record<string, FrameworkDetection> = {\n '@mastra/core': {\n name: 'mastra',\n displayName: 'Mastra',\n npmPackage: '@mastra/core',\n },\n '@langchain/langgraph': {\n name: 'langgraph',\n displayName: 'LangGraph',\n npmPackage: '@langchain/langgraph',\n mutagentPackage: '@mutagent/langgraph',\n },\n 'langchain': {\n name: 'langchain',\n displayName: 'LangChain',\n npmPackage: 'langchain',\n mutagentPackage: '@mutagent/langchain',\n },\n '@langchain/core': {\n name: 'langchain',\n displayName: 'LangChain',\n npmPackage: '@langchain/core',\n mutagentPackage: '@mutagent/langchain',\n },\n '@ai-sdk/core': {\n name: 'vercel-ai',\n displayName: 'Vercel AI SDK',\n npmPackage: '@ai-sdk/core',\n mutagentPackage: '@mutagent/vercel-ai',\n },\n 'ai': {\n name: 'vercel-ai',\n displayName: 'Vercel AI SDK',\n npmPackage: 'ai',\n mutagentPackage: '@mutagent/vercel-ai',\n },\n '@google/genai': {\n name: 'generic',\n displayName: 'Google GenAI',\n npmPackage: '@google/genai',\n },\n 'openai': {\n name: 'openai',\n displayName: 'OpenAI SDK',\n npmPackage: 'openai',\n mutagentPackage: '@mutagent/openai',\n },\n};\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\n/**\n * Detect the package manager by scanning lockfiles in cwd\n */\nexport function detectPackageManager(cwd: string = process.cwd()): PackageManager {\n if (existsSync(join(cwd, 'bun.lockb')) || existsSync(join(cwd, 'bun.lock'))) {\n return 'bun';\n }\n if (existsSync(join(cwd, 'pnpm-lock.yaml'))) {\n return 'pnpm';\n }\n if (existsSync(join(cwd, 'yarn.lock'))) {\n return 'yarn';\n }\n if (existsSync(join(cwd, 'package-lock.json'))) {\n return 'npm';\n }\n\n // Fallback: check if bun is available\n try {\n execSync('bun --version', { stdio: 'ignore' });\n return 'bun';\n } catch {\n return 'npm';\n }\n}\n\n/**\n * Build an install command for the given package manager and packages\n */\nexport function getInstallCommand(pm: PackageManager, packages: string[]): string {\n const pkgList = packages.join(' ');\n const commands: Record<PackageManager, string> = {\n bun: `bun add ${pkgList}`,\n npm: `npm install ${pkgList}`,\n yarn: `yarn add ${pkgList}`,\n pnpm: `pnpm add ${pkgList}`,\n };\n return commands[pm];\n}\n\n/**\n * Detect framework from package.json dependencies in cwd\n */\nexport function detectFrameworkFromPackageJson(cwd: string = process.cwd()): FrameworkDetection | null {\n const pkgPath = join(cwd, 'package.json');\n if (!existsSync(pkgPath)) {\n return null;\n }\n\n let pkg: { dependencies?: Record<string, string>; devDependencies?: Record<string, string> };\n try {\n pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as typeof pkg;\n } catch {\n return null;\n }\n\n const allDeps = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n };\n\n // Check detection map in order (more specific first)\n for (const [depName, framework] of Object.entries(FRAMEWORK_DETECTION_MAP)) {\n if (depName in allDeps) {\n return framework;\n }\n }\n\n return null;\n}\n\n/**\n * Check if .mutagentrc.json already exists in cwd\n */\nexport function hasRcConfig(cwd: string = process.cwd()): boolean {\n return existsSync(join(cwd, '.mutagentrc.json'));\n}\n",
14
+ "import { spawn } from 'child_process';\nimport { MutagentError } from './errors.js';\nimport { hasCredentials } from './config.js';\nimport { installHelix, type HelixDeps } from './installer-helix.js';\n\n// =============================================================================\n// Package + harness taxonomy\n// =============================================================================\n\n/** Packages installable via `mutagent install`. */\nexport const VALID_PACKAGES = ['helix', 'diagnostics', 'evaluator'] as const;\nexport type ValidPackage = (typeof VALID_PACKAGES)[number];\n\n/** Packages resolved through the public npm registry (helix is self-hosted). */\nexport type NpmPackage = Exclude<ValidPackage, 'helix'>;\n\n/** Target harnesses the install can be pointed at. */\nexport const VALID_HARNESSES = ['claude-code', 'codex', 'omp'] as const;\nexport type Harness = (typeof VALID_HARNESSES)[number];\n\n/**\n * CLI-pinned default version per package. `--version` overrides this.\n * All default to 'latest' today; pin here when a package needs a floor.\n */\nexport const VERSION_MATRIX: Record<ValidPackage, string> = {\n helix: 'latest',\n diagnostics: 'latest',\n evaluator: 'latest',\n};\n\n/** Public npm package names for the npm-installable packages. */\nexport const NPM_PACKAGES: Record<NpmPackage, string> = {\n diagnostics: '@mutagent/diagnostics',\n evaluator: '@mutagent/evaluator',\n};\n\n// =============================================================================\n// Command runner (injectable for tests)\n// =============================================================================\n\nexport interface RunnerResult {\n code: number;\n stdout: string;\n stderr: string;\n}\n\n/**\n * Runs an external command. Injectable so tests can assert the exact\n * argv the installer emits without shelling out to a real npm.\n */\nexport type CommandRunner = (cmd: string, args: string[]) => Promise<RunnerResult>;\n\n/**\n * Default runner backed by child_process.spawn. Captures stdout/stderr and\n * resolves with the exit code. A spawn-level failure (e.g. npm not on PATH)\n * surfaces as an actionable MutagentError rather than an unhandled rejection.\n */\nexport const defaultRunner: CommandRunner = (cmd, args) =>\n new Promise<RunnerResult>((resolve, reject) => {\n const child = spawn(cmd, args, { stdio: ['ignore', 'pipe', 'pipe'] });\n let stdout = '';\n let stderr = '';\n child.stdout.on('data', (chunk: Buffer) => { stdout += chunk.toString('utf-8'); });\n child.stderr.on('data', (chunk: Buffer) => { stderr += chunk.toString('utf-8'); });\n child.on('error', (err: Error) => {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Failed to run ${cmd}: ${err.message}`,\n `Ensure \"${cmd}\" is installed and available on your PATH.`,\n ),\n );\n });\n child.on('close', (code) => {\n resolve({ code: code ?? 1, stdout, stderr });\n });\n });\n\n// =============================================================================\n// Install pipeline\n// =============================================================================\n\nexport interface InstallDeps {\n /** Runner override — tests inject a mock to capture argv. */\n runner?: CommandRunner;\n /** Auth-gate override — defaults to config.hasCredentials. */\n isAuthed?: () => boolean;\n /**\n * Helix-path seams (broker/download/extract/init/telemetry) — injected so the\n * login-brokered R2 flow is unit-testable without hitting the network.\n */\n helix?: HelixDeps;\n}\n\nexport interface InstallOptions {\n harness: string;\n global: boolean;\n version?: string;\n}\n\nexport interface InstallResult {\n package: ValidPackage;\n version: string;\n harness: Harness;\n global: boolean;\n /** The exact external command executed (npm path only). */\n command?: string;\n}\n\nfunction isValidPackage(pkg: string): pkg is ValidPackage {\n return (VALID_PACKAGES as readonly string[]).includes(pkg);\n}\n\nfunction isValidHarness(harness: string): harness is Harness {\n return (VALID_HARNESSES as readonly string[]).includes(harness);\n}\n\n/**\n * Login-gated install pipeline. Ordering (per issue #1191):\n * 1. auth gate → AUTH_REQUIRED (references `mutagent login`)\n * 2. package valid → INVALID_ARGUMENTS\n * 3. harness valid → INVALID_ARGUMENTS\n * 4. helix → login-brokered R2 flow (installer-helix.ts, task CA4)\n * 5. diagnostics/evaluator → real `npm install -g @mutagent/<pkg>@<version>`\n *\n * This function is the unit-testable core: the command action calls it, and\n * tests exercise it directly with a mock runner + mock isAuthed.\n */\nexport async function installPackage(\n pkg: string,\n opts: InstallOptions,\n deps: InstallDeps = {},\n): Promise<InstallResult> {\n // 1. Auth gate — first, before any package work.\n const isAuthed = deps.isAuthed ?? hasCredentials;\n if (!isAuthed()) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n `Authentication required to install ${pkg}.`,\n 'Run: mutagent login',\n );\n }\n\n // 2. Package validation.\n if (!isValidPackage(pkg)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Unknown package \"${pkg}\". Valid: ${VALID_PACKAGES.join(', ')}`,\n 'Run: mutagent install --help',\n );\n }\n\n // 3. Harness validation.\n if (!isValidHarness(opts.harness)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Unknown harness \"${opts.harness}\". Valid: ${VALID_HARNESSES.join(', ')}`,\n 'Run: mutagent install --help',\n );\n }\n\n const version = opts.version ?? VERSION_MATRIX[pkg];\n\n // 4. helix — login-brokered R2 install (download → sha256-verify → extract →\n // init). The CLI holds NO static R2 secret: it authenticates to the\n // Platform broker with the same x-api-key as every other API call.\n if (pkg === 'helix') {\n const { version: resolved } = await installHelix(\n { harness: opts.harness, global: opts.global, version },\n deps.helix ?? {},\n );\n return {\n package: pkg,\n version: resolved,\n harness: opts.harness,\n global: opts.global,\n };\n }\n\n // 5. npm-installable packages → real global install via injectable runner.\n const npmPackage = NPM_PACKAGES[pkg];\n const args = ['install', '-g', `${npmPackage}@${version}`];\n const runner = deps.runner ?? defaultRunner;\n const result = await runner('npm', args);\n\n if (result.code !== 0) {\n const detail = result.stderr.trim();\n throw new MutagentError(\n 'INSTALL_FAILED',\n `npm failed to install ${npmPackage}@${version} (exit ${String(result.code)}).${detail ? ` ${detail.slice(0, 200)}` : ''}`,\n 'Verify the package and version exist and that you have permission for a global npm install.',\n );\n }\n\n return {\n package: pkg,\n version,\n harness: opts.harness,\n global: opts.global,\n command: `npm ${args.join(' ')}`,\n };\n}\n",
15
+ "/**\n * Helix plugin install flow (login-brokered R2 — option A).\n *\n * The helix plugin is distributed from a PRIVATE Cloudflare R2 bucket and\n * fetched through a Platform signed-URL broker. The CLI holds NO static R2\n * secret: it authenticates to the broker with the SAME credential it uses for\n * every other API call (`x-api-key`, exactly like `commands/feedback.ts`), and\n * the broker returns a short-lived presigned URL + the tarball's sha256.\n *\n * Flow (per issue #1191, task CA4):\n * 1. Resolve auth (apiKey + apiBase + tenancy headers) from CLI config.\n * 2. GET {apiBase}/api/helix/plugin/download?version=<v|latest> → descriptor.\n * 3. Download the tgz from the presigned URL into ~/.mutagent/helix/<version>/\n * (temp file + atomic rename).\n * 4. Verify sha256 of the download against the descriptor. Mismatch → delete\n * + throw an integrity error (non-zero exit).\n * 5. Extract the tarball into ~/.mutagent/helix/<version>/.\n * 6. Locate the plugin init bin from the extracted package.json `bin`, then\n * spawn `node <bin> init` with cwd = the user's project, forwarding\n * --harness and --global.\n * 7. POST best-effort install telemetry (404-tolerant, never fails install).\n *\n * Every side-effecting step is an injectable seam (mirroring installer.ts's\n * `CommandRunner`) so the whole path is unit-testable WITHOUT touching the\n * network. Production defaults are used when a seam is not supplied.\n */\n\nimport { spawn } from 'child_process';\nimport { createHash } from 'crypto';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport {\n existsSync,\n mkdirSync,\n readFileSync,\n renameSync,\n rmSync,\n writeFileSync,\n} from 'fs';\nimport { MutagentError } from './errors.js';\nimport { getApiKey, loadConfig } from './config.js';\nimport type { Harness } from './installer.js';\n\n// =============================================================================\n// Types + injectable seams\n// =============================================================================\n\n/** The broker's signed-download descriptor (mutagent/src/modules/helix/model.ts). */\nexport interface HelixBrokerResponse {\n version: string;\n sha256: string;\n url: string;\n expiresIn: number;\n}\n\n/** Resolved authentication context for broker calls. */\nexport interface HelixAuth {\n apiBase: string;\n apiKey: string | undefined;\n /** Extra headers (tenancy scoping), mirroring the feedback POST. */\n headers: Record<string, string>;\n}\n\n/** Best-effort telemetry event body (POST /api/helix/installs). */\nexport interface HelixInstallEvent {\n pkg: 'helix';\n version: string;\n harness: Harness;\n cliVersion: string;\n}\n\n/** Narrow structural subset of the global `fetch` we rely on. */\ntype FetchLike = typeof globalThis.fetch;\n\nexport interface HelixInstallOptions {\n harness: Harness;\n global: boolean;\n version: string;\n}\n\n/**\n * Injectable seams for the helix install flow. All optional — each falls back\n * to a production default. Tests inject fakes to exercise the flow offline.\n */\nexport interface HelixDeps {\n /** `fetch` used for the broker descriptor + telemetry (default: global fetch). */\n fetchImpl?: FetchLike;\n /** Resolve apiKey/apiBase/headers (default: read CLI config). */\n resolveAuth?: () => HelixAuth;\n /** Base directory for downloads (default: ~/.mutagent/helix). */\n homeDir?: string;\n /** Download `url` → `destPath` (default: fetch → file). */\n download?: (url: string, destPath: string) => Promise<void>;\n /** sha256 hex of a file (default: node crypto). */\n sha256?: (filePath: string) => Promise<string>;\n /** Extract a tgz into `destDir` (default: spawn `tar -xzf`). */\n extract?: (tgzPath: string, destDir: string) => Promise<void>;\n /** Locate the plugin init bin from an extracted dir (default: read package.json bin). */\n locateInitBin?: (extractedDir: string) => Promise<string>;\n /** Run `node <bin> init …` in `cwd` (default: spawn, stdio inherited). Returns exit code. */\n runInit?: (binPath: string, args: string[], cwd: string) => Promise<number>;\n /** Read the CLI version for telemetry (default: package.json). */\n cliVersion?: string;\n}\n\n// =============================================================================\n// Orchestrator\n// =============================================================================\n\n/**\n * Execute the full login-brokered helix install. Returns the concrete resolved\n * version (the broker resolves \"latest\" to a real version). Throws MutagentError\n * on any hard failure (auth, integrity, extract, init). Telemetry failures are\n * swallowed and never fail the install.\n */\nexport async function installHelix(\n opts: HelixInstallOptions,\n deps: HelixDeps = {},\n): Promise<{ version: string }> {\n const auth = (deps.resolveAuth ?? defaultResolveAuth)();\n const fetchImpl = deps.fetchImpl ?? globalThis.fetch;\n\n // 1–2. Broker call (authed like every other CLI API request).\n const descriptor = await fetchDescriptor(fetchImpl, auth, opts.version);\n\n // 3. Prepare target dir + paths.\n const baseDir = deps.homeDir ?? join(homedir(), '.mutagent', 'helix');\n const versionDir = join(baseDir, descriptor.version);\n mkdirSync(versionDir, { recursive: true });\n\n const tgzPath = join(versionDir, `helix-plugin-${descriptor.version}.tgz`);\n const tmpPath = `${tgzPath}.${String(process.pid)}.${String(Date.now())}.part`;\n\n // 3. Download to a temp file.\n const download = deps.download ?? defaultDownload;\n await download(descriptor.url, tmpPath);\n\n // 4. Integrity: verify sha256 BEFORE trusting the bytes.\n const sha256 = deps.sha256 ?? defaultSha256;\n const actual = (await sha256(tmpPath)).toLowerCase();\n const expected = descriptor.sha256.toLowerCase();\n if (actual !== expected) {\n safeRm(tmpPath);\n throw new MutagentError(\n 'INTEGRITY_ERROR',\n `Downloaded helix plugin failed sha256 verification (expected ${expected.slice(0, 12)}…, got ${actual.slice(0, 12)}…).`,\n 'The download may be corrupt or tampered with. Retry: mutagent install helix',\n );\n }\n\n // 4. Atomic promote temp → final.\n renameSync(tmpPath, tgzPath);\n\n // 5. Extract.\n const extract = deps.extract ?? defaultExtract;\n await extract(tgzPath, versionDir);\n\n // 6. Locate init bin + run it in the user's project.\n const locateInitBin = deps.locateInitBin ?? defaultLocateInitBin;\n const binPath = await locateInitBin(versionDir);\n\n const initArgs = ['init', '--harness', opts.harness];\n if (opts.global) initArgs.push('--global');\n\n const runInit = deps.runInit ?? defaultRunInit;\n const code = await runInit(binPath, initArgs, process.cwd());\n if (code !== 0) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n `helix plugin init exited with code ${String(code)}.`,\n 'Re-run: mutagent install helix — or run the plugin init manually and report the error.',\n );\n }\n\n // 7. Telemetry — best-effort, never fatal.\n await postTelemetry(fetchImpl, auth, {\n pkg: 'helix',\n version: descriptor.version,\n harness: opts.harness,\n cliVersion: deps.cliVersion ?? readCliVersion(),\n });\n\n return { version: descriptor.version };\n}\n\n// =============================================================================\n// Broker descriptor (auth-critical)\n// =============================================================================\n\n/**\n * GET the signed download descriptor from the broker. Authenticated with\n * `x-api-key` — the SAME scheme the CLI uses for `commands/feedback.ts`. A 401\n * means the broker rejected the credential → surface an actionable auth error.\n */\nasync function fetchDescriptor(\n fetchImpl: FetchLike,\n auth: HelixAuth,\n version: string,\n): Promise<HelixBrokerResponse> {\n if (!auth.apiKey) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'Authentication required to install helix.',\n 'Run: mutagent login',\n );\n }\n\n const url = `${auth.apiBase}/api/helix/plugin/download?version=${encodeURIComponent(version)}`;\n\n let res: Response;\n try {\n res = await fetchImpl(url, {\n method: 'GET',\n headers: { 'x-api-key': auth.apiKey, ...auth.headers },\n });\n } catch {\n throw new MutagentError(\n 'SERVER_UNAVAILABLE',\n 'Could not reach the MutagenT plugin broker.',\n 'Check your network connection or verify the endpoint with: mutagent config show',\n );\n }\n\n if (res.status === 401) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'The plugin broker rejected your credentials.',\n 'Re-authenticate: mutagent login',\n );\n }\n\n if (!res.ok) {\n const detail = await readErrorMessage(res);\n throw new MutagentError(\n 'INSTALL_FAILED',\n `Plugin broker returned ${String(res.status)}.${detail ? ` ${detail}` : ''}`,\n 'Verify the requested version exists, then retry: mutagent install helix',\n );\n }\n\n const raw: unknown = await res.json();\n if (!isBrokerResponse(raw)) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n 'Plugin broker returned a malformed response (missing version/sha256/url).',\n 'Retry: mutagent install helix — if it persists, report it.',\n );\n }\n return raw;\n}\n\n/**\n * POST best-effort install telemetry. Swallows ALL failures (network, non-2xx,\n * 404) — telemetry must never fail an otherwise-successful install.\n */\nasync function postTelemetry(\n fetchImpl: FetchLike,\n auth: HelixAuth,\n event: HelixInstallEvent,\n): Promise<void> {\n if (!auth.apiKey) return;\n try {\n await fetchImpl(`${auth.apiBase}/api/helix/installs`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': auth.apiKey,\n ...auth.headers,\n },\n body: JSON.stringify(event),\n });\n } catch {\n // Non-fatal by design.\n }\n}\n\n// =============================================================================\n// Production defaults for the injectable seams\n// =============================================================================\n\nfunction defaultResolveAuth(): HelixAuth {\n const apiKey = getApiKey();\n const config = loadConfig();\n const apiBase = config.endpoint ?? 'https://api.mutagent.io';\n const headers: Record<string, string> = {};\n if (config.defaultWorkspace) headers['x-workspace-id'] = config.defaultWorkspace;\n if (config.defaultOrganization) headers['x-organization-id'] = config.defaultOrganization;\n return { apiBase, apiKey, headers };\n}\n\n/** Download `url` → `destPath` via fetch, buffering the body then writing once. */\nasync function defaultDownload(url: string, destPath: string): Promise<void> {\n let res: Response;\n try {\n res = await globalThis.fetch(url);\n } catch {\n throw new MutagentError(\n 'SERVER_UNAVAILABLE',\n 'Failed to download the helix plugin from storage.',\n 'Check your network connection and retry: mutagent install helix',\n );\n }\n if (!res.ok) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n `Plugin download failed with status ${String(res.status)}.`,\n 'The signed URL may have expired — retry: mutagent install helix',\n );\n }\n const bytes = Buffer.from(await res.arrayBuffer());\n writeFileSync(destPath, bytes);\n}\n\nasync function defaultSha256(filePath: string): Promise<string> {\n return Promise.resolve(createHash('sha256').update(readFileSync(filePath)).digest('hex'));\n}\n\n/** Extract a gzipped tarball using the system `tar` binary. */\nfunction defaultExtract(tgzPath: string, destDir: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n const child = spawn('tar', ['-xzf', tgzPath, '-C', destDir], {\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n let stderr = '';\n child.stderr.on('data', (chunk: Buffer) => {\n stderr += chunk.toString('utf-8');\n });\n child.on('error', (err: Error) => {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Failed to extract the helix plugin: ${err.message}`,\n 'Ensure \"tar\" is installed and available on your PATH.',\n ),\n );\n });\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Extracting the helix plugin failed (tar exit ${String(code ?? 1)}).${stderr ? ` ${stderr.trim().slice(0, 200)}` : ''}`,\n 'The downloaded archive may be corrupt — retry: mutagent install helix',\n ),\n );\n }\n });\n });\n}\n\n/**\n * Locate the plugin's init bin from the extracted `package.json` `bin` field.\n * npm-pack tarballs unpack under `package/`; fall back to the dir root.\n */\nfunction defaultLocateInitBin(extractedDir: string): Promise<string> {\n const pkgDir = existsSync(join(extractedDir, 'package', 'package.json'))\n ? join(extractedDir, 'package')\n : extractedDir;\n const pkgJsonPath = join(pkgDir, 'package.json');\n\n if (!existsSync(pkgJsonPath)) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n 'Could not find package.json in the extracted helix plugin.',\n 'The archive layout is unexpected — retry or report: mutagent install helix',\n ),\n );\n }\n\n const raw: unknown = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));\n const binRel = resolveBinField(raw);\n if (!binRel) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n 'The helix plugin package.json declares no runnable bin.',\n 'The plugin package is malformed — report: mutagent install helix',\n ),\n );\n }\n\n const binPath = join(pkgDir, binRel);\n if (!existsSync(binPath)) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `The helix plugin bin was not found at ${binRel}.`,\n 'The plugin package is incomplete — report: mutagent install helix',\n ),\n );\n }\n return Promise.resolve(binPath);\n}\n\n/** Spawn `node <bin> <args>` in `cwd` with inherited stdio; resolve exit code. */\nfunction defaultRunInit(binPath: string, args: string[], cwd: string): Promise<number> {\n return new Promise<number>((resolve, reject) => {\n const child = spawn('node', [binPath, ...args], { cwd, stdio: 'inherit' });\n child.on('error', (err: Error) => {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Failed to run the helix plugin init: ${err.message}`,\n 'Ensure \"node\" is installed and available on your PATH.',\n ),\n );\n });\n child.on('close', (code) => {\n resolve(code ?? 1);\n });\n });\n}\n\n// =============================================================================\n// Small helpers\n// =============================================================================\n\n/** Prefer the `mutagent-helix` bin; else the first bin value; supports string bin. */\nfunction resolveBinField(pkg: unknown): string | undefined {\n if (!pkg || typeof pkg !== 'object') return undefined;\n const bin = (pkg as { bin?: unknown }).bin;\n if (typeof bin === 'string') return bin;\n if (bin && typeof bin === 'object') {\n const entries = bin as Record<string, unknown>;\n const preferred = entries['mutagent-helix'];\n if (typeof preferred === 'string') return preferred;\n for (const value of Object.values(entries)) {\n if (typeof value === 'string') return value;\n }\n }\n return undefined;\n}\n\nfunction isBrokerResponse(value: unknown): value is HelixBrokerResponse {\n if (!value || typeof value !== 'object') return false;\n const v = value as Record<string, unknown>;\n return (\n typeof v.version === 'string' &&\n typeof v.sha256 === 'string' &&\n typeof v.url === 'string'\n );\n}\n\nasync function readErrorMessage(res: Response): Promise<string | undefined> {\n try {\n const body: unknown = await res.json();\n if (body && typeof body === 'object') {\n const b = body as { message?: unknown; error?: unknown };\n if (typeof b.message === 'string') return b.message;\n if (typeof b.error === 'string') return b.error;\n }\n } catch {\n // No JSON body.\n }\n return undefined;\n}\n\nfunction readCliVersion(): string {\n if (process.env.CLI_VERSION) return process.env.CLI_VERSION;\n return 'unknown';\n}\n\nfunction safeRm(path: string): void {\n try {\n rmSync(path, { force: true });\n } catch {\n // best-effort cleanup\n }\n}\n",
12
16
  "/**\n * Shared login action for `mutagent login` and `mutagent auth login`.\n *\n * Both commands are thin wrappers around `performLoginAction()`. The browser\n * OAuth flow (`performBrowserAuth` from lib/browser-auth.ts) is called from\n * exactly one place in this module — single source of truth for the canonical\n * signup → onboard → authorize CLI session sequence.\n *\n * Decision: .memory/design-principles.md → \"Login Unification (Decision Record)\"\n * Paper trail: .memory/key-learnings/login-unification.md\n */\n\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { saveFullCredentials, hasCredentials } from './config.js';\nimport { validateApiKey, fetchOrganizations, fetchWorkspaces } from './sdk-client.js';\nimport type { OutputFormatter } from './output.js';\nimport { MutagentError } from './errors.js';\nimport { performBrowserAuth, BrowserAuthError } from './browser-auth.js';\n\nexport interface LoginActionOptions {\n endpoint: string;\n browser?: boolean;\n nonInteractive?: boolean;\n isJson: boolean;\n output: OutputFormatter;\n}\n\nexport interface LoginActionResult {\n authenticated: boolean;\n apiKey: string;\n endpoint: string;\n workspace: { id: string; name?: string } | null;\n organization: { id: string; name?: string } | null;\n wasFirstLogin: boolean;\n}\n\ninterface AuthMethodAnswer {\n method: 'browser' | 'apiKey';\n}\n\ninterface LoginAnswers {\n apiKey: string;\n endpoint: string;\n}\n\n/**\n * Shared login entrypoint. Resolution order:\n * 1. MUTAGENT_API_KEY env var → fast path\n * 2. --browser flag → browser OAuth\n * 3. Non-interactive context → auto-browser\n * 4. Interactive TTY → method choice prompt\n */\nexport async function performLoginAction(opts: LoginActionOptions): Promise<LoginActionResult> {\n const { isJson, output } = opts;\n const wasFirstLogin = !hasCredentials();\n const envApiKey: string | undefined = process.env.MUTAGENT_API_KEY;\n const endpoint: string = process.env.MUTAGENT_ENDPOINT ?? opts.endpoint;\n\n // 1. Env var fast path\n if (envApiKey) {\n return loginWithExistingKey(envApiKey, endpoint, output, wasFirstLogin);\n }\n\n // 2. Detect non-interactive environment\n const isNonInteractive =\n opts.nonInteractive === true ||\n process.env.MUTAGENT_NON_INTERACTIVE === 'true' ||\n process.env.CI === 'true' ||\n !process.stdin.isTTY;\n\n // 3. JSON + non-interactive without browser flag cannot proceed\n if (isJson && !opts.browser && isNonInteractive) {\n throw new MutagentError(\n 'INTERACTIVE_REQUIRED',\n 'No API key provided. Set MUTAGENT_API_KEY env var or add --browser for browser auth.',\n 'Run: export MUTAGENT_API_KEY=<key> or mutagent login --browser --non-interactive'\n );\n }\n\n // 4. Welcome banner for first-time interactive users\n if (!isNonInteractive && wasFirstLogin) {\n console.log('\\n' + chalk.bold.cyan(' Welcome to MutagenT CLI!') + '\\n');\n console.log(' No credentials found. Please authenticate to continue.\\n');\n }\n\n // 5. Determine method\n let useBrowserAuth = opts.browser === true;\n\n if (!useBrowserAuth && isNonInteractive) {\n output.info('Non-interactive environment detected. Using browser authentication.');\n useBrowserAuth = true;\n }\n\n if (!useBrowserAuth) {\n const methodAnswer = await inquirer.prompt<AuthMethodAnswer>([\n {\n type: 'list',\n name: 'method',\n message: 'How would you like to authenticate?',\n choices: [\n { name: 'Login (opens browser)', value: 'browser' },\n { name: 'API Key (paste existing key)', value: 'apiKey' },\n ],\n },\n ]);\n useBrowserAuth = methodAnswer.method === 'browser';\n }\n\n // 6. Execute chosen path\n if (useBrowserAuth) {\n return loginWithBrowser(endpoint, output, wasFirstLogin);\n }\n return loginWithPastedKey(endpoint, output, wasFirstLogin);\n}\n\n/**\n * Build the canonical JSON response emitted by both `mutagent login --json`\n * and `mutagent auth login --json`. Shape MUST remain byte-identical to the\n * pre-unification `auth.ts` JSON for back-compat with existing agent parsers.\n */\nexport function buildLoginJsonResponse(result: LoginActionResult): Record<string, unknown> {\n return {\n success: true,\n authenticated: result.authenticated,\n endpoint: result.endpoint,\n workspace: result.workspace,\n organization: result.organization,\n _directive: {\n instruction: 'Verify workspace. Run: mutagent workspaces list --json',\n next: ['mutagent workspaces list --json', 'mutagent usage --json'],\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\nasync function loginWithExistingKey(\n apiKey: string,\n endpoint: string,\n output: OutputFormatter,\n wasFirstLogin: boolean\n): Promise<LoginActionResult> {\n output.info('Validating API key...');\n const isValid = await validateApiKey(apiKey, endpoint);\n if (!isValid) {\n throw new MutagentError(\n 'INVALID_API_KEY',\n 'Invalid API key or endpoint',\n 'Check your API key and try again'\n );\n }\n\n const orgs = await fetchOrganizations(apiKey, endpoint);\n let orgId: string | undefined;\n let orgName: string | undefined;\n let wsId: string | undefined;\n let wsName: string | undefined;\n\n if (orgs.length >= 1 && orgs[0]) {\n orgId = orgs[0].id;\n orgName = orgs[0].name;\n const workspaces = await fetchWorkspaces(apiKey, endpoint, orgId);\n const defaultWs = workspaces.find(w => w.isDefault) ?? workspaces[0];\n if (defaultWs) {\n wsId = defaultWs.id;\n wsName = defaultWs.name;\n }\n }\n\n saveFullCredentials({\n apiKey,\n endpoint,\n workspaceId: wsId,\n organizationId: orgId,\n });\n\n return {\n authenticated: true,\n apiKey,\n endpoint,\n workspace: wsId ? { id: wsId, name: wsName } : null,\n organization: orgId ? { id: orgId, name: orgName } : null,\n wasFirstLogin,\n };\n}\n\nasync function loginWithBrowser(\n endpoint: string,\n output: OutputFormatter,\n wasFirstLogin: boolean\n): Promise<LoginActionResult> {\n // NOTE: This is the ONLY call site of performBrowserAuth in the CLI.\n const spinner = ora({ text: 'Opening browser for authentication...', spinner: 'dots' });\n try {\n spinner.start();\n const result = await performBrowserAuth(\n { endpoint, timeout: 300000, pollInterval: 2000 },\n (message) => {\n spinner.text = message;\n }\n );\n spinner.succeed('Authenticated successfully!');\n\n saveFullCredentials({\n apiKey: result.apiKey,\n endpoint,\n workspaceId: result.workspaceId,\n organizationId: result.organizationId,\n expiresAt: result.expiresAt,\n });\n\n if (result.workspaceName) output.info(`Workspace: ${result.workspaceName}`);\n if (result.organizationName) output.info(`Organization: ${result.organizationName}`);\n\n return {\n authenticated: true,\n apiKey: result.apiKey,\n endpoint,\n workspace: result.workspaceId\n ? { id: result.workspaceId, name: result.workspaceName }\n : null,\n organization: result.organizationId\n ? { id: result.organizationId, name: result.organizationName }\n : null,\n wasFirstLogin,\n };\n } catch (error) {\n spinner.fail('Authentication failed');\n if (error instanceof BrowserAuthError) {\n throw new MutagentError(error.code, error.message, error.getSuggestion());\n }\n throw error;\n }\n}\n\nasync function loginWithPastedKey(\n initialEndpoint: string,\n output: OutputFormatter,\n wasFirstLogin: boolean\n): Promise<LoginActionResult> {\n const answers = await inquirer.prompt<LoginAnswers>([\n {\n type: 'input',\n name: 'endpoint',\n message: 'MutagenT endpoint:',\n default: initialEndpoint,\n },\n {\n type: 'password',\n name: 'apiKey',\n message: 'API Key:',\n mask: '*',\n validate: (input: string): boolean | string => input.length > 0 || 'API key is required',\n },\n ]);\n\n const apiKey = answers.apiKey;\n const endpoint = answers.endpoint;\n\n output.info('Validating API key...');\n const isValid = await validateApiKey(apiKey, endpoint);\n if (!isValid) {\n throw new MutagentError(\n 'INVALID_API_KEY',\n 'Invalid API key or endpoint',\n 'Check your API key and try again'\n );\n }\n\n // Interactive multi-tenant picker\n let selectedOrgId: string | undefined;\n let selectedOrgName: string | undefined;\n let selectedWsId: string | undefined;\n let selectedWsName: string | undefined;\n\n const orgs = await fetchOrganizations(apiKey, endpoint);\n if (orgs.length === 1 && orgs[0]) {\n selectedOrgId = orgs[0].id;\n selectedOrgName = orgs[0].name;\n } else if (orgs.length > 1) {\n const orgAnswer = await inquirer.prompt<{ orgId: string }>([\n {\n type: 'list',\n name: 'orgId',\n message: 'Select organization:',\n choices: orgs.map(o => ({ name: o.name, value: o.id })),\n },\n ]);\n selectedOrgId = orgAnswer.orgId;\n selectedOrgName = orgs.find(o => o.id === selectedOrgId)?.name;\n }\n\n if (selectedOrgId) {\n const workspaces = await fetchWorkspaces(apiKey, endpoint, selectedOrgId);\n const defaultWs = workspaces.find(w => w.isDefault);\n if (workspaces.length === 1 && workspaces[0]) {\n selectedWsId = workspaces[0].id;\n selectedWsName = workspaces[0].name;\n } else if (defaultWs) {\n selectedWsId = defaultWs.id;\n selectedWsName = defaultWs.name;\n } else if (workspaces.length > 1) {\n const wsAnswer = await inquirer.prompt<{ wsId: string }>([\n {\n type: 'list',\n name: 'wsId',\n message: 'Select workspace:',\n choices: workspaces.map(w => ({\n name: w.name + (w.isDefault ? ' (default)' : ''),\n value: w.id,\n })),\n },\n ]);\n selectedWsId = wsAnswer.wsId;\n selectedWsName = workspaces.find(w => w.id === selectedWsId)?.name;\n }\n }\n\n saveFullCredentials({\n apiKey,\n endpoint,\n workspaceId: selectedWsId,\n organizationId: selectedOrgId,\n });\n\n return {\n authenticated: true,\n apiKey,\n endpoint,\n workspace: selectedWsId ? { id: selectedWsId, name: selectedWsName } : null,\n organization: selectedOrgId ? { id: selectedOrgId, name: selectedOrgName } : null,\n wasFirstLogin,\n };\n}\n",
13
17
  "/**\n * Browser Authentication Flow for CLI\n *\n * Implements the CLI token-based browser authentication flow:\n * 1. Generate unique CLI token\n * 2. Call POST /api/auth/cli/init to register pending auth\n * 3. Open browser with auth URL\n * 4. Poll GET /api/auth/cli/status until completion/timeout/error\n * 5. Return credentials on success\n */\n\nimport { hostname, platform } from 'os';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface BrowserAuthOptions {\n /** API endpoint (e.g., https://api.mutagent.io) */\n endpoint: string;\n /** Timeout in milliseconds (default: 5 minutes) */\n timeout?: number;\n /** Polling interval in milliseconds (default: 2 seconds) */\n pollInterval?: number;\n /** Skip opening browser (for test mode) */\n skipBrowserOpen?: boolean;\n}\n\nexport interface BrowserAuthResult {\n /** The workspace-scoped API key */\n apiKey: string;\n /** Workspace ID for the scoped key */\n workspaceId: string;\n /** Workspace name for display */\n workspaceName: string;\n /** Organization ID */\n organizationId: string;\n /** Organization name for display */\n organizationName: string;\n /** When the key expires (if applicable) */\n expiresAt?: string;\n}\n\nexport interface BrowserAuthInitResponse {\n /** URL to open in browser */\n authUrl: string;\n /** Expiration time in seconds */\n expiresIn: number;\n}\n\nexport type BrowserAuthStatus =\n | 'pending'\n | 'completed'\n | 'expired'\n | 'denied'\n | 'not_found';\n\nexport interface BrowserAuthStatusResponse {\n status: BrowserAuthStatus;\n apiKey?: string;\n workspaceId?: string;\n workspaceName?: string;\n organizationId?: string;\n organizationName?: string;\n expiresAt?: string;\n error?: string;\n}\n\n// =============================================================================\n// Browser Auth Implementation\n// =============================================================================\n\n/**\n * Generate a unique CLI token for authentication\n * Uses crypto.randomUUID for cryptographically secure random tokens\n */\nexport function generateCliToken(): string {\n return crypto.randomUUID();\n}\n\n/**\n * Initialize browser authentication flow with the server\n */\nexport async function initBrowserAuth(\n endpoint: string,\n cliToken: string\n): Promise<BrowserAuthInitResponse> {\n const response = await fetch(`${endpoint}/api/auth/cli/init`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n cliToken,\n hostname: hostname(),\n platform: platform(),\n }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new BrowserAuthError(\n 'INIT_FAILED',\n 'Failed to initialize browser auth: ' + String(response.status) + ' ' + errorText\n );\n }\n\n const data = (await response.json()) as BrowserAuthInitResponse;\n return data;\n}\n\n/**\n * Poll the server for authentication status\n */\nexport async function pollAuthStatus(\n endpoint: string,\n cliToken: string\n): Promise<BrowserAuthStatusResponse> {\n const response = await fetch(\n `${endpoint}/api/auth/cli/status?token=${encodeURIComponent(cliToken)}`\n );\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new BrowserAuthError(\n 'POLL_FAILED',\n 'Failed to poll auth status: ' + String(response.status) + ' ' + errorText\n );\n }\n\n const data = (await response.json()) as BrowserAuthStatusResponse;\n return data;\n}\n\n/**\n * Open a URL in the system's default browser\n * In test mode (MUTAGENT_TEST_MODE=true), outputs URL to stdout instead\n * In non-interactive mode, prints URL to stdout for AI agents to display\n */\nexport async function openBrowser(url: string): Promise<void> {\n // Test mode: output URL to stdout instead of opening browser\n if (process.env.MUTAGENT_TEST_MODE === 'true') {\n console.log(`AUTH_URL:${url}`);\n return;\n }\n\n // Dynamically import 'open' package\n try {\n const { default: open } = await import('open');\n await open(url);\n } catch {\n // If 'open' package is not available, provide manual instructions\n // In non-interactive mode, this is expected -- just print the URL\n throw new BrowserAuthError(\n 'BROWSER_OPEN_FAILED',\n `Could not open browser automatically. Please visit: ${url}`\n );\n }\n}\n\n/**\n * Sleep utility for polling\n */\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * Perform the complete browser authentication flow\n *\n * @param options - Browser auth options\n * @param onStatusUpdate - Optional callback for status updates (for spinners, etc.)\n * @returns Browser auth result with credentials\n */\nexport async function performBrowserAuth(\n options: BrowserAuthOptions,\n onStatusUpdate?: (message: string) => void\n): Promise<BrowserAuthResult> {\n const {\n endpoint,\n timeout = 300000, // 5 minutes default\n pollInterval = 2000, // 2 seconds default\n skipBrowserOpen = false,\n } = options;\n\n // 1. Generate unique CLI token\n const cliToken = generateCliToken();\n\n // 2. Register pending auth with server\n onStatusUpdate?.('Initializing browser authentication...');\n const initResponse = await initBrowserAuth(endpoint, cliToken);\n const { authUrl } = initResponse;\n\n // 3. Open browser (or output URL in test mode / non-interactive mode)\n if (!skipBrowserOpen) {\n onStatusUpdate?.('Opening browser for authentication...');\n try {\n await openBrowser(authUrl);\n } catch (error) {\n // If browser fails to open, continue but inform user\n // This is expected in non-interactive environments (CI, AI agents)\n if (error instanceof BrowserAuthError && error.code === 'BROWSER_OPEN_FAILED') {\n onStatusUpdate?.(error.message);\n } else {\n throw error;\n }\n }\n }\n\n // Always print the URL clearly for non-interactive environments (AI agents, CI)\n // This ensures the URL is visible even if the browser failed to open\n console.log('');\n console.log(' Open this URL to authenticate:');\n console.log('');\n console.log(' ' + authUrl);\n console.log('');\n\n // 4. Poll for completion\n onStatusUpdate?.('Waiting for browser authentication...');\n const startTime = Date.now();\n\n while (Date.now() - startTime < timeout) {\n await sleep(pollInterval);\n\n const status = await pollAuthStatus(endpoint, cliToken);\n\n switch (status.status) {\n case 'pending':\n // Continue polling\n continue;\n\n case 'completed':\n // Success! Return credentials\n if (\n !status.apiKey ||\n !status.workspaceId ||\n !status.workspaceName ||\n !status.organizationId ||\n !status.organizationName\n ) {\n throw new BrowserAuthError(\n 'INCOMPLETE_RESPONSE',\n 'Server returned incomplete auth response'\n );\n }\n return {\n apiKey: status.apiKey,\n workspaceId: status.workspaceId,\n workspaceName: status.workspaceName,\n organizationId: status.organizationId,\n organizationName: status.organizationName,\n expiresAt: status.expiresAt,\n };\n\n case 'expired':\n throw new BrowserAuthError(\n 'AUTH_EXPIRED',\n 'Browser authentication expired. Please try again.'\n );\n\n case 'denied':\n throw new BrowserAuthError(\n 'AUTH_DENIED',\n status.error ?? 'Browser authentication was denied.'\n );\n\n case 'not_found':\n throw new BrowserAuthError(\n 'TOKEN_NOT_FOUND',\n 'Authentication token not found. Please try again.'\n );\n\n default:\n throw new BrowserAuthError(\n 'UNKNOWN_STATUS',\n 'Unknown auth status: ' + String(status.status)\n );\n }\n }\n\n // Timeout\n throw new BrowserAuthError(\n 'AUTH_TIMEOUT',\n 'Browser authentication timed out after 5 minutes. Please try again.'\n );\n}\n\n// =============================================================================\n// Error Classes\n// =============================================================================\n\nexport type BrowserAuthErrorCode =\n | 'INIT_FAILED'\n | 'POLL_FAILED'\n | 'BROWSER_OPEN_FAILED'\n | 'AUTH_EXPIRED'\n | 'AUTH_DENIED'\n | 'AUTH_TIMEOUT'\n | 'TOKEN_NOT_FOUND'\n | 'INCOMPLETE_RESPONSE'\n | 'UNKNOWN_STATUS';\n\nexport class BrowserAuthError extends Error {\n code: BrowserAuthErrorCode;\n\n constructor(code: BrowserAuthErrorCode, message: string) {\n super(message);\n this.name = 'BrowserAuthError';\n this.code = code;\n }\n\n /**\n * Get user-friendly suggestion based on error code\n */\n getSuggestion(): string {\n switch (this.code) {\n case 'INIT_FAILED':\n return 'Check your endpoint configuration and network connection.';\n case 'POLL_FAILED':\n return 'Check your network connection and try again.';\n case 'BROWSER_OPEN_FAILED':\n return 'Copy the URL above and open it manually in your browser.';\n case 'AUTH_EXPIRED':\n case 'AUTH_TIMEOUT':\n return 'Run \"mutagent auth login\" again to restart authentication.';\n case 'AUTH_DENIED':\n return 'Ensure you have access to the workspace and try again.';\n case 'TOKEN_NOT_FOUND':\n case 'INCOMPLETE_RESPONSE':\n case 'UNKNOWN_STATUS':\n return 'Please try again. If the issue persists, contact support.';\n default:\n return 'Please try again.';\n }\n }\n}\n",
14
18
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError } from '../lib/errors.js';\nimport { performLoginAction, buildLoginJsonResponse } from '../lib/auth-flow.js';\nimport { runPostOnboarding } from './onboarding.js';\n\ninterface LoginOptions {\n endpoint: string;\n browser?: boolean;\n nonInteractive?: boolean;\n}\n\n/**\n * Top-level login command — THE CANONICAL user-facing entry point.\n *\n * Delegates to lib/auth-flow.ts performLoginAction(). `mutagent auth login`\n * is preserved as a back-compat alias and uses the same shared action.\n *\n * See: .memory/design-principles.md → \"Login Unification\"\n * .memory/key-learnings/login-unification.md\n */\nexport function createLoginCommand(): Command {\n const login = new Command('login')\n .description('Login to MutagenT (browser OAuth — signup, onboard, authorize CLI in one flow)')\n .option('--browser', 'Force browser-based authentication')\n .option('--non-interactive', 'Disable interactive prompts (auto-selects browser auth)')\n .option('--endpoint <url>', 'API endpoint', 'https://api.mutagent.io')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent login ${chalk.dim('# Browser OAuth (recommended — handles signup + onboarding)')}\n ${chalk.dim('$')} mutagent login --browser ${chalk.dim('# Force browser flow (skip method prompt)')}\n ${chalk.dim('$')} mutagent login --non-interactive ${chalk.dim('# Auto-browser for AI agents and CI')}\n\n${chalk.yellow('Browser OAuth flow (recommended for end users):')}\n Opens app.mutagent.io in your browser. You will:\n 1. Sign in or sign up with your account\n 2. Complete onboarding (workspace, provider config)\n 3. Authorize this CLI session\n The CLI polls for completion and saves credentials when you authorize.\n\n${chalk.yellow('Automation / CI / AI Agents:')}\n Set MUTAGENT_API_KEY environment variable before running:\n ${chalk.dim('$')} export MUTAGENT_API_KEY=mt_...\n ${chalk.dim('$')} mutagent login --json\n When MUTAGENT_API_KEY is set, login skips the browser flow entirely and\n validates the key directly. This is the canonical CI / agent path.\n\nEnvironment Variables:\n MUTAGENT_API_KEY Pre-existing API key (skips interactive flow)\n MUTAGENT_ENDPOINT Custom API endpoint\n MUTAGENT_NON_INTERACTIVE=true Treat environment as non-interactive\n CI=true Automatically enables non-interactive mode\n\nVerify after login:\n ${chalk.dim('$')} mutagent auth status ${chalk.dim('# Show session, workspace, org')}\n ${chalk.dim('$')} mutagent workspaces list --json ${chalk.dim('# List available workspaces')}\n\n${chalk.dim('Note: `mutagent auth login` is a back-compat alias and behaves identically.')}\n `)\n .action(async (options: LoginOptions) => {\n const isJson = getJsonFlag(login);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const result = await performLoginAction({\n endpoint: options.endpoint,\n browser: options.browser,\n nonInteractive: options.nonInteractive,\n isJson,\n output,\n });\n\n if (isJson) {\n output.output(buildLoginJsonResponse(result));\n } else {\n output.success('Logged in successfully');\n if (result.organization?.name) output.info(`Organization: ${result.organization.name}`);\n if (result.workspace?.name) output.info(`Workspace: ${result.workspace.name}`);\n output.info(`Endpoint: ${result.endpoint}`);\n output.info('Next: mutagent workspaces list --json');\n }\n\n // Post-onboarding wizard: only on first interactive login\n if (result.wasFirstLogin && process.stdin.isTTY && !isJson) {\n await runPostOnboarding();\n }\n } catch (error) {\n if (error instanceof MutagentError) {\n output.error(error.message);\n process.exit(error.exitCode);\n }\n throw error;\n }\n });\n\n return login;\n}\n",
@@ -19,8 +23,7 @@
19
23
  "import type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, handleError } from '../../lib/errors.js';\nimport {\n providerLinks,\n providerLink,\n renderPlainCard,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\nimport { validateProviderType } from './index.js';\n\n/** Scope option type */\ntype ScopeOption = 'workspace' | 'org' | 'user';\n\ninterface AddOptions {\n provider: string;\n name: string;\n apiKey: string;\n scope?: ScopeOption;\n baseUrl?: string;\n setDefault?: boolean;\n}\n\n/**\n * Resolve scope IDs from the config based on the --scope flag.\n * - workspace (default): uses loadConfig().defaultWorkspace\n * - org: uses loadConfig().defaultOrganization\n * - user: personal config (no scope IDs needed, server infers from auth)\n */\nfunction resolveScope(\n scopeFlag: ScopeOption | undefined,\n client: Awaited<ReturnType<typeof getSDKClient>>,\n): { workspaceId?: string; organizationId?: string; userId?: string } {\n const scope = scopeFlag ?? 'workspace';\n\n if (scope === 'workspace') {\n const wsId = client.getCurrentWorkspaceId();\n if (!wsId) {\n throw new MutagentError(\n 'MISSING_WORKSPACE',\n 'No workspace configured. Cannot create workspace-scoped provider.',\n 'Run: mutagent config set defaultWorkspace <workspace-id>'\n );\n }\n return { workspaceId: wsId };\n }\n\n if (scope === 'org') {\n const orgId = client.getCurrentOrgId();\n if (!orgId) {\n throw new MutagentError(\n 'MISSING_ORGANIZATION',\n 'No organization configured. Cannot create org-scoped provider.',\n 'Run: mutagent config set defaultOrganization <org-id>'\n );\n }\n return { organizationId: orgId };\n }\n\n // scope === 'user': server infers userId from the authenticated API key\n return {};\n}\n\nexport function registerAddCommand(parent: Command): void {\n parent\n .command('add')\n .description('Add a new provider configuration')\n .requiredOption('-p, --provider <type>', 'Provider type (openai, anthropic, google, ...)')\n .requiredOption('-n, --name <name>', 'Display name for this provider')\n .requiredOption('-k, --api-key <key>', 'API key for the provider')\n .option('-s, --scope <scope>', 'Scope: workspace (default), org, user', 'workspace')\n .option('--base-url <url>', 'Custom base URL for the provider API')\n .option('--set-default', 'Set as default provider for this scope')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent providers add --provider openai --name \"My OpenAI\" --api-key $OPENAI_API_KEY\n ${chalk.dim('$')} mutagent providers add --provider anthropic --name \"Team Claude\" --api-key $KEY --scope org\n ${chalk.dim('$')} mutagent providers add --provider openai --name \"Personal\" --api-key $KEY --scope user --set-default\n ${chalk.dim('$')} mutagent providers add --provider custom --name \"Ollama\" --api-key none --base-url http://localhost:11434 --json\n\nScope Resolution:\n workspace (default) Uses your configured workspace\n org Uses your configured organization\n user Personal provider config\n\nThe API key is encrypted server-side and never returned in plain text.\n `)\n .action(async (options: AddOptions) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Validate provider type\n const providerType = validateProviderType(options.provider);\n\n // Validate API key is not empty\n if (!options.apiKey || options.apiKey.trim() === '') {\n throw new MutagentError(\n 'MISSING_API_KEY',\n 'API key cannot be empty',\n 'Provide a valid API key with --api-key'\n );\n }\n\n // Validate scope option\n const validScopes: ScopeOption[] = ['workspace', 'org', 'user'];\n if (options.scope && !validScopes.includes(options.scope)) {\n throw new MutagentError(\n 'INVALID_SCOPE',\n `Invalid scope: ${options.scope}`,\n `Valid scopes: ${validScopes.join(', ')}`\n );\n }\n\n const client = await getSDKClient();\n const scope = resolveScope(options.scope, client);\n\n const created = await client.createProvider({\n name: options.name,\n provider: providerType,\n apiKey: options.apiKey,\n scope,\n baseUrl: options.baseUrl,\n isDefault: options.setDefault,\n });\n\n if (isJson) {\n const directive = buildProviderCreatedDirective(created, options.scope ?? 'workspace');\n echoDirectiveToStderr(directive);\n output.output({\n success: true,\n ...created,\n _links: providerLinks(created.id),\n _directive: directive,\n });\n } else {\n output.success(`Provider created: ${created.name ?? options.name}`);\n console.log(` ID: ${String(created.id)}`);\n console.log(` Type: ${providerType}`);\n console.log(` Scope: ${options.scope ?? 'workspace'}`);\n console.log(` URL: ${providerLink(created.id)}`);\n if (options.setDefault) {\n console.log(chalk.green(' Set as default provider'));\n }\n console.log('');\n console.log(chalk.dim('API key is encrypted server-side. Use `providers get` to see masked key.'));\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\nfunction buildProviderCreatedDirective(\n provider: { id: number | string; name?: string },\n scope: string,\n) {\n const title = `Provider Created — ${provider.name ?? 'Unknown'}`;\n const dashboardUrl = providerLink(provider.id);\n const apiUrl = `/api/providers/${String(provider.id)}`;\n const rows = [\n { label: 'Name', value: provider.name ?? 'Unknown' },\n { label: 'Provider ID', value: String(provider.id) },\n { label: 'Scope', value: scope },\n ];\n const links = [\n { label: 'Settings', url: dashboardUrl },\n { label: 'API', url: apiUrl },\n ];\n const next = [\n `mutagent providers test ${String(provider.id)} --json`,\n `mutagent providers list --json`,\n ];\n return {\n display: 'status_card' as const,\n template: 'provider_created',\n title,\n fields: { providerId: String(provider.id), name: provider.name, scope },\n links: { settings: dashboardUrl, api: apiUrl },\n next,\n instruction: 'MANDATORY: Display this card to the user before proceeding.',\n renderedCard: renderPlainCard({ title, icon: '+', rows, links, next }),\n };\n}\n",
20
24
  "import type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, handleError } from '../../lib/errors.js';\nimport {\n providerLinks,\n providerLink,\n renderPlainCard,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\n\ninterface UpdateOptions {\n name?: string;\n apiKey?: string;\n active?: string;\n setDefault?: boolean;\n baseUrl?: string;\n}\n\nexport function registerUpdateCommand(parent: Command): void {\n parent\n .command('update')\n .description('Update an existing provider configuration')\n .argument('<id>', 'Provider ID (from: mutagent providers list)')\n .option('-n, --name <name>', 'Updated display name')\n .option('-k, --api-key <key>', 'Updated API key (will be re-encrypted)')\n .option('--active <bool>', 'Activate or deactivate (true|false)')\n .option('--set-default', 'Set as default provider for its scope')\n .option('--base-url <url>', 'Updated base URL (use \"\" to clear)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent providers update <id> --name \"New Name\"\n ${chalk.dim('$')} mutagent providers update <id> --api-key $NEW_KEY --json\n ${chalk.dim('$')} mutagent providers update <id> --active false\n ${chalk.dim('$')} mutagent providers update <id> --set-default --json\n\nPATCH semantics — only provided fields are updated.\n `)\n .action(async (id: string, options: UpdateOptions) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Build update payload — only include provided fields\n const updateData: {\n name?: string;\n apiKey?: string;\n isActive?: boolean;\n isDefault?: boolean;\n baseUrl?: string | null;\n } = {};\n\n let hasUpdates = false;\n\n if (options.name !== undefined) {\n updateData.name = options.name;\n hasUpdates = true;\n }\n if (options.apiKey !== undefined) {\n updateData.apiKey = options.apiKey;\n hasUpdates = true;\n }\n if (options.active !== undefined) {\n if (options.active !== 'true' && options.active !== 'false') {\n throw new MutagentError(\n 'INVALID_OPTION',\n `Invalid --active value: ${options.active}`,\n 'Use --active true or --active false'\n );\n }\n updateData.isActive = options.active === 'true';\n hasUpdates = true;\n }\n if (options.setDefault) {\n updateData.isDefault = true;\n hasUpdates = true;\n }\n if (options.baseUrl !== undefined) {\n updateData.baseUrl = options.baseUrl === '' ? null : options.baseUrl;\n hasUpdates = true;\n }\n\n if (!hasUpdates) {\n throw new MutagentError(\n 'NO_UPDATES',\n 'No update fields provided',\n 'Provide at least one of: --name, --api-key, --active, --set-default, --base-url'\n );\n }\n\n const client = await getSDKClient();\n const updated = await client.updateProvider(id, updateData);\n\n if (isJson) {\n const directive = buildProviderUpdatedDirective(updated, id);\n echoDirectiveToStderr(directive);\n output.output({\n success: true,\n ...updated,\n _links: providerLinks(updated.id ?? id),\n _directive: directive,\n });\n } else {\n output.success(`Provider updated: ${String(updated.name ?? id)}`);\n console.log(` ID: ${String(updated.id ?? id)}`);\n console.log(` URL: ${providerLink(updated.id ?? id)}`);\n if (options.apiKey) {\n console.log(chalk.dim(' API key re-encrypted server-side.'));\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\nfunction buildProviderUpdatedDirective(\n provider: { id?: number | string; name?: string },\n requestId: string,\n) {\n const id = provider.id ?? requestId;\n const title = `Provider Updated — ${provider.name ?? String(id)}`;\n const dashboardUrl = providerLink(id);\n const apiUrl = `/api/providers/${String(id)}`;\n const rows = [\n { label: 'Provider ID', value: String(id) },\n ...(provider.name ? [{ label: 'Name', value: provider.name }] : []),\n ];\n const links = [\n { label: 'Settings', url: dashboardUrl },\n { label: 'API', url: apiUrl },\n ];\n const next = [\n `mutagent providers get ${String(id)} --json`,\n `mutagent providers test ${String(id)} --json`,\n ];\n return {\n display: 'status_card' as const,\n template: 'provider_updated',\n title,\n fields: { providerId: String(id), name: provider.name },\n links: { settings: dashboardUrl, api: apiUrl },\n next,\n instruction: 'MANDATORY: Display this card to the user before proceeding.',\n renderedCard: renderPlainCard({ title, icon: '~', rows, links, next }),\n };\n}\n",
21
25
  "import type { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { MutagentError, ApiError, handleError } from '../../lib/errors.js';\nimport {\n providerSettingsLink,\n renderPlainCard,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\n\ninterface DeleteOptions {\n force?: boolean;\n}\n\nexport function registerDeleteCommand(parent: Command): void {\n parent\n .command('delete')\n .description('Delete a provider configuration')\n .argument('<id>', 'Provider ID (from: mutagent providers list)')\n .option('-f, --force', 'Skip confirmation prompt')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent providers delete <id>\n ${chalk.dim('$')} mutagent providers delete <id> --force\n ${chalk.dim('$')} mutagent providers delete <id> --force --json\n\n${chalk.dim('Note: --force is required. The CLI is non-interactive — confirm with the user via your native flow, then pass --force.')}\n${chalk.dim('Warning: API keys are AES-256-GCM encrypted and irrecoverable after deletion. Agents referencing this provider will lose their model config.')}\n `)\n .action(async (id: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(parent);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // In --json mode, auto-skip confirmation (agent controls flow).\n // Otherwise require --force.\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Deleting provider ${id} requires confirmation. ` +\n 'Warning: encrypted API keys are irrecoverable after deletion.',\n 'Run: mutagent providers delete --help\\n' +\n `[Agent: Ask the user to confirm via MultiChoice, then pass --force]\\n` +\n `Use --force to confirm: mutagent providers delete ${id} --force`\n );\n }\n\n const client = await getSDKClient();\n\n try {\n await client.deleteProvider(id);\n } catch (error) {\n // 404 = already deleted = idempotent success\n if (error instanceof ApiError && error.statusCode === 404) {\n if (isJson) {\n const directive = buildProviderDeletedDirective(id);\n output.output({\n success: true,\n deletedId: id,\n _links: { providers: providerSettingsLink() },\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Provider ${id} already deleted (idempotent)`);\n }\n return;\n }\n throw error;\n }\n\n if (isJson) {\n const directive = buildProviderDeletedDirective(id);\n echoDirectiveToStderr(directive);\n output.output({\n success: true,\n deletedId: id,\n _links: { providers: providerSettingsLink() },\n _directive: directive,\n });\n } else {\n output.success(`Deleted provider: ${id}`);\n console.log(` Settings: ${providerSettingsLink()}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n\nfunction buildProviderDeletedDirective(id: string) {\n const title = `Provider Deleted — ${id}`;\n const settingsUrl = providerSettingsLink();\n const rows = [{ label: 'Provider ID', value: id }];\n const links = [{ label: 'Settings', url: settingsUrl }];\n const next = [`mutagent providers list --json`];\n return {\n display: 'status_card' as const,\n template: 'provider_deleted',\n title,\n fields: { providerId: id },\n links: { settings: settingsUrl },\n next,\n instruction: 'MANDATORY: Display this card to the user before proceeding.',\n renderedCard: renderPlainCard({ title, icon: 'x', rows, links, next }),\n };\n}\n",
22
- "import { Command } from 'commander';\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport { existsSync, mkdirSync, writeFileSync } from 'fs';\nimport { execSync } from 'child_process';\nimport { join } from 'path';\nimport { hasCredentials, loadConfig, getApiKey, setDefaultWorkspace } from '../lib/config.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError, MutagentError } from '../lib/errors.js';\nimport {\n FRAMEWORK_DETECTION_MAP,\n detectPackageManager,\n getInstallCommand,\n detectFrameworkFromPackageJson,\n hasRcConfig,\n} from '../lib/framework-detection.js';\nimport type { FrameworkDetection } from '../lib/framework-detection.js';\nimport type { CLIDirective } from '../lib/directive-types.js';\n\n// Re-export for backwards compatibility\nexport { detectPackageManager, getInstallCommand, detectFrameworkFromPackageJson, hasRcConfig } from '../lib/framework-detection.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\ntype InitMode = 'full' | 'cli-only' | 'skip';\n\ninterface InitOptions {\n nonInteractive?: boolean;\n}\n\ninterface MutagentRcConfig {\n defaultWorkspace?: string;\n defaultOrganization?: string;\n endpoint?: string;\n framework?: string;\n}\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\n/**\n * Write .mutagentrc.json to cwd\n */\nfunction writeRcConfig(config: MutagentRcConfig, cwd: string = process.cwd()): void {\n const rcPath = join(cwd, '.mutagentrc.json');\n writeFileSync(rcPath, JSON.stringify(config, null, 2) + '\\n');\n}\n\n// =============================================================================\n// Init Command\n// =============================================================================\n\nexport function createInitCommand(): Command {\n const init = new Command('init')\n .description('Initialize MutagenT in your project')\n .option('--non-interactive', 'Skip interactive prompts (defaults to CLI-only mode)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent init # Interactive setup wizard\n ${chalk.dim('$')} mutagent init --non-interactive # CLI-only mode (no prompts)\n\nModes:\n ${chalk.bold('Full scaffold')} Install SDK + integration package, create config, setup tracing\n ${chalk.bold('CLI-only')} Verify auth + create .mutagentrc.json with workspace/endpoint\n ${chalk.bold('Skip')} Exit without changes\n `)\n .action(async (options: InitOptions) => {\n const isJson = getJsonFlag(init);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const isNonInteractive =\n options.nonInteractive === true ||\n process.env.MUTAGENT_NON_INTERACTIVE === 'true' ||\n process.env.CI === 'true' ||\n !process.stdin.isTTY;\n\n const cwd = process.cwd();\n\n // Step 1: Check existing config\n if (hasRcConfig(cwd)) {\n output.warn('.mutagentrc.json already exists in this directory.');\n if (isNonInteractive) {\n output.info('Use --force to overwrite (not yet supported). Exiting.');\n return;\n }\n const { overwrite } = await inquirer.prompt<{ overwrite: boolean }>([{\n type: 'confirm',\n name: 'overwrite',\n message: '.mutagentrc.json already exists. Overwrite?',\n default: false,\n }]);\n if (!overwrite) {\n output.info('Init cancelled.');\n return;\n }\n }\n\n // Step 2: Check auth\n const authenticated = hasCredentials();\n if (!authenticated) {\n output.warn('Not authenticated.');\n output.info('Run: mutagent auth login --browser');\n if (isNonInteractive) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'Authentication required before init',\n 'Run: mutagent auth login --browser'\n );\n }\n const { doAuth } = await inquirer.prompt<{ doAuth: boolean }>([{\n type: 'confirm',\n name: 'doAuth',\n message: 'Would you like to authenticate now?',\n default: true,\n }]);\n if (doAuth) {\n output.info('Run \"mutagent auth login --browser\" and then re-run \"mutagent init\".');\n return;\n }\n }\n\n // Step 3: Detect framework\n const detectedFramework = detectFrameworkFromPackageJson(cwd);\n\n // Step 4: Determine mode\n let mode: InitMode;\n let confirmedFramework: FrameworkDetection | null = detectedFramework;\n\n if (isNonInteractive) {\n mode = 'cli-only';\n if (isJson) {\n output.output({\n mode: 'cli-only',\n nonInteractive: true,\n detectedFramework: detectedFramework?.name ?? null,\n });\n }\n } else {\n // Show detected framework\n if (detectedFramework) {\n output.info(`Detected framework: ${detectedFramework.displayName} (${detectedFramework.npmPackage})`);\n\n const { confirmFramework } = await inquirer.prompt<{ confirmFramework: boolean }>([{\n type: 'confirm',\n name: 'confirmFramework',\n message: `Use ${detectedFramework.displayName}?`,\n default: true,\n }]);\n\n if (!confirmFramework) {\n const frameworkChoices = [\n { name: 'Mastra', value: 'mastra' },\n { name: 'LangChain', value: 'langchain' },\n { name: 'LangGraph', value: 'langgraph' },\n { name: 'Vercel AI SDK', value: 'vercel-ai' },\n { name: 'OpenAI SDK', value: 'openai' },\n { name: 'Generic (OpenAI-compatible)', value: 'generic' },\n { name: 'None / Skip framework', value: 'none' },\n ];\n\n const { selectedFramework } = await inquirer.prompt<{ selectedFramework: string }>([{\n type: 'list',\n name: 'selectedFramework',\n message: 'Select your AI framework:',\n choices: frameworkChoices,\n }]);\n\n if (selectedFramework === 'none') {\n confirmedFramework = null;\n } else {\n // Find framework in detection map by name\n const entry = Object.values(FRAMEWORK_DETECTION_MAP).find(f => f.name === selectedFramework);\n confirmedFramework = entry ?? null;\n }\n }\n } else {\n output.info('No AI framework detected in package.json.');\n }\n\n // Ask mode\n const modeChoices = [\n ...(confirmedFramework?.mutagentPackage ? [{\n name: `Full scaffold - Install @mutagent/sdk + ${confirmedFramework.mutagentPackage}, create config, setup tracing`,\n value: 'full' as const,\n }] : []),\n {\n name: 'CLI-only - Verify auth + create .mutagentrc.json config',\n value: 'cli-only' as const,\n },\n {\n name: 'Skip - Exit without changes',\n value: 'skip' as const,\n },\n ];\n\n const { selectedMode } = await inquirer.prompt<{ selectedMode: InitMode }>([{\n type: 'list',\n name: 'selectedMode',\n message: 'How would you like to initialize MutagenT?',\n choices: modeChoices,\n }]);\n\n mode = selectedMode;\n }\n\n // Step 5: Execute based on mode\n if (mode === 'skip') {\n output.info('Init skipped.');\n return;\n }\n\n // Load config for workspace/endpoint\n const config = loadConfig();\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n let workspace = config.defaultWorkspace;\n\n // Best-effort: validate workspace against API\n let workspaceValidation: { id: string; name: string; validated: boolean; corrected: boolean } | undefined;\n let resolvedOrgId: string | undefined;\n if (authenticated) {\n try {\n const apiKey = getApiKey();\n if (apiKey) {\n const { fetchOrganizations, fetchWorkspaces } = await import('../lib/sdk-client.js');\n let orgId = config.defaultOrganization;\n if (!orgId) {\n const orgs = await fetchOrganizations(apiKey, endpoint);\n orgId = orgs[0]?.id;\n }\n if (orgId) {\n resolvedOrgId = orgId;\n const workspaces = await fetchWorkspaces(apiKey, endpoint, orgId);\n if (workspaces.length > 0) {\n const found = workspace ? workspaces.find(w => w.id === workspace) : undefined;\n if (found) {\n workspaceValidation = { id: found.id, name: found.name, validated: true, corrected: false };\n } else if (workspaces[0]) {\n const first = workspaces[0];\n setDefaultWorkspace(first.id);\n workspace = first.id;\n workspaceValidation = { id: first.id, name: first.name, validated: true, corrected: true };\n }\n }\n }\n }\n } catch {\n // Best-effort — don't block init on network failure\n }\n }\n\n const rcConfig: MutagentRcConfig = {\n endpoint,\n ...(workspace ? { defaultWorkspace: workspace } : {}),\n ...(resolvedOrgId ? { defaultOrganization: resolvedOrgId } : {}),\n ...(confirmedFramework ? { framework: confirmedFramework.name } : {}),\n };\n\n if (mode === 'full' && confirmedFramework?.mutagentPackage) {\n // Full scaffold: install packages + create config\n const pm = detectPackageManager(cwd);\n const packages = ['@mutagent/sdk', confirmedFramework.mutagentPackage];\n const installCmd = getInstallCommand(pm, packages);\n\n output.info(`Installing: ${packages.join(', ')}`);\n output.info(`Running: ${installCmd}`);\n\n try {\n execSync(installCmd, { cwd, stdio: 'inherit' });\n output.success('Packages installed successfully.');\n } catch {\n output.error('Package installation failed. You can install manually:');\n output.info(` ${installCmd}`);\n }\n\n // Write config\n writeRcConfig(rcConfig, cwd);\n output.success('Created .mutagentrc.json');\n\n // Workspace validation hint\n if (!isJson && workspaceValidation) {\n if (workspaceValidation.corrected) {\n output.warn(`Workspace auto-corrected to: ${workspaceValidation.name} (${workspaceValidation.id})`);\n } else {\n output.info(`Workspace: ${workspaceValidation.name} (${workspaceValidation.id})`);\n }\n }\n if (!isJson) {\n output.info('Verify workspace: mutagent workspaces list --json');\n }\n\n // Print next steps\n console.log('');\n output.info('Next steps:');\n output.info(' 1. Run: mutagent skills install (install the CLI skill for AI agents)');\n output.info(` 2. Add MutagenT tracing to your ${confirmedFramework.name} code via ${confirmedFramework.mutagentPackage}`);\n output.info(' 3. Run: mutagent providers list (confirm an LLM provider is configured)');\n } else {\n // CLI-only mode: just create config\n writeRcConfig(rcConfig, cwd);\n output.success('Created .mutagentrc.json');\n\n // Workspace validation hint\n if (!isJson && workspaceValidation) {\n if (workspaceValidation.corrected) {\n output.warn(`Workspace auto-corrected to: ${workspaceValidation.name} (${workspaceValidation.id})`);\n } else {\n output.info(`Workspace: ${workspaceValidation.name} (${workspaceValidation.id})`);\n }\n }\n\n if (!authenticated) {\n output.info('Next: mutagent auth login --browser');\n } else {\n output.info('Ready! Run \"mutagent --help\" to see available commands.');\n if (!isJson) {\n output.info('Verify workspace: mutagent workspaces list --json');\n }\n }\n }\n\n // Step 6: Skill + hooks install\n const skillPath = join(cwd, '.claude/skills/mutagent-cli/SKILL.md');\n const skillInstalled = existsSync(skillPath);\n\n if (!isNonInteractive && !skillInstalled) {\n // Interactive: prompt directly\n const { installSkill } = await inquirer.prompt<{ installSkill: boolean }>([{\n type: 'confirm',\n name: 'installSkill',\n message: 'Install MutagenT skill for Claude Code? (Teaches AI agents how to use the CLI)',\n default: true,\n }]);\n\n if (installSkill) {\n try {\n const skillDir = join(cwd, '.claude/skills/mutagent-cli');\n if (!existsSync(skillDir)) {\n mkdirSync(skillDir, { recursive: true });\n }\n execSync('node ' + join(cwd, 'node_modules/.bin/mutagent') + ' skills install', {\n cwd,\n stdio: 'ignore',\n });\n output.success('Installed MutagenT CLI skill for Claude Code');\n } catch {\n output.info('Install skill manually: mutagent skills install');\n }\n }\n }\n\n // Always emit structured summary (default output, not gated on --json)\n const initDirective: CLIDirective = {\n instruction: skillInstalled\n ? 'Verify workspace. Run: mutagent workspaces list --json'\n : [\n 'MANDATORY: Ask the user whether they want to install the MutagenT CLI skill and Claude Code hooks.',\n 'Use your AskUserQuestion tool to present the following choices:',\n '1. Install skill + hooks (Recommended) — Installs the CLI skill AND configures Claude Code session telemetry hooks',\n '2. Install skill only — Installs the CLI skill (teaches AI agents to use MutagenT CLI)',\n '3. Skip — Do not install',\n '',\n 'If the user picks option 1, run BOTH commands:',\n ' mutagent skills install --json',\n ' mutagent hooks install --json',\n '',\n 'If the user picks option 2, run only: mutagent skills install --json',\n '',\n 'After skill/hooks install, verify workspace: mutagent workspaces list --json',\n ].join('\\n'),\n next: ['mutagent workspaces list --json', 'mutagent providers list --json'],\n ...(!skillInstalled ? {\n askUserQuestions: [{\n question: 'Would you like to install the MutagenT CLI skill and Claude Code hooks?',\n options: [\n { label: 'Install skill + hooks (Recommended)', description: 'Installs the CLI skill AND configures Claude Code session telemetry hooks' },\n { label: 'Install skill only', description: 'Installs the CLI skill (teaches AI agents to use MutagenT CLI)' },\n { label: 'Skip', description: 'Do not install' },\n ],\n multiSelect: false,\n }],\n } : {}),\n };\n const summary = {\n success: true,\n mode,\n configFile: '.mutagentrc.json',\n config: rcConfig,\n framework: confirmedFramework?.name ?? null,\n authenticated,\n workspaceValidation: workspaceValidation ?? null,\n skillInstalled: skillInstalled || existsSync(skillPath), // re-check after interactive install\n _directive: initDirective,\n };\n\n output.output(summary);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return init;\n}\n",
23
- "import { existsSync, readFileSync } from 'fs';\nimport { execSync } from 'child_process';\nimport { join } from 'path';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type PackageManager = 'bun' | 'npm' | 'yarn' | 'pnpm';\n\nexport interface FrameworkDetection {\n name: string;\n displayName: string;\n npmPackage: string;\n mutagentPackage?: string;\n}\n\n// =============================================================================\n// Framework Detection Map\n// =============================================================================\n\n/**\n * Maps package.json dependency names to framework info.\n * Order matters: more specific packages should come first.\n */\nexport const FRAMEWORK_DETECTION_MAP: Record<string, FrameworkDetection> = {\n '@mastra/core': {\n name: 'mastra',\n displayName: 'Mastra',\n npmPackage: '@mastra/core',\n },\n '@langchain/langgraph': {\n name: 'langgraph',\n displayName: 'LangGraph',\n npmPackage: '@langchain/langgraph',\n mutagentPackage: '@mutagent/langgraph',\n },\n 'langchain': {\n name: 'langchain',\n displayName: 'LangChain',\n npmPackage: 'langchain',\n mutagentPackage: '@mutagent/langchain',\n },\n '@langchain/core': {\n name: 'langchain',\n displayName: 'LangChain',\n npmPackage: '@langchain/core',\n mutagentPackage: '@mutagent/langchain',\n },\n '@ai-sdk/core': {\n name: 'vercel-ai',\n displayName: 'Vercel AI SDK',\n npmPackage: '@ai-sdk/core',\n mutagentPackage: '@mutagent/vercel-ai',\n },\n 'ai': {\n name: 'vercel-ai',\n displayName: 'Vercel AI SDK',\n npmPackage: 'ai',\n mutagentPackage: '@mutagent/vercel-ai',\n },\n '@google/genai': {\n name: 'generic',\n displayName: 'Google GenAI',\n npmPackage: '@google/genai',\n },\n 'openai': {\n name: 'openai',\n displayName: 'OpenAI SDK',\n npmPackage: 'openai',\n mutagentPackage: '@mutagent/openai',\n },\n};\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\n/**\n * Detect the package manager by scanning lockfiles in cwd\n */\nexport function detectPackageManager(cwd: string = process.cwd()): PackageManager {\n if (existsSync(join(cwd, 'bun.lockb')) || existsSync(join(cwd, 'bun.lock'))) {\n return 'bun';\n }\n if (existsSync(join(cwd, 'pnpm-lock.yaml'))) {\n return 'pnpm';\n }\n if (existsSync(join(cwd, 'yarn.lock'))) {\n return 'yarn';\n }\n if (existsSync(join(cwd, 'package-lock.json'))) {\n return 'npm';\n }\n\n // Fallback: check if bun is available\n try {\n execSync('bun --version', { stdio: 'ignore' });\n return 'bun';\n } catch {\n return 'npm';\n }\n}\n\n/**\n * Build an install command for the given package manager and packages\n */\nexport function getInstallCommand(pm: PackageManager, packages: string[]): string {\n const pkgList = packages.join(' ');\n const commands: Record<PackageManager, string> = {\n bun: `bun add ${pkgList}`,\n npm: `npm install ${pkgList}`,\n yarn: `yarn add ${pkgList}`,\n pnpm: `pnpm add ${pkgList}`,\n };\n return commands[pm];\n}\n\n/**\n * Detect framework from package.json dependencies in cwd\n */\nexport function detectFrameworkFromPackageJson(cwd: string = process.cwd()): FrameworkDetection | null {\n const pkgPath = join(cwd, 'package.json');\n if (!existsSync(pkgPath)) {\n return null;\n }\n\n let pkg: { dependencies?: Record<string, string>; devDependencies?: Record<string, string> };\n try {\n pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as typeof pkg;\n } catch {\n return null;\n }\n\n const allDeps = {\n ...pkg.dependencies,\n ...pkg.devDependencies,\n };\n\n // Check detection map in order (more specific first)\n for (const [depName, framework] of Object.entries(FRAMEWORK_DETECTION_MAP)) {\n if (depName in allDeps) {\n return framework;\n }\n }\n\n return null;\n}\n\n/**\n * Check if .mutagentrc.json already exists in cwd\n */\nexport function hasRcConfig(cwd: string = process.cwd()): boolean {\n return existsSync(join(cwd, '.mutagentrc.json'));\n}\n",
26
+ "import { Command } from 'commander';\nimport inquirer from 'inquirer';\nimport chalk from 'chalk';\nimport { execSync } from 'child_process';\nimport { hasCredentials, loadConfig, getApiKey, setDefaultWorkspace } from '../lib/config.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError, MutagentError } from '../lib/errors.js';\nimport {\n FRAMEWORK_DETECTION_MAP,\n detectPackageManager,\n getInstallCommand,\n detectFrameworkFromPackageJson,\n hasRcConfig,\n} from '../lib/framework-detection.js';\nimport type { FrameworkDetection } from '../lib/framework-detection.js';\nimport type { CLIDirective } from '../lib/directive-types.js';\nimport { writeRcConfig, type MutagentRcConfig } from '../lib/rc-config.js';\n\n// Re-export for backwards compatibility\nexport { detectPackageManager, getInstallCommand, detectFrameworkFromPackageJson, hasRcConfig } from '../lib/framework-detection.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\ntype InitMode = 'full' | 'cli-only' | 'skip';\n\ninterface InitOptions {\n nonInteractive?: boolean;\n}\n\n// =============================================================================\n// Init Command\n// =============================================================================\n\nexport function createInitCommand(): Command {\n const init = new Command('init')\n .description('Initialize MutagenT in your project')\n .option('--non-interactive', 'Skip interactive prompts (defaults to CLI-only mode)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent init # Interactive setup wizard\n ${chalk.dim('$')} mutagent init --non-interactive # CLI-only mode (no prompts)\n\nModes:\n ${chalk.bold('Full scaffold')} Install SDK + integration package, create config, setup tracing\n ${chalk.bold('CLI-only')} Verify auth + create .mutagentrc.json with workspace/endpoint\n ${chalk.bold('Skip')} Exit without changes\n `)\n .action(async (options: InitOptions) => {\n const isJson = getJsonFlag(init);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const isNonInteractive =\n options.nonInteractive === true ||\n process.env.MUTAGENT_NON_INTERACTIVE === 'true' ||\n process.env.CI === 'true' ||\n !process.stdin.isTTY;\n\n const cwd = process.cwd();\n\n // Step 1: Check existing config\n if (hasRcConfig(cwd)) {\n output.warn('.mutagentrc.json already exists in this directory.');\n if (isNonInteractive) {\n output.info('Use --force to overwrite (not yet supported). Exiting.');\n return;\n }\n const { overwrite } = await inquirer.prompt<{ overwrite: boolean }>([{\n type: 'confirm',\n name: 'overwrite',\n message: '.mutagentrc.json already exists. Overwrite?',\n default: false,\n }]);\n if (!overwrite) {\n output.info('Init cancelled.');\n return;\n }\n }\n\n // Step 2: Check auth\n const authenticated = hasCredentials();\n if (!authenticated) {\n output.warn('Not authenticated.');\n output.info('Run: mutagent auth login --browser');\n if (isNonInteractive) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'Authentication required before init',\n 'Run: mutagent auth login --browser'\n );\n }\n const { doAuth } = await inquirer.prompt<{ doAuth: boolean }>([{\n type: 'confirm',\n name: 'doAuth',\n message: 'Would you like to authenticate now?',\n default: true,\n }]);\n if (doAuth) {\n output.info('Run \"mutagent auth login --browser\" and then re-run \"mutagent init\".');\n return;\n }\n }\n\n // Step 3: Detect framework\n const detectedFramework = detectFrameworkFromPackageJson(cwd);\n\n // Step 4: Determine mode\n let mode: InitMode;\n let confirmedFramework: FrameworkDetection | null = detectedFramework;\n\n if (isNonInteractive) {\n mode = 'cli-only';\n if (isJson) {\n output.output({\n mode: 'cli-only',\n nonInteractive: true,\n detectedFramework: detectedFramework?.name ?? null,\n });\n }\n } else {\n // Show detected framework\n if (detectedFramework) {\n output.info(`Detected framework: ${detectedFramework.displayName} (${detectedFramework.npmPackage})`);\n\n const { confirmFramework } = await inquirer.prompt<{ confirmFramework: boolean }>([{\n type: 'confirm',\n name: 'confirmFramework',\n message: `Use ${detectedFramework.displayName}?`,\n default: true,\n }]);\n\n if (!confirmFramework) {\n const frameworkChoices = [\n { name: 'Mastra', value: 'mastra' },\n { name: 'LangChain', value: 'langchain' },\n { name: 'LangGraph', value: 'langgraph' },\n { name: 'Vercel AI SDK', value: 'vercel-ai' },\n { name: 'OpenAI SDK', value: 'openai' },\n { name: 'Generic (OpenAI-compatible)', value: 'generic' },\n { name: 'None / Skip framework', value: 'none' },\n ];\n\n const { selectedFramework } = await inquirer.prompt<{ selectedFramework: string }>([{\n type: 'list',\n name: 'selectedFramework',\n message: 'Select your AI framework:',\n choices: frameworkChoices,\n }]);\n\n if (selectedFramework === 'none') {\n confirmedFramework = null;\n } else {\n // Find framework in detection map by name\n const entry = Object.values(FRAMEWORK_DETECTION_MAP).find(f => f.name === selectedFramework);\n confirmedFramework = entry ?? null;\n }\n }\n } else {\n output.info('No AI framework detected in package.json.');\n }\n\n // Ask mode\n const modeChoices = [\n ...(confirmedFramework?.mutagentPackage ? [{\n name: `Full scaffold - Install @mutagent/sdk + ${confirmedFramework.mutagentPackage}, create config, setup tracing`,\n value: 'full' as const,\n }] : []),\n {\n name: 'CLI-only - Verify auth + create .mutagentrc.json config',\n value: 'cli-only' as const,\n },\n {\n name: 'Skip - Exit without changes',\n value: 'skip' as const,\n },\n ];\n\n const { selectedMode } = await inquirer.prompt<{ selectedMode: InitMode }>([{\n type: 'list',\n name: 'selectedMode',\n message: 'How would you like to initialize MutagenT?',\n choices: modeChoices,\n }]);\n\n mode = selectedMode;\n }\n\n // Step 5: Execute based on mode\n if (mode === 'skip') {\n output.info('Init skipped.');\n return;\n }\n\n // Load config for workspace/endpoint\n const config = loadConfig();\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n let workspace = config.defaultWorkspace;\n\n // Best-effort: validate workspace against API\n let workspaceValidation: { id: string; name: string; validated: boolean; corrected: boolean } | undefined;\n let resolvedOrgId: string | undefined;\n if (authenticated) {\n try {\n const apiKey = getApiKey();\n if (apiKey) {\n const { fetchOrganizations, fetchWorkspaces } = await import('../lib/sdk-client.js');\n let orgId = config.defaultOrganization;\n if (!orgId) {\n const orgs = await fetchOrganizations(apiKey, endpoint);\n orgId = orgs[0]?.id;\n }\n if (orgId) {\n resolvedOrgId = orgId;\n const workspaces = await fetchWorkspaces(apiKey, endpoint, orgId);\n if (workspaces.length > 0) {\n const found = workspace ? workspaces.find(w => w.id === workspace) : undefined;\n if (found) {\n workspaceValidation = { id: found.id, name: found.name, validated: true, corrected: false };\n } else if (workspaces[0]) {\n const first = workspaces[0];\n setDefaultWorkspace(first.id);\n workspace = first.id;\n workspaceValidation = { id: first.id, name: first.name, validated: true, corrected: true };\n }\n }\n }\n }\n } catch {\n // Best-effort — don't block init on network failure\n }\n }\n\n const rcConfig: MutagentRcConfig = {\n endpoint,\n ...(workspace ? { defaultWorkspace: workspace } : {}),\n ...(resolvedOrgId ? { defaultOrganization: resolvedOrgId } : {}),\n ...(confirmedFramework ? { framework: confirmedFramework.name } : {}),\n };\n\n if (mode === 'full' && confirmedFramework?.mutagentPackage) {\n // Full scaffold: install packages + create config\n const pm = detectPackageManager(cwd);\n const packages = ['@mutagent/sdk', confirmedFramework.mutagentPackage];\n const installCmd = getInstallCommand(pm, packages);\n\n output.info(`Installing: ${packages.join(', ')}`);\n output.info(`Running: ${installCmd}`);\n\n try {\n execSync(installCmd, { cwd, stdio: 'inherit' });\n output.success('Packages installed successfully.');\n } catch {\n output.error('Package installation failed. You can install manually:');\n output.info(` ${installCmd}`);\n }\n\n // Write config\n writeRcConfig(rcConfig, cwd);\n output.success('Created .mutagentrc.json');\n\n // Workspace validation hint\n if (!isJson && workspaceValidation) {\n if (workspaceValidation.corrected) {\n output.warn(`Workspace auto-corrected to: ${workspaceValidation.name} (${workspaceValidation.id})`);\n } else {\n output.info(`Workspace: ${workspaceValidation.name} (${workspaceValidation.id})`);\n }\n }\n if (!isJson) {\n output.info('Verify workspace: mutagent workspaces list --json');\n }\n\n // Print next steps\n console.log('');\n output.info('Next steps:');\n output.info(` 1. Add MutagenT tracing to your ${confirmedFramework.name} code via ${confirmedFramework.mutagentPackage}`);\n output.info(' 2. Run: mutagent providers list (confirm an LLM provider is configured)');\n } else {\n // CLI-only mode: just create config\n writeRcConfig(rcConfig, cwd);\n output.success('Created .mutagentrc.json');\n\n // Workspace validation hint\n if (!isJson && workspaceValidation) {\n if (workspaceValidation.corrected) {\n output.warn(`Workspace auto-corrected to: ${workspaceValidation.name} (${workspaceValidation.id})`);\n } else {\n output.info(`Workspace: ${workspaceValidation.name} (${workspaceValidation.id})`);\n }\n }\n\n if (!authenticated) {\n output.info('Next: mutagent auth login --browser');\n } else {\n output.info('Ready! Run \"mutagent --help\" to see available commands.');\n if (!isJson) {\n output.info('Verify workspace: mutagent workspaces list --json');\n }\n }\n }\n\n // Always emit structured summary (default output, not gated on --json).\n // Note: `mutagent init` only writes config now — it does NOT install or\n // nag the CLI skill. The skill remains installable via `mutagent skills\n // install`, but it is no longer pushed here.\n const initDirective: CLIDirective = {\n instruction: 'Verify workspace. Run: mutagent workspaces list --json',\n next: ['mutagent workspaces list --json', 'mutagent providers list --json'],\n };\n const summary = {\n success: true,\n mode,\n configFile: '.mutagentrc.json',\n config: rcConfig,\n framework: confirmedFramework?.name ?? null,\n authenticated,\n workspaceValidation: workspaceValidation ?? null,\n _directive: initDirective,\n };\n\n output.output(summary);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return init;\n}\n",
24
27
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { existsSync, mkdirSync, writeFileSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { execSync } from 'child_process';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { SKILL_CONTENT, SKILL_FILES } from '../generated/skill-content.js';\n\n// Re-export so tests and external callers can still import SKILL_CONTENT\n// from this module (backward compat with pre-R4 imports).\nexport { SKILL_CONTENT };\n\n/**\n * Find the git repository root directory.\n * Falls back to process.cwd() if not inside a git repo.\n */\nexport function findRepoRoot(): string {\n try {\n return execSync('git rev-parse --show-toplevel', {\n encoding: 'utf-8',\n stdio: ['pipe', 'pipe', 'pipe'],\n }).trim();\n } catch {\n return process.cwd();\n }\n}\n\n// =============================================================================\n// Skill Content\n// =============================================================================\n//\n// The canonical source of truth for the skill content is a real markdown\n// file living in the CLI package's own Claude Code workspace:\n//\n// mutagent-cli/.claude/skills/mutagent-cli/SKILL.md\n//\n// A prebuild/pretest/prelint/pretype-check hook (`scripts/sync-skill.ts`)\n// reads that file and regenerates `src/generated/skill-content.ts`,\n// exporting the raw markdown as `SKILL_CONTENT`. Keeping the source as\n// a real .md file (not a hardcoded TypeScript string) makes it\n// maintainable; the generated TS module is a build implementation detail.\n//\n// TWO `.claude/` dirs, at TWO different levels:\n// - SOURCE: `mutagent-cli/.claude/skills/mutagent-cli/SKILL.md`\n// (this package's own Claude Code workspace — package-local)\n// - DESTINATION: `<user-cwd>/.claude/skills/mutagent-cli/SKILL.md`\n// (the end user's top-level project .claude/, where `skills install`\n// WRITES on the user's machine — SKILL_DIR below)\n// Same relative path, different levels, never collide.\n//\n// If `SKILL_CONTENT` is missing or empty at runtime, the command throws\n// LOUDLY — there is no fallback, by design. The skill dump pipeline\n// either ships the real content or fails the build.\n\nconst SKILL_DIR = '.claude/skills/mutagent-cli';\nconst SKILL_ENTRY_FILE = 'SKILL.md';\n\nfunction assertSkillFilesValid(): void {\n if (Object.keys(SKILL_FILES).length === 0) {\n throw new Error(\n 'SKILL_FILES is missing or empty. This indicates a broken build: ' +\n 'scripts/sync-skill.ts must regenerate src/generated/skill-content.ts ' +\n 'from .claude/skills/mutagent-cli/ before build/test. ' +\n 'Run `bun run sync-skill` to debug.',\n );\n }\n const entry = SKILL_FILES[SKILL_ENTRY_FILE];\n if (typeof entry !== 'string' || entry.trim().length === 0) {\n throw new Error(\n `SKILL_FILES[\"${SKILL_ENTRY_FILE}\"] is missing or empty. ` +\n 'Check .claude/skills/mutagent-cli/SKILL.md and run `bun run sync-skill`.',\n );\n }\n if (!entry.startsWith('---')) {\n throw new Error(\n `SKILL_FILES[\"${SKILL_ENTRY_FILE}\"] is malformed: expected YAML frontmatter (\"---\") at start.`,\n );\n }\n}\n\n/**\n * Returns the canonical skill entry content (SKILL.md). Exported for tests\n * and back-compat with pre-R4 callers. New code should use\n * `getSkillFiles()` to walk the full tree including workflows/ and concepts/.\n */\nexport function getSkillContent(): string {\n assertSkillFilesValid();\n return SKILL_FILES[SKILL_ENTRY_FILE] ?? '';\n}\n\n/**\n * Returns the full skill file tree as a map keyed by path relative to the\n * skill root (e.g. `SKILL.md`, `workflows/setup.md`,\n * `workflows/install.md`). Exported for tests so the pipeline can be\n * asserted from outside the command action.\n */\nexport function getSkillFiles(): Record<string, string> {\n assertSkillFilesValid();\n return SKILL_FILES;\n}\n\n// =============================================================================\n// Skills Command\n// =============================================================================\n\nexport function createSkillsCommand(): Command {\n const skills = new Command('skills').description(\n 'Manage MutagenT CLI skills for coding agents',\n );\n\n skills\n .command('install')\n .description('Install MutagenT CLI skill for Claude Code')\n .addHelpText(\n 'after',\n `\nExamples:\n ${chalk.dim('$')} mutagent skills install\n\nThis creates a Claude Code skill at .claude/skills/mutagent-cli/SKILL.md\nthat teaches coding agents how to use the MutagenT CLI effectively.\n `,\n )\n .action((_options: Record<string, unknown>, cmd: Command) => {\n const parentCmd = cmd.parent?.parent;\n const isJson = parentCmd ? getJsonFlag(parentCmd) : false;\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n const repoRoot = findRepoRoot();\n const skillDir = join(repoRoot, SKILL_DIR);\n\n // Write the full skill tree — source of truth is the package-local\n // mutagent-cli/.claude/skills/mutagent-cli/**/*.md, synced into\n // src/generated/skill-content.ts at build time.\n const files = getSkillFiles();\n const writtenFiles: { path: string; bytes: number }[] = [];\n let totalBytes = 0;\n\n // Stable sorted traversal — entry file first for tree rendering.\n const sortedKeys = Object.keys(files).sort((a, b) => {\n if (a === SKILL_ENTRY_FILE) return -1;\n if (b === SKILL_ENTRY_FILE) return 1;\n return a.localeCompare(b);\n });\n\n for (const relPath of sortedKeys) {\n const destPath = join(skillDir, relPath);\n const parentDir = dirname(destPath);\n if (!existsSync(parentDir)) {\n mkdirSync(parentDir, { recursive: true });\n }\n const raw = files[relPath] ?? '';\n const finalContent = raw.endsWith('\\n') ? raw : `${raw}\\n`;\n writeFileSync(destPath, finalContent, 'utf-8');\n writtenFiles.push({ path: destPath, bytes: finalContent.length });\n totalBytes += finalContent.length;\n }\n\n if (isJson) {\n output.output({\n installed: true,\n name: 'mutagent-cli',\n skillDir,\n files: writtenFiles,\n totalBytes,\n });\n } else {\n output.success(`Installed MutagenT CLI skill`);\n console.log(` ${chalk.dim('Dir:')} ${skillDir}`);\n console.log('');\n // Render a simple tree of written files\n for (let i = 0; i < writtenFiles.length; i++) {\n const entry = writtenFiles[i];\n if (!entry) continue;\n const relPath = sortedKeys[i] ?? '';\n const isLast = i === writtenFiles.length - 1;\n const prefix = isLast ? '└─' : '├─';\n console.log(\n ` ${chalk.dim(prefix)} ${relPath} ${chalk.dim(`(${String(entry.bytes)} bytes)`)}`,\n );\n }\n console.log('');\n console.log(\n ` ${chalk.dim(`${String(sortedKeys.length)} file(s), ${String(totalBytes)} bytes total.`)}`,\n );\n console.log(\n ` ${chalk.dim('This skill teaches coding agents how to use the MutagenT CLI.')}`,\n );\n console.log(\n ` ${chalk.dim('It will be automatically loaded by Claude Code when relevant triggers match.')}`,\n );\n }\n });\n\n return skills;\n}\n",
25
28
  "/**\n * AUTO-GENERATED — DO NOT EDIT BY HAND\n *\n * Regenerate via: bun run sync-skill\n * Source of truth: mutagent-cli/.claude/skills/mutagent-cli/**\\/*.md\n *\n * This file is gitignored. Every lint/type-check/build/test run\n * regenerates it from the canonical skill tree so the two cannot drift.\n */\n\nexport const SKILL_FILES: Record<string, string> = {\n \"SKILL.md\": \"---\\nname: mutagent-cli\\ndescription: |\\n MutagenT CLI - the command-line client for the MutagenT platform.\\n Guides coding agents through setup (login, init, providers, workspaces),\\n installing MutagenT packages (helix, diagnostics, evaluator), and sending\\n product feedback.\\n Triggers: \\\"mutagent\\\", \\\"mutagent cli\\\", \\\"mutagent login\\\", \\\"set up mutagent\\\",\\n \\\"install diagnostics\\\", \\\"install evaluator\\\", \\\"install helix\\\", \\\"mutagent install\\\",\\n \\\"send feedback\\\", \\\"mutagent feedback\\\", \\\"report a bug\\\", \\\"usage\\\", \\\"quota\\\",\\n \\\"install skill\\\", \\\"install hooks\\\".\\nlicense: MIT\\nmetadata:\\n skill_version: \\\"1.2.0\\\"\\n skill_min_cli_version: \\\"0.1.163\\\"\\n---\\n\\n# MutagenT CLI Skill\\n\\n> **Canonical source**: `mutagent-cli/.claude/skills/mutagent-cli/SKILL.md`\\n> Packed into the CLI binary via `scripts/sync-skill.ts`. Installed to end-user\\n> dev environments via `mutagent skills install`. Edit this file, not the installed copy.\\n\\n---\\n\\n## CLI Prerequisite Check (RUN FIRST)\\n\\nBefore executing ANY workflow step, verify the CLI is installed and version-compatible:\\n\\n**Step 1 -- Check CLI presence:**\\n```bash\\nmutagent --version --json\\n```\\n\\n**Step 2 -- If command not found (error / not on PATH):**\\n\\nThis is the **Path 2 onboarding case**: the Skill was installed first (e.g. from a skill registry, manually, or bundled in someone else's CLAUDE.md), but the CLI itself isn't installed yet. Do NOT just dump install instructions and stop -- proactively **offer to install it**.\\n\\n**2a. Detect the user's package manager** (best-effort — check in this order):\\n```bash\\n# In the user's project root (cwd):\\ntest -f bun.lockb && echo \\\"bun\\\"\\ntest -f pnpm-lock.yaml && echo \\\"pnpm\\\"\\ntest -f yarn.lock && echo \\\"yarn\\\"\\ntest -f package-lock.json && echo \\\"npm\\\"\\n# Fallback: which bun || which pnpm || which yarn || which npm\\n```\\nIf multiple lockfiles exist, prefer in order: `bun > pnpm > yarn > npm`.\\nIf no lockfile and the user is in a non-JS project (e.g. Python, Go), ask which they prefer.\\n\\n**2b. Ask the user via AskUserQuestion** (do NOT auto-install without consent):\\n\\n> \\\"The MutagenT CLI is not installed yet. I can install it globally via `<detected-pm>`. Proceed?\\\"\\n\\nOptions to present:\\n1. **Yes, install globally with `<detected-pm>`** (Recommended) -- runs `<pm> add -g @mutagent/cli` (or `npm install -g @mutagent/cli` for npm)\\n2. **Yes, but use a different package manager** -- prompt for choice (npm / bun / pnpm / yarn)\\n3. **No, I'll install it myself** -- show the four install commands as a verbatim block; STOP and wait for the user to install\\n4. **Skip — I have it installed via a different path** -- ask the user to add it to PATH and re-invoke\\n\\n**2c. On user approval (option 1 or 2)**, run the install command in a Bash tool call:\\n```bash\\n# bun\\nbun add -g @mutagent/cli\\n# npm\\nnpm install -g @mutagent/cli\\n# pnpm\\npnpm add -g @mutagent/cli\\n# yarn\\nyarn global add @mutagent/cli\\n```\\nShow the install output to the user verbatim. After it completes, **re-run Step 1** (`mutagent --version --json`) to confirm the CLI is now on PATH. If the post-install version check still fails (e.g. global bin not on PATH), tell the user:\\n> \\\"Install succeeded but `mutagent` isn't on PATH yet. Common fixes:\\n> - bun: `export PATH=\\\\\\\"$HOME/.bun/bin:$PATH\\\\\\\"`\\n> - npm: check `npm config get prefix` and add `<prefix>/bin` to PATH\\n> - pnpm: `pnpm setup` then restart your shell\\n> - yarn: `yarn global bin` and add that path to PATH\\\"\\n> Then ask the user to restart their shell or source the relevant rc file, and re-invoke me.\\n\\n**2d. On rejection (option 3 or 4)**, output the four install commands as a verbatim block and STOP. Do NOT proceed with any workflow until the user confirms the CLI is installed and re-invokes the skill.\\n\\n```bash\\n# Pick one (Recommended in order: bun > pnpm > yarn > npm)\\nbun add -g @mutagent/cli\\npnpm add -g @mutagent/cli\\nyarn global add @mutagent/cli\\nnpm install -g @mutagent/cli\\n```\\n\\n**Why proactive install (not just \\\"stop and tell\\\")**: a user invoking this Skill has already shown intent to use MutagenT. Forcing them to context-switch to a separate terminal, copy-paste an install command, and re-invoke the agent is friction that often loses the user. Asking once + installing on consent is the smoother path. The opt-out (option 3/4) preserves user control.\\n\\n**Step 3 -- Version compatibility check:**\\nParse `_compat.cliVersion` from the `--version --json` output and compare against\\n`metadata.skill_min_cli_version` (above in this file's frontmatter, currently `0.1.163`).\\n\\n- If `cliVersion >= metadata.skill_min_cli_version`: all good, proceed normally.\\n- If `cliVersion < metadata.skill_min_cli_version`: emit a **PROMINENT PERSISTENT WARN** to the user:\\n\\n > Warning: **CLI version mismatch**: Your `mutagent` CLI is `{cliVersion}` but this Skill\\n > requires `>= 0.1.163`. Some features may not work correctly.\\n > Upgrade: `npm install -g @mutagent/cli@latest`\\n\\n **DO NOT BLOCK** -- proceed with the requested workflow after showing the warn.\\n Re-emit this warn at the start of every subsequent Skill invocation until the user upgrades.\\n\\n**Per decision D4 (locked 2026-05-03)**: version mismatch is warn-only, never a hard block.\\n\\n---\\n\\n## Login (RUN SECOND — most commands are login-gated)\\n\\nInstall, feedback, usage, workspaces, and providers commands all require\\nan authenticated session. Establish it early:\\n\\n- **CI / automated**: `export MUTAGENT_API_KEY=mt_... && mutagent login --json` -- no browser, no prompts.\\n- **Onboarding a user**: `mutagent login --browser --json` -- CLI prints auth URL to stdout, polls 5 min. **Surface the URL verbatim to the user.** `--non-interactive` is NOT needed when `--browser` is set.\\n\\n`mutagent login` is canonical. `mutagent auth login` is a back-compat alias. Both delegate to a single shared implementation; they are thin wrappers and stay that way by design.\\n\\nCheck current state anytime with `mutagent auth status --json`.\\n\\n---\\n\\n## Command Surface (active commands)\\n\\nRun `mutagent <command> --help` for the authoritative, current flag list — this\\nskill never inlines flags. The active surface:\\n\\n| Command | Purpose | Workflow |\\n|---|---|---|\\n| `login` / `auth` | Authenticate; check/clear session | [workflows/setup.md](./workflows/setup.md) |\\n| `init` | Interactive project setup wizard | [workflows/setup.md](./workflows/setup.md) |\\n| `config` | View/set local CLI config | [workflows/setup.md](./workflows/setup.md) |\\n| `workspaces` | List/select active workspace | [workflows/setup.md](./workflows/setup.md) |\\n| `providers` | List providers + model catalog | [workflows/setup.md](./workflows/setup.md) |\\n| `usage` | Show usage + quota | [workflows/setup.md](./workflows/setup.md) |\\n| `skills install` | Install this skill into a project | [workflows/setup.md](./workflows/setup.md) |\\n| `hooks install` | Install Claude Code telemetry hooks | [workflows/setup.md](./workflows/setup.md) |\\n| `install <pkg>` | Install helix / diagnostics / evaluator | [workflows/install.md](./workflows/install.md) |\\n| `feedback send` | Send product feedback | [workflows/feedback.md](./workflows/feedback.md) |\\n\\n---\\n\\n## Core Rules -- NON-NEGOTIABLE\\n\\n1. **`--json` on EVERY command.** No exceptions. Agents use JSON mode exclusively.\\n2. **`<command> --help` BEFORE first use of any command.** The CLI is the source of truth for flags -- this skill never inlines them.\\n3. **Login before login-gated commands.** install, feedback, usage, workspaces, and providers require an authenticated session. Run `mutagent login` (or set `MUTAGENT_API_KEY`) first.\\n4. **Show command output to the user.** Command output appears in bash blocks the user may not see -- always present the key results in your chat reply.\\n5. **Confirm before writing to the user's machine or spending.** `install`, `skills install`, and `hooks install` write files or install packages -- state what will happen and get confirmation first.\\n\\n---\\n\\n## Task Router -- route by user intent\\n\\nMatch the user's first request. Load ONLY the matching subfile per the table. Do NOT preload the whole set.\\n\\n| User said / signal detected | Load subfile | Why |\\n|---|---|---|\\n| \\\"log in\\\", \\\"authenticate\\\", \\\"set up mutagent\\\", \\\"init\\\", \\\"which workspace\\\", \\\"what models\\\", \\\"usage\\\", \\\"quota\\\", \\\"install the skill\\\", \\\"install hooks\\\" | [workflows/setup.md](./workflows/setup.md) | Auth + project setup + discovery commands |\\n| \\\"install helix\\\", \\\"install diagnostics\\\", \\\"install evaluator\\\", \\\"add mutagent package\\\" | [workflows/install.md](./workflows/install.md) | Login-gated meta-installer |\\n| \\\"send feedback\\\", \\\"report a bug\\\", \\\"file feedback\\\", \\\"the CLI crashed\\\" | [workflows/feedback.md](./workflows/feedback.md) | Product feedback (+ optional transcript) |\\n| Unclear / first time | run `mutagent --help --json` then reroute | Discover the surface before acting |\\n\\n---\\n\\n## Subfile Map\\n\\n| File | WHEN to load | WHY |\\n|---|---|---|\\n| [workflows/setup.md](./workflows/setup.md) | User is onboarding: login, init, config, workspaces, providers, usage, skill/hooks install | Auth + configuration + discovery |\\n| [workflows/install.md](./workflows/install.md) | User wants to install a MutagenT package | `install <helix\\\\|diagnostics\\\\|evaluator>` meta-command |\\n| [workflows/feedback.md](./workflows/feedback.md) | User wants to send feedback or report a bug | `feedback send` + `--attach-transcript` |\\n\\n---\\n\\n## MANDATORY: Verbatim Card Display Protocol\\n\\nIf a mutagent CLI response contains `_directive.renderedCard`, your FIRST action\\nMUST be to copy that text byte-for-byte into your chat reply BEFORE running any\\nfurther command, asking any question, or doing any other work.\\n\\nThe card also appears on stderr (auto-echoed by the CLI via `echoDirectiveToStderr`)\\nbut you MUST STILL render it in chat -- bash/stderr blocks may be collapsed in the\\nuser's UI and they cannot read them.\\n\\n- Do NOT summarize, paraphrase, or truncate any line of the card.\\n- Do NOT skip the card to \\\"save tokens.\\\"\\n- Do NOT delay rendering until \\\"after the next step.\\\"\\n- This applies whether `_directive.display` is `'status_card'` or absent -- the\\n trigger is the presence of `renderedCard`, not the display tag.\\n- Failure to display the card verbatim = protocol violation.\\n\\n---\\n\\n## Anti-patterns -- NEVER do these\\n\\n- Run any command without `--json`\\n- Inline CLI flags from memory -- always read `--help` first\\n- Skip showing command output results to the user\\n- Run a login-gated command before establishing a session\\n- Install a package or write skill/hooks files without user confirmation\\n\\n---\\n\\n## Error Recovery -- Agent-Aware Bug Reporting\\n\\nWhen ANY mutagent CLI command returns a non-zero exit code or an error response:\\n\\n1. **Show the error to the user** (always) -- reproduce the exact command and output.\\n2. **ASK the user** if they want to file a bug report with session context.\\n3. **On user approval**, send feedback with the session transcript attached:\\n ```bash\\n mutagent feedback send \\\"<one-line summary of the failure>\\\" \\\\\\n --category cli --attach-transcript --json\\n ```\\n - `--attach-transcript` (bare) auto-detects the newest coding-agent session JSONL and uploads it as context.\\n - Use `--category stage:<spec|build|evaluate|diagnose|optimize>` when the failure is about a specific lifecycle stage rather than the CLI itself.\\n\\nSee [workflows/feedback.md](./workflows/feedback.md) for the full feedback surface.\\n\\n### If `mutagent feedback send` itself fails\\n\\nIf the feedback command returns a non-zero exit code, DO NOT retry silently. Show the user:\\n\\n1. The output of `mutagent auth status` (confirms login state).\\n2. The fallback: open https://app.mutagent.io and use the in-app feedback form.\\n\\n---\\n\\n## Extensibility\\n\\nAdd `workflows/custom-<name>.md` with a markdown heading (or frontmatter\\n`triggers: [\\\"phrase\\\"]`) -- auto-discovered by the sync pipeline. No rebuild of the\\nCLI source needed; just re-run `bun run sync-skill`.\\n\",\n \"workflows/feedback.md\": \"---\\nname: mutagent-cli-workflows-feedback\\ndescription: |\\n Product feedback workflow. Sends feedback about the CLI, Helix, or a lifecycle\\n stage via `mutagent feedback send`. Optionally attaches the coding-agent\\n session transcript as a separate context artifact. Login-gated.\\ntriggers:\\n - \\\"send feedback\\\"\\n - \\\"mutagent feedback\\\"\\n - \\\"report a bug\\\"\\n - \\\"file feedback\\\"\\n - \\\"the cli crashed\\\"\\n - \\\"feedback about\\\"\\n---\\n\\n# Workflow — Feedback\\n\\n> **Scope**: sends a feedback message (and optionally your session transcript)\\n> to the MutagenT platform. Login-gated.\\n\\nRead the **Core Rules** in [SKILL.md](../SKILL.md) first. Key reminders:\\n- `--json` on every command\\n- `<command> --help` before first use\\n- **Login-gated** — run `mutagent login` first\\n\\n---\\n\\n## Surface\\n\\n```bash\\nmutagent feedback send --help # authoritative flags — read before first use\\n\\nmutagent feedback send \\\"<feedback body>\\\" \\\\\\n [--title \\\"<5-8 word summary>\\\"] \\\\\\n [--category <cli|helix|stage:<spec|build|evaluate|diagnose|optimize>>] \\\\\\n [--session <id>] \\\\\\n [--attach-transcript [path]] \\\\\\n [--json]\\n```\\n\\n- **Positional `<feedback body>`** — the feedback text (required, max 10000 chars).\\n- **`--title`** — optional short (5–8 word) summary of the session timeline.\\n- **`--category`** — one of:\\n - `cli` (default) — feedback about the CLI itself\\n - `helix` — feedback about Helix\\n - `stage:<x>` — feedback about a lifecycle stage/skill, where `<x>` ∈ `spec | build | evaluate | diagnose | optimize`\\n- **`--session <id>`** — link this feedback to a specific session id, so the team can correlate it with that run. Optional.\\n- **`--attach-transcript [path]`** — upload the coding-agent session JSONL as context. This is a **SEPARATE artifact** from the feedback text. Bare flag auto-detects the newest session (across claude-code, codex, omp) and tail-caps it; or pass an explicit path.\\n- **`--json`** — structured output (Rule 1: always use).\\n\\nAuto-captured context (harness, CLI version, platform, OS, node version) is\\nattached automatically — you never set it manually.\\n\\n---\\n\\n## Steps\\n\\n```\\n1. mutagent auth status --json\\n → feedback is login-gated; confirm session or run login first\\n\\n2. mutagent feedback send --help\\n → read the current flags (Rule 2)\\n\\n3. Compose the feedback body from the user's own words\\n → pick --category (default cli; use stage:<x> for a lifecycle stage)\\n → offer --attach-transcript when reporting a bug or a session-specific issue\\n\\n4. mutagent feedback send \\\"<body>\\\" --category <c> [--attach-transcript] --json\\n → show the returned id + category + transcriptAttached to the user\\n```\\n\\n---\\n\\n## Examples\\n\\n```bash\\nmutagent feedback send \\\"Optimizer results were great\\\" --json\\nmutagent feedback send \\\"Eval gate was confusing\\\" --category stage:evaluate --json\\nmutagent feedback send \\\"CLI crashed on login\\\" --category cli \\\\\\n --title \\\"login crash on first run\\\" --attach-transcript --json\\nmutagent feedback send \\\"Diagnose loop stalled\\\" --category stage:diagnose \\\\\\n --session run_abc123 --attach-transcript /tmp/session.jsonl --json\\n```\\n\\n---\\n\\n## Bug reporting (agent-aware)\\n\\nWhen a mutagent command fails, this is the canonical bug-report path:\\n\\n1. Show the user the failed command + error.\\n2. ASK if they want to file a report.\\n3. On approval, send feedback with the transcript attached so the team gets full context:\\n ```bash\\n mutagent feedback send \\\"<one-line failure summary>\\\" \\\\\\n --category cli --attach-transcript --json\\n ```\\n\\n---\\n\\n## Output handling\\n\\n- On success (`{ success: true, id, category, transcriptAttached }`): confirm the feedback id and whether a transcript was attached.\\n- If `--attach-transcript` (bare) finds no session: the CLI warns and continues without a transcript — tell the user the text was sent but no transcript was found, and offer to pass an explicit path.\\n- On an auth error: route to login, then retry.\\n\\n---\\n\\n## Common pitfalls\\n\\n- Passing an invalid `--category` (only `cli`, `helix`, `stage:<x>` are valid).\\n- Confusing the feedback body with the transcript — the body is your message; the transcript is a separate uploaded artifact.\\n- Sending before login (feedback is login-gated).\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → Core Rules + Error Recovery\\n- [workflows/setup.md](./setup.md) → login (prerequisite for feedback)\\n\",\n \"workflows/install.md\": \"---\\nname: mutagent-cli-workflows-install\\ndescription: |\\n Meta-installer workflow. Installs a MutagenT package (helix, diagnostics, or\\n evaluator) into the user's environment via `mutagent install <package>`.\\n Login-gated. diagnostics/evaluator come from public npm; helix is fetched\\n from a private registry via a login-brokered signed URL (no static secret).\\ntriggers:\\n - \\\"install diagnostics\\\"\\n - \\\"install evaluator\\\"\\n - \\\"install helix\\\"\\n - \\\"mutagent install\\\"\\n - \\\"add mutagent package\\\"\\n - \\\"set up diagnostics\\\"\\n - \\\"set up evaluator\\\"\\n---\\n\\n# Workflow — Install (Meta-Installer)\\n\\n> **Scope**: installs a MutagenT package globally (or per the target harness).\\n> This WRITES to the user's machine — confirm before running (Core Rule 5).\\n\\nRead the **Core Rules** in [SKILL.md](../SKILL.md) first. Key reminders:\\n- `--json` on every command\\n- `<command> --help` before first use\\n- **Login-gated** — run `mutagent login` first\\n- Confirm before installing (writes to the user's machine)\\n\\n---\\n\\n## Surface\\n\\n```bash\\nmutagent install --help # authoritative flags — read before first use\\n\\nmutagent install <package> [--harness <claude-code|codex|omp>] \\\\\\n [--global] [--version <v>] [--json]\\n```\\n\\nWhere `<package>` is one of:\\n\\n| Package | Source | Notes |\\n|---|---|---|\\n| `diagnostics` | public npm `@mutagent/diagnostics` | Ready to install |\\n| `evaluator` | public npm `@mutagent/evaluator` | Ready to install |\\n| `helix` | private registry via login-brokered signed URL | Ready to install — login-gated download, sha256-verified, then initialized into your project |\\n\\n**Flags** (verify against `--help`):\\n- `--harness <claude-code|codex|omp>` -- target coding-agent harness (default `claude-code`).\\n- `--global` -- install globally (default on).\\n- `--version <v>` -- pin a specific version (default: latest).\\n- `--json` -- structured output (Rule 1).\\n\\n---\\n\\n## Steps\\n\\n```\\n1. mutagent auth status --json\\n → confirm the user is logged in (install is login-gated)\\n → if not authenticated, run the login workflow first\\n\\n2. mutagent install --help\\n → read the current packages + flags (Rule 2)\\n\\n3. Confirm with the user WHAT will be installed and WHERE\\n → e.g. \\\"I'll install @mutagent/diagnostics globally for claude-code. Proceed?\\\"\\n\\n4. mutagent install <package> [--harness <h>] [--version <v>] --json\\n → run the install\\n → show the command output (package, version, harness) to the user\\n```\\n\\n---\\n\\n## Examples\\n\\n```bash\\nmutagent install helix --json\\nmutagent install helix --harness codex --json\\nmutagent install diagnostics --json\\nmutagent install evaluator --version 1.2.3 --json\\nmutagent install diagnostics --harness codex --json\\n```\\n\\n---\\n\\n## Output handling\\n\\n- On success (`{ success: true, package, version, harness, global }`): tell the user what was installed and the resolved version. Surface `_links.install` / `_links.login`.\\n- For `helix`: the CLI resolves a signed download URL from the login broker, downloads + sha256-verifies the plugin, then runs its init into the project. An `INTEGRITY_ERROR` means the download failed checksum verification — retry.\\n- On an auth error (including a broker `AUTH_REQUIRED`): route to the login workflow, then retry.\\n\\n---\\n\\n## Common pitfalls\\n\\n- Running before login → auth error (install is login-gated).\\n- Assuming `helix` installs from public npm — it is fetched from a private registry via a login-brokered signed URL (the CLI holds no static secret).\\n- Installing without confirming with the user first (Core Rule 5).\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → Core Rules + Task Router\\n- [workflows/setup.md](./setup.md) → login (prerequisite for install)\\n\",\n \"workflows/setup.md\": \"---\\nname: mutagent-cli-workflows-setup\\ndescription: |\\n Onboarding + configuration workflow. Covers login/auth, the init wizard,\\n config, workspaces, providers (incl. model catalog), usage/quota, and\\n installing this skill + Claude Code telemetry hooks.\\ntriggers:\\n - \\\"log in\\\"\\n - \\\"authenticate\\\"\\n - \\\"set up mutagent\\\"\\n - \\\"mutagent init\\\"\\n - \\\"which workspace\\\"\\n - \\\"what models\\\"\\n - \\\"check usage\\\"\\n - \\\"install the skill\\\"\\n - \\\"install hooks\\\"\\n---\\n\\n# Workflow — Setup (Auth, Config, Discovery)\\n\\n> **Scope**: authentication, local configuration, discovery, and installing the\\n> skill/hooks. `skills install` and `hooks install` write files into the user's\\n> project — confirm first (Core Rule 5).\\n\\nRead the **Core Rules** in [SKILL.md](../SKILL.md) first. Key reminders:\\n- `--json` on every command\\n- `<command> --help` before first use\\n- Login before login-gated commands\\n\\n---\\n\\n## 1. Login / auth\\n\\n`mutagent login` is canonical; `mutagent auth login` is a back-compat alias (both\\ndelegate to one shared implementation).\\n\\n```bash\\n# CI / automated (no browser)\\nexport MUTAGENT_API_KEY=mt_...\\nmutagent login --json\\n\\n# Onboarding a real user (browser)\\nmutagent login --browser --json # prints an auth URL to stdout, polls 5 min\\n # → surface the URL to the user VERBATIM\\n\\nmutagent auth status --json # check session state\\nmutagent auth logout --json # clear stored credentials\\n```\\n\\n---\\n\\n## 2. init (project wizard)\\n\\n```bash\\nmutagent init --help\\nmutagent init --json # interactive project setup\\n```\\n\\n`init` walks the user through wiring MutagenT into the current project. Read\\n`--help` for the current flags and present the wizard's questions to the user.\\n\\n---\\n\\n## 3. config\\n\\n```bash\\nmutagent config list --json # show all config\\nmutagent config get <key> --json # keys: apiKey, endpoint, format, timeout,\\n # defaultWorkspace, defaultOrganization\\nmutagent config set workspace <id> --json # set default workspace\\nmutagent config set org <id> --json # set default organization\\n```\\n\\n---\\n\\n## 4. workspaces (read-only)\\n\\n```bash\\nmutagent workspaces list --json # list workspaces\\nmutagent workspaces get <id> --json # workspace details\\n```\\n\\nTo make a workspace the default, use `mutagent config set workspace <id>`.\\n\\n---\\n\\n## 5. providers (BYOK + model catalog)\\n\\n```bash\\nmutagent providers list --json # configured providers\\nmutagent providers list --models --json # available models per provider (/providers/catalog)\\nmutagent providers get <id> --json # provider details\\nmutagent providers test <id> --json # test connectivity\\n```\\n\\nUse `providers list --models` to discover which models are available before\\nselecting one for any downstream tool.\\n\\n---\\n\\n## 6. usage / quota\\n\\n```bash\\nmutagent usage --json # resource counts + quota\\n```\\n\\nShow the usage output to the user so spend/quota is transparent.\\n\\n---\\n\\n## 7. Install the skill + hooks\\n\\n```bash\\n# Install THIS skill into the current project's .claude/skills/\\nmutagent skills install --json\\n\\n# Install Claude Code telemetry hooks (safe merge into .claude/settings.local.json —\\n# never overwrites existing hooks). These emit session telemetry to the platform.\\nmutagent hooks install --json\\n```\\n\\nBoth commands write into the user's project — state what will be written and\\nconfirm before running (Core Rule 5).\\n\\n---\\n\\n## Common pitfalls\\n\\n- Running login-gated commands (providers, usage, workspaces) before `mutagent login`.\\n- Forgetting `--json` (Rule 1).\\n- Running `hooks install` / `skills install` without telling the user what files change.\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → Core Rules + Task Router\\n- [workflows/install.md](./install.md) → install helix / diagnostics / evaluator packages\\n\",\n};\n\n/**\n * Backward-compat alias for callers that still import `SKILL_CONTENT`.\n * Points at the entry file (SKILL.md). New code should prefer\n * `SKILL_FILES` to access the full tree including workflows/ and concepts/.\n */\nexport const SKILL_CONTENT: string = SKILL_FILES[\"SKILL.md\"] ?? '';\n",
26
29
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getApiKey } from '../lib/config.js';\nimport { OutputFormatter, getJsonFlag, createSpinner } from '../lib/output.js';\nimport { handleError, AuthenticationError } from '../lib/errors.js';\nimport { getSDKClient } from '../lib/sdk-client.js';\n\nconst PROVIDERS_URL = 'https://app.mutagent.io/settings/providers';\n\nexport function createUsageCommand(): Command {\n const usage = new Command('usage')\n .description('Show account resource counts (providers, workspaces) and provider status')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent usage\n ${chalk.dim('$')} mutagent usage --json\n `);\n\n usage.action(async () => {\n const isJson = getJsonFlag(usage);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new AuthenticationError();\n }\n\n const spinner = await createSpinner('Fetching usage data...', isJson).start();\n\n const client = await getSDKClient();\n\n // Fetch provider and workspace counts in parallel\n const [providers, workspaces] = await Promise.all([\n client.listProviders().catch(() => ({ data: [] as unknown[], total: 0 })),\n client.listWorkspaces().catch(() => ({ data: [] as unknown[], total: 0 })),\n ]);\n const providerCount = providers.total || providers.data.length;\n const workspaceCount = workspaces.total || workspaces.data.length;\n\n if (spinner && typeof (spinner as { stop?: () => void }).stop === 'function') {\n (spinner as { stop: () => void }).stop();\n }\n\n if (isJson) {\n output.output({\n resources: {\n providers: providerCount,\n workspaces: workspaceCount,\n },\n _links: {\n providers: PROVIDERS_URL,\n dashboard: 'https://app.mutagent.io',\n },\n });\n } else {\n console.log('');\n console.log(chalk.bold('📊 MutagenT Usage'));\n console.log(chalk.dim('─'.repeat(45)));\n console.log('');\n console.log(chalk.bold('Resources:'));\n console.log(` Providers: ${chalk.cyan(String(providerCount))}`);\n console.log(` Workspaces: ${chalk.cyan(String(workspaceCount))}`);\n console.log('');\n console.log(` Manage providers: ${chalk.underline(PROVIDERS_URL)}`);\n console.log('');\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return usage;\n}\n",
@@ -32,11 +35,9 @@
32
35
  "/**\n * Hooks Install — Manage Claude Code settings.local.json hook entries\n *\n * Manages 10 MutagenT hooks (v2):\n * SessionStart, Stop, PreToolUse, PostToolUse,\n * UserPromptSubmit, SubagentStart, SubagentStop,\n * PreCompact, PostCompact, PostToolUseFailure\n */\n\nimport { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';\nimport { join } from 'path';\n\n// ============================================================================\n// ParseError — thrown when settings.local.json contains invalid JSON\n// ============================================================================\n\nexport class SettingsParseError extends Error {\n constructor(\n public readonly settingsPath: string,\n public readonly backupPath: string,\n cause?: unknown,\n ) {\n super(\n `settings.local.json contains unparseable JSON.\\n` +\n ` Original file backed up to: ${backupPath}\\n` +\n ` To recover: restore from backup, fix JSON syntax, then re-run ` +\n `\\`mutagent hooks install\\``,\n );\n this.name = 'SettingsParseError';\n if (cause instanceof Error) this.cause = cause;\n }\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/** Shape of a single hook entry in .claude/settings.local.json */\nexport interface ClaudeHookEntry {\n type: string;\n command: string;\n}\n\nexport interface ClaudeHookMatcher {\n matcher?: string;\n hooks: ClaudeHookEntry[];\n}\n\nexport interface ClaudeSettingsHooks {\n SessionStart?: ClaudeHookMatcher[];\n Stop?: ClaudeHookMatcher[];\n SessionEnd?: ClaudeHookMatcher[];\n PreToolUse?: ClaudeHookMatcher[];\n PostToolUse?: ClaudeHookMatcher[];\n UserPromptSubmit?: ClaudeHookMatcher[];\n SubagentStart?: ClaudeHookMatcher[];\n SubagentStop?: ClaudeHookMatcher[];\n PreCompact?: ClaudeHookMatcher[];\n PostCompact?: ClaudeHookMatcher[];\n PostToolUseFailure?: ClaudeHookMatcher[];\n [key: string]: ClaudeHookMatcher[] | undefined;\n}\n\nexport interface ClaudeSettings {\n hooks?: ClaudeSettingsHooks;\n [key: string]: unknown;\n}\n\n// ============================================================================\n// v1 → v2 migration table\n// ============================================================================\n\n/**\n * Known v1 hook mappings that are WRONG in v2 and must be removed on install.\n * Key = Claude Code event name. Value = commands to remove from that event's matchers.\n *\n * v1 put session-end under Stop (which closes the turn in Claude Code's semantics).\n * v2 moves session-end to its own SessionEnd event (correct trace-closer).\n */\nconst V1_MIGRATIONS: Record<string, string[]> = {\n Stop: ['mutagent hooks claude-code session-end'],\n};\n\n// ============================================================================\n// Hook definitions (all 10 MutagenT hooks)\n// ============================================================================\n\n/** All 11 MutagenT hook entries we manage (v2).\n *\n * IMPORTANT — Stop vs SessionEnd:\n * Claude Code fires `Stop` when Claude finishes responding to a user turn.\n * This MUST close the turn span only, NOT the trace.\n * `SessionEnd` is a separate Claude Code event that fires when the session\n * actually terminates — that's what closes the trace.\n */\nconst MUTAGENT_HOOKS: ClaudeSettingsHooks = {\n // Original hooks\n SessionStart: [{ matcher: 'startup', hooks: [{ type: 'command', command: 'mutagent hooks claude-code session-start' }] }],\n PreToolUse: [{ hooks: [{ type: 'command', command: 'mutagent hooks claude-code pre-tool-use' }] }],\n PostToolUse: [{ hooks: [{ type: 'command', command: 'mutagent hooks claude-code post-tool-use' }] }],\n // Stop closes the TURN span (per-message), not the trace\n Stop: [{ hooks: [{ type: 'command', command: 'mutagent hooks claude-code stop' }] }],\n // SessionEnd closes the entire trace (session terminates)\n SessionEnd: [{ hooks: [{ type: 'command', command: 'mutagent hooks claude-code session-end' }] }],\n // v2 hooks\n UserPromptSubmit: [{ hooks: [{ type: 'command', command: 'mutagent hooks claude-code user-prompt-submit' }] }],\n SubagentStart: [{ hooks: [{ type: 'command', command: 'mutagent hooks claude-code subagent-start' }] }],\n SubagentStop: [{ hooks: [{ type: 'command', command: 'mutagent hooks claude-code subagent-stop' }] }],\n PreCompact: [{ hooks: [{ type: 'command', command: 'mutagent hooks claude-code pre-compact' }] }],\n PostCompact: [{ hooks: [{ type: 'command', command: 'mutagent hooks claude-code post-compact' }] }],\n PostToolUseFailure: [{ hooks: [{ type: 'command', command: 'mutagent hooks claude-code post-tool-use-failure' }] }],\n};\n\n// ============================================================================\n// Install helpers\n// ============================================================================\n\n/**\n * Check whether a MutagenT command is already present in a matchers array.\n * Deduplication is done by command string.\n */\nexport function hasCommand(matchers: ClaudeHookMatcher[], command: string): boolean {\n return matchers.some(m => m.hooks.some(h => h.command === command));\n}\n\n/**\n * Deep-merge MutagenT hooks into an existing settings object.\n * Adds only entries not already present (checked by command string).\n * Mutates and returns the settings object.\n */\nexport function mergeHooksIntoSettings(settings: ClaudeSettings): ClaudeSettings {\n settings.hooks ??= {};\n\n for (const [event, newMatchers] of Object.entries(MUTAGENT_HOOKS)) {\n if (!newMatchers) continue;\n\n settings.hooks[event] ??= [];\n const existing = settings.hooks[event];\n\n for (const matcher of newMatchers) {\n for (const hook of matcher.hooks) {\n if (!hasCommand(existing, hook.command)) {\n const newMatcher: ClaudeHookMatcher = {\n ...(matcher.matcher !== undefined ? { matcher: matcher.matcher } : {}),\n hooks: [hook],\n };\n existing.push(newMatcher);\n }\n }\n }\n }\n\n return settings;\n}\n\n/**\n * Remove known-wrong v1 hook mappings from a settings object.\n * Scans V1_MIGRATIONS and strips matching commands from their event matchers.\n * Preserves all other hooks in the same event (including custom user hooks).\n * Returns a list of what was removed so callers can warn the user.\n */\nexport function migrateV1Hooks(settings: ClaudeSettings): {event: string; command: string}[] {\n const migrated: {event: string; command: string}[] = [];\n if (!settings.hooks) return migrated;\n\n for (const [event, commandsToRemove] of Object.entries(V1_MIGRATIONS)) {\n const matchers = settings.hooks[event];\n if (!matchers) continue;\n\n const filtered = matchers\n .map((matcher) => {\n const keptHooks = matcher.hooks.filter((h) => {\n if (commandsToRemove.includes(h.command)) {\n migrated.push({ event, command: h.command });\n return false;\n }\n return true;\n });\n return keptHooks.length > 0 ? { ...matcher, hooks: keptHooks } : null;\n })\n .filter(Boolean) as ClaudeHookMatcher[];\n\n if (filtered.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete settings.hooks[event];\n } else {\n settings.hooks[event] = filtered;\n }\n }\n return migrated;\n}\n\n/**\n * Install MutagenT hooks into .claude/settings.local.json (cwd-relative).\n * Returns a summary of what happened.\n *\n * Throws `SettingsParseError` if the existing settings file contains invalid\n * JSON. In that case the original file is backed up to\n * `<settingsPath>.bak.<ISO-timestamp>` BEFORE any write, so the operator can\n * recover. The error message names the backup path and suggests a fix.\n *\n * When the installer actually modifies the file (adds hooks), a `userWarning`\n * string is returned. Callers should surface this to the user:\n * - human mode: write to stderr\n * - --json mode: include as `warnings: [string]` in the response\n */\nexport function installHooks(cwd: string): {\n settingsPath: string;\n existed: boolean;\n added: string[];\n alreadyPresent: string[];\n migrated: {event: string; command: string}[];\n userWarning?: string;\n} {\n const claudeDir = join(cwd, '.claude');\n const settingsPath = join(claudeDir, 'settings.local.json');\n const existed = existsSync(settingsPath);\n\n let settings: ClaudeSettings = {};\n if (existed) {\n const raw = readFileSync(settingsPath, 'utf-8');\n try {\n settings = JSON.parse(raw) as ClaudeSettings;\n } catch (err) {\n // Back up the unparseable file before aborting\n const backupPath = `${settingsPath}.bak.${new Date().toISOString().replace(/:/g, '-')}`;\n writeFileSync(backupPath, raw, 'utf-8');\n throw new SettingsParseError(settingsPath, backupPath, err);\n }\n }\n\n const added: string[] = [];\n const alreadyPresent: string[] = [];\n\n // Migrate v1 hooks before merging v2\n const migrated = migrateV1Hooks(settings);\n\n for (const [event, newMatchers] of Object.entries(MUTAGENT_HOOKS)) {\n if (!newMatchers) continue;\n settings.hooks ??= {};\n settings.hooks[event] ??= [];\n const existing = settings.hooks[event];\n\n for (const matcher of newMatchers) {\n for (const hook of matcher.hooks) {\n if (hasCommand(existing, hook.command)) {\n alreadyPresent.push(hook.command);\n } else {\n const newMatcher: ClaudeHookMatcher = {\n ...(matcher.matcher !== undefined ? { matcher: matcher.matcher } : {}),\n hooks: [hook],\n };\n existing.push(newMatcher);\n added.push(hook.command);\n }\n }\n }\n }\n\n let userWarning: string | undefined;\n\n if (added.length > 0 || migrated.length > 0) {\n if (!existsSync(claudeDir)) {\n mkdirSync(claudeDir, { recursive: true });\n }\n writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + '\\n', 'utf-8');\n }\n\n // Surface a user-visible warning when the file was actually modified (not a no-op run)\n if (added.length > 0) {\n const addedList = added.map(cmd => {\n // Extract the subcommand suffix (e.g. 'session-start') for a shorter display\n const parts = cmd.split(' ');\n return parts[parts.length - 1] ?? cmd;\n }).join(', ');\n userWarning =\n `MutagenT hooks installed into .claude/settings.local.json\\n` +\n ` Added: ${addedList}\\n` +\n ` This file was modified. Review with: git diff .claude/settings.local.json\\n` +\n ` (To remove hooks, edit .claude/settings.local.json and delete the mutagent entries)`;\n }\n\n return { settingsPath, existed, added, alreadyPresent, migrated, userWarning };\n}\n",
33
36
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { type as osType, release as osRelease } from 'os';\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError, handleError } from '../lib/errors.js';\nimport { getApiKey, loadConfig } from '../lib/config.js';\nimport { resolveTranscript, TAIL_BYTES, type TranscriptResult } from '../lib/transcript.js';\n\n/** Maximum feedback body length (server validates message 1..10000). */\nconst MAX_FEEDBACK_LENGTH = 10000;\n\n/** Valid lifecycle stages for the `stage:<x>` category form. */\nconst VALID_STAGES = ['spec', 'build', 'evaluate', 'diagnose', 'optimize'] as const;\n\n/**\n * Auto-collected environment metadata attached to every feedback payload.\n * NOT typed by the user — the CLI derives every field.\n */\ninterface AutoContext {\n harness: string;\n cliVersion: string;\n platform: string;\n os: string;\n nodeVersion: string;\n}\n\n/** The `feedbackV2` block carried inside the server-side `context` passthrough. */\ninterface FeedbackV2 {\n title?: string;\n category: string;\n feedback: string;\n context: AutoContext;\n transcript?: TranscriptResult;\n}\n\n/**\n * The POST body sent to `${endpoint}/api/feedback`.\n *\n * CRITICAL: there is intentionally NO top-level `category`. The server's\n * `category` field is enum-restricted to bug|feature|improvement|praise, which\n * cannot represent the new cli/helix/stage:* taxonomy. Since the server field is\n * optional, we OMIT it entirely and carry the new category inside\n * `context.feedbackV2.category` (context is `additionalProperties: true`).\n *\n * `sessionId` DOES map to the server's top-level optional `sessionId` column\n * (`CreateFeedbackSchema.sessionId`) — it is session linkage, NOT part of the\n * feedbackV2 envelope. Omitted entirely when `--session` is not passed.\n */\ninterface FeedbackPayload {\n message: string;\n sessionId?: string;\n context: { feedbackV2: FeedbackV2 };\n}\n\n/** Raw option shape parsed by Commander for `feedback send`. */\ninterface SendOptions {\n title?: string;\n category: string;\n session?: string;\n attachTranscript?: string | boolean;\n}\n\n/**\n * Read the CLI version from package.json. Falls back to env var or a default.\n */\nfunction getCliVersion(): string {\n if (process.env.CLI_VERSION) return process.env.CLI_VERSION;\n try {\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkgPath = join(__dirname, '..', '..', 'package.json');\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8')) as { version?: string };\n return pkg.version ?? '0.1.1';\n } catch {\n return '0.1.1';\n }\n}\n\n/**\n * Validate and normalise the `--category` value.\n *\n * Accepts exactly `cli`, exactly `helix`, or `stage:<x>` where `<x>` is one of\n * the five lifecycle stages. Any other value throws INVALID_ARGUMENTS.\n *\n * Exported as a pure function for unit testing.\n */\nexport function parseCategory(input: string): { category: string } {\n if (input === 'cli' || input === 'helix') return { category: input };\n\n if (input.startsWith('stage:')) {\n const stage = input.slice('stage:'.length);\n if ((VALID_STAGES as readonly string[]).includes(stage)) {\n return { category: input };\n }\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Invalid stage: \"${stage}\". Must be one of: ${VALID_STAGES.join(', ')}.`,\n `Use --category stage:<${VALID_STAGES.join('|')}> (e.g. --category stage:evaluate).`,\n );\n }\n\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Invalid category: \"${input}\". Must be 'cli', 'helix', or 'stage:<${VALID_STAGES.join('|')}>'.`,\n 'Run: mutagent feedback send --help',\n );\n}\n\n/**\n * Build the auto-collected environment context. `harness` mirrors the detected\n * transcript's harness, or 'unknown' when no transcript was attached.\n */\nfunction buildAutoContext(harness: string): AutoContext {\n return {\n harness,\n cliVersion: getCliVersion(),\n platform: process.platform,\n os: `${osType()} ${osRelease()}`,\n nodeVersion: process.version,\n };\n}\n\n/**\n * POST feedback to the server. Returns the server response or throws on failure.\n */\nasync function postToServer(\n payload: FeedbackPayload,\n endpoint: string,\n apiKey: string,\n workspaceId?: string,\n organizationId?: string,\n): Promise<{ id: string; status: string }> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'x-api-key': apiKey,\n };\n if (workspaceId) headers['x-workspace-id'] = workspaceId;\n if (organizationId) headers['x-organization-id'] = organizationId;\n\n let response: Response;\n try {\n response = await fetch(`${endpoint}/api/feedback`, {\n method: 'POST',\n headers,\n body: JSON.stringify(payload),\n });\n } catch {\n throw new MutagentError(\n 'SERVER_UNAVAILABLE',\n 'Server unavailable. Try again later.',\n 'Check your network connection or verify the server endpoint with: mutagent config show',\n );\n }\n\n if (response.ok) {\n return (await response.json()) as { id: string; status: string };\n }\n\n let errorMessage = `Server returned ${String(response.status)}`;\n try {\n const body = (await response.json()) as { message?: string; error?: string };\n errorMessage = body.message ?? body.error ?? errorMessage;\n } catch {\n // Could not parse JSON error body\n }\n\n if (response.status === 401) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n errorMessage,\n 'Authenticate first: mutagent auth login',\n );\n }\n\n throw new MutagentError(\n 'API_ERROR',\n errorMessage,\n `Server responded with status ${String(response.status)}. Check your configuration with: mutagent config show`,\n );\n}\n\n/**\n * Assemble the POST body. Pure/synchronous so it can be reasoned about in isolation.\n * Omits `title` when absent and `transcript` when null; NEVER sets a top-level category.\n */\nfunction buildPayload(\n feedback: string,\n category: string,\n title: string | undefined,\n session: string | undefined,\n transcript: TranscriptResult | null,\n): FeedbackPayload {\n const feedbackV2: FeedbackV2 = {\n category,\n feedback,\n context: buildAutoContext(transcript?.harness ?? 'unknown'),\n };\n if (title) feedbackV2.title = title;\n if (transcript) feedbackV2.transcript = transcript;\n\n const payload: FeedbackPayload = { message: feedback, context: { feedbackV2 } };\n if (session) payload.sessionId = session;\n return payload;\n}\n\n/**\n * Create the top-level `feedback` command.\n *\n * Commands:\n * mutagent feedback send <feedback> [--title <s>]\n * [--category cli|helix|stage:<spec|build|evaluate|diagnose|optimize>]\n * [--attach-transcript [path]] [--json]\n */\nexport function createFeedbackCommand(): Command {\n const feedback = new Command('feedback')\n .description('Send product feedback to MutagenT')\n .addHelpText('after', `\n${chalk.bold('Examples:')}\n ${chalk.cyan('mutagent feedback send \"Optimizer results were great\"')}\n ${chalk.cyan('mutagent feedback send \"Eval gate was confusing\" --category stage:evaluate')}\n ${chalk.cyan('mutagent feedback send \"CLI crashed on export\" --category cli --attach-transcript --json')}\n\n${chalk.yellow('AI Agent (MANDATORY):')}\n ALWAYS use --json: mutagent feedback send \"...\" --category cli --json\n Attach the coding-agent session with --attach-transcript (auto-detects the newest session).\n `)\n .action(() => {\n feedback.help();\n });\n\n registerFeedbackSend(feedback);\n\n return feedback;\n}\n\nfunction registerFeedbackSend(feedback: Command): void {\n feedback\n .command('send')\n .description('Send product feedback about the MutagenT platform or CLI')\n .argument('<feedback>', 'The feedback body (content), max 10000 characters')\n .option('--title <string>', 'Optional 5–8 word summary of the session timeline')\n .option(\n '--category <value>',\n `Feedback category: 'cli', 'helix', or 'stage:<${VALID_STAGES.join('|')}>'`,\n 'cli',\n )\n .option('--session <id>', 'Link this feedback to a session id (maps to server sessionId)')\n .option(\n '--attach-transcript [path]',\n 'Attach the coding-agent session JSONL. Bare = auto-detect newest; or pass an explicit path.',\n )\n .addHelpText('after', `\n${chalk.bold('Arguments & flags:')}\n ${chalk.bold('<feedback>')} Feedback body / content (required, ≤10000 chars)\n ${chalk.bold('--title <string>')} Optional 5–8 word summary of the session timeline\n ${chalk.bold('--category <value>')} ${chalk.bold('cli')} (default) | ${chalk.bold('helix')} | ${chalk.bold('stage:<')}${VALID_STAGES.join('|')}${chalk.bold('>')}\n ${chalk.dim('stage = the lifecycle skill (evaluator/diagnostics live under stage:*)')}\n ${chalk.bold('--session <id>')} Link feedback to a session id (server sessionId)\n ${chalk.bold('--attach-transcript')} ${chalk.dim('[path]')} Attach the coding-agent session JSONL (bare = auto-detect newest)\n ${chalk.bold('--json')} Structured output (MANDATORY for AI agents)\n\n${chalk.bold('Examples:')}\n ${chalk.dim('$')} mutagent feedback send \"The setup flow could show progress better\"\n ${chalk.dim('$')} mutagent feedback send \"Eval gate was confusing\" --category stage:evaluate --title \"eval gate unclear\"\n ${chalk.dim('$')} mutagent feedback send \"Diagnose loop stalled\" --category stage:diagnose --session sess_abc123 --json\n ${chalk.dim('$')} mutagent feedback send \"CLI crashed mid-run\" --category cli --attach-transcript --json\n ${chalk.dim('$')} mutagent feedback send \"Repro attached\" --category cli --attach-transcript /tmp/session.jsonl\n\n${chalk.bold('Category:')}\n ${chalk.bold('cli')} Feedback about the CLI itself (default)\n ${chalk.bold('helix')} Feedback about Helix\n ${chalk.bold('stage:<x>')} Feedback about a lifecycle stage: ${VALID_STAGES.join(', ')}\n\n${chalk.bold('Transcript (--attach-transcript):')}\n Uploads your coding-agent SESSION JSONL as context (raw last-200KB tail) — a\n SEPARATE artifact from the feedback body. Bare flag auto-detects the newest\n session across claude-code, codex, and omp; explicit path overrides.\n\n${chalk.yellow('AI Agent (MANDATORY):')}\n ALWAYS use --json: mutagent feedback send \"...\" --json\n Auto-captured context (harness, CLI version, platform, OS, node version) is included automatically.\n `)\n .action(async (feedbackBody: string, options: SendOptions) => {\n const isJson = getJsonFlag(feedback);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Validate feedback length (server enforces 1..10000).\n if (feedbackBody.length > MAX_FEEDBACK_LENGTH) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Feedback exceeds ${String(MAX_FEEDBACK_LENGTH)} characters (${String(feedbackBody.length)}).`,\n 'Shorten the message.',\n );\n }\n\n // Validate + normalise category (throws INVALID_ARGUMENTS on bad input).\n const { category } = parseCategory(options.category);\n\n // Require authentication.\n const apiKey = getApiKey();\n if (!apiKey) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'Authentication required to send feedback.',\n 'Authenticate first: mutagent auth login\\nOr set an API key: mutagent config set apiKey <key>',\n );\n }\n\n // Resolve the transcript artifact (null when --attach-transcript not passed;\n // warns-and-continues when a bare flag finds nothing).\n const transcript = resolveTranscript(options.attachTranscript);\n\n const payload = buildPayload(feedbackBody, category, options.title, options.session, transcript);\n\n const config = loadConfig();\n const endpoint = config.endpoint ?? 'https://api.mutagent.io';\n const result = await postToServer(\n payload,\n endpoint,\n apiKey,\n config.defaultWorkspace,\n config.defaultOrganization,\n );\n\n if (isJson) {\n output.output({\n success: true,\n id: result.id,\n category,\n title: options.title,\n sessionId: options.session,\n transcriptAttached: transcript !== null,\n _links: {\n send: 'mutagent feedback send <feedback> [--title <s>] [--category cli|helix|stage:<x>] [--session <id>] [--attach-transcript [path]]',\n },\n });\n } else {\n const suffix = transcript ? ` + transcript (${String(TAIL_BYTES)}B tail${transcript.truncated ? ', truncated' : ''})` : '';\n output.success(`Feedback sent! (${category})${suffix}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
34
37
  "/**\n * Coding-agent transcript resolution for `mutagent feedback send --attach-transcript`.\n *\n * The transcript is the coding-agent SESSION JSONL — a SEPARATE artifact from the\n * feedback body. It is uploaded raw (last-N-bytes tail only, NO client-side\n * summarization) so the product team can reconstruct the session that produced\n * the feedback.\n *\n * Resolution modes (driven by the Commander optional-value option `--attach-transcript [path]`):\n * undefined / false → flag NOT passed → returns null (no transcript, no warning)\n * string (a path) → explicit path → tail that file (throws if missing)\n * true (bare flag) → auto-detect newest-by-mtime *.jsonl across the known harness globs\n *\n * All external effects (fs, os, glob, stderr) are injectable via `deps` so the\n * resolver is unit-testable without touching the real filesystem or network.\n */\n\nimport { homedir as osHomedir } from 'os';\nimport { join } from 'path';\nimport {\n existsSync as fsExistsSync,\n statSync as fsStatSync,\n readFileSync,\n readdirSync,\n openSync,\n readSync,\n closeSync,\n type Dirent,\n} from 'fs';\nimport chalk from 'chalk';\nimport { MutagentError } from './errors.js';\n\n/** Fixed tail size: only the last 200 000 bytes of a transcript are uploaded. */\nexport const TAIL_BYTES = 200000;\n\n/**\n * A resolved transcript artifact, ready to embed under context.feedbackV2.transcript.\n * `content` is the raw utf-8 tail (byte-length ≤ TAIL_BYTES). `truncated` is true\n * when the source file was larger than TAIL_BYTES (i.e. content is a tail, not the whole file).\n */\nexport interface TranscriptResult {\n harness: string;\n sourcePath: string;\n tailBytes: number;\n truncated: boolean;\n content: string;\n}\n\n/** A harness source: a directory root to scan recursively for *.jsonl. */\ninterface TranscriptSource {\n harness: string;\n dir: string;\n}\n\n/**\n * Injectable dependencies. All default to real implementations; tests override\n * the pieces they need (typically `env` + `homedir`, or `scan`/`readTail` for\n * pure unit tests).\n */\nexport interface TranscriptDeps {\n env?: Record<string, string | undefined>;\n homedir?: () => string;\n existsSync?: (p: string) => boolean;\n statSync?: (p: string) => { mtimeMs: number; size: number };\n scan?: (dir: string) => string[];\n readTail?: (p: string, tailBytes: number) => { content: string; truncated: boolean };\n warn?: (message: string) => void;\n}\n\n/**\n * Read only the LAST `tailBytes` bytes of a file (utf-8). Reads the whole file\n * when it is already within the cap; otherwise seeks to the tail so we never\n * pull a multi-megabyte session into memory.\n */\nfunction defaultReadTail(path: string, tailBytes: number): { content: string; truncated: boolean } {\n const { size } = fsStatSync(path);\n if (size <= tailBytes) {\n return { content: readFileSync(path, 'utf-8'), truncated: false };\n }\n const fd = openSync(path, 'r');\n try {\n const buf = Buffer.alloc(tailBytes);\n readSync(fd, buf, 0, tailBytes, size - tailBytes);\n return { content: buf.toString('utf-8'), truncated: true };\n } finally {\n closeSync(fd);\n }\n}\n\n/**\n * Default scan: recursively collect every `*.jsonl` under `dir`, returning\n * absolute paths. Missing/unreadable directory → empty list (not an error).\n */\nfunction defaultScan(dir: string): string[] {\n if (!fsExistsSync(dir)) return [];\n const out: string[] = [];\n const walk = (current: string): void => {\n let entries: Dirent[];\n try {\n entries = readdirSync(current, { withFileTypes: true });\n } catch {\n return; // unreadable dir — skip\n }\n for (const entry of entries) {\n const full = join(current, entry.name);\n if (entry.isDirectory()) walk(full);\n else if (entry.isFile() && entry.name.endsWith('.jsonl')) out.push(full);\n }\n };\n walk(dir);\n return out;\n}\n\n/**\n * Build the ordered list of auto-detect sources. The omp base honours\n * `PI_CODING_AGENT_DIR` (falling back to `~/.omp/agent`), matching the OMP\n * harness convention.\n */\nfunction buildSources(env: Record<string, string | undefined>, home: string): TranscriptSource[] {\n const ompBase = env.PI_CODING_AGENT_DIR ?? join(home, '.omp', 'agent');\n return [\n { harness: 'claude-code', dir: join(home, '.claude', 'projects') },\n { harness: 'codex', dir: join(home, '.codex', 'sessions') },\n { harness: 'omp', dir: join(ompBase, 'sessions') },\n ];\n}\n\n/**\n * Resolve the `--attach-transcript` value to a transcript artifact (or null).\n *\n * @param attach The Commander option value: `undefined`/`false` (not passed),\n * a non-empty `string` (explicit path), or `true` (bare flag → auto-detect).\n * @param deps Injectable effects for testing.\n * @returns The resolved transcript, or `null` when there is nothing to attach.\n * @throws MutagentError('INVALID_ARGUMENTS') when an explicit path does not exist.\n */\nexport function resolveTranscript(\n attach: string | boolean | undefined,\n deps: TranscriptDeps = {},\n): TranscriptResult | null {\n const env = deps.env ?? process.env;\n const home = (deps.homedir ?? osHomedir)();\n const existsSync = deps.existsSync ?? fsExistsSync;\n const statSync = deps.statSync ?? fsStatSync;\n const scan = deps.scan ?? defaultScan;\n const readTail = deps.readTail ?? defaultReadTail;\n const warn = deps.warn ?? ((message: string): void => { console.error(message); });\n\n // Flag not passed → nothing to do, no warning.\n if (attach === undefined || attach === false) return null;\n\n // Explicit path → tail that specific file.\n if (typeof attach === 'string' && attach.length > 0) {\n if (!existsSync(attach)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Transcript file not found: ${attach}`,\n `Verify the path exists: ls -la \"${attach}\"\\nOr omit the path to auto-detect the newest coding-agent session.`,\n );\n }\n const { content, truncated } = readTail(attach, TAIL_BYTES);\n return { harness: 'unknown', sourcePath: attach, tailBytes: TAIL_BYTES, truncated, content };\n }\n\n // Bare flag → auto-detect the newest-by-mtime *.jsonl across the harness globs.\n let newest: { harness: string; path: string; mtimeMs: number } | null = null;\n for (const src of buildSources(env, home)) {\n for (const file of scan(src.dir)) {\n const { mtimeMs } = statSync(file);\n if (!newest || mtimeMs > newest.mtimeMs) {\n newest = { harness: src.harness, path: file, mtimeMs };\n }\n }\n }\n\n if (!newest) {\n warn(chalk.yellow('⚠ No coding-agent transcript found; sending feedback without one.'));\n return null;\n }\n\n const { content, truncated } = readTail(newest.path, TAIL_BYTES);\n return {\n harness: newest.harness,\n sourcePath: newest.path,\n tailBytes: TAIL_BYTES,\n truncated,\n content,\n };\n}\n",
35
- "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { handleError } from '../../lib/errors.js';\nimport {\n installPackage,\n VALID_PACKAGES,\n VALID_HARNESSES,\n type InstallDeps,\n} from '../../lib/installer.js';\n\ninterface InstallActionOptions {\n harness: string;\n global: boolean;\n version?: string;\n}\n\n/**\n * Create the `mutagent install <package>` meta-command.\n *\n * Surface:\n * mutagent install <package> [--harness <claude-code|codex|omp>]\n * [--global] [--version <v>] [--json]\n * where <package> ∈ { helix, diagnostics, evaluator }.\n *\n * `deps` is injectable so tests can drive the full parse→action→exit path\n * through CommandTester with a deterministic auth gate / command runner\n * (config credential resolution is frozen at module load, so env overrides\n * alone cannot force the unauthenticated state in a test).\n */\nexport function createInstallCommand(deps?: InstallDeps): Command {\n const install = new Command('install')\n .description('Install a MutagenT package (helix, diagnostics, evaluator)')\n .argument('<package>', `Package to install: ${VALID_PACKAGES.join(', ')}`)\n .option(\n '--harness <harness>',\n `Target harness: ${VALID_HARNESSES.join(', ')}`,\n 'claude-code',\n )\n .option('--global', 'Install globally', true)\n .option('--version <version>', 'Package version to install (default: latest)')\n .addHelpText('after', `\n${chalk.bold('Arguments & flags:')}\n ${chalk.bold('<package>')} ${VALID_PACKAGES.join(' | ')}\n ${chalk.bold('--harness <h>')} ${VALID_HARNESSES.join(' | ')} ${chalk.dim('(default: claude-code)')}\n ${chalk.bold('--global')} Install globally ${chalk.dim('(default: true)')}\n ${chalk.bold('--version <v>')} Pin a package version ${chalk.dim('(default: latest)')}\n ${chalk.bold('--json')} Structured output\n\n${chalk.bold('Examples:')}\n ${chalk.dim('$')} mutagent install helix\n ${chalk.dim('$')} mutagent install helix --harness codex\n ${chalk.dim('$')} mutagent install diagnostics\n ${chalk.dim('$')} mutagent install evaluator --version 1.2.3\n ${chalk.dim('$')} mutagent install diagnostics --harness codex --json\n\n${chalk.bold('Packages:')}\n ${chalk.bold('helix')} ${chalk.green('(available)')} — the ADL conductor. Downloaded from a private\n registry via a login-brokered signed URL, sha256-verified, then\n initialized into your project. No static secret ships in the CLI.\n ${chalk.bold('diagnostics')} Public npm package @mutagent/diagnostics ${chalk.green('(available)')}\n ${chalk.bold('evaluator')} Public npm package @mutagent/evaluator ${chalk.green('(available)')}\n\n${chalk.yellow('Note:')} install is login-gated. Run ${chalk.cyan('mutagent login')} first (else exits with a login directive).\n `)\n .action(async (pkg: string, options: InstallActionOptions) => {\n const isJson = getJsonFlag(install);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const result = await installPackage(\n pkg,\n { harness: options.harness, global: options.global, version: options.version },\n deps,\n );\n\n if (isJson) {\n output.output({\n success: true,\n package: result.package,\n version: result.version,\n harness: result.harness,\n global: result.global,\n _links: {\n install: 'mutagent install <package> [--harness <h>] [--version <v>]',\n login: 'mutagent login',\n },\n });\n } else {\n output.success(\n `Installed ${result.package}@${result.version} for ${result.harness}` +\n (result.command ? ` (${result.command})` : ''),\n );\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return install;\n}\n",
36
- "import { spawn } from 'child_process';\nimport { MutagentError } from './errors.js';\nimport { hasCredentials } from './config.js';\nimport { installHelix, type HelixDeps } from './installer-helix.js';\n\n// =============================================================================\n// Package + harness taxonomy\n// =============================================================================\n\n/** Packages installable via `mutagent install`. */\nexport const VALID_PACKAGES = ['helix', 'diagnostics', 'evaluator'] as const;\nexport type ValidPackage = (typeof VALID_PACKAGES)[number];\n\n/** Packages resolved through the public npm registry (helix is self-hosted). */\nexport type NpmPackage = Exclude<ValidPackage, 'helix'>;\n\n/** Target harnesses the install can be pointed at. */\nexport const VALID_HARNESSES = ['claude-code', 'codex', 'omp'] as const;\nexport type Harness = (typeof VALID_HARNESSES)[number];\n\n/**\n * CLI-pinned default version per package. `--version` overrides this.\n * All default to 'latest' today; pin here when a package needs a floor.\n */\nexport const VERSION_MATRIX: Record<ValidPackage, string> = {\n helix: 'latest',\n diagnostics: 'latest',\n evaluator: 'latest',\n};\n\n/** Public npm package names for the npm-installable packages. */\nexport const NPM_PACKAGES: Record<NpmPackage, string> = {\n diagnostics: '@mutagent/diagnostics',\n evaluator: '@mutagent/evaluator',\n};\n\n// =============================================================================\n// Command runner (injectable for tests)\n// =============================================================================\n\nexport interface RunnerResult {\n code: number;\n stdout: string;\n stderr: string;\n}\n\n/**\n * Runs an external command. Injectable so tests can assert the exact\n * argv the installer emits without shelling out to a real npm.\n */\nexport type CommandRunner = (cmd: string, args: string[]) => Promise<RunnerResult>;\n\n/**\n * Default runner backed by child_process.spawn. Captures stdout/stderr and\n * resolves with the exit code. A spawn-level failure (e.g. npm not on PATH)\n * surfaces as an actionable MutagentError rather than an unhandled rejection.\n */\nexport const defaultRunner: CommandRunner = (cmd, args) =>\n new Promise<RunnerResult>((resolve, reject) => {\n const child = spawn(cmd, args, { stdio: ['ignore', 'pipe', 'pipe'] });\n let stdout = '';\n let stderr = '';\n child.stdout.on('data', (chunk: Buffer) => { stdout += chunk.toString('utf-8'); });\n child.stderr.on('data', (chunk: Buffer) => { stderr += chunk.toString('utf-8'); });\n child.on('error', (err: Error) => {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Failed to run ${cmd}: ${err.message}`,\n `Ensure \"${cmd}\" is installed and available on your PATH.`,\n ),\n );\n });\n child.on('close', (code) => {\n resolve({ code: code ?? 1, stdout, stderr });\n });\n });\n\n// =============================================================================\n// Install pipeline\n// =============================================================================\n\nexport interface InstallDeps {\n /** Runner override — tests inject a mock to capture argv. */\n runner?: CommandRunner;\n /** Auth-gate override — defaults to config.hasCredentials. */\n isAuthed?: () => boolean;\n /**\n * Helix-path seams (broker/download/extract/init/telemetry) — injected so the\n * login-brokered R2 flow is unit-testable without hitting the network.\n */\n helix?: HelixDeps;\n}\n\nexport interface InstallOptions {\n harness: string;\n global: boolean;\n version?: string;\n}\n\nexport interface InstallResult {\n package: ValidPackage;\n version: string;\n harness: Harness;\n global: boolean;\n /** The exact external command executed (npm path only). */\n command?: string;\n}\n\nfunction isValidPackage(pkg: string): pkg is ValidPackage {\n return (VALID_PACKAGES as readonly string[]).includes(pkg);\n}\n\nfunction isValidHarness(harness: string): harness is Harness {\n return (VALID_HARNESSES as readonly string[]).includes(harness);\n}\n\n/**\n * Login-gated install pipeline. Ordering (per issue #1191):\n * 1. auth gate → AUTH_REQUIRED (references `mutagent login`)\n * 2. package valid → INVALID_ARGUMENTS\n * 3. harness valid → INVALID_ARGUMENTS\n * 4. helix → login-brokered R2 flow (installer-helix.ts, task CA4)\n * 5. diagnostics/evaluator → real `npm install -g @mutagent/<pkg>@<version>`\n *\n * This function is the unit-testable core: the command action calls it, and\n * tests exercise it directly with a mock runner + mock isAuthed.\n */\nexport async function installPackage(\n pkg: string,\n opts: InstallOptions,\n deps: InstallDeps = {},\n): Promise<InstallResult> {\n // 1. Auth gate — first, before any package work.\n const isAuthed = deps.isAuthed ?? hasCredentials;\n if (!isAuthed()) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n `Authentication required to install ${pkg}.`,\n 'Run: mutagent login',\n );\n }\n\n // 2. Package validation.\n if (!isValidPackage(pkg)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Unknown package \"${pkg}\". Valid: ${VALID_PACKAGES.join(', ')}`,\n 'Run: mutagent install --help',\n );\n }\n\n // 3. Harness validation.\n if (!isValidHarness(opts.harness)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Unknown harness \"${opts.harness}\". Valid: ${VALID_HARNESSES.join(', ')}`,\n 'Run: mutagent install --help',\n );\n }\n\n const version = opts.version ?? VERSION_MATRIX[pkg];\n\n // 4. helix — login-brokered R2 install (download → sha256-verify → extract →\n // init). The CLI holds NO static R2 secret: it authenticates to the\n // Platform broker with the same x-api-key as every other API call.\n if (pkg === 'helix') {\n const { version: resolved } = await installHelix(\n { harness: opts.harness, global: opts.global, version },\n deps.helix ?? {},\n );\n return {\n package: pkg,\n version: resolved,\n harness: opts.harness,\n global: opts.global,\n };\n }\n\n // 5. npm-installable packages → real global install via injectable runner.\n const npmPackage = NPM_PACKAGES[pkg];\n const args = ['install', '-g', `${npmPackage}@${version}`];\n const runner = deps.runner ?? defaultRunner;\n const result = await runner('npm', args);\n\n if (result.code !== 0) {\n const detail = result.stderr.trim();\n throw new MutagentError(\n 'INSTALL_FAILED',\n `npm failed to install ${npmPackage}@${version} (exit ${String(result.code)}).${detail ? ` ${detail.slice(0, 200)}` : ''}`,\n 'Verify the package and version exist and that you have permission for a global npm install.',\n );\n }\n\n return {\n package: pkg,\n version,\n harness: opts.harness,\n global: opts.global,\n command: `npm ${args.join(' ')}`,\n };\n}\n",
37
- "/**\n * Helix plugin install flow (login-brokered R2 — option A).\n *\n * The helix plugin is distributed from a PRIVATE Cloudflare R2 bucket and\n * fetched through a Platform signed-URL broker. The CLI holds NO static R2\n * secret: it authenticates to the broker with the SAME credential it uses for\n * every other API call (`x-api-key`, exactly like `commands/feedback.ts`), and\n * the broker returns a short-lived presigned URL + the tarball's sha256.\n *\n * Flow (per issue #1191, task CA4):\n * 1. Resolve auth (apiKey + apiBase + tenancy headers) from CLI config.\n * 2. GET {apiBase}/api/helix/plugin/download?version=<v|latest> → descriptor.\n * 3. Download the tgz from the presigned URL into ~/.mutagent/helix/<version>/\n * (temp file + atomic rename).\n * 4. Verify sha256 of the download against the descriptor. Mismatch → delete\n * + throw an integrity error (non-zero exit).\n * 5. Extract the tarball into ~/.mutagent/helix/<version>/.\n * 6. Locate the plugin init bin from the extracted package.json `bin`, then\n * spawn `node <bin> init` with cwd = the user's project, forwarding\n * --harness and --global.\n * 7. POST best-effort install telemetry (404-tolerant, never fails install).\n *\n * Every side-effecting step is an injectable seam (mirroring installer.ts's\n * `CommandRunner`) so the whole path is unit-testable WITHOUT touching the\n * network. Production defaults are used when a seam is not supplied.\n */\n\nimport { spawn } from 'child_process';\nimport { createHash } from 'crypto';\nimport { homedir } from 'os';\nimport { join } from 'path';\nimport {\n existsSync,\n mkdirSync,\n readFileSync,\n renameSync,\n rmSync,\n writeFileSync,\n} from 'fs';\nimport { MutagentError } from './errors.js';\nimport { getApiKey, loadConfig } from './config.js';\nimport type { Harness } from './installer.js';\n\n// =============================================================================\n// Types + injectable seams\n// =============================================================================\n\n/** The broker's signed-download descriptor (mutagent/src/modules/helix/model.ts). */\nexport interface HelixBrokerResponse {\n version: string;\n sha256: string;\n url: string;\n expiresIn: number;\n}\n\n/** Resolved authentication context for broker calls. */\nexport interface HelixAuth {\n apiBase: string;\n apiKey: string | undefined;\n /** Extra headers (tenancy scoping), mirroring the feedback POST. */\n headers: Record<string, string>;\n}\n\n/** Best-effort telemetry event body (POST /api/helix/installs). */\nexport interface HelixInstallEvent {\n pkg: 'helix';\n version: string;\n harness: Harness;\n cliVersion: string;\n}\n\n/** Narrow structural subset of the global `fetch` we rely on. */\ntype FetchLike = typeof globalThis.fetch;\n\nexport interface HelixInstallOptions {\n harness: Harness;\n global: boolean;\n version: string;\n}\n\n/**\n * Injectable seams for the helix install flow. All optional — each falls back\n * to a production default. Tests inject fakes to exercise the flow offline.\n */\nexport interface HelixDeps {\n /** `fetch` used for the broker descriptor + telemetry (default: global fetch). */\n fetchImpl?: FetchLike;\n /** Resolve apiKey/apiBase/headers (default: read CLI config). */\n resolveAuth?: () => HelixAuth;\n /** Base directory for downloads (default: ~/.mutagent/helix). */\n homeDir?: string;\n /** Download `url` → `destPath` (default: fetch → file). */\n download?: (url: string, destPath: string) => Promise<void>;\n /** sha256 hex of a file (default: node crypto). */\n sha256?: (filePath: string) => Promise<string>;\n /** Extract a tgz into `destDir` (default: spawn `tar -xzf`). */\n extract?: (tgzPath: string, destDir: string) => Promise<void>;\n /** Locate the plugin init bin from an extracted dir (default: read package.json bin). */\n locateInitBin?: (extractedDir: string) => Promise<string>;\n /** Run `node <bin> init …` in `cwd` (default: spawn, stdio inherited). Returns exit code. */\n runInit?: (binPath: string, args: string[], cwd: string) => Promise<number>;\n /** Read the CLI version for telemetry (default: package.json). */\n cliVersion?: string;\n}\n\n// =============================================================================\n// Orchestrator\n// =============================================================================\n\n/**\n * Execute the full login-brokered helix install. Returns the concrete resolved\n * version (the broker resolves \"latest\" to a real version). Throws MutagentError\n * on any hard failure (auth, integrity, extract, init). Telemetry failures are\n * swallowed and never fail the install.\n */\nexport async function installHelix(\n opts: HelixInstallOptions,\n deps: HelixDeps = {},\n): Promise<{ version: string }> {\n const auth = (deps.resolveAuth ?? defaultResolveAuth)();\n const fetchImpl = deps.fetchImpl ?? globalThis.fetch;\n\n // 1–2. Broker call (authed like every other CLI API request).\n const descriptor = await fetchDescriptor(fetchImpl, auth, opts.version);\n\n // 3. Prepare target dir + paths.\n const baseDir = deps.homeDir ?? join(homedir(), '.mutagent', 'helix');\n const versionDir = join(baseDir, descriptor.version);\n mkdirSync(versionDir, { recursive: true });\n\n const tgzPath = join(versionDir, `helix-plugin-${descriptor.version}.tgz`);\n const tmpPath = `${tgzPath}.${String(process.pid)}.${String(Date.now())}.part`;\n\n // 3. Download to a temp file.\n const download = deps.download ?? defaultDownload;\n await download(descriptor.url, tmpPath);\n\n // 4. Integrity: verify sha256 BEFORE trusting the bytes.\n const sha256 = deps.sha256 ?? defaultSha256;\n const actual = (await sha256(tmpPath)).toLowerCase();\n const expected = descriptor.sha256.toLowerCase();\n if (actual !== expected) {\n safeRm(tmpPath);\n throw new MutagentError(\n 'INTEGRITY_ERROR',\n `Downloaded helix plugin failed sha256 verification (expected ${expected.slice(0, 12)}…, got ${actual.slice(0, 12)}…).`,\n 'The download may be corrupt or tampered with. Retry: mutagent install helix',\n );\n }\n\n // 4. Atomic promote temp → final.\n renameSync(tmpPath, tgzPath);\n\n // 5. Extract.\n const extract = deps.extract ?? defaultExtract;\n await extract(tgzPath, versionDir);\n\n // 6. Locate init bin + run it in the user's project.\n const locateInitBin = deps.locateInitBin ?? defaultLocateInitBin;\n const binPath = await locateInitBin(versionDir);\n\n const initArgs = ['init', '--harness', opts.harness];\n if (opts.global) initArgs.push('--global');\n\n const runInit = deps.runInit ?? defaultRunInit;\n const code = await runInit(binPath, initArgs, process.cwd());\n if (code !== 0) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n `helix plugin init exited with code ${String(code)}.`,\n 'Re-run: mutagent install helix — or run the plugin init manually and report the error.',\n );\n }\n\n // 7. Telemetry — best-effort, never fatal.\n await postTelemetry(fetchImpl, auth, {\n pkg: 'helix',\n version: descriptor.version,\n harness: opts.harness,\n cliVersion: deps.cliVersion ?? readCliVersion(),\n });\n\n return { version: descriptor.version };\n}\n\n// =============================================================================\n// Broker descriptor (auth-critical)\n// =============================================================================\n\n/**\n * GET the signed download descriptor from the broker. Authenticated with\n * `x-api-key` — the SAME scheme the CLI uses for `commands/feedback.ts`. A 401\n * means the broker rejected the credential → surface an actionable auth error.\n */\nasync function fetchDescriptor(\n fetchImpl: FetchLike,\n auth: HelixAuth,\n version: string,\n): Promise<HelixBrokerResponse> {\n if (!auth.apiKey) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'Authentication required to install helix.',\n 'Run: mutagent login',\n );\n }\n\n const url = `${auth.apiBase}/api/helix/plugin/download?version=${encodeURIComponent(version)}`;\n\n let res: Response;\n try {\n res = await fetchImpl(url, {\n method: 'GET',\n headers: { 'x-api-key': auth.apiKey, ...auth.headers },\n });\n } catch {\n throw new MutagentError(\n 'SERVER_UNAVAILABLE',\n 'Could not reach the MutagenT plugin broker.',\n 'Check your network connection or verify the endpoint with: mutagent config show',\n );\n }\n\n if (res.status === 401) {\n throw new MutagentError(\n 'AUTH_REQUIRED',\n 'The plugin broker rejected your credentials.',\n 'Re-authenticate: mutagent login',\n );\n }\n\n if (!res.ok) {\n const detail = await readErrorMessage(res);\n throw new MutagentError(\n 'INSTALL_FAILED',\n `Plugin broker returned ${String(res.status)}.${detail ? ` ${detail}` : ''}`,\n 'Verify the requested version exists, then retry: mutagent install helix',\n );\n }\n\n const raw: unknown = await res.json();\n if (!isBrokerResponse(raw)) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n 'Plugin broker returned a malformed response (missing version/sha256/url).',\n 'Retry: mutagent install helix — if it persists, report it.',\n );\n }\n return raw;\n}\n\n/**\n * POST best-effort install telemetry. Swallows ALL failures (network, non-2xx,\n * 404) — telemetry must never fail an otherwise-successful install.\n */\nasync function postTelemetry(\n fetchImpl: FetchLike,\n auth: HelixAuth,\n event: HelixInstallEvent,\n): Promise<void> {\n if (!auth.apiKey) return;\n try {\n await fetchImpl(`${auth.apiBase}/api/helix/installs`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': auth.apiKey,\n ...auth.headers,\n },\n body: JSON.stringify(event),\n });\n } catch {\n // Non-fatal by design.\n }\n}\n\n// =============================================================================\n// Production defaults for the injectable seams\n// =============================================================================\n\nfunction defaultResolveAuth(): HelixAuth {\n const apiKey = getApiKey();\n const config = loadConfig();\n const apiBase = config.endpoint ?? 'https://api.mutagent.io';\n const headers: Record<string, string> = {};\n if (config.defaultWorkspace) headers['x-workspace-id'] = config.defaultWorkspace;\n if (config.defaultOrganization) headers['x-organization-id'] = config.defaultOrganization;\n return { apiBase, apiKey, headers };\n}\n\n/** Download `url` → `destPath` via fetch, buffering the body then writing once. */\nasync function defaultDownload(url: string, destPath: string): Promise<void> {\n let res: Response;\n try {\n res = await globalThis.fetch(url);\n } catch {\n throw new MutagentError(\n 'SERVER_UNAVAILABLE',\n 'Failed to download the helix plugin from storage.',\n 'Check your network connection and retry: mutagent install helix',\n );\n }\n if (!res.ok) {\n throw new MutagentError(\n 'INSTALL_FAILED',\n `Plugin download failed with status ${String(res.status)}.`,\n 'The signed URL may have expired — retry: mutagent install helix',\n );\n }\n const bytes = Buffer.from(await res.arrayBuffer());\n writeFileSync(destPath, bytes);\n}\n\nasync function defaultSha256(filePath: string): Promise<string> {\n return Promise.resolve(createHash('sha256').update(readFileSync(filePath)).digest('hex'));\n}\n\n/** Extract a gzipped tarball using the system `tar` binary. */\nfunction defaultExtract(tgzPath: string, destDir: string): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n const child = spawn('tar', ['-xzf', tgzPath, '-C', destDir], {\n stdio: ['ignore', 'ignore', 'pipe'],\n });\n let stderr = '';\n child.stderr.on('data', (chunk: Buffer) => {\n stderr += chunk.toString('utf-8');\n });\n child.on('error', (err: Error) => {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Failed to extract the helix plugin: ${err.message}`,\n 'Ensure \"tar\" is installed and available on your PATH.',\n ),\n );\n });\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n } else {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Extracting the helix plugin failed (tar exit ${String(code ?? 1)}).${stderr ? ` ${stderr.trim().slice(0, 200)}` : ''}`,\n 'The downloaded archive may be corrupt — retry: mutagent install helix',\n ),\n );\n }\n });\n });\n}\n\n/**\n * Locate the plugin's init bin from the extracted `package.json` `bin` field.\n * npm-pack tarballs unpack under `package/`; fall back to the dir root.\n */\nfunction defaultLocateInitBin(extractedDir: string): Promise<string> {\n const pkgDir = existsSync(join(extractedDir, 'package', 'package.json'))\n ? join(extractedDir, 'package')\n : extractedDir;\n const pkgJsonPath = join(pkgDir, 'package.json');\n\n if (!existsSync(pkgJsonPath)) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n 'Could not find package.json in the extracted helix plugin.',\n 'The archive layout is unexpected — retry or report: mutagent install helix',\n ),\n );\n }\n\n const raw: unknown = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));\n const binRel = resolveBinField(raw);\n if (!binRel) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n 'The helix plugin package.json declares no runnable bin.',\n 'The plugin package is malformed — report: mutagent install helix',\n ),\n );\n }\n\n const binPath = join(pkgDir, binRel);\n if (!existsSync(binPath)) {\n return Promise.reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `The helix plugin bin was not found at ${binRel}.`,\n 'The plugin package is incomplete — report: mutagent install helix',\n ),\n );\n }\n return Promise.resolve(binPath);\n}\n\n/** Spawn `node <bin> <args>` in `cwd` with inherited stdio; resolve exit code. */\nfunction defaultRunInit(binPath: string, args: string[], cwd: string): Promise<number> {\n return new Promise<number>((resolve, reject) => {\n const child = spawn('node', [binPath, ...args], { cwd, stdio: 'inherit' });\n child.on('error', (err: Error) => {\n reject(\n new MutagentError(\n 'INSTALL_FAILED',\n `Failed to run the helix plugin init: ${err.message}`,\n 'Ensure \"node\" is installed and available on your PATH.',\n ),\n );\n });\n child.on('close', (code) => {\n resolve(code ?? 1);\n });\n });\n}\n\n// =============================================================================\n// Small helpers\n// =============================================================================\n\n/** Prefer the `mutagent-helix` bin; else the first bin value; supports string bin. */\nfunction resolveBinField(pkg: unknown): string | undefined {\n if (!pkg || typeof pkg !== 'object') return undefined;\n const bin = (pkg as { bin?: unknown }).bin;\n if (typeof bin === 'string') return bin;\n if (bin && typeof bin === 'object') {\n const entries = bin as Record<string, unknown>;\n const preferred = entries['mutagent-helix'];\n if (typeof preferred === 'string') return preferred;\n for (const value of Object.values(entries)) {\n if (typeof value === 'string') return value;\n }\n }\n return undefined;\n}\n\nfunction isBrokerResponse(value: unknown): value is HelixBrokerResponse {\n if (!value || typeof value !== 'object') return false;\n const v = value as Record<string, unknown>;\n return (\n typeof v.version === 'string' &&\n typeof v.sha256 === 'string' &&\n typeof v.url === 'string'\n );\n}\n\nasync function readErrorMessage(res: Response): Promise<string | undefined> {\n try {\n const body: unknown = await res.json();\n if (body && typeof body === 'object') {\n const b = body as { message?: unknown; error?: unknown };\n if (typeof b.message === 'string') return b.message;\n if (typeof b.error === 'string') return b.error;\n }\n } catch {\n // No JSON body.\n }\n return undefined;\n}\n\nfunction readCliVersion(): string {\n if (process.env.CLI_VERSION) return process.env.CLI_VERSION;\n return 'unknown';\n}\n\nfunction safeRm(path: string): void {\n try {\n rmSync(path, { force: true });\n } catch {\n // best-effort cleanup\n }\n}\n"
38
+ "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { OutputFormatter, getJsonFlag } from '../../lib/output.js';\nimport { handleError } from '../../lib/errors.js';\nimport {\n installPackage,\n VALID_PACKAGES,\n VALID_HARNESSES,\n type InstallDeps,\n} from '../../lib/installer.js';\n\ninterface InstallActionOptions {\n harness: string;\n global: boolean;\n version?: string;\n}\n\n/**\n * Create the `mutagent install <package>` meta-command.\n *\n * Surface:\n * mutagent install <package> [--harness <claude-code|codex|omp>]\n * [--global] [--version <v>] [--json]\n * where <package> ∈ { helix, diagnostics, evaluator }.\n *\n * `deps` is injectable so tests can drive the full parse→action→exit path\n * through CommandTester with a deterministic auth gate / command runner\n * (config credential resolution is frozen at module load, so env overrides\n * alone cannot force the unauthenticated state in a test).\n */\nexport function createInstallCommand(deps?: InstallDeps): Command {\n const install = new Command('install')\n .description('Install a MutagenT package (helix, diagnostics, evaluator)')\n .argument('<package>', `Package to install: ${VALID_PACKAGES.join(', ')}`)\n .option(\n '--harness <harness>',\n `Target harness: ${VALID_HARNESSES.join(', ')}`,\n 'claude-code',\n )\n .option('--global', 'Install globally', true)\n .option('--version <version>', 'Package version to install (default: latest)')\n .addHelpText('after', `\n${chalk.bold('Arguments & flags:')}\n ${chalk.bold('<package>')} ${VALID_PACKAGES.join(' | ')}\n ${chalk.bold('--harness <h>')} ${VALID_HARNESSES.join(' | ')} ${chalk.dim('(default: claude-code)')}\n ${chalk.bold('--global')} Install globally ${chalk.dim('(default: true)')}\n ${chalk.bold('--version <v>')} Pin a package version ${chalk.dim('(default: latest)')}\n ${chalk.bold('--json')} Structured output\n\n${chalk.bold('Examples:')}\n ${chalk.dim('$')} mutagent install helix\n ${chalk.dim('$')} mutagent install helix --harness codex\n ${chalk.dim('$')} mutagent install diagnostics\n ${chalk.dim('$')} mutagent install evaluator --version 1.2.3\n ${chalk.dim('$')} mutagent install diagnostics --harness codex --json\n\n${chalk.bold('Packages:')}\n ${chalk.bold('helix')} ${chalk.green('(available)')} — the ADL conductor. Downloaded from a private\n registry via a login-brokered signed URL, sha256-verified, then\n initialized into your project. No static secret ships in the CLI.\n ${chalk.bold('diagnostics')} Public npm package @mutagent/diagnostics ${chalk.green('(available)')}\n ${chalk.bold('evaluator')} Public npm package @mutagent/evaluator ${chalk.green('(available)')}\n\n${chalk.yellow('Note:')} install is login-gated. Run ${chalk.cyan('mutagent login')} first (else exits with a login directive).\n `)\n .action(async (pkg: string, options: InstallActionOptions) => {\n const isJson = getJsonFlag(install);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const result = await installPackage(\n pkg,\n { harness: options.harness, global: options.global, version: options.version },\n deps,\n );\n\n if (isJson) {\n output.output({\n success: true,\n package: result.package,\n version: result.version,\n harness: result.harness,\n global: result.global,\n _links: {\n install: 'mutagent install <package> [--harness <h>] [--version <v>]',\n login: 'mutagent login',\n },\n });\n } else {\n output.success(\n `Installed ${result.package}@${result.version} for ${result.harness}` +\n (result.command ? ` (${result.command})` : ''),\n );\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return install;\n}\n"
38
39
  ],
39
- "mappings": "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AA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACZ,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACzB,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACxB,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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",
40
- "debugId": "9CA84168C389E42C64756E2164756E21",
40
+ "mappings": "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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACZ,yBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACzB,wBAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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",
41
+ "debugId": "8FB723E6C0DFB02564756E2164756E21",
41
42
  "names": []
42
43
  }