@mutagent/cli 0.1.116 → 0.1.118

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,17 +1,17 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/lib/config.ts", "../src/lib/errors.ts", "../src/lib/scorecard-extraction.ts", "../src/lib/sdk-client.ts", "../src/bin/cli.ts", "../src/commands/auth.ts", "../src/lib/output.ts", "../src/lib/mutation-context.ts", "../src/commands/onboarding.ts", "../src/lib/explorer.ts", "../src/lib/auth-flow.ts", "../src/lib/browser-auth.ts", "../src/commands/login.ts", "../src/commands/prompts/index.ts", "../src/lib/ui-links.ts", "../src/lib/scorecard-details.ts", "../src/commands/prompts/prompts-crud.ts", "../src/lib/schema-helpers.ts", "../src/commands/prompts/datasets.ts", "../src/commands/prompts/evaluations.ts", "../src/lib/resolve-prompt-id.ts", "../src/commands/prompts/guided-workflow.ts", "../src/lib/adapters/eval-criteria.ts", "../src/commands/prompts/evaluations-run.ts", "../src/commands/prompts/optimize.ts", "../src/lib/scorecard.ts", "../src/commands/prompts/optimize-watch.ts", "../src/lib/watch-client.ts", "../src/lib/stage-cards.ts", "../src/lib/prompt-diff.ts", "../src/commands/prompts/optimize-cancel.ts", "../src/commands/prompts/experiments.ts", "../src/commands/traces/index.ts", "../src/commands/traces/export.ts", "../src/commands/traces/analyze.ts", "../src/commands/traces/stream.ts", "../src/commands/integrate.ts", "../src/lib/integrations/langchain.ts", "../src/lib/integrations/langgraph.ts", "../src/lib/integrations/vercel-ai.ts", "../src/lib/integrations/openai.ts", "../src/lib/integrations/registry.ts", "../src/commands/agents/index.ts", "../src/commands/agents/agents-crud.ts", "../src/commands/config.ts", "../src/commands/playground.ts", "../src/commands/workspaces.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/explore.ts", "../src/commands/skills.ts", "../src/commands/usage.ts", "../src/commands/hooks.ts", "../src/commands/feedback.ts"],
3
+ "sources": ["../src/lib/config.ts", "../src/lib/errors.ts", "../src/lib/scorecard-extraction.ts", "../src/lib/sdk-client.ts", "../src/bin/cli.ts", "../src/commands/auth.ts", "../src/lib/output.ts", "../src/lib/mutation-context.ts", "../src/commands/onboarding.ts", "../src/lib/explorer.ts", "../src/lib/auth-flow.ts", "../src/lib/browser-auth.ts", "../src/commands/login.ts", "../src/commands/prompts/index.ts", "../src/lib/ui-links.ts", "../src/lib/scorecard-details.ts", "../src/commands/prompts/prompts-crud.ts", "../src/lib/schema-helpers.ts", "../src/commands/prompts/datasets.ts", "../src/commands/prompts/guided-dataset.ts", "../src/commands/prompts/guided-workflow.ts", "../src/commands/prompts/evaluations.ts", "../src/lib/resolve-prompt-id.ts", "../src/lib/adapters/eval-criteria.ts", "../src/commands/prompts/evaluations-run.ts", "../src/commands/prompts/optimize.ts", "../src/lib/scorecard.ts", "../src/commands/prompts/optimize-watch.ts", "../src/lib/watch-client.ts", "../src/lib/stage-cards.ts", "../src/lib/prompt-diff.ts", "../src/commands/prompts/optimize-cancel.ts", "../src/commands/prompts/experiments.ts", "../src/commands/traces/index.ts", "../src/commands/traces/export.ts", "../src/commands/traces/analyze.ts", "../src/commands/traces/stream.ts", "../src/commands/integrate.ts", "../src/lib/integrations/langchain.ts", "../src/lib/integrations/langgraph.ts", "../src/lib/integrations/vercel-ai.ts", "../src/lib/integrations/openai.ts", "../src/lib/integrations/registry.ts", "../src/commands/agents/index.ts", "../src/commands/agents/agents-crud.ts", "../src/lib/agents-wip-banner.ts", "../src/commands/config.ts", "../src/commands/playground.ts", "../src/commands/workspaces.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/explore.ts", "../src/commands/skills.ts", "../src/generated/skill-content.ts", "../src/commands/usage.ts", "../src/commands/hooks.ts", "../src/commands/feedback.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
  "/**\n * Extract scorecard detail data from MetaTunerState snapshots.\n *\n * The backend normalizes `state.current.context` (PromptIterationContext)\n * into `state.iterationContext` at ITERATION_END. Both paths carry the full\n * framework types: failureModes, mutations, executionResults.\n *\n * For BEFORE data (baseline), we look at `globalContext.context.executions.results`.\n * For AFTER data (post-mutation), we look at `iterContext.executionResults.executions`.\n */\n\n// =============================================================================\n// Types (matching scorecard-details.ts consumer shapes)\n// =============================================================================\n\nexport interface ExtractedScorecardData {\n originalScore?: number;\n criteriaScores?: { name: string; before?: number; after?: number }[];\n datasetResults?: { id: string; beforeScore?: number; afterScore?: number }[];\n failureModes?: { category: string; failures: { description?: string; summary?: string }[] }[];\n mutations?: { label: string; status: 'applied' | 'rejected' | 'pending' | 'skipped'; priority?: string; rationale?: string }[];\n evaluationDetails?: {\n itemId: string; score: number; success: boolean;\n metrics?: {\n name: string; score: number; success: boolean;\n failureMode?: string; reasoning?: string;\n criteria?: { name: string; score: number; success: boolean }[];\n }[];\n }[];\n}\n\n// =============================================================================\n// Main extraction function\n// =============================================================================\n\n/**\n * Extract scorecard detail fields from a raw MetaTunerState snapshot.\n *\n * @param rawState - The full state object from the `/states` API response\n * @param iterCtx - The iteration context (either from `state.iterationContext`\n * or `state.current.context`)\n */\nexport function extractScorecardDetails(\n rawState: Record<string, unknown>,\n iterCtx: Record<string, unknown> | undefined,\n): ExtractedScorecardData {\n if (!iterCtx) return {};\n\n // --- BEFORE results (baseline from globalContext.context.executions) ---\n const gc = rawState.globalContext as Record<string, unknown> | undefined;\n const gcCtx = gc?.context as Record<string, unknown> | undefined;\n const beforeExec = gcCtx?.executions as { results?: Record<string, unknown>[] } | undefined;\n const beforeResults: Record<string, unknown>[] = beforeExec?.results ?? [];\n const beforeById = new Map<string, Record<string, unknown>>();\n for (const r of beforeResults) {\n const id = r.id as string | undefined;\n if (id) beforeById.set(id, r);\n }\n\n // Compute original (baseline) average score\n let originalScore: number | undefined;\n if (beforeResults.length > 0) {\n const sum = beforeResults.reduce((acc, r) => {\n const eval_ = r.evaluation as { score?: number } | undefined;\n return acc + (eval_?.score ?? 0);\n }, 0);\n originalScore = sum / beforeResults.length;\n }\n\n // --- AFTER results (post-mutation from iterContext.executionResults) ---\n const afterExec = iterCtx.executionResults as { executions?: Record<string, unknown>[] } | undefined;\n const afterResults: Record<string, unknown>[] = afterExec?.executions ?? [];\n\n // --- 1. Per-item before/after dataset results ---\n const datasetResults = afterResults.length > 0\n ? afterResults.map(r => {\n const id = (r.id as string) || 'unknown';\n const afterEval = r.evaluation as { score?: number } | undefined;\n const afterScore = afterEval?.score ?? 0;\n const beforeResult = beforeById.get(id);\n const beforeEval = beforeResult?.evaluation as { score?: number } | undefined;\n const beforeScore = beforeEval?.score;\n return { id, beforeScore, afterScore };\n })\n : undefined;\n\n // --- 2. Per-criterion before/after scores ---\n const criteriaScores = extractCriteriaScores(beforeResults, afterResults);\n\n // --- 3. Failure modes by category ---\n const rawFailureModes = iterCtx.failureModes as {\n categories?: string[];\n failures?: Record<string, { description?: string; summary?: string; label?: string }[]>;\n } | undefined;\n const failureModes = rawFailureModes?.categories && rawFailureModes.failures\n ? rawFailureModes.categories.map(category => ({\n category,\n failures: (rawFailureModes.failures?.[category] ?? []).map(f => ({\n description: f.description ?? f.label,\n summary: f.summary,\n })),\n }))\n : undefined;\n\n // --- 4. Mutations with status/priority/rationale ---\n const rawMutations = iterCtx.mutations as {\n label?: string;\n status?: string;\n priority?: string;\n target?: { rationale?: string };\n }[] | undefined;\n const mutations = rawMutations && rawMutations.length > 0\n ? rawMutations.map(m => ({\n label: m.label ?? 'Unknown mutation',\n status: (m.status ?? 'pending') as 'applied' | 'rejected' | 'pending' | 'skipped',\n priority: m.priority,\n rationale: m.target?.rationale,\n }))\n : undefined;\n\n // --- 5. Detailed evaluation breakdown per item ---\n const evaluationDetails = afterResults.length > 0\n ? afterResults.map(r => {\n const id = (r.id as string) || 'unknown';\n const eval_ = r.evaluation as {\n score?: number; success?: boolean;\n evaluations?: {\n name?: string; score?: number; success?: boolean;\n failureMode?: string; reasoning?: string;\n evaluationChecklist?: {\n items?: { evaluationParameter?: string; criteria?: string; llmScore?: number; success?: boolean }[];\n };\n }[];\n } | undefined;\n\n const score = eval_?.score ?? 0;\n const success = eval_?.success ?? false;\n const metrics = eval_?.evaluations?.map(metric => {\n const criteria = metric.evaluationChecklist?.items?.map(item => ({\n name: item.evaluationParameter ?? item.criteria ?? 'unknown',\n score: item.llmScore ?? 0,\n success: item.success ?? false,\n }));\n return {\n name: metric.name ?? 'unknown',\n score: metric.score ?? 0,\n success: metric.success ?? false,\n failureMode: metric.failureMode,\n reasoning: metric.reasoning,\n criteria: criteria && criteria.length > 0 ? criteria : undefined,\n };\n });\n\n return {\n itemId: id,\n score,\n success,\n metrics: metrics && metrics.length > 0 ? metrics : undefined,\n };\n })\n : undefined;\n\n return {\n originalScore,\n criteriaScores,\n datasetResults,\n failureModes,\n mutations,\n evaluationDetails,\n };\n}\n\n// =============================================================================\n// Per-criterion score aggregation\n// =============================================================================\n\n/**\n * Extract per-criterion before/after scores by aggregating metric-level\n * evaluations across all dataset items.\n *\n * Each PromptExecution has evaluation.evaluations[] (PromptEvaluationMetricResult),\n * each with a name and score. We aggregate by metric name across all items.\n */\nfunction extractCriteriaScores(\n beforeResults: Record<string, unknown>[],\n afterResults: Record<string, unknown>[],\n): { name: string; before?: number; after?: number }[] | undefined {\n const metricNames = new Set<string>();\n const beforeScores = new Map<string, number[]>();\n const afterScores = new Map<string, number[]>();\n\n for (const r of beforeResults) {\n const eval_ = r.evaluation as { evaluations?: { name?: string; score?: number }[] } | undefined;\n for (const m of eval_?.evaluations ?? []) {\n const name = m.name ?? 'unknown';\n metricNames.add(name);\n const existing = beforeScores.get(name) ?? [];\n existing.push(m.score ?? 0);\n beforeScores.set(name, existing);\n }\n }\n for (const r of afterResults) {\n const eval_ = r.evaluation as { evaluations?: { name?: string; score?: number }[] } | undefined;\n for (const m of eval_?.evaluations ?? []) {\n const name = m.name ?? 'unknown';\n metricNames.add(name);\n const existing = afterScores.get(name) ?? [];\n existing.push(m.score ?? 0);\n afterScores.set(name, existing);\n }\n }\n\n if (metricNames.size === 0) return undefined;\n\n const avg = (arr: number[]): number => arr.reduce((a, b) => a + b, 0) / arr.length;\n\n return Array.from(metricNames).map(name => ({\n name,\n before: beforeScores.has(name) ? avg(beforeScores.get(name) ?? []) : undefined,\n after: afterScores.has(name) ? avg(afterScores.get(name) ?? []) : undefined,\n }));\n}\n",
8
8
  "// 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 { UpdatePromptRequest } from '@mutagent/sdk/models/operations';\nimport type { Prompt, Dataset, DatasetItem, Evaluation, OptimizeJob as OptimizationJob, OptimizeStatus, Agent, CreateAgentInput, UpdateAgentInput, PromptExecutionResult, Workspace, Provider, ProviderTestResult } from '../types/index.js';\nimport { ApiError, AuthenticationError, MutagentError, WorkspaceContextError } from './errors.js';\nimport { getApiKey, loadConfig } from './config.js';\nimport { extractScorecardDetails } from './scorecard-extraction.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 // PROMPTS\n // =========================================================================\n\n async listPrompts(): Promise<Prompt[]> {\n try {\n const response = await this.sdk.prompt.listPrompts();\n return response.result.data as Prompt[];\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getPrompt(id: string): Promise<Prompt> {\n try {\n const response = await this.sdk.prompt.getPrompt({ id: parseInt(id, 10) });\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createPrompt(data: Partial<Prompt>): Promise<Prompt> {\n try {\n const response = await this.sdk.prompt.createPrompt({\n name: data.name ?? '',\n description: data.description ?? undefined,\n version: data.version ?? undefined,\n isLatest: data.isLatest ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n humanPrompt: data.humanPrompt ?? undefined,\n rawPrompt: data.rawPrompt ?? undefined,\n inputSchema: data.inputSchema ?? undefined,\n outputSchema: data.outputSchema ?? undefined,\n metadata: data.metadata ?? undefined,\n tags: data.tags ?? undefined,\n });\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async updatePrompt(id: string, data: Partial<Prompt>): Promise<Prompt> {\n try {\n const body: Record<string, unknown> = {\n description: data.description ?? undefined,\n isLatest: data.isLatest ?? undefined,\n systemPrompt: data.systemPrompt ?? undefined,\n humanPrompt: data.humanPrompt ?? undefined,\n rawPrompt: data.rawPrompt ?? undefined,\n inputSchema: data.inputSchema as Record<string, never> | undefined,\n outputSchema: data.outputSchema as Record<string, never> | undefined,\n metadata: data.metadata as Record<string, never> | undefined,\n tags: data.tags ?? undefined,\n };\n if (data.name !== undefined) {\n body.name = data.name;\n }\n const updateArgs: UpdatePromptRequest = { id: parseInt(id, 10), body };\n const response = await this.sdk.prompt.updatePrompt(updateArgs);\n return response as Prompt;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deletePrompt(id: string, options?: { force?: boolean }): Promise<void> {\n try {\n if (options?.force) {\n // Use direct request to pass force query param (SDK method doesn't support it)\n // CRITICAL: Route is /api/prompt/:id (singular), NOT /api/prompts/:id (plural)\n await this.request(`/api/prompt/${id}?force=true`, { method: 'DELETE' });\n } else {\n await this.sdk.prompt.deletePrompt({ id: parseInt(id, 10) });\n }\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // DATASETS (scoped to prompt)\n // Using direct fetch as SDK types don't match CLI expectations\n // =========================================================================\n\n async getDataset(datasetId: string | number): Promise<Dataset> {\n try {\n return await this.request<Dataset>(`/api/prompts/datasets/${String(datasetId)}`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getDatasetItem(itemId: string | number): Promise<DatasetItem> {\n try {\n return await this.request<DatasetItem>(`/api/prompts/dataset-items/${String(itemId)}`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async listDatasets(promptId: string): Promise<Dataset[]> {\n try {\n const response = await this.request<Dataset[] | { data: Dataset[] }>(`/api/prompt/${promptId}/datasets`);\n return Array.isArray(response) ? response : response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async addDataset(promptId: string, fileContent: string, name?: string): Promise<Dataset & { itemCount?: number; missingExpectedOutputCount?: number }> {\n try {\n // Step 1: Parse content to extract items\n let parsed: unknown;\n try {\n parsed = JSON.parse(fileContent);\n } catch {\n // If not parseable as JSON (e.g., CSV), no items to extract\n parsed = null;\n }\n\n // Determine dataset name and items\n let datasetName = name ?? `Dataset ${new Date().toISOString().slice(0, 16)}`;\n let items: Record<string, unknown>[] | undefined;\n\n if (\n parsed !== null &&\n !Array.isArray(parsed) &&\n typeof parsed === 'object' &&\n 'name' in (parsed as Record<string, unknown>)\n ) {\n // Object with 'name' field: treat as dataset metadata (may contain items)\n const meta = parsed as Record<string, unknown>;\n datasetName = (meta.name as string | undefined) ?? datasetName;\n if (Array.isArray(meta.items)) {\n items = meta.items as Record<string, unknown>[];\n }\n } else if (Array.isArray(parsed)) {\n items = parsed as Record<string, unknown>[];\n }\n\n // Step 2: Create dataset metadata via POST /api/prompt/:id/datasets\n const dataset = await this.request<Dataset>(`/api/prompt/${promptId}/datasets`, {\n method: 'POST',\n body: JSON.stringify({\n name: datasetName,\n }),\n });\n\n // Step 3: Bulk upload items if any via POST /api/prompts/datasets/:id/items/bulk\n let itemCount = 0;\n if (items && items.length > 0) {\n // Map items to the backend schema: { input, expectedOutput, ... }\n const mappedItems = items.map((item, index) => ({\n input: item.input ?? item,\n expectedOutput: item.expectedOutput ?? item.expected_output ?? undefined,\n name: (item.name as string | undefined) ?? `Item ${String(index + 1)}`,\n userFeedback: item.userFeedback as string | undefined,\n systemFeedback: item.systemFeedback as string | undefined,\n labels: item.labels as string[] | undefined,\n metadata: item.metadata as Record<string, unknown> | undefined,\n }));\n\n const missingExpectedOutputCount = mappedItems.filter(\n item => item.expectedOutput === undefined\n ).length;\n\n await this.request(`/api/prompts/datasets/${String(dataset.id)}/items/bulk`, {\n method: 'POST',\n body: JSON.stringify({ items: mappedItems }),\n });\n itemCount = mappedItems.length;\n\n return { ...dataset, itemCount, missingExpectedOutputCount };\n }\n\n return { ...dataset, itemCount };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async listDatasetItems(datasetId: string): Promise<DatasetItem[]> {\n try {\n const response = await this.request<DatasetItem[] | { data: DatasetItem[] }>(`/api/prompts/datasets/${datasetId}/items`);\n return Array.isArray(response) ? response : response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteDataset(_promptId: string, datasetId: string, options?: { force?: boolean }): Promise<void> {\n try {\n const query = options?.force ? '?force=true' : '';\n await this.request(`/api/prompts/datasets/${datasetId}${query}`, { method: 'DELETE' });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // EVALUATIONS - Using direct fetch for consistent interface\n // =========================================================================\n\n async listEvaluations(promptId: string): Promise<Evaluation[]> {\n try {\n const response = await this.request<{ data: Evaluation[] }>(`/api/prompts/evaluations?promptId=${promptId}`);\n return response.data;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getEvaluation(evaluationId: string): Promise<Evaluation> {\n try {\n return await this.request<Evaluation>(`/api/prompts/evaluations/${evaluationId}`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createEvaluation(promptId: string, data: {\n name: string;\n description?: string;\n evalConfig?: Record<string, unknown>;\n llmConfig?: Record<string, unknown>;\n tags?: string[];\n metadata?: Record<string, unknown>;\n }): Promise<Evaluation> {\n try {\n return await this.request<Evaluation>('/api/prompts/evaluations', {\n method: 'POST',\n body: JSON.stringify({\n promptId: parseInt(promptId, 10),\n name: data.name,\n description: data.description,\n evalConfig: data.evalConfig,\n llmConfig: data.llmConfig,\n tags: data.tags,\n metadata: data.metadata,\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteEvaluation(evaluationId: string): Promise<void> {\n try {\n await this.request(`/api/prompts/evaluations/${evaluationId}`, { method: 'DELETE' });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // OPTIMIZATIONS - Using direct fetch for consistent interface\n // NOTE: Optimization SDK types are empty stubs (OpenAPI spec gap being fixed).\n // These methods use raw HTTP with CLI-defined types until SDK types are populated.\n // =========================================================================\n\n async listOptimizations(): Promise<unknown[]> {\n try {\n const response = await this.request<{ data?: unknown[]; total?: number } | unknown[]>('/api/optimizations');\n if (Array.isArray(response)) return response;\n const r = response as { data?: unknown[]; total?: number };\n if (Array.isArray(r.data)) return r.data;\n return [];\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async listExperiments(filters?: { promptId?: number; status?: string; limit?: number; offset?: number }): Promise<{ experiments: unknown[]; total: number }> {\n try {\n const params = new URLSearchParams();\n if (filters?.promptId !== undefined) params.set('promptId', String(filters.promptId));\n if (filters?.status) params.set('status', filters.status);\n if (filters?.limit !== undefined) params.set('limit', String(filters.limit));\n if (filters?.offset !== undefined) params.set('offset', String(filters.offset));\n const qs = params.toString();\n const response = await this.request<{ data?: unknown[]; experiments?: unknown[]; total?: number } | unknown[]>(`/api/prompts/experiments${qs ? `?${qs}` : ''}`);\n if (Array.isArray(response)) return { experiments: response, total: response.length };\n const r = response as { data?: unknown[]; experiments?: unknown[]; total?: number };\n const experiments = r.experiments ?? r.data ?? [];\n return { experiments, total: r.total ?? experiments.length };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async createExperiment(data: {\n promptId: number;\n promptGroupId: string;\n evaluationId: number;\n datasetId: number;\n models: { id: string; model: string; temperature: number }[];\n name?: string;\n datasetItemCount?: number;\n }): Promise<{ experimentId: string; name: string; status: string }> {\n try {\n return await this.request<{ experimentId: string; name: string; status: string }>('/api/prompts/experiments', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getExperiment(id: string): Promise<Record<string, unknown>> {\n try {\n return await this.request<Record<string, unknown>>(`/api/prompts/experiments/${id}`);\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async deleteExperiment(id: string): Promise<void> {\n try {\n await this.request(`/api/prompts/experiments/${id}`, { method: 'DELETE' });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async executeExperiment(id: string): Promise<{ success: boolean; experimentId: string; status: string }> {\n try {\n return await this.request<{ success: boolean; experimentId: string; status: string }>(\n `/api/prompts/experiments/${id}/execute`,\n { method: 'POST', body: JSON.stringify({}) }\n );\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async playgroundEval(promptId: string, data: {\n input: Record<string, unknown>;\n evaluationId: number;\n llmConfig?: Record<string, unknown>;\n }): Promise<{\n executionId: string;\n response: string | Record<string, unknown>;\n metadata: { latencyMs: number; tokens?: { prompt?: number; completion?: number } };\n evaluation: { score: number; passed: boolean; reasoning?: string; criteria?: { name: string; score: number; passed: boolean }[] };\n }> {\n try {\n return await this.request<{\n executionId: string;\n response: string | Record<string, unknown>;\n metadata: { latencyMs: number; tokens?: { prompt?: number; completion?: number } };\n evaluation: { score: number; passed: boolean; reasoning?: string; criteria?: { name: string; score: number; passed: boolean }[] };\n }>(`/api/prompt/${promptId}/playground/eval`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async cancelOptimization(jobId: string): Promise<{ success: boolean }> {\n try {\n return await this.request<{ success: boolean }>(`/api/optimization/${jobId}/cancel`, {\n method: 'POST',\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async startOptimization(promptId: string, datasetId: string, evaluationId: string, config?: {\n maxIterations?: number;\n targetScore?: number;\n patience?: number;\n model?: string;\n evalModel?: string;\n }): Promise<OptimizationJob> {\n try {\n return await this.request<OptimizationJob>(`/api/prompt/${promptId}/optimize`, {\n method: 'POST',\n body: JSON.stringify({\n datasetId: parseInt(datasetId, 10),\n evaluationId: parseInt(evaluationId, 10),\n config: {\n maxIterations: config?.maxIterations ?? 1,\n targetScore: config?.targetScore ?? 0.8,\n patience: config?.patience,\n model: config?.model,\n ...(config?.evalModel ? { tuningParams: { evaluationModel: config.evalModel } } : {}),\n },\n executionMode: 'worker_loop',\n }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getOptimizationStatus(jobId: string): Promise<OptimizeStatus> {\n try {\n const raw = await this.request<Record<string, unknown>>(`/api/optimization/${jobId}`);\n // Map API response fields to CLI OptimizeStatus type\n // API returns `id` + `progress`; CLI expects `jobId` + `progressPercent`\n const id = raw.id as string | undefined;\n return {\n ...raw,\n jobId: id ?? jobId,\n progressPercent: typeof raw.progress === 'number' ? raw.progress : 0,\n } as OptimizeStatus;\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async getOptimizationResults(jobId: string): Promise<{\n job: { id: string; promptId: number; status: string; config?: { maxIterations?: number; model?: string } };\n prompt: Prompt;\n bestScore?: number;\n originalScore?: number;\n iterationsCompleted?: number;\n scoreProgression?: number[];\n originalPrompt?: Partial<Prompt>;\n mutatedPromptText?: string;\n originalPromptText?: string;\n criteriaScores?: { name: string; before?: number; after?: number }[];\n datasetResults?: { id: string; beforeScore?: number; afterScore?: number }[];\n failureModes?: { category: string; failures: { description?: string; summary?: string }[] }[];\n mutations?: { label: string; status: 'applied' | 'rejected' | 'pending' | 'skipped'; priority?: string; rationale?: string }[];\n evaluationDetails?: {\n itemId: string; score: number; success: boolean;\n metrics?: { name: string; score: number; success: boolean; failureMode?: string; reasoning?: string; criteria?: { name: string; score: number; success: boolean }[] }[];\n }[];\n }> {\n try {\n // Compose result from multiple API calls:\n // 1. Job details (status, config, promptId)\n const job = await this.request<{\n id?: string;\n promptId?: number;\n status?: string;\n bestScore?: number;\n currentIteration?: number;\n config?: { maxIterations?: number; model?: string };\n }>(`/api/optimization/${jobId}`);\n // 2. Progression data (score history per iteration)\n const progress = await this.request<{ jobId?: string; progression?: { iteration?: number; score?: number | null }[] }>(`/api/optimization/${jobId}/progress`);\n // 3. Prompt data (current/optimized prompt text)\n const prompt = await this.getPrompt(String(job.promptId ?? ''));\n // 4. Get state snapshots for iteration context (mutated prompt lives here)\n const statesRes = await this.request<{\n states: {\n iteration: number;\n state: Record<string, unknown>;\n score: number | null;\n }[];\n }>(`/api/optimization/${jobId}/states`).catch(() => ({ states: [] as { iteration: number; state: Record<string, unknown>; score: number | null }[] }));\n\n // Extract data from latest state snapshot\n // The backend normalizes state.current.context into state.iterationContext\n // at ITERATION_END, so both paths exist. We use iterationContext (shortcut)\n // and fall back to state.current.context (raw framework path).\n const latestState = statesRes.states[statesRes.states.length - 1];\n const rawState = latestState?.state ?? {};\n\n // Get iteration context — try normalized path, then raw framework path\n const iterCtx = (rawState.iterationContext\n ?? (rawState.current as Record<string, unknown> | undefined)?.context) as Record<string, unknown> | undefined;\n\n // Extract prompt texts\n const basePromptObj = iterCtx?.basePrompt as { prompt?: string } | undefined;\n const currentPromptObj = iterCtx?.currentPrompt as { prompt?: string } | undefined;\n const mutatedPromptText = typeof currentPromptObj?.prompt === 'string'\n ? currentPromptObj.prompt : undefined;\n const originalPromptText = typeof basePromptObj?.prompt === 'string'\n ? basePromptObj.prompt : undefined;\n\n // Extract detail data from state snapshot for scorecard rendering\n const extracted = extractScorecardDetails(rawState, iterCtx);\n\n return {\n job: {\n id: job.id ?? jobId,\n promptId: job.promptId ?? 0,\n status: job.status ?? 'unknown',\n config: job.config,\n },\n prompt,\n bestScore: job.bestScore,\n originalScore: extracted.originalScore,\n iterationsCompleted: job.currentIteration,\n scoreProgression: Array.isArray(progress.progression)\n ? progress.progression.map(p => (typeof p.score === 'number' ? p.score : 0))\n : undefined,\n mutatedPromptText,\n originalPromptText,\n criteriaScores: extracted.criteriaScores,\n datasetResults: extracted.datasetResults,\n failureModes: extracted.failureModes,\n mutations: extracted.mutations,\n evaluationDetails: extracted.evaluationDetails,\n };\n } catch (error) {\n this.handleError(error);\n }\n }\n\n // =========================================================================\n // TRACES - Using direct fetch since SDK doesn't have traces\n // =========================================================================\n\n async listTraces(filters?: { promptId?: string; source?: string }): Promise<unknown[]> {\n const filterRecord: Record<string, string> = {};\n if (filters?.promptId) filterRecord.promptId = filters.promptId;\n if (filters?.source) filterRecord.source = filters.source;\n const params = Object.keys(filterRecord).length > 0 ? new URLSearchParams(filterRecord).toString() : '';\n const response = await this.request<{ data?: unknown[]; total: number }>(`/api/traces${params ? `?${params}` : ''}`);\n return response.data ?? [];\n }\n\n async getTrace(id: string): Promise<unknown> {\n return this.request(`/api/traces/${id}`);\n }\n\n async analyzeTraces(promptId: string): Promise<Record<string, unknown>> {\n return this.request(`/api/prompts/${promptId}/trace-analysis`);\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 // PLAYGROUND - Execute prompts\n // =========================================================================\n\n async executePrompt(\n promptId: string,\n input: Record<string, unknown>,\n options?: { model?: string }\n ): Promise<PromptExecutionResult> {\n try {\n return await this.request<PromptExecutionResult>(`/api/prompt/${promptId}/playground/call`, {\n method: 'POST',\n body: JSON.stringify({ input, model: options?.model }),\n });\n } catch (error) {\n this.handleError(error);\n }\n }\n\n async executePromptStream(\n promptId: string,\n input: Record<string, unknown>,\n options?: { model?: string }\n ): Promise<Response> {\n const response = await fetch(`${this.endpoint}/api/prompt/${promptId}/execute/stream`, {\n method: 'POST',\n headers: {\n 'x-api-key': this.apiKey,\n 'Content-Type': 'application/json',\n 'Accept': 'text/event-stream',\n },\n body: JSON.stringify({ input, ...options }),\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;\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 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",
9
- "#!/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 { createPromptsCommand } from '../commands/prompts/index.js';\nimport { createTracesCommand } from '../commands/traces/index.js';\nimport { createIntegrateCommand } from '../commands/integrate.js';\nimport { createAgentsCommand } from '../commands/agents/index.js';\nimport { createConfigCommand } from '../commands/config.js';\nimport { createPlaygroundCommand } from '../commands/playground.js';\nimport { createWorkspacesCommand } from '../commands/workspaces.js';\nimport { createProvidersCommand } from '../commands/providers/index.js';\nimport { createInitCommand } from '../commands/init.js';\nimport { createExploreCommand } from '../commands/explore.js';\nimport { createSkillsCommand } from '../commands/skills.js';\nimport { createUsageCommand } from '../commands/usage.js';\nimport { createHooksCommand } from '../commands/hooks.js';\nimport { createFeedbackCommand } from '../commands/feedback.js';\nimport { hasCredentials } from '../lib/config.js';\nimport { hasRcConfig } from '../commands/init.js';\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\nconst program = new Command();\n\nprogram\n .name('mutagent')\n .description(`MutagenT CLI - AI-native prompt optimization 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.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 explore ${chalk.dim('Discover prompts in codebase')}\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 prompts create --help ${chalk.dim('Upload prompt (read help first!)')}\n mutagent prompts list --json ${chalk.dim('List prompts')}\n mutagent prompts get <id> --json ${chalk.dim('Full prompt details + schemas')}\n\n mutagent prompts dataset add --help ${chalk.dim('Upload dataset (read help first!)')}\n mutagent prompts dataset list <id> ${chalk.dim('List datasets')}\n\n mutagent prompts evaluation create --help ${chalk.dim('Create eval (read help first!)')}\n mutagent prompts evaluation create <id> --guided --json ${chalk.dim('Guided eval workflow')}\n mutagent prompts evaluation list <id> --json ${chalk.dim('List evaluations')}\n\n mutagent prompts optimize start --help ${chalk.dim('Run optimization (read help first!)')}\n mutagent prompts optimize status <job-id> ${chalk.dim('Poll progress')}\n mutagent prompts optimize results <job-id> ${chalk.dim('View scorecard')}\n\n mutagent feedback send -m \"...\" ${chalk.dim('Send product feedback')}\n mutagent feedback send -m \"...\" --category bug ${chalk.dim('Report a bug')}\n\n mutagent integrate <framework> ${chalk.dim('Framework integration guide')}\n mutagent hooks --help ${chalk.dim('Hook setup for Claude Code telemetry')}\n mutagent playground run <id> --input '{...}' ${chalk.dim('Quick test')}\n\n${chalk.yellow('★ Workflow: Framework Integration (Tracing):')}\n 1. mutagent explore ${chalk.dim('← discover prompts/agents in codebase')}\n 2. mutagent integrate <framework> ${chalk.dim('← get integration instructions')}\n 3. Apply tracing code to your codebase ${chalk.dim('← follow the guide output')}\n 4. mutagent traces list --json ${chalk.dim('← verify traces are arriving')}\n\n${chalk.yellow('★ Workflow: Evaluate → Optimize:')}\n 1. mutagent prompts create --help ${chalk.dim('← read help')}\n 2. mutagent prompts create ... --json ${chalk.dim('← upload prompt with {variables} + inputSchema')}\n 3. mutagent prompts dataset add --help ${chalk.dim('← read help')}\n 4. mutagent prompts dataset add <id> ... --json ${chalk.dim('← upload dataset')}\n 5. mutagent prompts evaluation create <id> --guided --json ${chalk.dim('← guided eval')}\n 6. mutagent prompts optimize start <id> --dataset <d> --evaluation <e> --json\n\n${chalk.yellow('Post-Onboarding Decision Tree:')}\n After ${chalk.bold('mutagent auth login')}, users land in one of 3 paths:\n ${chalk.bold('Path A')} (Tracing): explore → integrate <framework> → apply tracing → verify\n ${chalk.bold('Path B')} (Optimization): explore → prompts create → dataset add → eval create → optimize\n ${chalk.bold('Path C')} (Manual): Use CLI commands directly — run mutagent <command> --help\n\n${chalk.yellow('Directive System:')}\n Every --json response may include:\n ${chalk.bold('_directive.renderedCard')} Pre-formatted card for the user ${chalk.red('(MUST be shown in chat)')}\n ${chalk.bold('_directive.instruction')} Next step for the agent\n ${chalk.bold('_directive.next')} Array of suggested follow-up commands\n ${chalk.bold('_links')} Dashboard/API URLs (format as markdown links)\n\n${chalk.yellow('Evaluation Criteria Format:')}\n Each criterion MUST have: ${chalk.bold('name')}, ${chalk.bold('description')} (scoring rubric), ${chalk.bold('evaluationParameter')}\n evaluationParameter MUST match an inputSchema or outputSchema field name\n No duplicate evaluationParameter values — each criterion targets a unique field\n ALL schema fields must be covered (missing fields = error)\n Use ${chalk.bold('--guided --json')} to generate criteria templates from prompt schemas\n\n${chalk.yellow('Optimization Cost Control:')}\n Default max-iterations is 1. ${chalk.red('NEVER increase without explicit user request.')}\n Each iteration incurs LLM costs — confirm with user before starting >1.\n\n${chalk.yellow('Post-Optimization:')}\n After ${chalk.bold('optimize results')}: ALWAYS show the before/after diff to the user first.\n Then offer choices: ${chalk.bold('Apply')} / ${chalk.bold('Reject')}.\n\n${chalk.yellow('State Tracking:')}\n .mutagent/mutation-context.md — Codebase index of discovered/uploaded prompts\n Update after explore, create, and dataset operations\n mutagent auth status — Auth + workspace state\n Comment markers (// MutagenT:START ... // MutagenT:END) in source files\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. Use --guided --json for evaluation creation (NEVER --guided alone)\n 5. 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 6. After mutagent init, verify workspace: mutagent workspaces list --json\n 7. Use {single_braces} for template variables in prompts\n 8. Collect evaluation criteria from the user — NEVER auto-generate\n 9. 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 console.log(JSON.stringify({ version: cliVersion }));\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\nprogram.addCommand(createInitCommand()); // Init wizard\nprogram.addCommand(createLoginCommand()); // Top-level login\nprogram.addCommand(createAuthCommand());\nprogram.addCommand(createConfigCommand());\nprogram.addCommand(createPromptsCommand());\nprogram.addCommand(createTracesCommand());\nprogram.addCommand(createIntegrateCommand());\nprogram.addCommand(createAgentsCommand());\nprogram.addCommand(createPlaygroundCommand());\nprogram.addCommand(createWorkspacesCommand());\nprogram.addCommand(createProvidersCommand());\nprogram.addCommand(createExploreCommand()); // Codebase scanner\nprogram.addCommand(createSkillsCommand()); // Skills install\nprogram.addCommand(createUsageCommand()); // Usage & quota\nprogram.addCommand(createHooksCommand()); // Hook handlers (Claude Code telemetry)\nprogram.addCommand(createFeedbackCommand()); // Product feedback\n\n// Parse arguments\nprogram.parse();\n",
9
+ "#!/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 { createPromptsCommand } from '../commands/prompts/index.js';\nimport { createTracesCommand } from '../commands/traces/index.js';\nimport { createIntegrateCommand } from '../commands/integrate.js';\nimport { createAgentsCommand } from '../commands/agents/index.js';\nimport { createConfigCommand } from '../commands/config.js';\nimport { createPlaygroundCommand } from '../commands/playground.js';\nimport { createWorkspacesCommand } from '../commands/workspaces.js';\nimport { createProvidersCommand } from '../commands/providers/index.js';\nimport { createInitCommand } from '../commands/init.js';\nimport { createExploreCommand } from '../commands/explore.js';\nimport { createSkillsCommand } from '../commands/skills.js';\nimport { createUsageCommand } from '../commands/usage.js';\nimport { createHooksCommand } from '../commands/hooks.js';\nimport { createFeedbackCommand } from '../commands/feedback.js';\nimport { hasCredentials } from '../lib/config.js';\nimport { hasRcConfig } from '../commands/init.js';\nimport { AGENTS_WIP_BANNER } from '../lib/agents-wip-banner.js';\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\nconst program = new Command();\n\nprogram\n .name('mutagent')\n .description(`MutagenT CLI - AI-native prompt optimization 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${AGENTS_WIP_BANNER}\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 explore ${chalk.dim('Discover prompts in codebase')}\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 prompts create --help ${chalk.dim('Upload prompt (read help first!)')}\n mutagent prompts list --json ${chalk.dim('List prompts')}\n mutagent prompts get <id> --json ${chalk.dim('Full prompt details + schemas')}\n\n mutagent prompts dataset add --help ${chalk.dim('Upload dataset (read help first!)')}\n mutagent prompts dataset list <id> ${chalk.dim('List datasets')}\n\n mutagent prompts evaluation create --help ${chalk.dim('Create eval (read help first!)')}\n mutagent prompts evaluation create <id> --guided --json ${chalk.dim('Guided eval workflow')}\n mutagent prompts evaluation list <id> --json ${chalk.dim('List evaluations')}\n\n mutagent prompts optimize start --help ${chalk.dim('Run optimization (read help first!)')}\n mutagent prompts optimize status <job-id> ${chalk.dim('Poll progress')}\n mutagent prompts optimize results <job-id> ${chalk.dim('View scorecard')}\n\n mutagent feedback send -m \"...\" ${chalk.dim('Send product feedback')}\n mutagent feedback send -m \"...\" --category bug ${chalk.dim('Report a bug')}\n\n mutagent integrate <framework> ${chalk.dim('Framework integration guide')}\n mutagent hooks --help ${chalk.dim('Hook setup for Claude Code telemetry')}\n mutagent playground run <id> --input '{...}' ${chalk.dim('Quick test')}\n\n${chalk.yellow('★ Workflow: Framework Integration (Tracing):')}\n 1. mutagent explore ${chalk.dim('← discover prompts/agents in codebase')}\n 2. mutagent integrate <framework> ${chalk.dim('← get integration instructions')}\n 3. Apply tracing code to your codebase ${chalk.dim('← follow the guide output')}\n 4. mutagent traces list --json ${chalk.dim('← verify traces are arriving')}\n\n${chalk.yellow('★ Workflow: Evaluate → Optimize:')}\n 1. mutagent prompts create --help ${chalk.dim('← read help')}\n 2. mutagent prompts create ... --json ${chalk.dim('← upload prompt with {variables} + inputSchema')}\n 3. mutagent prompts dataset add --help ${chalk.dim('← read help')}\n 4. mutagent prompts dataset add <id> ... --json ${chalk.dim('← upload dataset')}\n 5. mutagent prompts evaluation create <id> --guided --json ${chalk.dim('← guided eval')}\n 6. mutagent prompts optimize start <id> --dataset <d> --evaluation <e> --json\n\n${chalk.yellow('Post-Onboarding Decision Tree:')}\n After ${chalk.bold('mutagent auth login')}, users land in one of 3 paths:\n ${chalk.bold('Path A')} (Tracing): explore → integrate <framework> → apply tracing → verify\n ${chalk.bold('Path B')} (Optimization): explore → prompts create → dataset add → eval create → optimize\n ${chalk.bold('Path C')} (Manual): Use CLI commands directly — run mutagent <command> --help\n\n${chalk.yellow('Directive System:')}\n Every --json response may include:\n ${chalk.bold('_directive.renderedCard')} Pre-formatted card for the user ${chalk.red('(MUST be shown in chat)')}\n ${chalk.bold('_directive.instruction')} Next step for the agent\n ${chalk.bold('_directive.next')} Array of suggested follow-up commands\n ${chalk.bold('_links')} Dashboard/API URLs (format as markdown links)\n\n${chalk.yellow('Evaluation Criteria Format:')}\n Each criterion MUST have: ${chalk.bold('name')}, ${chalk.bold('description')} (scoring rubric), ${chalk.bold('evaluationParameter')}\n evaluationParameter MUST match an inputSchema or outputSchema field name\n No duplicate evaluationParameter values — each criterion targets a unique field\n ALL schema fields must be covered (missing fields = error)\n Use ${chalk.bold('--guided --json')} to generate criteria templates from prompt schemas\n\n ${chalk.bold('Two framings — coding agents MUST distinguish:')}\n ${chalk.bold('• INPUT fields → Minimum Viable Context')}\n What info MUST be present in the input for the prompt to succeed.\n Rubric should include a ${chalk.bold('completeness scale')} (e.g., 0 = missing critical context, 5 = complete).\n ${chalk.dim('Input fields are typically `{variables}` in your prompt template.')}\n ${chalk.bold('• OUTPUT fields → Output Standards')}\n Content correctness + structural correctness + a ${chalk.bold('correctness scale')} (e.g., 0 = wrong, 5 = perfect).\n\n${chalk.yellow('Optimization Cost Control:')}\n Default max-iterations is 1. ${chalk.red('NEVER increase without explicit user request.')}\n Each iteration incurs LLM costs — confirm with user before starting >1.\n\n${chalk.yellow('Post-Optimization:')}\n After ${chalk.bold('optimize results')}: ALWAYS show the before/after diff to the user first.\n Then offer choices: ${chalk.bold('Apply')} / ${chalk.bold('Reject')}.\n\n${chalk.yellow('State Tracking:')}\n .mutagent/mutation-context.md — Codebase index of discovered/uploaded prompts\n Update after explore, create, and dataset operations\n mutagent auth status — Auth + workspace state\n Comment markers (// MutagenT:START ... // MutagenT:END) in source files\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. Use --guided --json for evaluation creation (NEVER --guided alone)\n 5. 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 6. After mutagent init, verify workspace: mutagent workspaces list --json\n 7. Use {single_braces} for template variables in prompts\n 8. Collect evaluation criteria from the user — NEVER auto-generate\n 9. 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 console.log(JSON.stringify({ version: cliVersion }));\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\nprogram.addCommand(createInitCommand()); // Init wizard\nprogram.addCommand(createLoginCommand()); // Top-level login\nprogram.addCommand(createAuthCommand());\nprogram.addCommand(createConfigCommand());\nprogram.addCommand(createPromptsCommand());\nprogram.addCommand(createTracesCommand());\nprogram.addCommand(createIntegrateCommand());\nprogram.addCommand(createAgentsCommand());\nprogram.addCommand(createPlaygroundCommand());\nprogram.addCommand(createWorkspacesCommand());\nprogram.addCommand(createProvidersCommand());\nprogram.addCommand(createExploreCommand()); // Codebase scanner\nprogram.addCommand(createSkillsCommand()); // Skills install\nprogram.addCommand(createUsageCommand()); // Usage & quota\nprogram.addCommand(createHooksCommand()); // Hook handlers (Claude Code telemetry)\nprogram.addCommand(createFeedbackCommand()); // Product feedback\n\n// Parse arguments\nprogram.parse();\n",
10
10
  "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 { MutationContext } from '../lib/mutation-context.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 docs/cli-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 and context state\n const cwd = process.cwd();\n const hasOnboarding = existsSync(join(cwd, '.mutagentrc.json'));\n const hasContextFile = existsSync(join(cwd, '.mutagent', 'mutation-context.md'));\n\n let contextSummary: { prompts: number; datasets: number; evaluations: number; integrated: string[] } | undefined;\n if (hasContextFile) {\n try {\n const ctx = MutationContext.load(cwd);\n contextSummary = ctx.getSummary();\n } catch {\n // Silently ignore parse errors\n }\n }\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 contextFile: hasContextFile,\n context: contextSummary ?? null,\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 // Context file status\n if (hasContextFile && contextSummary) {\n const parts = [\n `${String(contextSummary.prompts)} prompts`,\n `${String(contextSummary.datasets)} datasets`,\n `${String(contextSummary.evaluations)} evaluations`,\n ];\n output.success(`Context File: .mutagent/mutation-context.md (${parts.join(', ')})`);\n } else if (hasContextFile) {\n output.success('Context File: .mutagent/mutation-context.md');\n } else {\n output.warn('Context File: Not found (run `mutagent explore`)');\n }\n\n // Integration status\n if (contextSummary && contextSummary.integrated.length > 0) {\n output.success(`Integration: ${contextSummary.integrated.join(', ')} (active)`);\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",
11
11
  "import chalk from 'chalk';\nimport type { Command } from 'commander';\nimport type { OutputFormat } from '../types/index.js';\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 console.log(JSON.stringify(data, 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",
12
12
  "import { existsSync, readFileSync, writeFileSync, mkdirSync } from 'fs';\nimport { join, resolve } from 'path';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface PromptEntry {\n file: string;\n line: number;\n preview: string;\n platformId?: string;\n version?: string;\n status: 'discovered' | 'uploaded';\n}\n\nexport interface DatasetEntry {\n file: string;\n name: string;\n items: number;\n platformId?: string;\n promptId?: string;\n status: 'discovered' | 'uploaded';\n}\n\nexport interface EvaluationEntry {\n name: string;\n criteriaCount: number;\n platformId?: string;\n promptId?: string;\n status: 'discovered' | 'uploaded';\n}\n\nexport interface IntegrationEntry {\n framework: string;\n pkg: string;\n status: string;\n}\n\n// =============================================================================\n// Markdown Table Helpers\n// =============================================================================\n\nfunction parseTableRows(lines: string[]): string[][] {\n const rows: string[][] = [];\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed.startsWith('|') || !trimmed.endsWith('|')) continue;\n // Skip separator rows (e.g. |------|------|)\n if (/^\\|[\\s-:|]+\\|$/.test(trimmed)) continue;\n const cells = trimmed\n .slice(1, -1) // strip outer pipes\n .split('|')\n .map(c => c.trim());\n rows.push(cells);\n }\n return rows;\n}\n\nfunction emptyToUndefined(value: string | undefined): string | undefined {\n return value && value.length > 0 ? value : undefined;\n}\n\nfunction renderTable(headers: string[], rows: string[][]): string {\n const separator = headers.map(h => '-'.repeat(Math.max(h.length, 3)));\n const lines = [\n `| ${headers.join(' | ')} |`,\n `| ${separator.join(' | ')} |`,\n ...rows.map(r => `| ${r.join(' | ')} |`),\n ];\n return lines.join('\\n');\n}\n\n// =============================================================================\n// MutationContext\n// =============================================================================\n\nconst CONTEXT_DIR = '.mutagent';\nconst CONTEXT_FILE = 'mutation-context.md';\n\nexport class MutationContext {\n private prompts: PromptEntry[] = [];\n private datasets: DatasetEntry[] = [];\n private evaluations: EvaluationEntry[] = [];\n private integrations: IntegrationEntry[] = [];\n private filePath: string;\n\n private constructor(filePath: string) {\n this.filePath = filePath;\n }\n\n static load(projectRoot?: string): MutationContext {\n const root = projectRoot ?? process.cwd();\n const dirPath = join(resolve(root), CONTEXT_DIR);\n const filePath = join(dirPath, CONTEXT_FILE);\n\n const ctx = new MutationContext(filePath);\n\n if (existsSync(filePath)) {\n const content = readFileSync(filePath, 'utf-8');\n ctx.parse(content);\n }\n\n return ctx;\n }\n\n save(): void {\n const dirPath = join(this.filePath, '..');\n if (!existsSync(dirPath)) {\n mkdirSync(dirPath, { recursive: true });\n }\n writeFileSync(this.filePath, this.render(), 'utf-8');\n }\n\n // ---------------------------------------------------------------------------\n // Prompt operations\n // ---------------------------------------------------------------------------\n\n addDiscoveredPrompt(file: string, line: number, preview: string): void {\n const existing = this.prompts.find(p => p.file === file && p.line === line);\n if (existing) {\n existing.preview = preview;\n return;\n }\n this.prompts.push({ file, line, preview, status: 'discovered' });\n }\n\n markPromptUploaded(file: string, platformId: string, version: string): void {\n const entry = this.prompts.find(p => p.file === file);\n if (entry) {\n entry.platformId = platformId;\n entry.version = version;\n entry.status = 'uploaded';\n }\n }\n\n getDiscoveredPrompts(): PromptEntry[] {\n return this.prompts.filter(p => p.status === 'discovered');\n }\n\n getUploadedPrompts(): PromptEntry[] {\n return this.prompts.filter(p => p.status === 'uploaded');\n }\n\n // ---------------------------------------------------------------------------\n // Dataset operations\n // ---------------------------------------------------------------------------\n\n addDiscoveredDataset(file: string, name: string, items: number): void {\n const existing = this.datasets.find(d => d.file === file && d.name === name);\n if (existing) {\n existing.items = items;\n return;\n }\n this.datasets.push({ file, name, items, status: 'discovered' });\n }\n\n markDatasetUploaded(file: string, platformId: string, promptId: string): void {\n const entry = this.datasets.find(d => d.file === file);\n if (entry) {\n entry.platformId = platformId;\n entry.promptId = promptId;\n entry.status = 'uploaded';\n }\n }\n\n // ---------------------------------------------------------------------------\n // Evaluation operations\n // ---------------------------------------------------------------------------\n\n addEvaluation(name: string, criteriaCount: number, platformId: string, promptId: string): void {\n const existing = this.evaluations.find(e => e.name === name);\n if (existing) {\n existing.criteriaCount = criteriaCount;\n existing.platformId = platformId;\n existing.promptId = promptId;\n existing.status = 'uploaded';\n return;\n }\n this.evaluations.push({ name, criteriaCount, platformId, promptId, status: 'uploaded' });\n }\n\n // ---------------------------------------------------------------------------\n // Integration operations\n // ---------------------------------------------------------------------------\n\n setIntegrationStatus(framework: string, pkg: string, status: string): void {\n const existing = this.integrations.find(i => i.framework === framework);\n if (existing) {\n existing.pkg = pkg;\n existing.status = status;\n return;\n }\n this.integrations.push({ framework, pkg, status });\n }\n\n // ---------------------------------------------------------------------------\n // Summary\n // ---------------------------------------------------------------------------\n\n getSummary(): { prompts: number; datasets: number; evaluations: number; integrated: string[] } {\n return {\n prompts: this.prompts.length,\n datasets: this.datasets.length,\n evaluations: this.evaluations.length,\n integrated: this.integrations.map(i => i.framework),\n };\n }\n\n // ---------------------------------------------------------------------------\n // Serialization\n // ---------------------------------------------------------------------------\n\n private render(): string {\n const now = new Date().toISOString();\n const sections: string[] = [\n '# MutagenT Mutation Context',\n `<!-- MutagenT:AUTO-GENERATED - Do not edit manually -->`,\n `<!-- Last updated: ${now} -->`,\n '',\n '## Discovered Resources',\n '',\n '### Prompts',\n renderTable(\n ['File', 'Line', 'Content Preview', 'Platform ID', 'Version', 'Status'],\n this.prompts.map(p => [\n p.file,\n String(p.line),\n p.preview,\n p.platformId ?? '',\n p.version ?? '',\n p.status,\n ]),\n ),\n '',\n '### Datasets',\n renderTable(\n ['File', 'Name', 'Items', 'Platform ID', 'Prompt ID', 'Status'],\n this.datasets.map(d => [\n d.file,\n d.name,\n String(d.items),\n d.platformId ?? '',\n d.promptId ?? '',\n d.status,\n ]),\n ),\n '',\n '### Evaluations',\n renderTable(\n ['Name', 'Criteria Count', 'Platform ID', 'Prompt ID', 'Status'],\n this.evaluations.map(e => [\n e.name,\n String(e.criteriaCount),\n e.platformId ?? '',\n e.promptId ?? '',\n e.status,\n ]),\n ),\n '',\n '## Integration Status',\n renderTable(\n ['Framework', 'Package', 'Status'],\n this.integrations.map(i => [\n i.framework,\n i.pkg,\n i.status,\n ]),\n ),\n '',\n ];\n\n return sections.join('\\n');\n }\n\n private parse(content: string): void {\n const lines = content.split('\\n');\n\n let currentSection: 'prompts' | 'datasets' | 'evaluations' | 'integrations' | null = null;\n let sectionLines: string[] = [];\n\n const flushSection = (): void => {\n if (!currentSection || sectionLines.length === 0) return;\n\n const rows = parseTableRows(sectionLines);\n // Skip header row (first row after parsing)\n const dataRows = rows.slice(1);\n\n switch (currentSection) {\n case 'prompts':\n for (const row of dataRows) {\n const [file, lineStr, preview, pid, ver, st] = row;\n if (file !== undefined && lineStr !== undefined && preview !== undefined) {\n this.prompts.push({\n file,\n line: parseInt(lineStr, 10) || 0,\n preview,\n platformId: emptyToUndefined(pid),\n version: emptyToUndefined(ver),\n status: (emptyToUndefined(st) as PromptEntry['status'] | undefined) ?? 'discovered',\n });\n }\n }\n break;\n case 'datasets':\n for (const row of dataRows) {\n const [file, name, itemsStr, pid, prid, st] = row;\n if (file !== undefined && name !== undefined && itemsStr !== undefined) {\n this.datasets.push({\n file,\n name,\n items: parseInt(itemsStr, 10) || 0,\n platformId: emptyToUndefined(pid),\n promptId: emptyToUndefined(prid),\n status: (emptyToUndefined(st) as DatasetEntry['status'] | undefined) ?? 'discovered',\n });\n }\n }\n break;\n case 'evaluations':\n for (const row of dataRows) {\n const [name, ccStr, pid, prid, st] = row;\n if (name !== undefined && ccStr !== undefined) {\n this.evaluations.push({\n name,\n criteriaCount: parseInt(ccStr, 10) || 0,\n platformId: emptyToUndefined(pid),\n promptId: emptyToUndefined(prid),\n status: (emptyToUndefined(st) as EvaluationEntry['status'] | undefined) ?? 'discovered',\n });\n }\n }\n break;\n case 'integrations':\n for (const row of dataRows) {\n const [framework, pkg, status] = row;\n if (framework !== undefined && pkg !== undefined && status !== undefined) {\n this.integrations.push({ framework, pkg, status });\n }\n }\n break;\n }\n\n sectionLines = [];\n };\n\n for (const line of lines) {\n const trimmed = line.trim();\n\n if (trimmed === '### Prompts') {\n flushSection();\n currentSection = 'prompts';\n continue;\n }\n if (trimmed === '### Datasets') {\n flushSection();\n currentSection = 'datasets';\n continue;\n }\n if (trimmed === '### Evaluations') {\n flushSection();\n currentSection = 'evaluations';\n continue;\n }\n if (trimmed === '## Integration Status') {\n flushSection();\n currentSection = 'integrations';\n continue;\n }\n // New section heading resets current context\n if (trimmed.startsWith('## ') && currentSection !== null && trimmed !== '## Integration Status') {\n flushSection();\n currentSection = null;\n continue;\n }\n\n if (currentSection && trimmed.startsWith('|')) {\n sectionLines.push(trimmed);\n }\n }\n\n flushSection();\n }\n}\n",
13
13
  "import chalk from 'chalk';\nimport { resolve } from 'path';\nimport { exploreCodebase, parseExtensions, parseExcludeDirs } from '../lib/explorer.js';\n\n/**\n * Post-onboarding flow presented after successful first login.\n * Offers 3 paths: Guided Integration, Free-flow Optimization, or Exit.\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(' What would you like to do next?'));\n console.log('');\n\n const { path: selectedPath } = await inquirer.prompt<{ path: 'integrate' | 'optimize' | 'exit' }>([{\n type: 'list',\n name: 'path',\n message: 'Choose your path:',\n choices: [\n {\n name: `${chalk.green('A')} Guided Integration — connect your AI framework`,\n value: 'integrate',\n },\n {\n name: `${chalk.green('B')} Quick Optimization — upload a prompt and optimize it`,\n value: 'optimize',\n },\n {\n name: `${chalk.green('C')} Exit — explore on your own`,\n value: 'exit',\n },\n ],\n }]);\n\n if (selectedPath === 'exit') {\n console.log('');\n console.log(chalk.dim(' You can run `mutagent --help` anytime to see available commands.'));\n console.log(chalk.dim(' Try `mutagent explore` to scan your codebase for prompts.'));\n console.log('');\n return;\n }\n\n // Run explore on current directory\n console.log('');\n console.log(chalk.cyan(' Scanning your codebase...'));\n console.log('');\n\n const scanPath = resolve('.');\n const result = exploreCodebase({\n path: scanPath,\n depth: 10,\n extensions: parseExtensions('**/*.{ts,js,py,tsx,jsx}'),\n excludeDirs: parseExcludeDirs('node_modules,dist,.git,build,.next,__pycache__,venv,.venv'),\n markersOnly: false,\n });\n\n const totalFindings = result.prompts.length + result.datasets.length;\n\n if (totalFindings > 0) {\n console.log(chalk.green(` Found ${String(result.prompts.length)} prompt(s) and ${String(result.datasets.length)} dataset(s)`));\n } else {\n console.log(chalk.dim(' No prompts or datasets detected yet.'));\n }\n console.log('');\n\n if (selectedPath === 'integrate') {\n await runIntegrationPath();\n } else {\n runOptimizationPath(result.prompts.length, result.datasets.length);\n }\n}\n\nasync function runIntegrationPath(): Promise<void> {\n const inquirerMod = (await import('inquirer')).default;\n const { framework } = await inquirerMod.prompt<{ framework: string }>([{\n type: 'list',\n name: 'framework',\n message: 'Which AI framework are you using?',\n choices: [\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 ],\n }]);\n\n console.log('');\n console.log(chalk.bold(' Next steps:'));\n console.log('');\n console.log(` 1. ${chalk.green(`mutagent integrate ${framework}`)}`);\n console.log(` Get the integration guide for ${framework}`);\n console.log('');\n console.log(` 2. ${chalk.green(`mutagent integrate ${framework} --verify`)}`);\n console.log(' Verify your integration is working');\n console.log('');\n console.log(` 3. ${chalk.green('mutagent explore')}`);\n console.log(' Re-scan to confirm markers are in place');\n console.log('');\n}\n\nfunction runOptimizationPath(promptCount: number, datasetCount: number): void {\n console.log(chalk.bold(' Quick Optimization Workflow:'));\n console.log('');\n\n let step = 1;\n\n if (promptCount === 0) {\n console.log(` ${String(step)}. ${chalk.green('mutagent prompts create --name \"my-prompt\" --raw \"Your prompt with {{variables}}\"')}`);\n console.log(' Create a prompt with template variables');\n console.log('');\n step++;\n } else {\n console.log(chalk.dim(` ${chalk.green('\\u2713')} Prompts detected in codebase (${String(promptCount)} found)`));\n console.log(chalk.dim(` Upload one: mutagent prompts create --name \"my-prompt\" --raw-file <path>`));\n console.log('');\n }\n\n if (datasetCount === 0) {\n console.log(` ${String(step)}. ${chalk.green('mutagent prompts dataset add <prompt-id> -d \\'[{\"input\":{...},\"expectedOutput\":{...}}]\\' --name \"my-dataset\"')}`);\n console.log(' Upload a dataset with input/output pairs');\n console.log('');\n step++;\n } else {\n console.log(chalk.dim(` ${chalk.green('\\u2713')} Datasets detected in codebase (${String(datasetCount)} found)`));\n console.log(chalk.dim(` Upload one: mutagent prompts dataset add <prompt-id> -d '[...]' --name \"my-dataset\"`));\n console.log('');\n }\n\n console.log(` ${String(step)}. ${chalk.green(`mutagent prompts evaluation create <prompt-id> --name \"My Eval\" -d '{\"evalConfig\":{\"criteria\":[...]}}'`)}`);\n console.log(' Define evaluation criteria');\n console.log('');\n step++;\n\n console.log(` ${String(step)}. ${chalk.green('mutagent prompts optimize start <prompt-id> --dataset <dataset-id>')}`);\n console.log(' Start the optimization loop');\n console.log('');\n\n console.log(chalk.dim(' Tip: Use `mutagent prompts list` to see your prompt IDs.'));\n console.log('');\n}\n",
14
- "import { readdirSync, readFileSync, statSync } from 'fs';\nimport { join, relative, extname, basename } from 'path';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface ExploreOptions {\n path: string;\n depth: number;\n extensions: string[];\n excludeDirs: string[];\n markersOnly: boolean;\n}\n\nexport interface DiscoveredPrompt {\n file: string;\n line: number;\n preview: string;\n reason: string;\n confidence: 'high' | 'medium' | 'low';\n}\n\nexport interface DiscoveredDataset {\n file: string;\n name: string;\n items: number;\n}\n\nexport interface MarkerEntry {\n file: string;\n line: number;\n type: 'prompt' | 'dataset' | 'evaluation';\n platformId?: string;\n}\n\nexport interface ExploreResult {\n prompts: DiscoveredPrompt[];\n datasets: DiscoveredDataset[];\n markers: MarkerEntry[];\n}\n\n// =============================================================================\n// Heuristic Patterns\n// =============================================================================\n\n// Template variable pattern: {{variable_name}}\nconst TEMPLATE_VAR_PATTERN = /\\{\\{[a-zA-Z_][a-zA-Z0-9_]*\\}\\}/;\n\n// Prompt-like constant names\nconst PROMPT_NAME_PATTERN = /(?:const|let|var|export)\\s+\\w*(?:prompt|system|agent|instruction|template)\\w*\\s*=/i;\n\n// JSON schema indicators\nconst SCHEMA_PATTERN = /[\"']?(?:inputSchema|outputSchema|properties|required)[\"']?\\s*[=:]/;\n\n// Only match z.object() when variable name suggests prompt/output/input\nconst ZOD_PROMPT_SCHEMA_PATTERN = /(?:const|let|var|export)\\s+\\w*(?:prompt|output|input|response|schema|message)\\w*\\s*=\\s*z\\.object\\s*\\(/i;\n\n// Pydantic model definitions\nconst PYDANTIC_PATTERN = /class\\s+\\w+\\s*\\(\\s*(?:BaseModel|BaseSettings)\\s*\\)/;\n\n// MutagenT marker pattern\nconst MARKER_START_PATTERN = /MutagenT:START\\s+(\\w+)(?:\\s+id=(\\S+))?/;\n\n// =============================================================================\n// File Walking\n// =============================================================================\n\nfunction walkDir(\n dir: string,\n extensions: string[],\n excludeDirs: string[],\n maxDepth: number,\n currentDepth = 0,\n): string[] {\n if (currentDepth >= maxDepth) return [];\n\n const files: string[] = [];\n\n let entries: string[];\n try {\n entries = readdirSync(dir);\n } catch {\n return files;\n }\n\n for (const entry of entries) {\n const fullPath = join(dir, entry);\n\n let stat;\n try {\n stat = statSync(fullPath);\n } catch {\n continue;\n }\n\n if (stat.isDirectory()) {\n if (excludeDirs.includes(entry)) continue;\n files.push(...walkDir(fullPath, extensions, excludeDirs, maxDepth, currentDepth + 1));\n } else if (stat.isFile()) {\n const ext = extname(entry).toLowerCase();\n if (extensions.includes(ext)) {\n files.push(fullPath);\n }\n }\n }\n\n return files;\n}\n\n// =============================================================================\n// Scanners\n// =============================================================================\n\nfunction scanForPrompts(filePath: string, relativePath: string): DiscoveredPrompt[] {\n const results: DiscoveredPrompt[] = [];\n\n let content: string;\n try {\n content = readFileSync(filePath, 'utf-8');\n } catch {\n return results;\n }\n\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!line) continue;\n\n // Check for template variables with surrounding context suggesting a prompt\n if (TEMPLATE_VAR_PATTERN.test(line)) {\n const preview = line.trim().substring(0, 80);\n results.push({\n file: relativePath,\n line: i + 1,\n preview,\n reason: 'template-variable',\n confidence: 'high',\n });\n }\n\n // Check for prompt-like constant declarations\n if (PROMPT_NAME_PATTERN.test(line)) {\n const preview = line.trim().substring(0, 80);\n // Avoid duplicate if same line matched template var\n if (!results.some(r => r.file === relativePath && r.line === i + 1)) {\n results.push({\n file: relativePath,\n line: i + 1,\n preview,\n reason: 'prompt-constant',\n confidence: 'medium',\n });\n }\n }\n\n // Check for schema definitions (Zod — only prompt/input/output related)\n if (ZOD_PROMPT_SCHEMA_PATTERN.test(line)) {\n const preview = line.trim().substring(0, 80);\n if (!results.some(r => r.file === relativePath && r.line === i + 1)) {\n results.push({\n file: relativePath,\n line: i + 1,\n preview,\n reason: 'zod-schema',\n confidence: 'low',\n });\n }\n }\n\n // Check for Pydantic models\n if (PYDANTIC_PATTERN.test(line)) {\n const preview = line.trim().substring(0, 80);\n if (!results.some(r => r.file === relativePath && r.line === i + 1)) {\n results.push({\n file: relativePath,\n line: i + 1,\n preview,\n reason: 'pydantic-model',\n confidence: 'medium',\n });\n }\n }\n }\n\n return results;\n}\n\nfunction scanForMarkers(filePath: string, relativePath: string): MarkerEntry[] {\n const results: MarkerEntry[] = [];\n\n let content: string;\n try {\n content = readFileSync(filePath, 'utf-8');\n } catch {\n return results;\n }\n\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!line) continue;\n\n const match = MARKER_START_PATTERN.exec(line);\n if (match) {\n const rawType = match[1]?.toLowerCase();\n const platformId = match[2];\n const validTypes = new Set(['prompt', 'dataset', 'evaluation']);\n if (rawType && validTypes.has(rawType)) {\n results.push({\n file: relativePath,\n line: i + 1,\n type: rawType as MarkerEntry['type'],\n platformId,\n });\n }\n }\n }\n\n return results;\n}\n\nfunction scanJsonForSchemas(filePath: string, relativePath: string): DiscoveredPrompt[] {\n const results: DiscoveredPrompt[] = [];\n const ext = extname(filePath).toLowerCase();\n if (ext !== '.json') return results;\n\n let content: string;\n try {\n content = readFileSync(filePath, 'utf-8');\n } catch {\n return results;\n }\n\n // Quick check before parsing\n if (!SCHEMA_PATTERN.test(content)) return results;\n\n const preview = `JSON with schema definitions: ${basename(filePath)}`;\n results.push({\n file: relativePath,\n line: 1,\n preview: preview.substring(0, 80),\n reason: 'json-schema',\n confidence: 'medium',\n });\n\n return results;\n}\n\nfunction scanForDatasets(dir: string, rootPath: string, excludeDirs: string[], maxDepth: number): DiscoveredDataset[] {\n const results: DiscoveredDataset[] = [];\n const dataExtensions = ['.json', '.jsonl', '.csv'];\n const files = walkDir(dir, dataExtensions, excludeDirs, maxDepth);\n\n for (const filePath of files) {\n const relativePath = relative(rootPath, filePath);\n const ext = extname(filePath).toLowerCase();\n const name = basename(filePath, ext);\n\n let content: string;\n try {\n content = readFileSync(filePath, 'utf-8');\n } catch {\n continue;\n }\n\n if (ext === '.csv') {\n const lines = content.trim().split('\\n');\n if (lines.length > 1) {\n // Check header for dataset-like columns\n const header = lines[0]?.toLowerCase() ?? '';\n if (header.includes('input') || header.includes('output') || header.includes('expected')) {\n results.push({ file: relativePath, name, items: lines.length - 1 });\n }\n }\n } else if (ext === '.jsonl') {\n const lines = content.trim().split('\\n').filter(l => l.trim().length > 0);\n if (lines.length > 0) {\n try {\n const first = JSON.parse(lines[0] ?? '{}') as Record<string, unknown>;\n if ('input' in first || 'expectedOutput' in first) {\n results.push({ file: relativePath, name, items: lines.length });\n }\n } catch {\n // Not valid JSONL\n }\n }\n } else if (ext === '.json') {\n try {\n const parsed: unknown = JSON.parse(content);\n if (Array.isArray(parsed) && parsed.length > 0) {\n const first = parsed[0] as Record<string, unknown>;\n if ('input' in first || 'expectedOutput' in first) {\n results.push({ file: relativePath, name, items: parsed.length });\n }\n }\n } catch {\n // Not valid JSON\n }\n }\n }\n\n return results;\n}\n\n// =============================================================================\n// Main Explore Function\n// =============================================================================\n\nexport function exploreCodebase(options: ExploreOptions): ExploreResult {\n const rootPath = options.path;\n const prompts: DiscoveredPrompt[] = [];\n const datasets: DiscoveredDataset[] = [];\n const markers: MarkerEntry[] = [];\n\n // Walk source files\n const sourceFiles = walkDir(rootPath, options.extensions, options.excludeDirs, options.depth);\n\n for (const filePath of sourceFiles) {\n const relativePath = relative(rootPath, filePath);\n\n // Always scan for markers\n markers.push(...scanForMarkers(filePath, relativePath));\n\n // Heuristic scanning (skip if markers-only mode)\n if (!options.markersOnly) {\n prompts.push(...scanForPrompts(filePath, relativePath));\n }\n }\n\n // Also scan JSON files for schema patterns (heuristic mode only)\n if (!options.markersOnly) {\n const jsonFiles = walkDir(rootPath, ['.json'], options.excludeDirs, options.depth);\n for (const filePath of jsonFiles) {\n const relativePath = relative(rootPath, filePath);\n prompts.push(...scanJsonForSchemas(filePath, relativePath));\n }\n\n // Scan for dataset files\n datasets.push(...scanForDatasets(rootPath, rootPath, options.excludeDirs, options.depth));\n }\n\n return { prompts, datasets, markers };\n}\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\nexport function parseExtensions(includeGlob: string): string[] {\n // Parse patterns like \"**/*.{ts,js,py,tsx,jsx}\" into extensions\n const braceMatch = /\\{([^}]+)\\}/.exec(includeGlob);\n if (braceMatch?.[1]) {\n return braceMatch[1].split(',').map(ext => `.${ext.trim()}`);\n }\n\n // Single extension like \"**/*.ts\"\n const extMatch = /\\*\\.(\\w+)$/.exec(includeGlob);\n if (extMatch?.[1]) {\n return [`.${extMatch[1]}`];\n }\n\n // Default fallback\n return ['.ts', '.js', '.py', '.tsx', '.jsx'];\n}\n\nexport function parseExcludeDirs(excludePattern: string): string[] {\n return excludePattern.split(',').map(d => d.trim()).filter(Boolean);\n}\n",
14
+ "import { readdirSync, readFileSync, statSync } from 'fs';\nimport { join, relative, extname, basename } from 'path';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface ExploreOptions {\n path: string;\n depth: number;\n extensions: string[];\n excludeDirs: string[];\n markersOnly: boolean;\n}\n\nexport interface DiscoveredPrompt {\n file: string;\n line: number;\n preview: string;\n reason: string;\n confidence: 'high' | 'medium' | 'low';\n /**\n * File-level template variable delimiter inferred by\n * `inferPromptVariables()` over the whole file content (not per-line).\n * `'single'` = `{foo}` (platform canonical / LangChain PromptTemplate),\n * `'double'` = `{{foo}}` (Handlebars / Mustache / Liquid / Jinja2).\n * Every prompt hit discovered in the same file shares the same delimiter —\n * the inference is majority-wins per FILE, tie-break to `single`.\n * Surfaced via `mutagent explore --json` so coding agents know how to\n * enumerate variables when uploading the prompt. See\n * `concepts/prompt-variables.md` in the SKILL for the full contract.\n */\n delimiter: TemplateDelimiter;\n}\n\nexport interface DiscoveredDataset {\n file: string;\n name: string;\n items: number;\n}\n\nexport interface MarkerEntry {\n file: string;\n line: number;\n type: 'prompt' | 'dataset' | 'evaluation';\n platformId?: string;\n}\n\nexport interface DiscoveredAgent {\n file: string;\n line: number;\n preview: string;\n reason: string;\n confidence: 'high' | 'medium' | 'low';\n}\n\nexport interface ExploreResult {\n prompts: DiscoveredPrompt[];\n datasets: DiscoveredDataset[];\n markers: MarkerEntry[];\n agents: DiscoveredAgent[];\n}\n\n// =============================================================================\n// Heuristic Patterns\n// =============================================================================\n\n// Template variable patterns — see inferPromptVariables() below for the\n// delimiter-aware entry point. These raw regexes are kept here as the\n// tokenizers the inference function composes.\n//\n// DOUBLE-brace: {{foo}} (Handlebars / Mustache / LiquidJS / Jinja2)\nconst DOUBLE_VAR_PATTERN = /\\{\\{\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\}\\}/g;\n// SINGLE-brace: {foo} (LangChain PromptTemplate, MutagenT platform canonical)\n// We exclude two shapes to avoid JSON false-positives:\n// 1. `{{` (part of a double-brace) → handled by negative lookbehind (?<!\\{)\n// 2. `{\"...\"` (JSON key) → handled by negative lookahead for `\"`\n// The (?<!\\{) + (?!\\{) combo prevents overlap with DOUBLE_VAR_PATTERN.\nconst SINGLE_VAR_PATTERN = /(?<![\\\\{])\\{\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\}(?!\\})/g;\n// Fenced markdown code block — stripped before counting so that\n// prompt documentation embedding ``` {\"key\": \"val\"} ``` does not leak.\nconst FENCED_CODE_PATTERN = /```[\\s\\S]*?```/g;\n\n// Prompt-like constant names\nconst PROMPT_NAME_PATTERN = /(?:const|let|var|export)\\s+\\w*(?:prompt|system|agent|instruction|template)\\w*\\s*=/i;\n\n// JSON schema indicators\nconst SCHEMA_PATTERN = /[\"']?(?:inputSchema|outputSchema|properties|required)[\"']?\\s*[=:]/;\n\n// Only match z.object() when variable name suggests prompt/output/input\nconst ZOD_PROMPT_SCHEMA_PATTERN = /(?:const|let|var|export)\\s+\\w*(?:prompt|output|input|response|schema|message)\\w*\\s*=\\s*z\\.object\\s*\\(/i;\n\n// Pydantic model definitions\nconst PYDANTIC_PATTERN = /class\\s+\\w+\\s*\\(\\s*(?:BaseModel|BaseSettings)\\s*\\)/;\n\n// MutagenT marker pattern\nconst MARKER_START_PATTERN = /MutagenT:START\\s+(\\w+)(?:\\s+id=(\\S+))?/;\n\n// =============================================================================\n// Agent Heuristic Patterns (multi-turn / tool-calling indicators)\n// =============================================================================\n\n// High-confidence: framework agent constructors / loops\nconst AGENT_HIGH_PATTERNS: { pattern: RegExp; reason: string }[] = [\n { pattern: /\\bAgentExecutor\\b/, reason: 'langchain-agent-executor' },\n { pattern: /\\bcreate(?:React|OpenAIFunctions|Tool(?:Calling)?|Structured(?:Chat)?)Agent\\b/, reason: 'langchain-create-agent' },\n { pattern: /\\bnew\\s+Agent\\s*\\(/, reason: 'agent-constructor' },\n { pattern: /from\\s+['\"]openai\\/agents['\"]/, reason: 'openai-agents-sdk' },\n { pattern: /from\\s+['\"]@openai\\/agents['\"]/, reason: 'openai-agents-sdk' },\n { pattern: /from\\s+['\"]crewai['\"]/, reason: 'crewai-import' },\n { pattern: /from\\s+['\"]autogen(?:_agentchat)?['\"]/, reason: 'autogen-import' },\n { pattern: /from\\s+['\"]@?langgraph['\"]/, reason: 'langgraph-import' },\n { pattern: /from\\s+['\"]@langchain\\/langgraph['\"]/, reason: 'langgraph-import' },\n { pattern: /\\bStateGraph\\s*\\(/, reason: 'langgraph-stategraph' },\n];\n\n// Medium-confidence: tool calling signals\nconst AGENT_MEDIUM_PATTERNS: { pattern: RegExp; reason: string }[] = [\n { pattern: /\\btool_calls\\b/, reason: 'tool-calls' },\n { pattern: /\\btoolCalls\\b/, reason: 'tool-calls' },\n { pattern: /^\\s*tools\\s*[:=]\\s*\\[/, reason: 'tools-array' },\n { pattern: /@tool\\b/, reason: 'tool-decorator' },\n { pattern: /\\bfunction_call\\b/, reason: 'function-call' },\n { pattern: /\\btool_choice\\b/, reason: 'tool-choice' },\n];\n\n// =============================================================================\n// Prompt Variable Inference (single vs double brace, per content)\n// =============================================================================\n\nexport type TemplateDelimiter = 'single' | 'double';\n\nexport interface InferredPromptVariables {\n variables: string[];\n delimiter: TemplateDelimiter;\n}\n\n/**\n * Detect template variables in prompt-like content, inferring whether the\n * file/prompt uses single-brace `{var}` (MutagenT platform canonical,\n * LangChain PromptTemplate) or double-brace `{{var}}` (Handlebars, Liquid,\n * Mustache, Jinja2) per-content via majority count.\n *\n * Edge cases handled:\n * - Fenced markdown code blocks (```...```) are stripped before counting so\n * that embedded JSON examples inside docs do not leak.\n * - Literal JSON like `{\"status\": \"ok\"}` is NOT matched — the single-brace\n * regex excludes `{` immediately followed by `\"`.\n * - Escaped braces `\\{foo\\}` are skipped via the `(?<![\\\\{])` lookbehind.\n * - `{{foo}}` tokens cannot also match as single-brace (negative lookbehind\n * + lookahead around the single pattern).\n *\n * Tie-breaking: if singleHits === doubleHits (including the 0/0 case),\n * returns `single` — MutagenT platform canonical.\n */\nexport function inferPromptVariables(content: string): InferredPromptVariables {\n // Strip fenced code blocks first to avoid false positives from embedded\n // JSON examples inside prompt documentation.\n const stripped = content.replace(FENCED_CODE_PATTERN, '');\n\n const doubleMatches: string[] = [];\n const singleMatches: string[] = [];\n\n // Run both regexes with /g so we get every match. Important: create new\n // regex instances to avoid shared lastIndex state bugs across calls.\n const dbl = new RegExp(DOUBLE_VAR_PATTERN.source, 'g');\n let m: RegExpExecArray | null;\n while ((m = dbl.exec(stripped)) !== null) {\n if (m[1]) doubleMatches.push(m[1]);\n }\n\n const sgl = new RegExp(SINGLE_VAR_PATTERN.source, 'g');\n while ((m = sgl.exec(stripped)) !== null) {\n if (m[1]) singleMatches.push(m[1]);\n }\n\n const delimiter: TemplateDelimiter =\n doubleMatches.length > singleMatches.length ? 'double' : 'single';\n\n const chosen = delimiter === 'double' ? doubleMatches : singleMatches;\n\n // Dedupe preserving insertion order.\n const seen = new Set<string>();\n const variables: string[] = [];\n for (const v of chosen) {\n if (!seen.has(v)) {\n seen.add(v);\n variables.push(v);\n }\n }\n\n return { variables, delimiter };\n}\n\n// =============================================================================\n// File Walking\n// =============================================================================\n\nfunction walkDir(\n dir: string,\n extensions: string[],\n excludeDirs: string[],\n maxDepth: number,\n currentDepth = 0,\n): string[] {\n if (currentDepth >= maxDepth) return [];\n\n const files: string[] = [];\n\n let entries: string[];\n try {\n entries = readdirSync(dir);\n } catch {\n return files;\n }\n\n for (const entry of entries) {\n const fullPath = join(dir, entry);\n\n let stat;\n try {\n stat = statSync(fullPath);\n } catch {\n continue;\n }\n\n if (stat.isDirectory()) {\n if (excludeDirs.includes(entry)) continue;\n files.push(...walkDir(fullPath, extensions, excludeDirs, maxDepth, currentDepth + 1));\n } else if (stat.isFile()) {\n const ext = extname(entry).toLowerCase();\n if (extensions.includes(ext)) {\n files.push(fullPath);\n }\n }\n }\n\n return files;\n}\n\n// =============================================================================\n// Scanners\n// =============================================================================\n\nfunction scanForPrompts(filePath: string, relativePath: string): DiscoveredPrompt[] {\n const results: DiscoveredPrompt[] = [];\n\n let content: string;\n try {\n content = readFileSync(filePath, 'utf-8');\n } catch {\n return results;\n }\n\n // Compute the delimiter ONCE over the whole file content — majority wins\n // per FILE, not per line. A line-by-line inference would tie-break to\n // single for every single-var line even in a Handlebars-majority file.\n // See concepts/prompt-variables.md for the full inference contract.\n const fileDelimiter = inferPromptVariables(content).delimiter;\n\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!line) continue;\n\n // Check for template variables — delimiter-aware (single {foo} or double {{foo}}),\n // with JSON-escape + fenced-code safety handled by inferPromptVariables().\n // Per-line inference is used ONLY as a gate to decide whether this line\n // looks template-y; the delimiter attached to every hit is the file-level\n // one computed above.\n const inferred = inferPromptVariables(line);\n if (inferred.variables.length > 0) {\n const preview = line.trim().substring(0, 80);\n results.push({\n file: relativePath,\n line: i + 1,\n preview,\n reason: 'template-variable',\n confidence: 'high',\n delimiter: fileDelimiter,\n });\n }\n\n // Check for prompt-like constant declarations\n if (PROMPT_NAME_PATTERN.test(line)) {\n const preview = line.trim().substring(0, 80);\n // Avoid duplicate if same line matched template var\n if (!results.some(r => r.file === relativePath && r.line === i + 1)) {\n results.push({\n file: relativePath,\n line: i + 1,\n preview,\n reason: 'prompt-constant',\n confidence: 'medium',\n delimiter: fileDelimiter,\n });\n }\n }\n\n // Check for schema definitions (Zod — only prompt/input/output related)\n if (ZOD_PROMPT_SCHEMA_PATTERN.test(line)) {\n const preview = line.trim().substring(0, 80);\n if (!results.some(r => r.file === relativePath && r.line === i + 1)) {\n results.push({\n file: relativePath,\n line: i + 1,\n preview,\n reason: 'zod-schema',\n confidence: 'low',\n delimiter: fileDelimiter,\n });\n }\n }\n\n // Check for Pydantic models\n if (PYDANTIC_PATTERN.test(line)) {\n const preview = line.trim().substring(0, 80);\n if (!results.some(r => r.file === relativePath && r.line === i + 1)) {\n results.push({\n file: relativePath,\n line: i + 1,\n preview,\n reason: 'pydantic-model',\n confidence: 'medium',\n delimiter: fileDelimiter,\n });\n }\n }\n }\n\n return results;\n}\n\nfunction scanForAgents(filePath: string, relativePath: string): DiscoveredAgent[] {\n const results: DiscoveredAgent[] = [];\n\n let content: string;\n try {\n content = readFileSync(filePath, 'utf-8');\n } catch {\n return results;\n }\n\n const lines = content.split('\\n');\n const seen = new Set<number>();\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!line) continue;\n\n for (const { pattern, reason } of AGENT_HIGH_PATTERNS) {\n if (pattern.test(line) && !seen.has(i)) {\n results.push({\n file: relativePath,\n line: i + 1,\n preview: line.trim().substring(0, 80),\n reason,\n confidence: 'high',\n });\n seen.add(i);\n break;\n }\n }\n\n if (seen.has(i)) continue;\n\n for (const { pattern, reason } of AGENT_MEDIUM_PATTERNS) {\n if (pattern.test(line)) {\n results.push({\n file: relativePath,\n line: i + 1,\n preview: line.trim().substring(0, 80),\n reason,\n confidence: 'medium',\n });\n seen.add(i);\n break;\n }\n }\n }\n\n return results;\n}\n\nfunction scanForMarkers(filePath: string, relativePath: string): MarkerEntry[] {\n const results: MarkerEntry[] = [];\n\n let content: string;\n try {\n content = readFileSync(filePath, 'utf-8');\n } catch {\n return results;\n }\n\n const lines = content.split('\\n');\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!line) continue;\n\n const match = MARKER_START_PATTERN.exec(line);\n if (match) {\n const rawType = match[1]?.toLowerCase();\n const platformId = match[2];\n const validTypes = new Set(['prompt', 'dataset', 'evaluation']);\n if (rawType && validTypes.has(rawType)) {\n results.push({\n file: relativePath,\n line: i + 1,\n type: rawType as MarkerEntry['type'],\n platformId,\n });\n }\n }\n }\n\n return results;\n}\n\nfunction scanJsonForSchemas(filePath: string, relativePath: string): DiscoveredPrompt[] {\n const results: DiscoveredPrompt[] = [];\n const ext = extname(filePath).toLowerCase();\n if (ext !== '.json') return results;\n\n let content: string;\n try {\n content = readFileSync(filePath, 'utf-8');\n } catch {\n return results;\n }\n\n // Quick check before parsing\n if (!SCHEMA_PATTERN.test(content)) return results;\n\n // JSON schema files don't have `{variable}` templates — inference is\n // meaningless, default to the platform canonical delimiter.\n const preview = `JSON with schema definitions: ${basename(filePath)}`;\n results.push({\n file: relativePath,\n line: 1,\n preview: preview.substring(0, 80),\n reason: 'json-schema',\n confidence: 'medium',\n delimiter: 'single',\n });\n\n return results;\n}\n\nfunction scanForDatasets(dir: string, rootPath: string, excludeDirs: string[], maxDepth: number): DiscoveredDataset[] {\n const results: DiscoveredDataset[] = [];\n const dataExtensions = ['.json', '.jsonl', '.csv'];\n const files = walkDir(dir, dataExtensions, excludeDirs, maxDepth);\n\n for (const filePath of files) {\n const relativePath = relative(rootPath, filePath);\n const ext = extname(filePath).toLowerCase();\n const name = basename(filePath, ext);\n\n let content: string;\n try {\n content = readFileSync(filePath, 'utf-8');\n } catch {\n continue;\n }\n\n if (ext === '.csv') {\n const lines = content.trim().split('\\n');\n if (lines.length > 1) {\n // Check header for dataset-like columns\n const header = lines[0]?.toLowerCase() ?? '';\n if (header.includes('input') || header.includes('output') || header.includes('expected')) {\n results.push({ file: relativePath, name, items: lines.length - 1 });\n }\n }\n } else if (ext === '.jsonl') {\n const lines = content.trim().split('\\n').filter(l => l.trim().length > 0);\n if (lines.length > 0) {\n try {\n const first = JSON.parse(lines[0] ?? '{}') as Record<string, unknown>;\n if ('input' in first || 'expectedOutput' in first) {\n results.push({ file: relativePath, name, items: lines.length });\n }\n } catch {\n // Not valid JSONL\n }\n }\n } else if (ext === '.json') {\n try {\n const parsed: unknown = JSON.parse(content);\n if (Array.isArray(parsed) && parsed.length > 0) {\n const first = parsed[0] as Record<string, unknown>;\n if ('input' in first || 'expectedOutput' in first) {\n results.push({ file: relativePath, name, items: parsed.length });\n }\n }\n } catch {\n // Not valid JSON\n }\n }\n }\n\n return results;\n}\n\n// =============================================================================\n// Main Explore Function\n// =============================================================================\n\nexport function exploreCodebase(options: ExploreOptions): ExploreResult {\n const rootPath = options.path;\n const prompts: DiscoveredPrompt[] = [];\n const datasets: DiscoveredDataset[] = [];\n const markers: MarkerEntry[] = [];\n const agents: DiscoveredAgent[] = [];\n\n // Walk source files\n const sourceFiles = walkDir(rootPath, options.extensions, options.excludeDirs, options.depth);\n\n for (const filePath of sourceFiles) {\n const relativePath = relative(rootPath, filePath);\n\n // Always scan for markers\n markers.push(...scanForMarkers(filePath, relativePath));\n\n // Heuristic scanning (skip if markers-only mode)\n if (!options.markersOnly) {\n prompts.push(...scanForPrompts(filePath, relativePath));\n agents.push(...scanForAgents(filePath, relativePath));\n }\n }\n\n // Also scan JSON files for schema patterns (heuristic mode only)\n if (!options.markersOnly) {\n const jsonFiles = walkDir(rootPath, ['.json'], options.excludeDirs, options.depth);\n for (const filePath of jsonFiles) {\n const relativePath = relative(rootPath, filePath);\n prompts.push(...scanJsonForSchemas(filePath, relativePath));\n }\n\n // Scan for dataset files\n datasets.push(...scanForDatasets(rootPath, rootPath, options.excludeDirs, options.depth));\n }\n\n return { prompts, datasets, markers, agents };\n}\n\n// =============================================================================\n// Helpers\n// =============================================================================\n\nexport function parseExtensions(includeGlob: string): string[] {\n // Parse patterns like \"**/*.{ts,js,py,tsx,jsx}\" into extensions\n const braceMatch = /\\{([^}]+)\\}/.exec(includeGlob);\n if (braceMatch?.[1]) {\n return braceMatch[1].split(',').map(ext => `.${ext.trim()}`);\n }\n\n // Single extension like \"**/*.ts\"\n const extMatch = /\\*\\.(\\w+)$/.exec(includeGlob);\n if (extMatch?.[1]) {\n return [`.${extMatch[1]}`];\n }\n\n // Default fallback\n return ['.ts', '.js', '.py', '.tsx', '.jsx'];\n}\n\nexport function parseExcludeDirs(excludePattern: string): string[] {\n return excludePattern.split(',').map(d => d.trim()).filter(Boolean);\n}\n",
15
15
  "/**\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: docs/cli-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 prompts list --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",
16
16
  "/**\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",
17
17
  "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: docs/cli-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",
@@ -20,10 +20,11 @@
20
20
  "/**\n * Extended scorecard detail sections for optimization results.\n *\n * Renders per-item breakdown, failure modes, mutations, and evaluation\n * details — matching the granularity of the backend MetaTuner scorecard.\n */\n\nimport chalk from 'chalk';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface DatasetItemScore {\n id: string;\n beforeScore?: number;\n afterScore?: number;\n}\n\nexport interface FailureModeEntry {\n category: string;\n failures: { description?: string; summary?: string }[];\n}\n\nexport interface MutationEntry {\n label: string;\n status: 'applied' | 'rejected' | 'pending' | 'skipped';\n priority?: string;\n rationale?: string;\n}\n\nexport interface EvaluationItemDetail {\n itemId: string;\n score: number;\n success: boolean;\n metrics?: {\n name: string;\n score: number;\n success: boolean;\n failureMode?: string;\n reasoning?: string;\n criteria?: { name: string; score: number; success: boolean }[];\n }[];\n}\n\nexport interface ScorecardDetailData {\n datasetResults?: DatasetItemScore[];\n failureModes?: FailureModeEntry[];\n mutations?: MutationEntry[];\n evaluationDetails?: EvaluationItemDetail[];\n}\n\n// =============================================================================\n// Chalk-colored terminal rendering\n// =============================================================================\n\nexport function renderScorecardDetails(data: ScorecardDetailData): void {\n if (data.datasetResults && data.datasetResults.length > 0) {\n console.log('');\n console.log(chalk.dim(' Per-Item Before vs After'));\n console.log(chalk.dim(' ' + '\\u2500'.repeat(70)));\n console.log(' ' + 'Item ID'.padEnd(28) + 'Before'.padEnd(10) + 'After'.padEnd(10) + 'Diff'.padEnd(10) + 'Status');\n console.log(chalk.dim(' ' + '\\u2500'.repeat(70)));\n for (const item of data.datasetResults) {\n const id = item.id.substring(0, 26).padEnd(26);\n const before = (item.beforeScore ?? 0).toFixed(4).padEnd(8);\n const after = (item.afterScore ?? 0).toFixed(4).padEnd(8);\n const d = (item.afterScore ?? 0) - (item.beforeScore ?? 0);\n const diffStr = ((d >= 0 ? '+' : '') + d.toFixed(4)).padEnd(8);\n const status = d > 0.01 ? chalk.green('\\u2713 \\u2191') : d < -0.01 ? chalk.red('\\u2717 \\u2193') : chalk.dim('\\u2500');\n console.log(` ${id} ${before} ${after} ${diffStr} ${status}`);\n }\n console.log(chalk.dim(' ' + '\\u2500'.repeat(70)));\n }\n\n if (data.failureModes && data.failureModes.length > 0) {\n console.log('');\n console.log(chalk.dim(' Failure Modes by Category'));\n console.log(chalk.dim(' ' + '\\u2500'.repeat(70)));\n for (const fm of data.failureModes) {\n const color: 'red' | 'yellow' | 'green' = fm.failures.length > 3 ? 'red' : fm.failures.length > 0 ? 'yellow' : 'green';\n console.log(chalk[color](` \\u25B8 ${fm.category}`) + chalk.dim(` (${String(fm.failures.length)} failures)`));\n for (const f of fm.failures.slice(0, 5)) {\n console.log(chalk.dim(` \\u2514\\u2500 ${(f.description ?? f.summary ?? 'No description').substring(0, 65)}`));\n }\n if (fm.failures.length > 5) {\n console.log(chalk.dim(` \\u2514\\u2500 ... and ${String(fm.failures.length - 5)} more`));\n }\n }\n }\n\n if (data.mutations && data.mutations.length > 0) {\n const applied = data.mutations.filter(m => m.status === 'applied');\n const rejected = data.mutations.filter(m => m.status === 'rejected');\n const pending = data.mutations.filter(m => m.status === 'pending');\n const skipped = data.mutations.filter(m => m.status === 'skipped');\n console.log('');\n console.log(chalk.dim(' Mutations'));\n console.log(chalk.dim(' ' + '\\u2500'.repeat(70)));\n console.log(` Total: ${String(data.mutations.length)} Applied: ${chalk.green(String(applied.length))} Rejected: ${chalk.red(String(rejected.length))} Pending: ${chalk.yellow(String(pending.length))} Skipped: ${chalk.dim(String(skipped.length))}`);\n if (applied.length > 0) {\n console.log(chalk.green(' Applied:'));\n for (const m of applied) {\n const pri = m.priority === 'critical' || m.priority === 'high'\n ? chalk.red(`[${m.priority.toUpperCase()}]`)\n : chalk.dim(`[${(m.priority ?? 'UNKNOWN').toUpperCase()}]`);\n console.log(` ${pri} ${m.label}`);\n if (m.rationale) console.log(chalk.dim(` \\u2514\\u2500 ${m.rationale.substring(0, 60)}`));\n }\n }\n if (rejected.length > 0) {\n console.log(chalk.red(' Rejected:'));\n for (const m of rejected.slice(0, 5)) {\n console.log(chalk.dim(` \\u2717 ${m.label}`));\n }\n if (rejected.length > 5) console.log(chalk.dim(` ... and ${String(rejected.length - 5)} more`));\n }\n }\n\n if (data.evaluationDetails && data.evaluationDetails.length > 0) {\n console.log('');\n console.log(chalk.dim(' Detailed Evaluation Breakdown'));\n console.log(chalk.dim(' ' + '\\u2500'.repeat(70)));\n for (const item of data.evaluationDetails) {\n const statusIcon = item.success ? chalk.green('\\u2713') : chalk.red('\\u2717');\n const metricCount = item.metrics?.length ?? 0;\n console.log(` ${statusIcon} ${item.itemId} Score: ${item.score.toFixed(4)} Metrics: ${String(metricCount)}`);\n if (item.metrics) {\n for (const m of item.metrics) {\n const mIcon = m.success ? chalk.green('\\u2713') : chalk.red('\\u2717');\n const mode = m.failureMode ? chalk.dim(` [${m.failureMode}]`) : '';\n console.log(` ${mIcon} ${m.name.padEnd(25)} ${m.score.toFixed(3)}${mode}`);\n if (!m.success && m.reasoning) {\n console.log(chalk.dim(` \\u2514\\u2500 ${(m.reasoning.split('\\n')[0] ?? '').substring(0, 60)}`));\n }\n if (m.criteria) {\n for (const c of m.criteria) {\n const cIcon = c.success ? chalk.green('\\u2713') : chalk.red('\\u2717');\n console.log(chalk.dim(` ${cIcon} ${c.name.substring(0, 20).padEnd(20)} ${c.score.toFixed(3)}`));\n }\n }\n }\n }\n }\n }\n}\n\n// =============================================================================\n// Plain text rendering (for JSON directive renderedCard)\n// =============================================================================\n\nexport function buildScorecardDetailsText(data: ScorecardDetailData): string {\n const lines: string[] = [];\n\n if (data.datasetResults && data.datasetResults.length > 0) {\n lines.push('', 'Per-Item Before vs After', '\\u2500'.repeat(70));\n lines.push(' ' + 'Item ID'.padEnd(28) + 'Before'.padEnd(10) + 'After'.padEnd(10) + 'Diff'.padEnd(10) + 'Status');\n lines.push(' ' + '\\u2500'.repeat(68));\n for (const item of data.datasetResults) {\n const id = item.id.substring(0, 26).padEnd(26);\n const before = (item.beforeScore ?? 0).toFixed(4).padEnd(8);\n const after = (item.afterScore ?? 0).toFixed(4).padEnd(8);\n const d = (item.afterScore ?? 0) - (item.beforeScore ?? 0);\n const diffStr = ((d >= 0 ? '+' : '') + d.toFixed(4)).padEnd(8);\n const status = d > 0.01 ? '\\u2191' : d < -0.01 ? '\\u2193' : '\\u2500';\n lines.push(` ${id} ${before} ${after} ${diffStr} ${status}`);\n }\n }\n\n if (data.failureModes && data.failureModes.length > 0) {\n lines.push('', 'Failure Modes by Category', '\\u2500'.repeat(70));\n for (const fm of data.failureModes) {\n lines.push(` ${fm.category} (${String(fm.failures.length)} failures)`);\n for (const f of fm.failures.slice(0, 5)) {\n lines.push(` \\u2514\\u2500 ${(f.description ?? f.summary ?? 'No description').substring(0, 65)}`);\n }\n if (fm.failures.length > 5) lines.push(` \\u2514\\u2500 ... and ${String(fm.failures.length - 5)} more`);\n }\n }\n\n if (data.mutations && data.mutations.length > 0) {\n const applied = data.mutations.filter(m => m.status === 'applied');\n const rejected = data.mutations.filter(m => m.status === 'rejected');\n const pending = data.mutations.filter(m => m.status === 'pending');\n const skipped = data.mutations.filter(m => m.status === 'skipped');\n lines.push('', 'Mutations', '\\u2500'.repeat(70));\n lines.push(` Total: ${String(data.mutations.length)} Applied: ${String(applied.length)} Rejected: ${String(rejected.length)} Pending: ${String(pending.length)} Skipped: ${String(skipped.length)}`);\n for (const m of applied) {\n lines.push(` [${(m.priority ?? 'UNKNOWN').toUpperCase()}] ${m.label}`);\n if (m.rationale) lines.push(` \\u2514\\u2500 ${m.rationale.substring(0, 60)}`);\n }\n for (const m of rejected.slice(0, 5)) {\n lines.push(` \\u2717 ${m.label}`);\n }\n if (rejected.length > 5) lines.push(` ... and ${String(rejected.length - 5)} more`);\n }\n\n if (data.evaluationDetails && data.evaluationDetails.length > 0) {\n lines.push('', 'Detailed Evaluation Breakdown', '\\u2500'.repeat(70));\n for (const item of data.evaluationDetails) {\n const icon = item.success ? '\\u2713' : '\\u2717';\n lines.push(` ${icon} ${item.itemId} Score: ${item.score.toFixed(4)} Metrics: ${String(item.metrics?.length ?? 0)}`);\n if (item.metrics) {\n for (const m of item.metrics) {\n const mIcon = m.success ? '\\u2713' : '\\u2717';\n const mode = m.failureMode ? ` [${m.failureMode}]` : '';\n lines.push(` ${mIcon} ${m.name.padEnd(25)} ${m.score.toFixed(3)}${mode}`);\n if (!m.success && m.reasoning) {\n lines.push(` \\u2514\\u2500 ${(m.reasoning.split('\\n')[0] ?? '').substring(0, 60)}`);\n }\n if (m.criteria) {\n for (const c of m.criteria) {\n const cIcon = c.success ? '\\u2713' : '\\u2717';\n lines.push(` ${cIcon} ${c.name.substring(0, 20).padEnd(20)} ${c.score.toFixed(3)}`);\n }\n }\n }\n }\n }\n }\n\n return lines.length > 0 ? '\\n' + lines.join('\\n') : '';\n}\n",
21
21
  "import { 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 promptLinks, promptLink, promptsDashboardLink,\n formatCreationHints,\n promptCreatedDirective, promptUpdatedDirective, promptDeletedDirective,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\nimport {\n isValidJsonSchema, formatSchemaWarning,\n validateSchemaDescriptions,\n} from '../../lib/schema-helpers.js';\nimport type { Prompt } from '../../types/index.js';\nimport {\n isSchemaEmpty, parseSchemaOption,\n type ListOptions, type GetOptions, type CreateOptions,\n type UpdateOptions, type DeleteOptions,\n} from './index.js';\n\nexport function registerPromptsCrud(prompts: Command): void {\n // List prompts\n prompts\n .command('list')\n .description('List all prompts')\n .option('-l, --limit <n>', 'Limit results', '50')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts list\n ${chalk.dim('$')} mutagent prompts list --limit 10\n ${chalk.dim('$')} mutagent prompts list --json\n\n${chalk.dim('Tip: Use --json for machine-readable output (AI agents, CI pipelines).')}\n `)\n .action(async (options: ListOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const promptsList = await client.listPrompts();\n\n // Limit results\n const limit = parseInt(options.limit, 10) || 50;\n const limited = promptsList.slice(0, limit);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `prompts get <id>` for full details.\n const withLinks = limited.map((p: Prompt) => ({\n id: p.id,\n name: p.name,\n version: p.version,\n isLatest: p.isLatest,\n updatedAt: p.updatedAt,\n _links: promptLinks(p.id),\n }));\n output.output(withLinks);\n } else {\n // Show workspace context\n const wsId = client.getCurrentWorkspaceId();\n if (wsId) {\n output.info(`Workspace: ${wsId}`);\n }\n\n if (limited.length === 0) {\n output.info(\"No prompts found in current workspace. Run 'mutagent config list' to check workspace context.\");\n } else {\n // Format for table\n const formatted = limited.map((p: Prompt) => ({\n id: p.id,\n name: p.name,\n version: p.version,\n updated: p.updatedAt ? new Date(p.updatedAt).toLocaleDateString() : 'N/A',\n url: promptLink(p.id),\n }));\n output.output(formatted);\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get prompt\n prompts\n .command('get')\n .description('Get prompt details with nested data')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('--with-datasets', 'Include datasets')\n .option('--with-evals', 'Include evaluations')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts get <id>\n ${chalk.dim('$')} mutagent prompts get <id> --with-datasets --with-evals\n ${chalk.dim('$')} mutagent prompts get <id> --json\n\n${chalk.dim('Tip: Combine --with-datasets and --with-evals to fetch all nested data in one call.')}\n `)\n .action(async (id: string, options: GetOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const prompt = await client.getPrompt(id);\n\n const result: Record<string, unknown> = { ...prompt };\n\n if (options.withDatasets) {\n const datasets = await client.listDatasets(id);\n result.datasets = datasets;\n }\n\n if (options.withEvals) {\n const evals = await client.listEvaluations(id);\n result.evaluations = evals;\n }\n\n if (isJson) {\n result._links = promptLinks(id);\n }\n output.output(result);\n if (!isJson) {\n output.info(`View in dashboard: ${promptLink(id)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create prompt\n prompts\n .command('create')\n .description('Create a new prompt')\n .option('-n, --name <name>', 'Prompt name')\n .option('--description <text>', 'Prompt description (shown in dashboard)')\n .option('-c, --content <content>', 'Prompt content (rawPrompt) [DEPRECATED: use --raw]')\n .option('-r, --raw <text>', 'Raw prompt text (single prompt)')\n .option('--system <text>', 'System prompt (use with --human)')\n .option('--human <text>', 'Human prompt (use with --system)')\n .option('--messages <json>', 'Messages array as JSON (e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\')')\n .option('--output-schema <json>', 'Output schema as JSON string (required for optimization)')\n .option('--input-schema <json>', 'Input variable schema as JSON string')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts create --name \"my-prompt\" --description \"Greeting prompt for customers\" --system \"You are helpful\" --human \"{input}\" --output-schema '{\"type\":\"object\",\"properties\":{\"result\":{\"type\":\"string\",\"description\":\"The result\"}}}'\n ${chalk.dim('$')} mutagent prompts create --name \"raw-prompt\" --raw \"Summarize: {text}\" --output-schema '{\"type\":\"object\",\"properties\":{\"summary\":{\"type\":\"string\",\"description\":\"Summary\"}}}'\n ${chalk.dim('$')} mutagent prompts create --name \"multi-turn\" --messages '[{\"role\":\"system\",\"content\":\"You are helpful\"},{\"role\":\"user\",\"content\":\"{input}\"}]' --output-schema '{\"type\":\"object\",\"properties\":{\"result\":{\"type\":\"string\",\"description\":\"The result\"}}}'\n\nPrompt Input Methods (pick one, priority order):\n --system/--human Structured system + user message pair ${chalk.green('(recommended)')}\n --raw Single raw prompt text with {variables}\n --messages Full messages array as JSON\n\n${chalk.yellow('Variable Syntax:')}\n MutagenT uses {single_braces} for template variables.\n humanPrompt: \"Analyze this: {document}\" ${chalk.green('✓ correct')}\n humanPrompt: \"Analyze this: {{document}}\" ${chalk.red('✗ wrong')}\n\n Variables in humanPrompt MUST also appear in inputSchema.properties.\n Static prompts (no variables) cannot substitute inputs during optimization.\n\n${chalk.yellow('AI Agent: Format Selection Rules')}\n Examine the SOURCE CODE structure of the prompt being uploaded:\n\n 1. If the code uses SystemMessagePromptTemplate + HumanMessagePromptTemplate\n (or equivalent system/human split in any framework):\n → Use --system \"...\" --human \"...\"\n\n 2. If the code is a single string template with {variables}, no role split:\n → Use --raw \"...\"\n\n 3. If the code uses a messages array (ChatPromptTemplate.fromMessages,\n multi-turn, or >2 roles):\n → Use --messages '[{\"role\":\"system\",\"content\":\"...\"},{\"role\":\"user\",\"content\":\"...\"}]'\n\n The decision is about SOURCE CODE STRUCTURE, not prompt content.\n A persona description in a system prompt still uses --system/--human.\n\n${chalk.red('outputSchema is required.')}\n\n${chalk.yellow('AI Agent: ALWAYS append --json to this command.')}\n `)\n .action(async (options: CreateOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: Partial<Prompt>;\n\n if (options.name) {\n // Handle different prompt style formats\n data = { name: options.name, description: options.description };\n\n // Priority: messages > system+human > raw > content (deprecated)\n if (options.messages) {\n // Messages format: JSON array of messages\n try {\n const messages = JSON.parse(options.messages) as { role: string; content: string }[];\n // Extract system and human prompts from messages array\n const systemMsg = messages.find(m => m.role === 'system');\n const humanMsg = messages.find(m => m.role === 'user' || m.role === 'human');\n if (systemMsg) data.systemPrompt = systemMsg.content;\n if (humanMsg) data.humanPrompt = humanMsg.content;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --messages flag',\n 'Run: mutagent prompts create --help\\nProvide a valid JSON array, e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\''\n );\n }\n } else if (options.system ?? options.human) {\n // Human/System format\n if (options.system) data.systemPrompt = options.system;\n if (options.human) data.humanPrompt = options.human;\n } else if (options.raw) {\n // Raw prompt format\n data.rawPrompt = options.raw;\n } else if (options.content) {\n // Deprecated --content flag (backwards compatibility)\n data.rawPrompt = options.content;\n } else {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Prompt content required',\n 'Run: mutagent prompts create --help\\nUse --raw, --system/--human, or --messages to specify prompt content'\n );\n }\n } else {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n '--name is required. Use --name with --system/--human, --raw, or --messages',\n 'Run: mutagent prompts create --help\\nProvide --name with --system/--human, --raw, or --messages to specify prompt content'\n );\n }\n\n // Parse --output-schema\n const parsedOutputSchema = parseSchemaOption(\n options.outputSchema, undefined,\n 'output-schema', 'mutagent prompts create --help'\n );\n if (parsedOutputSchema) data.outputSchema = parsedOutputSchema;\n\n // Parse --input-schema\n const parsedInputSchema = parseSchemaOption(\n options.inputSchema, undefined,\n 'input-schema', 'mutagent prompts create --help'\n );\n if (parsedInputSchema) data.inputSchema = parsedInputSchema;\n\n // outputSchema is REQUIRED — error if missing\n if (isSchemaEmpty(data.outputSchema)) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'outputSchema is required for prompt creation',\n 'Run: mutagent prompts create --help\\nUse --output-schema \\'{\"type\":\"object\",\"properties\":{...}}\\''\n );\n }\n\n // Enforce inputSchema is present and valid (hard block)\n if (isSchemaEmpty(data.inputSchema)) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n 'inputSchema is required. Optimization cannot run without defined input variables.',\n 'Run: mutagent prompts create --help\\ninputSchema must be provided. Pass it via the API or dashboard.'\n );\n } else if (!isValidJsonSchema(data.inputSchema)) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n 'inputSchema is not a valid JSON Schema object.',\n 'Run: mutagent prompts create --help\\n' + formatSchemaWarning('inputSchema')\n );\n } else {\n const missingDescs = validateSchemaDescriptions(data.inputSchema);\n if (missingDescs.length > 0) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `inputSchema properties missing descriptions: ${missingDescs.join(', ')}`,\n \"Run: mutagent prompts create --help\\nAdd a 'description' field to each property in your inputSchema. Example: { \\\"properties\\\": { \\\"field\\\": { \\\"type\\\": \\\"string\\\", \\\"description\\\": \\\"What this field contains\\\" } } }\"\n );\n }\n }\n\n // Warn about missing/invalid outputSchema (non-blocking)\n if (isSchemaEmpty(data.outputSchema)) {\n output.warn('No outputSchema provided. This may limit optimization effectiveness.');\n } else if (!isValidJsonSchema(data.outputSchema)) {\n output.warn(formatSchemaWarning('outputSchema'));\n }\n\n const client = await getSDKClient();\n const prompt = await client.createPrompt(data);\n\n if (isJson) {\n const directive = promptCreatedDirective(prompt.id, prompt.name);\n output.output({ ...prompt, _links: promptLinks(prompt.id), _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Created prompt: ${prompt.name} (id: ${String(prompt.id)})`);\n output.info(`Workspace: ${client.getCurrentWorkspaceId() ?? 'auto-inferred from API key'}`);\n const hints = formatCreationHints({\n resourceType: 'Prompt',\n id: prompt.id,\n name: prompt.name,\n dashboardUrl: promptLink(prompt.id),\n apiPath: `/api/prompts/${String(prompt.id)}`,\n });\n console.log(hints);\n }\n\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Update prompt\n prompts\n .command('update')\n .description('Update a prompt')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('-n, --name <name>', 'New name')\n .option('--description <text>', 'New description (shown in dashboard)')\n .option('-c, --content <content>', 'New content (rawPrompt) [DEPRECATED: use --raw]')\n .option('-r, --raw <text>', 'Raw prompt text (single prompt)')\n .option('--system <text>', 'System prompt (use with --human)')\n .option('--human <text>', 'Human prompt (use with --system)')\n .option('--messages <json>', 'Messages array as JSON (e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\')')\n .option('--input-schema <json>', 'Input schema as JSON string')\n .option('--input-schema-file <path>', 'Input schema from JSON file')\n .option('--output-schema <json>', 'Output schema as JSON string')\n .option('--output-schema-file <path>', 'Output schema from JSON file')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts update <id> --system \"Updated system prompt\" --human \"{input}\"\n ${chalk.dim('$')} mutagent prompts update <id> --name \"new-name\" --description \"Updated description\"\n ${chalk.dim('$')} mutagent prompts update <id> --raw \"Summarize: {text}\"\n ${chalk.dim('$')} mutagent prompts update <id> --messages '[{\"role\":\"system\",\"content\":\"Updated\"},{\"role\":\"user\",\"content\":\"{input}\"}]'\n ${chalk.dim('$')} mutagent prompts update <id> --input-schema '{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Input text\"}}}'\n `)\n .action(async (id: string, options: UpdateOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: Partial<Prompt> = {};\n\n if (options.name) data.name = options.name;\n if (options.description) data.description = options.description;\n\n // Handle different prompt style formats\n // Priority: messages > system+human > raw > content (deprecated)\n if (options.messages) {\n // Messages format: JSON array of messages\n try {\n const messages = JSON.parse(options.messages) as { role: string; content: string }[];\n // Extract system and human prompts from messages array\n const systemMsg = messages.find(m => m.role === 'system');\n const humanMsg = messages.find(m => m.role === 'user' || m.role === 'human');\n if (systemMsg) data.systemPrompt = systemMsg.content;\n if (humanMsg) data.humanPrompt = humanMsg.content;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --messages flag',\n 'Run: mutagent prompts update --help\\n' +\n 'Provide a valid JSON array, e.g., \\'[{\"role\":\"system\",\"content\":\"...\"}]\\''\n );\n }\n } else if (options.system ?? options.human) {\n // Human/System format\n if (options.system) data.systemPrompt = options.system;\n if (options.human) data.humanPrompt = options.human;\n } else if (options.raw) {\n // Raw prompt format\n data.rawPrompt = options.raw;\n } else if (options.content) {\n // Deprecated --content flag (backwards compatibility)\n data.rawPrompt = options.content;\n }\n\n // Parse --input-schema / --input-schema-file\n const parsedInputSchema = parseSchemaOption(\n options.inputSchema, options.inputSchemaFile,\n 'input-schema', 'mutagent prompts update --help'\n );\n if (parsedInputSchema) data.inputSchema = parsedInputSchema;\n\n // Parse --output-schema / --output-schema-file\n const parsedOutputSchema = parseSchemaOption(\n options.outputSchema, options.outputSchemaFile,\n 'output-schema', 'mutagent prompts update --help'\n );\n if (parsedOutputSchema) data.outputSchema = parsedOutputSchema;\n\n // Validate inputSchema descriptions if provided\n if (data.inputSchema && isValidJsonSchema(data.inputSchema)) {\n const missingDescs = validateSchemaDescriptions(data.inputSchema);\n if (missingDescs.length > 0) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `inputSchema properties missing descriptions: ${missingDescs.join(', ')}`,\n 'Run: mutagent prompts update --help\\n' +\n \"Add a 'description' field to each property in your inputSchema. Example: { \\\"properties\\\": { \\\"field\\\": { \\\"type\\\": \\\"string\\\", \\\"description\\\": \\\"What this field contains\\\" } } }\"\n );\n }\n }\n\n if (Object.keys(data).length === 0) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'No update data provided',\n 'Run: mutagent prompts update --help\\n' +\n 'Use --name, --raw, --system/--human, --messages, --input-schema, or --output-schema'\n );\n }\n\n const client = await getSDKClient();\n const prompt = await client.updatePrompt(id, data);\n\n if (isJson) {\n const directive = promptUpdatedDirective(prompt.id, prompt.name);\n output.output({ ...prompt, _links: promptLinks(prompt.id), _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Updated prompt: ${prompt.name} (id: ${String(prompt.id)})`);\n const hints = formatCreationHints({\n resourceType: 'Prompt',\n id: prompt.id,\n name: prompt.name,\n dashboardUrl: promptLink(prompt.id),\n apiPath: `/api/prompts/${String(prompt.id)}`,\n });\n console.log(hints);\n }\n\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete prompt\n prompts\n .command('delete')\n .description('Delete a prompt')\n .argument('<id>', 'Prompt ID (from: mutagent prompts list)')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts delete <id>\n ${chalk.dim('$')} mutagent prompts delete <id> --force\n ${chalk.dim('$')} mutagent prompts 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 `)\n .action(async (id: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // In --json mode, auto-skip confirmation. Otherwise require --force.\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Deleting prompt ${id} requires confirmation`,\n 'Run: mutagent prompts delete --help\\n' +\n `[Agent: Ask the user to confirm via MultiChoice, then pass --force]\\n` +\n `Use --force to confirm: mutagent prompts delete ${id} --force`\n );\n }\n\n const client = await getSDKClient();\n try {\n await client.deletePrompt(id, { force: true });\n } catch (deleteError) {\n // 404 = already deleted = idempotent success\n if (deleteError instanceof ApiError && deleteError.statusCode === 404) {\n if (isJson) {\n const directive = promptDeletedDirective(id);\n output.output({ success: true, deletedId: id, _links: { prompts: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Prompt ${id} already deleted (idempotent)`);\n }\n return;\n }\n throw deleteError;\n }\n\n if (isJson) {\n const directive = promptDeletedDirective(id);\n output.output({ success: true, deletedId: id, _links: { prompts: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Deleted prompt: ${id}`);\n output.info(`View prompts: ${promptsDashboardLink()}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
22
22
  "/**\n * @fileoverview JSON Schema helper utilities for MutagenT CLI\n * @module @mutagent/cli/lib/schema-helpers\n *\n * Provides validation, building, and formatting utilities for JSON Schema\n * objects used with prompt inputSchema/outputSchema fields.\n */\n\n/**\n * Variable definition for building JSON Schema interactively.\n */\nexport interface SchemaVariable {\n name: string;\n type: 'string' | 'number' | 'boolean' | 'array' | 'object';\n description: string;\n}\n\n/**\n * Supported JSON Schema primitive types for interactive variable definition.\n */\nexport const SUPPORTED_SCHEMA_TYPES = ['string', 'number', 'boolean', 'array', 'object'] as const;\nexport type SupportedSchemaType = typeof SUPPORTED_SCHEMA_TYPES[number];\n\n/**\n * Check whether a value is a valid JSON Schema (basic structural validation).\n *\n * A valid JSON Schema for our purposes must:\n * - Be a non-null object\n * - Have a \"type\" property (usually \"object\")\n * - If type is \"object\", should have a \"properties\" property\n *\n * This is NOT a full JSON Schema meta-validation -- it checks the structural\n * conventions expected by MutagenT's prompt system.\n */\nexport function isValidJsonSchema(schema: unknown): boolean {\n if (schema === null || schema === undefined) return false;\n if (typeof schema !== 'object') return false;\n if (Array.isArray(schema)) return false;\n\n const obj = schema as Record<string, unknown>;\n\n // Must have \"type\" field\n if (!('type' in obj) || typeof obj.type !== 'string') return false;\n\n // If type is \"object\", should have \"properties\"\n if (obj.type === 'object') {\n if (!('properties' in obj) || typeof obj.properties !== 'object' || obj.properties === null) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Build a JSON Schema from an array of variable definitions.\n *\n * @example\n * ```typescript\n * const schema = buildSchemaFromVariables([\n * { name: 'customer_name', type: 'string', description: 'The customer full name' },\n * { name: 'age', type: 'number', description: 'Customer age' },\n * ]);\n * // Returns:\n * // {\n * // type: \"object\",\n * // properties: {\n * // customer_name: { type: \"string\", description: \"The customer full name\" },\n * // age: { type: \"number\", description: \"Customer age\" }\n * // }\n * // }\n * ```\n */\nexport function buildSchemaFromVariables(variables: SchemaVariable[]): Record<string, unknown> {\n const properties: Record<string, Record<string, unknown>> = {};\n\n for (const variable of variables) {\n properties[variable.name] = {\n type: variable.type,\n description: variable.description,\n };\n }\n\n return {\n type: 'object',\n properties,\n };\n}\n\n/**\n * Return a formatted JSON Schema example string for display in CLI help output.\n */\nexport function formatSchemaExample(): string {\n return JSON.stringify(\n {\n type: 'object',\n properties: {\n variable_name: { type: 'string', description: 'Description here' },\n },\n },\n null,\n 2,\n );\n}\n\n/**\n * Validate that all properties in a JSON schema have `description` fields.\n * Returns a list of property names missing descriptions.\n */\nexport function validateSchemaDescriptions(schema: unknown): string[] {\n if (schema === null || schema === undefined) return [];\n if (typeof schema !== 'object' || Array.isArray(schema)) return [];\n\n const obj = schema as Record<string, unknown>;\n const properties = obj.properties;\n if (!properties || typeof properties !== 'object' || Array.isArray(properties)) return [];\n\n const missing: string[] = [];\n const props = properties as Record<string, unknown>;\n for (const [key, value] of Object.entries(props)) {\n if (value === null || value === undefined || typeof value !== 'object') {\n missing.push(key);\n continue;\n }\n const prop = value as Record<string, unknown>;\n if (typeof prop.description !== 'string' || prop.description.trim() === '') {\n missing.push(key);\n }\n }\n\n return missing;\n}\n\n/**\n * Return a formatted warning message with schema example for invalid schemas.\n * Used by the create/update commands when inputSchema or outputSchema\n * does not look like valid JSON Schema.\n */\nexport function formatSchemaWarning(fieldName: string): string {\n return [\n `${fieldName} doesn't appear to be a valid JSON Schema.`,\n '',\n ' Expected format:',\n ' {',\n ' \"type\": \"object\",',\n ' \"properties\": {',\n ' \"variable_name\": { \"type\": \"string\", \"description\": \"Description here\" }',\n ' }',\n ' }',\n '',\n ' You can also provide a schema via --data: mutagent prompts create -d \\'{\"inputSchema\":{...},\"outputSchema\":{...}}\\'',\n ].join('\\n');\n}\n",
23
- "import { 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 promptDatasetsLink, datasetLinks, datasetLink,\n formatCreationHints,\n datasetAddedDirective, datasetDeletedDirective,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\nimport type { ResourceState } from '../../lib/ui-links.js';\nimport { updateMutationContext, type DeleteOptions } from './index.js';\n\ninterface DatasetAddOptions {\n data?: string;\n name?: string;\n}\n\n/**\n * Parse dataset file content based on format detection.\n * Supports JSON arrays, JSONL (one JSON object per line), and CSV passthrough.\n *\n * @param rawContent - The raw file content as a string\n * @param filePath - The file path (used for format detection and error messages)\n * @returns The parsed content as a JSON string suitable for the API\n */\nexport function parseDatasetFile(rawContent: string, filePath: string): string {\n const trimmed = rawContent.trim();\n\n // CSV files are passed through as-is (the API handles CSV parsing)\n if (filePath.endsWith('.csv')) {\n return rawContent;\n }\n\n // If content starts with '[', treat as JSON array\n if (trimmed.startsWith('[')) {\n try {\n const parsed: unknown = JSON.parse(trimmed);\n if (!Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Expected a JSON array in dataset file',\n 'Run: mutagent prompts dataset add --help\\nDataset JSON files should contain an array of objects: [{...}, {...}]'\n );\n }\n return trimmed;\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n throw new MutagentError(\n 'INVALID_JSON',\n `Failed to parse JSON array from ${filePath}`,\n 'Run: mutagent prompts dataset add --help\\nEnsure the file contains valid JSON. For line-delimited JSON, use .jsonl extension or put one object per line.'\n );\n }\n }\n\n // If content starts with '{' or doesn't start with '[', treat as JSONL\n // (one JSON object per line)\n const lines = trimmed.split('\\n').filter(line => line.trim().length > 0);\n const items: unknown[] = [];\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!line) continue;\n const trimmedLine = line.trim();\n try {\n items.push(JSON.parse(trimmedLine));\n } catch {\n throw new MutagentError(\n 'INVALID_JSONL',\n `Invalid JSON on line ${String(i + 1)} of ${filePath}`,\n `Run: mutagent prompts dataset add --help\\nEach line must be valid JSON. Problem line: \"${trimmedLine.substring(0, 80)}${trimmedLine.length > 80 ? '...' : ''}\"`\n );\n }\n }\n\n return JSON.stringify(items);\n}\n\nexport function registerDatasetCommands(prompts: Command): void {\n const dataset = new Command('dataset')\n .description('Manage datasets for prompts')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts dataset get <dataset-id>\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> -d '[{\"input\":{...},\"expectedOutput\":{...}}]'\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id>\n ${chalk.dim('$')} mutagent prompts dataset items get <item-id>\n `)\n .action(() => {\n dataset.help();\n });\n prompts.addCommand(dataset);\n\n // List datasets\n dataset\n .command('list')\n .description('List datasets for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id> --json\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const datasets = await client.listDatasets(promptId);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `prompts dataset get` for full details.\n const withLinks = datasets.map((d) => ({\n id: d.id,\n name: d.name,\n itemCount: d.itemCount,\n updatedAt: d.updatedAt,\n _links: datasetLinks(promptId, d.id),\n }));\n output.output(withLinks);\n } else {\n const formatted = datasets.map((d) => ({\n id: d.id,\n name: d.name,\n itemCount: d.itemCount,\n updated: d.updatedAt ? new Date(String(d.updatedAt)).toLocaleDateString() : 'N/A',\n url: datasetLink(promptId, d.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get dataset (single dataset details)\n dataset\n .command('get')\n .description('Get full details of a single dataset')\n .argument('<dataset-id>', 'Dataset ID (from: mutagent prompts dataset list <prompt-id>)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset get <dataset-id>\n ${chalk.dim('$')} mutagent prompts dataset get <dataset-id> --json\n\n${chalk.dim('Tip: Use this after `dataset list` to drill into a single dataset.')}\n `)\n .action(async (datasetId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (!/^\\d+$/.test(datasetId)) {\n throw new MutagentError(\n 'INVALID_ARGUMENT',\n `Invalid dataset ID: \"${datasetId}\" (must be numeric)`,\n 'Run: mutagent prompts dataset list <prompt-id>\\nDataset IDs are numeric. Example: mutagent prompts dataset get 42'\n );\n }\n\n const client = await getSDKClient();\n const ds = await client.getDataset(datasetId);\n const promptGroupId = ds.promptGroupId;\n\n if (isJson) {\n output.output({\n ...ds,\n _links: datasetLinks(promptGroupId, ds.id),\n });\n } else {\n output.success(`Dataset: ${ds.name} (id: ${String(ds.id)})`);\n if (ds.description) output.info(`Description: ${ds.description}`);\n if (ds.itemCount !== undefined) output.info(`Items: ${String(ds.itemCount)}`);\n if (ds.updatedAt) output.info(`Updated: ${new Date(String(ds.updatedAt)).toLocaleString()}`);\n if (ds.createdAt) output.info(`Created: ${new Date(String(ds.createdAt)).toLocaleString()}`);\n if (ds.createdBy) output.info(`Created by: ${ds.createdBy}`);\n if (ds.labels && ds.labels.length > 0) output.info(`Labels: ${ds.labels.join(', ')}`);\n const hints = formatCreationHints({\n resourceType: 'Dataset',\n id: ds.id,\n name: ds.name,\n dashboardUrl: datasetLink(promptGroupId, ds.id),\n apiPath: `/api/prompts/datasets/${String(ds.id)}`,\n });\n console.log(hints);\n }\n } catch (error) {\n if (error instanceof ApiError && error.statusCode === 404) {\n handleError(\n new MutagentError(\n 'NOT_FOUND',\n `Dataset ${datasetId} not found`,\n `Run: mutagent prompts dataset list <prompt-id>\\nVerify the dataset ID exists, or list datasets for a prompt to find valid IDs.`\n ),\n isJson,\n );\n } else {\n handleError(error, isJson);\n }\n }\n });\n\n // Add dataset\n dataset\n .command('add')\n .description('Add dataset to a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .option('-d, --data <json>', 'Inline JSON array of dataset items')\n .option('-n, --name <name>', 'Dataset name')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> -d '[{\"input\":{\"text\":\"hello\"},\"expectedOutput\":{\"result\":\"world\"}}]'\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> -d '[{\"input\":{\"text\":\"hello\"},\"expectedOutput\":{\"result\":\"world\"}}]' --name \"My Dataset\"\n\nInline data format (-d):\n JSON array of objects, e.g.:\n ${chalk.dim('[{\"input\": {\"text\": \"hello\"}, \"expectedOutput\": {\"result\": \"world\"}}]')}\n\nExpected item format:\n ${chalk.dim('{\"input\": {\"<field>\": \"<value>\"}, \"expectedOutput\": {\"<field>\": \"<value>\"}}')}\n\n${chalk.yellow('AI Agent (MANDATORY):')}\n ALWAYS use --json: mutagent prompts dataset add <id> -d '[...]' --json\n Items MUST have BOTH input AND expectedOutput.\n Keys must match prompt's inputSchema.properties (input) and outputSchema.properties (expectedOutput).\n expectedOutput is REQUIRED for evaluation scoring.\n Check schemas: mutagent prompts get <prompt-id> --json\n\n${chalk.red('Required: --data must be provided.')}\n `)\n .action(async (promptId: string, options: DatasetAddOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (!options.data) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n '-d/--data is required',\n 'Run: mutagent prompts dataset add --help\\n' +\n 'Use -d \\'[{...}]\\' to provide inline JSON data'\n );\n }\n\n let content: string;\n\n // Inline JSON data - validate it parses as an array\n try {\n const parsed: unknown = JSON.parse(options.data);\n if (!Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Inline data must be a JSON array',\n 'Run: mutagent prompts dataset add --help\\n' +\n 'Provide a JSON array, e.g., \\'[{\"input\": {...}, \"expectedOutput\": {...}}]\\''\n );\n }\n content = options.data;\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in -d/--data flag',\n 'Run: mutagent prompts dataset add --help\\n' +\n 'Provide a valid JSON array, e.g., \\'[{\"input\": {...}, \"expectedOutput\": {...}}]\\''\n );\n }\n\n // Validate items in the array\n const parsedItems = JSON.parse(content) as unknown[];\n\n // Empty array check\n if (parsedItems.length === 0) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n 'Dataset cannot be empty',\n 'Run: mutagent prompts dataset add --help\\nProvide at least one item in the array.'\n );\n }\n\n // Per-item validation\n const warnings: string[] = [];\n for (let i = 0; i < parsedItems.length; i++) {\n const item = parsedItems[i] as Record<string, unknown>;\n // Check input exists\n if (!('input' in item)) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Dataset item at index ${i} is missing required field \"input\"`,\n 'Run: mutagent prompts dataset add --help\\nEach item must have: {\"input\": {...}, \"expectedOutput\": {...}}'\n );\n }\n // Check input is an object\n if (typeof item.input !== 'object' || item.input === null || Array.isArray(item.input)) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Dataset item at index ${i}: \"input\" must be an object, got ${Array.isArray(item.input) ? 'array' : typeof item.input}`,\n 'Run: mutagent prompts dataset add --help\\n\"input\" must be a JSON object: {\"input\": {\"field\": \"value\"}}'\n );\n }\n // Warning for missing expectedOutput\n if (!('expectedOutput' in item)) {\n warnings.push(`Item at index ${i} is missing \"expectedOutput\" (recommended for evaluation scoring)`);\n }\n }\n\n // Dataset naming: use --name flag or error\n const datasetName = options.name;\n if (!datasetName) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Dataset name is required',\n 'Run: mutagent prompts dataset add --help\\n' +\n `[Agent: Ask the user for a dataset name via AskUserQuestion, then pass --name]\\n` +\n `Use --name <name>, e.g., mutagent prompts dataset add ${promptId} --name \"my-dataset\" -d '[...]'`\n );\n }\n\n const client = await getSDKClient();\n const datasetResult = await client.addDataset(promptId, content, datasetName);\n\n if (isJson) {\n let rsState: ResourceState | undefined;\n try {\n const evals = await client.listEvaluations(promptId);\n rsState = { evaluations: evals.length };\n } catch { /* non-critical */ }\n const directive = datasetAddedDirective(promptId, datasetResult.id, datasetResult.name, datasetResult.itemCount, rsState);\n output.output({\n ...datasetResult,\n _links: datasetLinks(promptId, datasetResult.id),\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n // Show pre-upload warnings in non-json mode\n for (const w of warnings) {\n output.warn(w);\n }\n output.success(`Added dataset \"${datasetResult.name}\" to prompt: ${promptId} (id: ${String(datasetResult.id)})`);\n if (datasetResult.itemCount !== undefined && datasetResult.itemCount > 0) {\n output.info(`Items uploaded: ${String(datasetResult.itemCount)}`);\n }\n if (datasetResult.missingExpectedOutputCount !== undefined && datasetResult.missingExpectedOutputCount > 0) {\n output.warn(\n `${String(datasetResult.missingExpectedOutputCount)} of ${String(datasetResult.itemCount ?? 0)} items have no expectedOutput. Optimization may fail without expected outputs.`\n );\n }\n const hints = formatCreationHints({\n resourceType: 'Dataset',\n id: datasetResult.id,\n name: datasetResult.name,\n dashboardUrl: datasetLink(promptId, datasetResult.id),\n apiPath: `/api/prompts/${promptId}/datasets/${String(datasetResult.id)}`,\n });\n console.log(hints);\n }\n\n // Auto-update mutation context\n updateMutationContext(ctx => {\n ctx.addDiscoveredDataset('inline-data', datasetResult.name, datasetResult.itemCount ?? 0);\n ctx.markDatasetUploaded('inline-data', String(datasetResult.id), promptId);\n });\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete dataset\n dataset\n .command('delete')\n .description('Delete a dataset from a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .argument('<dataset-id>', 'Dataset ID (from: mutagent prompts dataset list <prompt-id>)')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id>\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id> --force\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id> --force --json\n `)\n .action(async (promptId: string, datasetId: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // In --json mode, auto-skip confirmation. Otherwise require --force.\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Deleting dataset ${datasetId} from prompt ${promptId} requires confirmation`,\n 'Run: mutagent prompts dataset delete --help\\n' +\n `[Agent: Ask the user to confirm via MultiChoice, then pass --force]\\n` +\n `Use --force to confirm: mutagent prompts dataset delete ${promptId} ${datasetId} --force`\n );\n }\n\n const client = await getSDKClient();\n try {\n await client.deleteDataset(promptId, datasetId, { force: true });\n } catch (deleteError) {\n // 404 = already deleted = idempotent success\n if (deleteError instanceof ApiError && deleteError.statusCode === 404) {\n if (isJson) {\n const directive = datasetDeletedDirective(promptId, datasetId);\n output.output({ success: true, deletedId: datasetId, _links: { datasets: promptDatasetsLink(promptId) }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Dataset ${datasetId} already deleted (idempotent)`);\n }\n return;\n }\n throw deleteError;\n }\n\n if (isJson) {\n const directive = datasetDeletedDirective(promptId, datasetId);\n output.output({ success: true, deletedId: datasetId, _links: { datasets: promptDatasetsLink(promptId) }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Deleted dataset ${datasetId} from prompt ${promptId}`);\n output.info(`View datasets: ${promptDatasetsLink(promptId)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // =========================================================================\n // Dataset Items subgroup\n // =========================================================================\n const items = new Command('items')\n .description('Manage individual dataset items')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset items get <item-id>\n ${chalk.dim('$')} mutagent prompts dataset items get <item-id> --json\n `)\n .action(() => {\n items.help();\n });\n dataset.addCommand(items);\n\n // Get a single dataset item\n items\n .command('get')\n .description('Get full details of a single dataset item')\n .argument('<item-id>', 'Dataset item ID')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset items get <item-id>\n ${chalk.dim('$')} mutagent prompts dataset items get <item-id> --json\n\n${chalk.dim('Tip: Dataset item IDs are shown in dataset exports and optimization results.')}\n `)\n .action(async (itemId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (!/^\\d+$/.test(itemId)) {\n throw new MutagentError(\n 'INVALID_ARGUMENT',\n `Invalid dataset item ID: \"${itemId}\" (must be numeric)`,\n 'Run: mutagent prompts dataset items get --help\\nDataset item IDs are numeric. Example: mutagent prompts dataset items get 17'\n );\n }\n\n const client = await getSDKClient();\n const item = await client.getDatasetItem(itemId);\n const itemWithDs = item as typeof item & { datasetId?: number | string };\n const dsId = itemWithDs.datasetId;\n\n if (isJson) {\n output.output({\n ...item,\n _links: {\n api: `/api/prompts/dataset-items/${String(item.id)}`,\n ...(dsId !== undefined ? { dataset: `/api/prompts/datasets/${String(dsId)}` } : {}),\n },\n });\n } else {\n output.success(`Dataset Item: ${String(item.id)}`);\n if (dsId !== undefined) output.info(`Dataset ID: ${String(dsId)}`);\n output.info(`Input: ${JSON.stringify(item.input, null, 2)}`);\n if (item.expectedOutput !== undefined) {\n output.info(`Expected output: ${typeof item.expectedOutput === 'string' ? item.expectedOutput : JSON.stringify(item.expectedOutput, null, 2)}`);\n }\n if (item.metadata && Object.keys(item.metadata).length > 0) {\n output.info(`Metadata: ${JSON.stringify(item.metadata)}`);\n }\n if (item.createdAt) output.info(`Created: ${new Date(String(item.createdAt)).toLocaleString()}`);\n const itemWithUpdated = item as typeof item & { updatedAt?: string };\n if (itemWithUpdated.updatedAt) output.info(`Updated: ${new Date(String(itemWithUpdated.updatedAt)).toLocaleString()}`);\n }\n } catch (error) {\n if (error instanceof ApiError && error.statusCode === 404) {\n handleError(\n new MutagentError(\n 'NOT_FOUND',\n `Dataset item ${itemId} not found`,\n `Run: mutagent prompts dataset items get --help\\nVerify the item ID exists. Use the dashboard or dataset exports to find valid item IDs.`\n ),\n isJson,\n );\n } else {\n handleError(error, isJson);\n }\n }\n });\n}\n",
24
- "import { 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 promptsDashboardLink, evaluationLinks, evaluationLink,\n formatCreationHints,\n evaluationCreatedDirective, evaluationDeletedDirective,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\nimport { resolveNumericPromptId } from '../../lib/resolve-prompt-id.js';\nimport type { ResourceState } from '../../lib/ui-links.js';\nimport { updateMutationContext, type DeleteOptions } from './index.js';\nimport { buildGuidedWorkflow, type GuidedWorkflowResult } from './guided-workflow.js';\nimport {\n cliCriteriaArrayToCanonical,\n canonicalCriteriaArrayToCli,\n type CliCriterion,\n} from '../../lib/adapters/eval-criteria.js';\nimport { registerEvaluationRunCommand } from './evaluations-run.js';\n\ninterface EvaluationCreateOptions {\n data?: string;\n name?: string;\n description?: string;\n guided?: boolean;\n}\n\nexport function registerEvaluationCommands(prompts: Command): void {\n const evaluation = new Command('evaluation')\n .description('Manage evaluations for prompts')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"My Eval\"\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id>\n `)\n .action(() => {\n evaluation.help();\n });\n prompts.addCommand(evaluation);\n\n // List evaluations\n evaluation\n .command('list')\n .description('List evaluations for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id> --json\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const evals = await client.listEvaluations(promptId);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `prompts evaluation get` for full details.\n const withLinks = evals.map((e) => ({\n id: e.id,\n name: e.name,\n description: e.description,\n updatedAt: e.updatedAt,\n _links: evaluationLinks(promptId, e.id),\n }));\n output.output(withLinks);\n } else {\n const formatted = evals.map((e) => ({\n id: e.id,\n name: e.name,\n description: e.description,\n updated: e.updatedAt ? new Date(String(e.updatedAt)).toLocaleDateString() : 'N/A',\n url: evaluationLink(promptId, e.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get evaluation details\n evaluation\n .command('get')\n .description('Get evaluation details including criteria')\n .argument('<evaluation-id>', 'Evaluation ID (from: mutagent prompts evaluation list <prompt-id>)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id> --json\n `)\n .action(async (evaluationId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const evalObj = await client.getEvaluation(evaluationId);\n\n // Resolve numeric promptId from the evaluation's promptGroupId (UUID).\n // The UI route /prompts/:id expects the numeric id, not the UUID.\n // Orphaned evaluations (no prompts in group) fall back to the prompts dashboard.\n const numericPromptId = await resolveNumericPromptId(client, evalObj.promptGroupId);\n if (numericPromptId === null) {\n // Debug-only warning; never throw.\n if (process.env.DEBUG) {\n console.error(\n `[debug] Evaluation ${String(evalObj.id)} references promptGroupId ${evalObj.promptGroupId} but no prompts were found in that group. Falling back to prompts dashboard.`,\n );\n }\n }\n\n if (isJson) {\n // B3: compute runnable flag (has at least one criterion)\n const evalConfigForRunnable = evalObj.evalConfig as { criteria?: unknown[] } | null | undefined;\n const criteriaForRunnable = evalConfigForRunnable?.criteria;\n const runnable = Array.isArray(criteriaForRunnable) && criteriaForRunnable.length > 0;\n\n output.output({\n ...evalObj,\n runnable,\n _links: numericPromptId !== null\n ? evaluationLinks(numericPromptId, evalObj.id)\n : { dashboard: promptsDashboardLink(), api: `/api/prompts/${evalObj.promptGroupId}/evaluations/${String(evalObj.id)}` },\n });\n } else {\n output.success(`Evaluation: ${evalObj.name} (ID: ${String(evalObj.id)})`);\n if (evalObj.description) {\n console.log(` Description: ${evalObj.description}`);\n }\n console.log(` Created: ${evalObj.createdAt ? new Date(String(evalObj.createdAt)).toLocaleDateString() : 'N/A'}`);\n console.log('');\n\n // Display criteria — BE returns canonical shape; adapt to CLI shape for display\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const config = evalObj.evalConfig as { criteria?: any[] } | null;\n const criteria: CliCriterion[] = canonicalCriteriaArrayToCli(config?.criteria);\n if (criteria.length > 0) {\n console.log(' Criteria:');\n for (const c of criteria) {\n console.log(` ${chalk.cyan(c.name)}`);\n if (c.description) {\n console.log(` Description: ${c.description}`);\n }\n if (c.evaluationParameter) {\n console.log(` Parameter: ${c.evaluationParameter}`);\n }\n console.log('');\n }\n } else {\n console.log(' No criteria defined.');\n }\n\n // Display LLM config if present\n const llmConfig = evalObj.llmConfig as Record<string, unknown> | null;\n if (llmConfig && Object.keys(llmConfig).length > 0) {\n console.log(' LLM Config:');\n for (const [key, value] of Object.entries(llmConfig)) {\n console.log(` ${key}: ${String(value)}`);\n }\n console.log('');\n }\n\n const dashboardUrl = numericPromptId !== null\n ? evaluationLink(numericPromptId, evalObj.id)\n : promptsDashboardLink();\n output.info(`View in dashboard: ${dashboardUrl}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create evaluation\n evaluation\n .command('create')\n .description('Create an evaluation configuration for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .option('-d, --data <json>', 'Evaluation as JSON string (for pre-validated criteria only)')\n .option('-n, --name <name>', 'Evaluation name (required unless --guided)')\n .option('--description <text>', 'Evaluation description')\n .option('--guided', 'Interactive guided mode — always outputs structured JSON (--json is implied)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --guided ${chalk.dim('# recommended: shows workflow guide + schema fields')}\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --guided --json ${chalk.dim('# structured workflow for AI agents')}\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"Accuracy\" -d '{\"evalConfig\":{\"criteria\":[...]}}' ${chalk.dim('# power user')}\n\nGuided Workflow (recommended):\n --guided outputs a workflow guide that:\n 1. Fetches your prompt's inputSchema + outputSchema fields\n 2. Shows available fields for evaluation criteria\n 3. Provides a criteria template and example command\n 4. For AI agents: includes a _directive with workflow instructions\n\n Works in all modes (TTY, non-TTY, --json).\n\nAI Agent (MANDATORY):\n 1. Run: mutagent prompts evaluation create --help\n 2. Run: mutagent prompts evaluation create <id> --guided --json\n 3. Parse askUserQuestions from the JSON output\n 4. Use AskUserQuestion to collect DETAILED rubrics from the user\n 5. NEVER auto-generate criteria. NEVER use vague rubrics.\n 6. Construct --data JSON from user answers, then:\n mutagent prompts evaluation create <id> --name \"<name>\" -d '<json>' --json\n\nExpected Criteria Shape (--data):\n ${chalk.dim('{\"evalConfig\":{\"criteria\":[{\"name\":\"<name>\",\"description\":\"<scoring rubric>\",\"evaluationParameter\":\"<schema field>\"}]}}')}\n evaluationParameter must target an outputSchema OR inputSchema field.\n\n${chalk.red('Required: --name (unless --guided). Criteria must include evaluationParameter.')}\n${chalk.dim('CLI flags (--name, --description) override --data fields.')}\n${chalk.dim('Get prompt IDs: mutagent prompts list')}\n `)\n .action(async (promptId: string, options: EvaluationCreateOptions) => {\n // --guided always implies --json — agents must never use --guided without --json\n let isJson = getJsonFlag(prompts);\n if (options.guided) {\n isJson = true;\n }\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Render the guided workflow (shared between --guided and auto-trigger)\n const renderGuidedWorkflow = (wf: GuidedWorkflowResult): void => {\n const { inputFields, outputFields, allFields } = wf._meta;\n if (isJson) {\n const { _meta: _discarded, ...cleanWorkflow } = wf;\n void _discarded;\n output.output(cleanWorkflow);\n echoDirectiveToStderr(wf._directive);\n } else {\n output.success(`Guided Evaluation Workflow for prompt: ${wf.prompt.name} (ID: ${promptId})`);\n console.log('');\n if (outputFields.length > 0) {\n console.log(` Output Schema Fields: ${outputFields.join(', ')}`);\n }\n if (inputFields.length > 0) {\n console.log(` Input Schema Fields: ${inputFields.join(', ')}`);\n }\n console.log('');\n console.log(' For each field, define what correct output looks like:');\n for (const { field, source } of allFields) {\n console.log(` ${chalk.cyan(field)} (${source})`);\n console.log(` → What makes a correct vs incorrect \"${field}\"?`);\n }\n console.log('');\n console.log(' Then create the evaluation:');\n console.log(` mutagent prompts evaluation create ${promptId} --name \"My Eval\" \\\\`);\n console.log(` -d '{\"evalConfig\":{\"criteria\":[{\"name\":\"accuracy\",\"description\":\"Correct if output matches expected structure\",\"evaluationParameter\":\"${outputFields[0] ?? '<field>'}\"}]}}'`);\n console.log('');\n }\n };\n\n // Guided mode: dump structured workflow/template (non-interactive)\n if (options.guided) {\n const workflow = await buildGuidedWorkflow(promptId);\n renderGuidedWorkflow(workflow);\n return;\n }\n\n // No criteria source — auto-return guided workflow in --json/TTY mode\n if (!options.data) {\n if (isJson || process.stdout.isTTY) {\n const workflow = await buildGuidedWorkflow(promptId);\n renderGuidedWorkflow(workflow);\n return;\n }\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'No criteria source provided',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n\n // Non-guided: --name is required\n if (!options.name) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Evaluation name is required',\n 'Run: mutagent prompts evaluation create --help\\n' +\n '[Agent: Ask the user for an evaluation name via AskUserQuestion, then pass --name]\\n' +\n 'Use --name <name>, e.g., mutagent prompts evaluation create ' + promptId + ' --name \"My Eval\" --data \\'...\\''\n );\n }\n\n const evalData: {\n name: string;\n description?: string;\n evalConfig?: Record<string, unknown>;\n llmConfig?: Record<string, unknown>;\n tags?: string[];\n metadata?: Record<string, unknown>;\n } = {\n name: options.name,\n description: options.description,\n };\n\n // Parse inline JSON\n try {\n const parsed = JSON.parse(options.data) as Record<string, unknown>;\n if (parsed.evalConfig) evalData.evalConfig = parsed.evalConfig as Record<string, unknown>;\n if (parsed.llmConfig) evalData.llmConfig = parsed.llmConfig as Record<string, unknown>;\n if (parsed.tags) evalData.tags = parsed.tags as string[];\n if (parsed.metadata) evalData.metadata = parsed.metadata as Record<string, unknown>;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --data flag',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Provide a valid JSON object, e.g., \\'{\"evalConfig\":{\"criteria\":[...]},\"llmConfig\":{\"model\":\"gpt-4\"}}\\''\n );\n }\n\n // CLI flags override --data fields\n if (options.name) evalData.name = options.name;\n if (options.description) evalData.description = options.description;\n\n // Validate evaluation criteria exist and are well-formed (B2: --data defense)\n // Empty or missing criteria is EVAL_INCOMPLETE — reject client-side before any API call.\n const criteria = evalData.evalConfig?.criteria;\n if (!criteria || !Array.isArray(criteria) || criteria.length === 0) {\n // Always throw — suggest --guided for workflow\n let fieldsHint = '';\n try {\n const client = await getSDKClient();\n const prompt = await client.getPrompt(promptId);\n if (prompt.outputSchema && typeof prompt.outputSchema === 'object') {\n const props = (prompt.outputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n const fields = Object.keys(props as Record<string, unknown>);\n if (fields.length > 0) {\n fieldsHint = `\\nDetected output fields from prompt schema: ${fields.join(', ')}\\n`;\n }\n }\n }\n } catch {\n // Best-effort — don't block on fetch failure\n }\n throw new MutagentError(\n 'EVAL_INCOMPLETE',\n 'Evaluation criteria are required and cannot be empty. Provide at least one criterion via --data.',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json\\n' +\n fieldsHint +\n '\\nExample JSON (--data flag):\\n' +\n ' --data \\'{\"evalConfig\":{\"criteria\":[{\"name\":\"Accuracy\",\"description\":\"...\",\"evaluationParameter\":\"classification\"}]}}\\'\\n'\n );\n }\n for (const c of criteria as Record<string, unknown>[]) {\n // Accept both new format (description/evaluationParameter) and legacy (scoringRubric/targetField)\n // Normalize legacy fields to new format for storage FIRST\n if (c.scoringRubric && !c.description) {\n c.description = c.scoringRubric;\n delete c.scoringRubric;\n }\n if (c.targetField && !c.evaluationParameter) {\n const tf = c.targetField as string;\n c.evaluationParameter = tf.startsWith('output.') ? tf.slice('output.'.length)\n : tf.startsWith('input.') ? tf.slice('input.'.length) : tf;\n delete c.targetField;\n }\n\n const hasDescription = c.description;\n const hasEvalParam = c.evaluationParameter;\n if (!c.name || !hasDescription || !hasEvalParam) {\n const cName = typeof c.name === 'string' ? c.name : 'unnamed';\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Criterion \"${cName}\" is missing required fields. Need: name, description, evaluationParameter.`,\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n }\n\n // Detect duplicate evaluationParameter values\n const seenParams = new Set<string>();\n const duplicateParams: string[] = [];\n for (const c of criteria as { evaluationParameter?: string }[]) {\n const param = c.evaluationParameter;\n if (param) {\n if (seenParams.has(param)) {\n duplicateParams.push(param);\n }\n seenParams.add(param);\n }\n }\n if (duplicateParams.length > 0) {\n // Best-effort: fetch prompt outputSchema to show available fields\n let availableFields: string[] = [];\n try {\n const client = await getSDKClient();\n const prompt = await client.getPrompt(promptId);\n if (prompt.outputSchema && typeof prompt.outputSchema === 'object') {\n const props = (prompt.outputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n availableFields = Object.keys(props as Record<string, unknown>);\n }\n }\n } catch {\n // Best-effort — don't block on fetch failure\n }\n const uniqueDupes = [...new Set(duplicateParams)];\n const fieldsHint = availableFields.length > 0\n ? `\\nAvailable output fields: ${availableFields.join(', ')}`\n : '';\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Duplicate evaluationParameter: \"${uniqueDupes.join('\", \"')}\". Each criterion must target a unique output field.`,\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Each criterion scores a different output field. Fix by changing the evaluationParameter to a unique field.' +\n fieldsHint +\n '\\n\\nExample:\\n --data \\'{\"evalConfig\":{\"criteria\":[' +\n '{\"name\":\"Accuracy\",\"description\":\"...\",\"evaluationParameter\":\"classification\"},' +\n '{\"name\":\"Confidence\",\"description\":\"...\",\"evaluationParameter\":\"confidence\"}' +\n ']}}\\''\n );\n }\n\n // Validate criteria cover ALL schema fields (input + output)\n const schemaClient = await getSDKClient();\n const prompt = await schemaClient.getPrompt(promptId);\n const requiredFields: { field: string; source: string }[] = [];\n\n if (prompt.inputSchema && typeof prompt.inputSchema === 'object') {\n const props = (prompt.inputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n for (const field of Object.keys(props as Record<string, unknown>)) {\n requiredFields.push({ field, source: 'inputSchema' });\n }\n }\n }\n if (prompt.outputSchema && typeof prompt.outputSchema === 'object') {\n const props = (prompt.outputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n for (const field of Object.keys(props as Record<string, unknown>)) {\n requiredFields.push({ field, source: 'outputSchema' });\n }\n }\n }\n\n if (requiredFields.length > 0) {\n const coveredParams = new Set(\n (criteria as { evaluationParameter?: string }[]).map(c => c.evaluationParameter)\n );\n const missing = requiredFields.filter(f => !coveredParams.has(f.field));\n if (missing.length > 0) {\n const missingList = missing.map(m => `${m.field} (${m.source})`).join(', ');\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Evaluation criteria are INCOMPLETE. Missing fields: ${missingList}`,\n 'Each input and output schema field MUST have a corresponding criterion.\\n' +\n `Total required: ${requiredFields.length}, provided: ${coveredParams.size}\\n` +\n 'Run: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n }\n\n // Validate evaluationParameter values match actual schema fields\n if (requiredFields.length > 0) {\n const validFieldNames = new Set(requiredFields.map(f => f.field));\n const invalidParams = (criteria as { evaluationParameter?: string; name?: string }[])\n .filter(c => c.evaluationParameter && !validFieldNames.has(c.evaluationParameter));\n if (invalidParams.length > 0) {\n const invalidList = invalidParams.map(c => `\"${c.evaluationParameter}\" (criterion: ${c.name})`).join(', ');\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Invalid evaluationParameter(s): ${invalidList}. Must match a schema field.`,\n `Available fields: ${requiredFields.map(f => f.field).join(', ')}\\n` +\n 'Run: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n }\n\n // Adapt validated CLI-shaped criteria to canonical wire/storage shape\n // BEFORE sending to the BE. CLI input keeps {name, description,\n // evaluationParameter} for the user; canonical {criteria, ...} on the wire.\n if (evalData.evalConfig && Array.isArray((evalData.evalConfig as { criteria?: unknown }).criteria)) {\n const cliCriteria = (evalData.evalConfig as { criteria: CliCriterion[] }).criteria;\n (evalData.evalConfig as { criteria: unknown }).criteria =\n cliCriteriaArrayToCanonical(cliCriteria);\n }\n\n const client = await getSDKClient();\n const evalResult = await client.createEvaluation(promptId, evalData);\n\n if (isJson) {\n const criteriaLen = (evalData.evalConfig?.criteria as unknown[] | undefined)?.length ?? 0;\n let rsState: ResourceState | undefined;\n try {\n const datasets = await client.listDatasets(promptId);\n rsState = { datasets: datasets.length };\n } catch { /* non-critical */ }\n const directive = evaluationCreatedDirective(promptId, evalResult.id, evalResult.name, criteriaLen, rsState);\n output.output({\n ...evalResult,\n _links: evaluationLinks(promptId, evalResult.id),\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Created evaluation: ${evalResult.name} (id: ${String(evalResult.id)})`);\n const hints = formatCreationHints({\n resourceType: 'Evaluation',\n id: evalResult.id,\n name: evalResult.name,\n dashboardUrl: evaluationLink(promptId, evalResult.id),\n apiPath: `/api/prompts/${promptId}/evaluations/${String(evalResult.id)}`,\n });\n console.log(hints);\n }\n\n // Auto-update mutation context\n const criteriaCount = (evalData.evalConfig?.criteria as unknown[] | undefined)?.length ?? 0;\n updateMutationContext(ctx => {\n ctx.addEvaluation(evalResult.name, criteriaCount, String(evalResult.id), promptId);\n });\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete evaluation\n evaluation\n .command('delete')\n .description('Delete an evaluation')\n .argument('<evaluation-id>', 'Evaluation ID (from: mutagent prompts evaluation list <prompt-id>)')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id> --force\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id> --force --json\n `)\n .action(async (evaluationId: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // In --json mode, auto-skip confirmation. Otherwise require --force.\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Deleting evaluation ${evaluationId} requires confirmation`,\n `Run: mutagent prompts evaluation delete --help\\n` +\n `[Agent: Ask the user to confirm via MultiChoice, then pass --force]\\n` +\n `Use --force to confirm: mutagent prompts evaluation delete ${evaluationId} --force`\n );\n }\n\n const client = await getSDKClient();\n try {\n await client.deleteEvaluation(evaluationId);\n } catch (deleteError) {\n // 404 = already deleted = idempotent success\n if (deleteError instanceof ApiError && deleteError.statusCode === 404) {\n if (isJson) {\n const directive = evaluationDeletedDirective(evaluationId);\n output.output({ success: true, deletedId: evaluationId, _links: { dashboard: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Evaluation ${evaluationId} already deleted (idempotent)`);\n }\n return;\n }\n throw deleteError;\n }\n\n if (isJson) {\n const directive = evaluationDeletedDirective(evaluationId);\n output.output({ success: true, deletedId: evaluationId, _links: { dashboard: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Evaluation ${evaluationId} deleted successfully`);\n output.info(`View evaluations: ${promptsDashboardLink()}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Run evaluation (playground eval) - extracted to evaluations-run.ts to stay under 500-line limit\n registerEvaluationRunCommand(evaluation, prompts);\n}\n",
23
+ "import { 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 promptDatasetsLink, datasetLinks, datasetLink,\n formatCreationHints,\n datasetAddedDirective, datasetDeletedDirective,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\nimport type { ResourceState } from '../../lib/ui-links.js';\nimport { updateMutationContext, type DeleteOptions } from './index.js';\nimport { fetchAndBuildGuidedDatasetWorkflow, buildGenericDatasetWorkflow } from './guided-dataset.js';\n\ninterface DatasetAddOptions {\n data?: string;\n name?: string;\n guided?: boolean;\n}\n\n/**\n * Parse dataset file content based on format detection.\n * Supports JSON arrays, JSONL (one JSON object per line), and CSV passthrough.\n *\n * @param rawContent - The raw file content as a string\n * @param filePath - The file path (used for format detection and error messages)\n * @returns The parsed content as a JSON string suitable for the API\n */\nexport function parseDatasetFile(rawContent: string, filePath: string): string {\n const trimmed = rawContent.trim();\n\n // CSV files are passed through as-is (the API handles CSV parsing)\n if (filePath.endsWith('.csv')) {\n return rawContent;\n }\n\n // If content starts with '[', treat as JSON array\n if (trimmed.startsWith('[')) {\n try {\n const parsed: unknown = JSON.parse(trimmed);\n if (!Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Expected a JSON array in dataset file',\n 'Run: mutagent prompts dataset add --help\\nDataset JSON files should contain an array of objects: [{...}, {...}]'\n );\n }\n return trimmed;\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n throw new MutagentError(\n 'INVALID_JSON',\n `Failed to parse JSON array from ${filePath}`,\n 'Run: mutagent prompts dataset add --help\\nEnsure the file contains valid JSON. For line-delimited JSON, use .jsonl extension or put one object per line.'\n );\n }\n }\n\n // If content starts with '{' or doesn't start with '[', treat as JSONL\n // (one JSON object per line)\n const lines = trimmed.split('\\n').filter(line => line.trim().length > 0);\n const items: unknown[] = [];\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!line) continue;\n const trimmedLine = line.trim();\n try {\n items.push(JSON.parse(trimmedLine));\n } catch {\n throw new MutagentError(\n 'INVALID_JSONL',\n `Invalid JSON on line ${String(i + 1)} of ${filePath}`,\n `Run: mutagent prompts dataset add --help\\nEach line must be valid JSON. Problem line: \"${trimmedLine.substring(0, 80)}${trimmedLine.length > 80 ? '...' : ''}\"`\n );\n }\n }\n\n return JSON.stringify(items);\n}\n\nexport function registerDatasetCommands(prompts: Command): void {\n const dataset = new Command('dataset')\n .description('Manage datasets for prompts')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts dataset get <dataset-id>\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> -d '[{\"input\":{...},\"expectedOutput\":{...}}]'\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id>\n ${chalk.dim('$')} mutagent prompts dataset items get <item-id>\n `)\n .action(() => {\n dataset.help();\n });\n prompts.addCommand(dataset);\n\n // List datasets\n dataset\n .command('list')\n .description('List datasets for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id>\n ${chalk.dim('$')} mutagent prompts dataset list <prompt-id> --json\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const datasets = await client.listDatasets(promptId);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `prompts dataset get` for full details.\n const withLinks = datasets.map((d) => ({\n id: d.id,\n name: d.name,\n itemCount: d.itemCount,\n updatedAt: d.updatedAt,\n _links: datasetLinks(promptId, d.id),\n }));\n output.output(withLinks);\n } else {\n const formatted = datasets.map((d) => ({\n id: d.id,\n name: d.name,\n itemCount: d.itemCount,\n updated: d.updatedAt ? new Date(String(d.updatedAt)).toLocaleDateString() : 'N/A',\n url: datasetLink(promptId, d.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get dataset (single dataset details)\n dataset\n .command('get')\n .description('Get full details of a single dataset')\n .argument('<dataset-id>', 'Dataset ID (from: mutagent prompts dataset list <prompt-id>)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset get <dataset-id>\n ${chalk.dim('$')} mutagent prompts dataset get <dataset-id> --json\n\n${chalk.dim('Tip: Use this after `dataset list` to drill into a single dataset.')}\n `)\n .action(async (datasetId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (!/^\\d+$/.test(datasetId)) {\n throw new MutagentError(\n 'INVALID_ARGUMENT',\n `Invalid dataset ID: \"${datasetId}\" (must be numeric)`,\n 'Run: mutagent prompts dataset list <prompt-id>\\nDataset IDs are numeric. Example: mutagent prompts dataset get 42'\n );\n }\n\n const client = await getSDKClient();\n const ds = await client.getDataset(datasetId);\n const promptGroupId = ds.promptGroupId;\n\n if (isJson) {\n output.output({\n ...ds,\n _links: datasetLinks(promptGroupId, ds.id),\n });\n } else {\n output.success(`Dataset: ${ds.name} (id: ${String(ds.id)})`);\n if (ds.description) output.info(`Description: ${ds.description}`);\n if (ds.itemCount !== undefined) output.info(`Items: ${String(ds.itemCount)}`);\n if (ds.updatedAt) output.info(`Updated: ${new Date(String(ds.updatedAt)).toLocaleString()}`);\n if (ds.createdAt) output.info(`Created: ${new Date(String(ds.createdAt)).toLocaleString()}`);\n if (ds.createdBy) output.info(`Created by: ${ds.createdBy}`);\n if (ds.labels && ds.labels.length > 0) output.info(`Labels: ${ds.labels.join(', ')}`);\n const hints = formatCreationHints({\n resourceType: 'Dataset',\n id: ds.id,\n name: ds.name,\n dashboardUrl: datasetLink(promptGroupId, ds.id),\n apiPath: `/api/prompts/datasets/${String(ds.id)}`,\n });\n console.log(hints);\n }\n } catch (error) {\n if (error instanceof ApiError && error.statusCode === 404) {\n handleError(\n new MutagentError(\n 'NOT_FOUND',\n `Dataset ${datasetId} not found`,\n `Run: mutagent prompts dataset list <prompt-id>\\nVerify the dataset ID exists, or list datasets for a prompt to find valid IDs.`\n ),\n isJson,\n );\n } else {\n handleError(error, isJson);\n }\n }\n });\n\n // Add dataset\n dataset\n .command('add')\n .description('Add dataset to a prompt')\n .argument('[prompt-id]', 'Prompt ID (from: mutagent prompts list) — optional when --guided is set')\n .option('-d, --data <json>', 'Inline JSON array of dataset items')\n .option('-n, --name <name>', 'Dataset name')\n .option('--guided', 'Guided mode — analyze prompt schema and suggest dataset categories. prompt-id is optional when --guided is set.')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset add --guided --json # no prompt-id: returns generic workflow + upload instructions\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> --guided --json # recommended: schema-aware category suggestions\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> -d '[{\"input\":{\"text\":\"hello\"},\"expectedOutput\":{\"result\":\"world\"}}]'\n ${chalk.dim('$')} mutagent prompts dataset add <prompt-id> -d '[{\"input\":{\"text\":\"hello\"},\"expectedOutput\":{\"result\":\"world\"}}]' --name \"My Dataset\"\n\nGuided mode (--guided):\n Fetches the prompt's inputSchema + outputSchema and returns structured JSON\n that guides a coding agent to collect domain-specific dataset items.\n The agent uses the guidance to ask the user questions, then constructs\n the dataset JSON and calls: mutagent prompts dataset add <id> -d '<json>' --name '<name>' --json\n\nInline data format (-d):\n JSON array of objects, e.g.:\n ${chalk.dim('[{\"input\": {\"text\": \"hello\"}, \"expectedOutput\": {\"result\": \"world\"}}]')}\n\nExpected item format:\n ${chalk.dim('{\"input\": {\"<field>\": \"<value>\"}, \"expectedOutput\": {\"<field>\": \"<value>\"}}')}\n\n${chalk.yellow('AI Agent (MANDATORY):')}\n ALWAYS use --json: mutagent prompts dataset add <id> -d '[...]' --json\n Items MUST have BOTH input AND expectedOutput.\n Keys must match prompt's inputSchema.properties (input) and outputSchema.properties (expectedOutput).\n expectedOutput is REQUIRED for evaluation scoring.\n Check schemas: mutagent prompts get <prompt-id> --json\n\n${chalk.red('Required: --data or --guided must be provided.')}\n `)\n .action(async (promptId: string | undefined, options: DatasetAddOptions) => {\n // --guided implies --json\n const isJson = options.guided ? true : getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // --guided without prompt-id: return generic workflow template\n if (options.guided && !promptId) {\n const result = buildGenericDatasetWorkflow();\n output.output(result);\n return;\n }\n\n // Guided mode with prompt-id: fetch prompt schema and return structured guidance\n if (options.guided) {\n const guidedResult = await fetchAndBuildGuidedDatasetWorkflow(promptId!);\n output.output(guidedResult);\n return;\n }\n\n // Non-guided without prompt-id: error\n if (!promptId) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'prompt-id is required',\n 'Run: mutagent prompts dataset add --help\\n' +\n 'Usage: mutagent prompts dataset add <prompt-id> [options]\\n' +\n 'With --guided: mutagent prompts dataset add --guided --json (returns generic workflow)'\n );\n }\n\n if (!options.data) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n '-d/--data is required',\n 'Run: mutagent prompts dataset add --help\\n' +\n 'Use -d \\'[{...}]\\' to provide inline JSON data'\n );\n }\n\n let content: string;\n\n // Inline JSON data - validate it parses as an array\n try {\n const parsed: unknown = JSON.parse(options.data);\n if (!Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Inline data must be a JSON array',\n 'Run: mutagent prompts dataset add --help\\n' +\n 'Provide a JSON array, e.g., \\'[{\"input\": {...}, \"expectedOutput\": {...}}]\\''\n );\n }\n content = options.data;\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in -d/--data flag',\n 'Run: mutagent prompts dataset add --help\\n' +\n 'Provide a valid JSON array, e.g., \\'[{\"input\": {...}, \"expectedOutput\": {...}}]\\''\n );\n }\n\n // Validate items in the array\n const parsedItems = JSON.parse(content) as unknown[];\n\n // Empty array check\n if (parsedItems.length === 0) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n 'Dataset cannot be empty',\n 'Run: mutagent prompts dataset add --help\\nProvide at least one item in the array.'\n );\n }\n\n // Per-item validation\n const warnings: string[] = [];\n for (let i = 0; i < parsedItems.length; i++) {\n const item = parsedItems[i] as Record<string, unknown>;\n // Check input exists\n if (!('input' in item)) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Dataset item at index ${i} is missing required field \"input\"`,\n 'Run: mutagent prompts dataset add --help\\nEach item must have: {\"input\": {...}, \"expectedOutput\": {...}}'\n );\n }\n // Check input is an object\n if (typeof item.input !== 'object' || item.input === null || Array.isArray(item.input)) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Dataset item at index ${i}: \"input\" must be an object, got ${Array.isArray(item.input) ? 'array' : typeof item.input}`,\n 'Run: mutagent prompts dataset add --help\\n\"input\" must be a JSON object: {\"input\": {\"field\": \"value\"}}'\n );\n }\n // Warning for missing expectedOutput\n if (!('expectedOutput' in item)) {\n warnings.push(`Item at index ${i} is missing \"expectedOutput\" (recommended for evaluation scoring)`);\n }\n }\n\n // Dataset naming: use --name flag or error\n const datasetName = options.name;\n if (!datasetName) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Dataset name is required',\n 'Run: mutagent prompts dataset add --help\\n' +\n `[Agent: Ask the user for a dataset name via AskUserQuestion, then pass --name]\\n` +\n `Use --name <name>, e.g., mutagent prompts dataset add ${promptId ?? '<prompt-id>'} --name \"my-dataset\" -d '[...]'`\n );\n }\n\n // promptId is guaranteed non-undefined here (guard above throws if missing)\n const resolvedPromptId = promptId!;\n const client = await getSDKClient();\n const datasetResult = await client.addDataset(resolvedPromptId, content, datasetName);\n\n if (isJson) {\n let rsState: ResourceState | undefined;\n try {\n const evals = await client.listEvaluations(resolvedPromptId);\n rsState = { evaluations: evals.length };\n } catch { /* non-critical */ }\n const directive = datasetAddedDirective(resolvedPromptId, datasetResult.id, datasetResult.name, datasetResult.itemCount, rsState);\n output.output({\n ...datasetResult,\n _links: datasetLinks(resolvedPromptId, datasetResult.id),\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n // Show pre-upload warnings in non-json mode\n for (const w of warnings) {\n output.warn(w);\n }\n output.success(`Added dataset \"${datasetResult.name}\" to prompt: ${resolvedPromptId} (id: ${String(datasetResult.id)})`);\n if (datasetResult.itemCount !== undefined && datasetResult.itemCount > 0) {\n output.info(`Items uploaded: ${String(datasetResult.itemCount)}`);\n }\n if (datasetResult.missingExpectedOutputCount !== undefined && datasetResult.missingExpectedOutputCount > 0) {\n output.warn(\n `${String(datasetResult.missingExpectedOutputCount)} of ${String(datasetResult.itemCount ?? 0)} items have no expectedOutput. Optimization may fail without expected outputs.`\n );\n }\n const hints = formatCreationHints({\n resourceType: 'Dataset',\n id: datasetResult.id,\n name: datasetResult.name,\n dashboardUrl: datasetLink(resolvedPromptId, datasetResult.id),\n apiPath: `/api/prompts/${resolvedPromptId}/datasets/${String(datasetResult.id)}`,\n });\n console.log(hints);\n }\n\n // Auto-update mutation context\n updateMutationContext(ctx => {\n ctx.addDiscoveredDataset('inline-data', datasetResult.name, datasetResult.itemCount ?? 0);\n ctx.markDatasetUploaded('inline-data', String(datasetResult.id), resolvedPromptId);\n });\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete dataset\n dataset\n .command('delete')\n .description('Delete a dataset from a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .argument('<dataset-id>', 'Dataset ID (from: mutagent prompts dataset list <prompt-id>)')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id>\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id> --force\n ${chalk.dim('$')} mutagent prompts dataset delete <prompt-id> <dataset-id> --force --json\n `)\n .action(async (promptId: string, datasetId: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // In --json mode, auto-skip confirmation. Otherwise require --force.\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Deleting dataset ${datasetId} from prompt ${promptId} requires confirmation`,\n 'Run: mutagent prompts dataset delete --help\\n' +\n `[Agent: Ask the user to confirm via MultiChoice, then pass --force]\\n` +\n `Use --force to confirm: mutagent prompts dataset delete ${promptId} ${datasetId} --force`\n );\n }\n\n const client = await getSDKClient();\n try {\n await client.deleteDataset(promptId, datasetId, { force: true });\n } catch (deleteError) {\n // 404 = already deleted = idempotent success\n if (deleteError instanceof ApiError && deleteError.statusCode === 404) {\n if (isJson) {\n const directive = datasetDeletedDirective(promptId, datasetId);\n output.output({ success: true, deletedId: datasetId, _links: { datasets: promptDatasetsLink(promptId) }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Dataset ${datasetId} already deleted (idempotent)`);\n }\n return;\n }\n throw deleteError;\n }\n\n if (isJson) {\n const directive = datasetDeletedDirective(promptId, datasetId);\n output.output({ success: true, deletedId: datasetId, _links: { datasets: promptDatasetsLink(promptId) }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Deleted dataset ${datasetId} from prompt ${promptId}`);\n output.info(`View datasets: ${promptDatasetsLink(promptId)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // =========================================================================\n // Dataset Items subgroup\n // =========================================================================\n const items = new Command('items')\n .description('Manage individual dataset items')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset items get <item-id>\n ${chalk.dim('$')} mutagent prompts dataset items get <item-id> --json\n `)\n .action(() => {\n items.help();\n });\n dataset.addCommand(items);\n\n // Get a single dataset item\n items\n .command('get')\n .description('Get full details of a single dataset item')\n .argument('<item-id>', 'Dataset item ID')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts dataset items get <item-id>\n ${chalk.dim('$')} mutagent prompts dataset items get <item-id> --json\n\n${chalk.dim('Tip: Dataset item IDs are shown in dataset exports and optimization results.')}\n `)\n .action(async (itemId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (!/^\\d+$/.test(itemId)) {\n throw new MutagentError(\n 'INVALID_ARGUMENT',\n `Invalid dataset item ID: \"${itemId}\" (must be numeric)`,\n 'Run: mutagent prompts dataset items get --help\\nDataset item IDs are numeric. Example: mutagent prompts dataset items get 17'\n );\n }\n\n const client = await getSDKClient();\n const item = await client.getDatasetItem(itemId);\n const itemWithDs = item as typeof item & { datasetId?: number | string };\n const dsId = itemWithDs.datasetId;\n\n if (isJson) {\n output.output({\n ...item,\n _links: {\n api: `/api/prompts/dataset-items/${String(item.id)}`,\n ...(dsId !== undefined ? { dataset: `/api/prompts/datasets/${String(dsId)}` } : {}),\n },\n });\n } else {\n output.success(`Dataset Item: ${String(item.id)}`);\n if (dsId !== undefined) output.info(`Dataset ID: ${String(dsId)}`);\n output.info(`Input: ${JSON.stringify(item.input, null, 2)}`);\n if (item.expectedOutput !== undefined) {\n output.info(`Expected output: ${typeof item.expectedOutput === 'string' ? item.expectedOutput : JSON.stringify(item.expectedOutput, null, 2)}`);\n }\n if (item.metadata && Object.keys(item.metadata).length > 0) {\n output.info(`Metadata: ${JSON.stringify(item.metadata)}`);\n }\n if (item.createdAt) output.info(`Created: ${new Date(String(item.createdAt)).toLocaleString()}`);\n const itemWithUpdated = item as typeof item & { updatedAt?: string };\n if (itemWithUpdated.updatedAt) output.info(`Updated: ${new Date(String(itemWithUpdated.updatedAt)).toLocaleString()}`);\n }\n } catch (error) {\n if (error instanceof ApiError && error.statusCode === 404) {\n handleError(\n new MutagentError(\n 'NOT_FOUND',\n `Dataset item ${itemId} not found`,\n `Run: mutagent prompts dataset items get --help\\nVerify the item ID exists. Use the dashboard or dataset exports to find valid item IDs.`\n ),\n isJson,\n );\n } else {\n handleError(error, isJson);\n }\n }\n });\n}\n",
24
+ "import { getSDKClient } from '../../lib/sdk-client.js';\nimport { checkPromptDisambiguation, type DisambiguationResult } from './guided-workflow.js';\n\n// ---------------------------------------------------------------------------\n// Generic dataset workflow (no prompt-id)\n// ---------------------------------------------------------------------------\n\nexport interface GenericDatasetWorkflowResult {\n mode: 'generic';\n message: string;\n workflow: string[];\n formatReference: {\n item: {\n input: Record<string, string>;\n expectedOutput: Record<string, string>;\n };\n };\n suggestedCategories: {\n name: string;\n description: string;\n priority: 'high' | 'medium' | 'low';\n }[];\n _directive: {\n instruction: string;\n next: string[];\n };\n}\n\n/**\n * Returns a generic dataset workflow when no prompt-id is provided.\n * Guides the agent to upload a prompt first, then re-run with a prompt-id.\n */\nexport function buildGenericDatasetWorkflow(): GenericDatasetWorkflowResult {\n return {\n mode: 'generic',\n message: 'No prompt-id provided. Follow this sequence to create a dataset:',\n workflow: [\n '1. mutagent explore --json — scan codebase for prompts',\n '2. mutagent prompts create ... --json — upload the target prompt',\n '3. Re-run: mutagent prompts dataset add <prompt-id> --guided --json',\n ],\n formatReference: {\n item: {\n input: { '<inputSchema_field>': '<value>' },\n expectedOutput: { '<outputSchema_field>': '<expected_value>' },\n },\n },\n suggestedCategories: [\n { name: 'Edge Cases', description: 'Boundary inputs, empty fields, malformed data', priority: 'high' },\n { name: 'Hard Cases', description: 'Ambiguous inputs, adversarial examples', priority: 'high' },\n { name: 'Representative Cases', description: 'Typical production inputs', priority: 'medium' },\n ],\n _directive: {\n instruction: 'Ask the user which prompt they want to create a dataset for. If unclear, run mutagent explore --json first.',\n next: ['mutagent explore --json', 'mutagent prompts list --json'],\n },\n };\n}\n\ninterface SuggestedCategory {\n name: string;\n description: string;\n priority: 'high' | 'medium' | 'low';\n}\n\ninterface AskUserQuestion {\n field: string;\n source: 'inputSchema' | 'outputSchema';\n question: string;\n}\n\ninterface GuidedDatasetGuidance {\n minItems: number;\n priorityRule: string;\n steps: string[];\n}\n\ninterface GuidedDatasetDirective {\n instruction: string;\n next: string[];\n}\n\nexport interface GuidedDatasetResult {\n promptId: string;\n promptName: string;\n schemaFields: {\n input: string[];\n output: string[];\n };\n suggestedCategories: SuggestedCategory[];\n templateItem: {\n input: Record<string, string>;\n expectedOutput: Record<string, string>;\n };\n askUserQuestions: AskUserQuestion[];\n guidance: GuidedDatasetGuidance;\n _directive: GuidedDatasetDirective;\n disambiguation?: DisambiguationResult;\n}\n\n/**\n * Build a guided dataset workflow for a prompt.\n * Fetches prompt schemas and constructs structured guidance that agents use\n * to collect domain-specific dataset items from users.\n */\nexport function buildGuidedDatasetWorkflow(prompt: {\n id: number | string;\n name: string;\n inputSchema?: unknown;\n outputSchema?: unknown;\n}): GuidedDatasetResult {\n const promptId = String(prompt.id);\n\n const outputProperties =\n prompt.outputSchema && typeof prompt.outputSchema === 'object'\n ? (((prompt.outputSchema as Record<string, unknown>).properties ?? {}) as Record<\n string,\n { type?: string; description?: string }\n >)\n : ({} as Record<string, { type?: string; description?: string }>);\n\n const inputProperties =\n prompt.inputSchema && typeof prompt.inputSchema === 'object'\n ? (((prompt.inputSchema as Record<string, unknown>).properties ?? {}) as Record<\n string,\n { type?: string; description?: string }\n >)\n : ({} as Record<string, { type?: string; description?: string }>);\n\n const inputFields = Object.keys(inputProperties);\n const outputFields = Object.keys(outputProperties);\n\n // Build templateItem showing expected shape\n const templateInput: Record<string, string> = {};\n for (const f of inputFields) {\n templateInput[f] = '<value>';\n }\n const templateOutput: Record<string, string> = {};\n for (const f of outputFields) {\n templateOutput[f] = '<expected>';\n }\n\n // Build per-field questions\n const askUserQuestions: AskUserQuestion[] = [\n // Hard/edge case opening questions\n {\n field: '_general',\n source: 'inputSchema',\n question: 'What are the hardest inputs for this prompt? Describe scenarios that typically cause failures or ambiguous outputs.',\n },\n {\n field: '_edge_cases',\n source: 'inputSchema',\n question: 'What edge cases have caused failures in production? Include boundary inputs, empty fields, and malformed data.',\n },\n // Per input field\n ...inputFields.map((f) => ({\n field: f,\n source: 'inputSchema' as const,\n question: `What values should \"${f}\" have in test cases? Include edge cases (empty, unicode, very long, malformed).`,\n })),\n // Per output field\n ...outputFields.map((f) => ({\n field: f,\n source: 'outputSchema' as const,\n question: `What should correct \"${f}\" look like? Describe the format, tone, completeness criteria, and examples of incorrect outputs.`,\n })),\n ];\n\n const suggestedCategories: SuggestedCategory[] = [\n {\n name: 'Edge Cases',\n description: 'Boundary inputs, empty fields, malformed data',\n priority: 'high',\n },\n {\n name: 'Hard Cases',\n description: 'Ambiguous inputs, adversarial examples, domain traps',\n priority: 'high',\n },\n {\n name: 'Representative Cases',\n description: 'Typical production inputs',\n priority: 'medium',\n },\n ];\n\n const totalSchemaFields = inputFields.length + outputFields.length;\n const hasSchema = totalSchemaFields > 0;\n\n return {\n promptId,\n promptName: prompt.name,\n schemaFields: {\n input: inputFields,\n output: outputFields,\n },\n suggestedCategories,\n templateItem: {\n input: hasSchema ? templateInput : { '<field>': '<value>' },\n expectedOutput: hasSchema ? templateOutput : { '<field>': '<expected>' },\n },\n askUserQuestions,\n guidance: {\n minItems: 5,\n priorityRule: 'Hard cases that expose prompt weaknesses > easy cases that always pass',\n steps: [\n 'Collect answers to each question from the user',\n 'Generate 5-10 dataset items covering all categories',\n 'Ensure at least 2 hard/edge cases per category',\n 'Format as JSON array: [{\"input\": {...}, \"expectedOutput\": {...}}, ...]',\n `Run: mutagent prompts dataset add ${promptId} -d '<json>' --name '<name>' --json`,\n ],\n },\n _directive: {\n instruction:\n 'Collect domain-specific dataset items from the user. ' +\n 'Ask about each schema field. ' +\n 'Prioritize hard cases over easy cases. ' +\n 'Then construct the dataset JSON and upload.',\n next: [\n `mutagent prompts dataset add ${promptId} -d '<constructed-json>' --name '<name>' --json`,\n ],\n },\n };\n}\n\n/**\n * Fetch prompt and build guided dataset workflow.\n * Async wrapper around buildGuidedDatasetWorkflow for CLI use.\n */\nexport async function fetchAndBuildGuidedDatasetWorkflow(\n promptId: string,\n): Promise<GuidedDatasetResult> {\n const client = await getSDKClient();\n const prompt = await client.getPrompt(promptId);\n const result = buildGuidedDatasetWorkflow(prompt as Parameters<typeof buildGuidedDatasetWorkflow>[0]);\n\n // Attach disambiguation info if similar prompts exist (non-critical)\n const disambiguation = await checkPromptDisambiguation(promptId, prompt.name);\n if (disambiguation) {\n result.disambiguation = disambiguation;\n }\n\n return result;\n}\n",
25
+ "import { getSDKClient } from '../../lib/sdk-client.js';\n\n// ---------------------------------------------------------------------------\n// Generic eval workflow (no prompt-id)\n// ---------------------------------------------------------------------------\n\nexport interface GenericEvalWorkflowResult {\n mode: 'generic';\n message: string;\n workflow: string[];\n formatReference: {\n evalConfig: {\n criteria: {\n name: string;\n description: string;\n evaluationParameter: string;\n }[];\n };\n };\n _directive: {\n instruction: string;\n next: string[];\n };\n}\n\n/**\n * Returns a generic eval workflow when no prompt-id is provided.\n * Guides the agent to upload a prompt first, then re-run with a prompt-id.\n */\nexport function buildGenericEvalWorkflow(): GenericEvalWorkflowResult {\n return {\n mode: 'generic',\n message: 'No prompt-id provided. Follow this sequence to create an evaluation:',\n workflow: [\n '1. mutagent explore --json — scan codebase for prompts',\n '2. mutagent prompts create ... --json — upload the target prompt',\n '3. Re-run: mutagent prompts evaluation create <prompt-id> --guided --json',\n ],\n formatReference: {\n evalConfig: {\n criteria: [{\n name: '<criterion_name>',\n description: '<rubric: what correct vs incorrect looks like>',\n evaluationParameter: '<must match a field in inputSchema or outputSchema>',\n }],\n },\n },\n _directive: {\n instruction: 'Ask the user which prompt they want to evaluate. If unclear, run mutagent explore --json first.',\n next: ['mutagent explore --json', 'mutagent prompts list --json'],\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Disambiguation helper\n// ---------------------------------------------------------------------------\n\nexport interface DisambiguationResult {\n message: string;\n selected: { id: string; name: string };\n similar: { id: string; name: string }[];\n askUserQuestions: {\n question: string;\n options: string[];\n }[];\n}\n\n/**\n * Check for prompts with similar names and return disambiguation info if found.\n * Returns null when no similar prompts exist.\n */\nexport async function checkPromptDisambiguation(\n promptId: string,\n promptName: string,\n): Promise<DisambiguationResult | null> {\n try {\n const client = await getSDKClient();\n const allPrompts = await client.listPrompts();\n const targetName = promptName.toLowerCase();\n const similar = allPrompts.filter(\n (p: { id: string | number; name: string }) =>\n String(p.id) !== promptId &&\n (p.name.toLowerCase().includes(targetName) || targetName.includes(p.name.toLowerCase())),\n );\n\n if (similar.length === 0) return null;\n\n return {\n message: `Found ${String(similar.length)} prompt(s) with similar names. Confirm this is the right one:`,\n selected: { id: promptId, name: promptName },\n similar: similar.map((p: { id: string | number; name: string }) => ({ id: String(p.id), name: p.name })),\n askUserQuestions: [{\n question: `You selected \"${promptName}\" (ID: ${promptId}). Is this correct, or did you mean one of these?`,\n options: [\n `${promptName} (ID: ${promptId}) — SELECTED`,\n ...similar.map((p: { id: string | number; name: string }) => `${p.name} (ID: ${String(p.id)})`),\n ],\n }],\n };\n } catch {\n // Non-critical — don't block the main workflow on listPrompts failure\n return null;\n }\n}\n\ninterface FieldInfo {\n field: string;\n source: 'inputSchema' | 'outputSchema';\n fieldSchema?: { type?: string; description?: string };\n}\n\nexport interface GuidedWorkflowResult {\n prompt: { id: string; name: string };\n inputSchema: { fields: string[] };\n outputSchema: { fields: string[] };\n workflow: {\n description: string;\n steps: { step: number; action: string; detail: string }[];\n criteriaTemplate: Record<string, unknown>;\n exampleCommand: string;\n };\n askUserQuestions: {\n question: string;\n header: string;\n options: { label: string; description: string }[];\n multiSelect: boolean;\n context: Record<string, unknown>;\n }[];\n _directive: {\n display: string;\n instruction: string;\n aiAgentDecisionTree: Record<string, string>;\n };\n disambiguation?: DisambiguationResult;\n _meta: { inputFields: string[]; outputFields: string[]; allFields: FieldInfo[] };\n}\n\n/**\n * Build a guided workflow object for a prompt's evaluation.\n * Fetches prompt schemas and optional dataset examples to construct\n * a structured workflow that agents use to collect rubrics from users.\n */\nexport async function buildGuidedWorkflow(promptId: string): Promise<GuidedWorkflowResult> {\n const client = await getSDKClient();\n const prompt = await client.getPrompt(promptId);\n\n const truncate = (s: string, max: number): string => s.length > max ? s.slice(0, max) + '...' : s;\n\n const outputProperties = prompt.outputSchema && typeof prompt.outputSchema === 'object'\n ? ((prompt.outputSchema as Record<string, unknown>).properties ?? {}) as Record<string, { type?: string; description?: string }>\n : {} as Record<string, { type?: string; description?: string }>;\n const inputProperties = prompt.inputSchema && typeof prompt.inputSchema === 'object'\n ? ((prompt.inputSchema as Record<string, unknown>).properties ?? {}) as Record<string, { type?: string; description?: string }>\n : {} as Record<string, { type?: string; description?: string }>;\n\n const inputFields = Object.keys(inputProperties);\n const outputFields = Object.keys(outputProperties);\n\n const allFields: FieldInfo[] = [\n ...inputFields.map(f => ({ field: f, source: 'inputSchema' as const, fieldSchema: inputProperties[f] })),\n ...outputFields.map(f => ({ field: f, source: 'outputSchema' as const, fieldSchema: outputProperties[f] })),\n ];\n\n // Fetch a dataset example if available (non-critical)\n let datasetExample: Record<string, unknown> | null = null;\n try {\n const datasets = await client.listDatasets(promptId);\n if (datasets.length > 0) {\n try {\n const dsId = datasets[0]?.id;\n const items = dsId != null ? await client.listDatasetItems(String(dsId)) : [];\n if (items.length > 0) {\n const firstItem = items[0];\n datasetExample = ((firstItem?.expectedOutput ?? firstItem?.input) ?? null) as Record<string, unknown> | null;\n }\n } catch {\n // listDatasetItems may not exist yet — non-critical\n }\n }\n } catch { /* non-critical */ }\n\n const askUserQuestions = allFields.map(({ field, source, fieldSchema }) => {\n const isInput = source === 'inputSchema';\n const question = isInput\n ? `Define the Minimum Viable Context for \"${field}\". What data MUST be present in this input for the prompt to produce a correct output? Describe what constitutes complete vs incomplete input, and WHY this field matters.`\n : `Define what correct \"${field}\" looks like. What structure, content, or qualities make it good vs bad? Give concrete examples of good and bad outputs.`;\n const hint = isInput\n ? `Input fields define what data the prompt NEEDS to work correctly. Without defining minimum viable context, the optimizer cannot detect whether failures come from bad input or bad prompt logic.`\n : null;\n const header = isInput ? `${field} [INPUT]` : `${field} [OUTPUT]`;\n const defineDesc = isInput\n ? `Describe what data MUST be present in \"${field}\" and WHY the prompt needs it. Focus on completeness and minimum viable context.`\n : `Describe what a correct vs incorrect \"${field}\" looks like. Focus on structure, content quality, and concrete examples — not numeric scores.`;\n\n return {\n question,\n header,\n ...(hint != null ? { hint } : {}),\n options: [\n {\n label: 'Define rubric',\n description: defineDesc,\n },\n {\n label: 'See suggestion',\n description: `Get a suggested rubric based on the prompt and schema definition for \"${field}\". You can refine it.`,\n },\n ],\n multiSelect: false,\n context: {\n fieldType: fieldSchema?.type ?? 'unknown',\n fieldDescription: fieldSchema?.description ?? null,\n fieldSource: source,\n promptExcerpt: truncate(prompt.humanPrompt ?? prompt.systemPrompt ?? prompt.rawPrompt ?? '', 200),\n exampleValue: datasetExample?.[field] ?? null,\n },\n };\n });\n\n const result: GuidedWorkflowResult = {\n prompt: { id: promptId, name: prompt.name },\n inputSchema: { fields: inputFields },\n outputSchema: { fields: outputFields },\n workflow: {\n description: 'Follow these steps to create an evaluation for this prompt:',\n steps: [\n { step: 1, action: 'Review prompt schemas and context', detail: 'Understand what the prompt does and what each field means.' },\n { step: 2, action: 'Define correctness criteria for EVERY field', detail: `For EACH of the ${String(allFields.length)} fields in askUserQuestions, use AskUserQuestion to collect a rubric. INPUT fields (${String(inputFields.length)}): collect minimum viable context definitions — what data MUST exist. OUTPUT fields (${String(outputFields.length)}): collect correctness criteria — what correct vs incorrect looks like. Do NOT skip any field. Use the context hints to suggest rubrics when asked.` },\n { step: 3, action: 'Build criteria JSON', detail: 'Map each rubric to: { name: field, description: rubric, evaluationParameter: field }' },\n { step: 4, action: 'Ask for evaluation name', detail: 'Ask user what to name this evaluation' },\n { step: 5, action: 'Create the evaluation', detail: `mutagent prompts evaluation create ${promptId} --name \"<name>\" -d '<json>' --json` },\n ],\n criteriaTemplate: {\n evalConfig: {\n criteria: [{\n name: '<criterion_name>',\n description: '<correctness rubric - describe what correct vs incorrect looks like>',\n evaluationParameter: `<one of: ${allFields.length > 0 ? allFields.map(f => f.field).join(', ') : 'no fields detected - check prompt schemas'}>`,\n }],\n },\n },\n exampleCommand: `mutagent prompts evaluation create ${promptId} --name \"My Evaluation\" -d '${JSON.stringify({\n evalConfig: {\n criteria: outputFields.slice(0, 1).map(f => ({\n name: `${f} accuracy`,\n description: `Correct if ${f} matches expected structure and content; incorrect if missing, malformed, or off-topic`,\n evaluationParameter: f,\n })),\n },\n })}'`,\n },\n askUserQuestions,\n _directive: {\n display: 'workflow_guide',\n instruction:\n 'MANDATORY ORDERS — READ CAREFULLY:\\n' +\n\n `1. You MUST ask the user about EVERY SINGLE field listed in askUserQuestions. There are ${String(allFields.length)} fields total.\\n` +\n '2. Do NOT skip ANY field. Do NOT decide that a field \"doesn\\'t need\" a definition.\\n' +\n `3. INPUT fields (${String(inputFields.length)}): These define MINIMUM VIABLE CONTEXT — the data that MUST exist in the input for the prompt to work. Ask: \"What data MUST be present in this field and WHY does the prompt need it?\"\\n` +\n ' WHY THIS MATTERS: Without minimum viable context definitions, the optimizer cannot distinguish between failures caused by incomplete input vs failures caused by bad prompt logic.\\n' +\n `4. OUTPUT fields (${String(outputFields.length)}): These define correctness criteria. Ask: \"What does correct vs incorrect for this field look like?\"\\n` +\n `5. After collecting ALL ${String(allFields.length)} definitions, construct the --data JSON with criteria for EVERY field.\\n` +\n '6. VIOLATION: Skipping ANY field or telling the user a field doesn\\'t need a definition is a protocol violation.\\n' +\n '\\n' +\n '7. EVAL CRITERIA FRAMING — INPUT vs OUTPUT scoping (mirror of SKILL.md → \"Guided Eval Criteria\"):\\n' +\n ' INPUT fields → Minimum Viable Context (MVC).\\n' +\n ' Ask: \"Is the data required for the prompt to succeed actually present in this {variable}?\"\\n' +\n ' Rubric uses a COMPLETENESS scale grounded in observable presence of required data:\\n' +\n ' 1.0 = all required context present, no ambiguity\\n' +\n ' 0.5 = some context present, enough to attempt but likely partial/hedged answer\\n' +\n ' 0.0 = critical context missing, prompt cannot succeed regardless of model\\n' +\n ' OUTPUT fields → Output Standards.\\n' +\n ' Ask: \"Does the response meet content correctness + structural correctness?\"\\n' +\n ' Rubric uses a CORRECTNESS scale with concrete pass/fail tiers, e.g.:\\n' +\n ' 1.0 = valid shape, all required fields, faithful content\\n' +\n ' 0.5 = valid shape, 1-2 fields hedged or partially correct\\n' +\n ' 0.0 = invalid shape OR fabricated facts\\n' +\n ' NEVER use vague rubrics like \"0-1 scale\" or \"score based on accuracy\".\\n' +\n ' Canonical source: .claude/skills/mutagent-cli/SKILL.md → \"Guided Eval Criteria\".\\n' +\n ' Note: template variables use single-brace `{variable}` (platform canonical). `mutagent explore`\\n' +\n ' infers single vs double per-file via inferPromptVariables().',\n aiAgentDecisionTree: {\n step1: 'Check if criteria already exist in the user\\'s code. If criteria match expected shape (name + description + evaluationParameter targeting schema fields), use --data directly.',\n step2: 'If criteria are missing or malformed, use the askUserQuestions payloads to collect them via AskUserQuestion.',\n step3: 'After collecting all criteria, construct the --data JSON and run: mutagent prompts evaluation create <prompt-id> --name \"<name>\" -d \\'<json>\\'',\n },\n },\n _meta: { inputFields, outputFields, allFields },\n };\n\n // Attach disambiguation info if similar prompts exist (non-critical)\n const disambiguation = await checkPromptDisambiguation(promptId, prompt.name);\n if (disambiguation) {\n result.disambiguation = disambiguation;\n }\n\n return result;\n}\n",
26
+ "import { 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 promptsDashboardLink, evaluationLinks, evaluationLink,\n formatCreationHints,\n evaluationCreatedDirective, evaluationDeletedDirective,\n echoDirectiveToStderr,\n} from '../../lib/ui-links.js';\nimport { resolveNumericPromptId } from '../../lib/resolve-prompt-id.js';\nimport type { ResourceState } from '../../lib/ui-links.js';\nimport { updateMutationContext, type DeleteOptions } from './index.js';\nimport { buildGuidedWorkflow, buildGenericEvalWorkflow, type GuidedWorkflowResult } from './guided-workflow.js';\nimport {\n cliCriteriaArrayToCanonical,\n canonicalCriteriaArrayToCli,\n type CliCriterion,\n} from '../../lib/adapters/eval-criteria.js';\nimport { registerEvaluationRunCommand } from './evaluations-run.js';\n\ninterface EvaluationCreateOptions {\n data?: string;\n name?: string;\n description?: string;\n guided?: boolean;\n}\n\nexport function registerEvaluationCommands(prompts: Command): void {\n const evaluation = new Command('evaluation')\n .description('Manage evaluations for prompts')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"My Eval\"\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id>\n `)\n .action(() => {\n evaluation.help();\n });\n prompts.addCommand(evaluation);\n\n // List evaluations\n evaluation\n .command('list')\n .description('List evaluations for a prompt')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id>\n ${chalk.dim('$')} mutagent prompts evaluation list <prompt-id> --json\n `)\n .action(async (promptId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const evals = await client.listEvaluations(promptId);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `prompts evaluation get` for full details.\n const withLinks = evals.map((e) => ({\n id: e.id,\n name: e.name,\n description: e.description,\n updatedAt: e.updatedAt,\n _links: evaluationLinks(promptId, e.id),\n }));\n output.output(withLinks);\n } else {\n const formatted = evals.map((e) => ({\n id: e.id,\n name: e.name,\n description: e.description,\n updated: e.updatedAt ? new Date(String(e.updatedAt)).toLocaleDateString() : 'N/A',\n url: evaluationLink(promptId, e.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get evaluation details\n evaluation\n .command('get')\n .description('Get evaluation details including criteria')\n .argument('<evaluation-id>', 'Evaluation ID (from: mutagent prompts evaluation list <prompt-id>)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation get <evaluation-id> --json\n `)\n .action(async (evaluationId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const evalObj = await client.getEvaluation(evaluationId);\n\n // Resolve numeric promptId from the evaluation's promptGroupId (UUID).\n // The UI route /prompts/:id expects the numeric id, not the UUID.\n // Orphaned evaluations (no prompts in group) fall back to the prompts dashboard.\n const numericPromptId = await resolveNumericPromptId(client, evalObj.promptGroupId);\n if (numericPromptId === null) {\n // Debug-only warning; never throw.\n if (process.env.DEBUG) {\n console.error(\n `[debug] Evaluation ${String(evalObj.id)} references promptGroupId ${evalObj.promptGroupId} but no prompts were found in that group. Falling back to prompts dashboard.`,\n );\n }\n }\n\n if (isJson) {\n // B3: compute runnable flag (has at least one criterion)\n const evalConfigForRunnable = evalObj.evalConfig as { criteria?: unknown[] } | null | undefined;\n const criteriaForRunnable = evalConfigForRunnable?.criteria;\n const runnable = Array.isArray(criteriaForRunnable) && criteriaForRunnable.length > 0;\n\n output.output({\n ...evalObj,\n runnable,\n _links: numericPromptId !== null\n ? evaluationLinks(numericPromptId, evalObj.id)\n : { dashboard: promptsDashboardLink(), api: `/api/prompts/${evalObj.promptGroupId}/evaluations/${String(evalObj.id)}` },\n });\n } else {\n output.success(`Evaluation: ${evalObj.name} (ID: ${String(evalObj.id)})`);\n if (evalObj.description) {\n console.log(` Description: ${evalObj.description}`);\n }\n console.log(` Created: ${evalObj.createdAt ? new Date(String(evalObj.createdAt)).toLocaleDateString() : 'N/A'}`);\n console.log('');\n\n // Display criteria — BE returns canonical shape; adapt to CLI shape for display\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const config = evalObj.evalConfig as { criteria?: any[] } | null;\n const criteria: CliCriterion[] = canonicalCriteriaArrayToCli(config?.criteria);\n if (criteria.length > 0) {\n console.log(' Criteria:');\n for (const c of criteria) {\n console.log(` ${chalk.cyan(c.name)}`);\n if (c.description) {\n console.log(` Description: ${c.description}`);\n }\n if (c.evaluationParameter) {\n console.log(` Parameter: ${c.evaluationParameter}`);\n }\n console.log('');\n }\n } else {\n console.log(' No criteria defined.');\n }\n\n // Display LLM config if present\n const llmConfig = evalObj.llmConfig as Record<string, unknown> | null;\n if (llmConfig && Object.keys(llmConfig).length > 0) {\n console.log(' LLM Config:');\n for (const [key, value] of Object.entries(llmConfig)) {\n console.log(` ${key}: ${String(value)}`);\n }\n console.log('');\n }\n\n const dashboardUrl = numericPromptId !== null\n ? evaluationLink(numericPromptId, evalObj.id)\n : promptsDashboardLink();\n output.info(`View in dashboard: ${dashboardUrl}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create evaluation\n evaluation\n .command('create')\n .description('Create an evaluation configuration for a prompt')\n .argument('[prompt-id]', 'Prompt ID (from: mutagent prompts list) — optional when --guided is set')\n .option('-d, --data <json>', 'Evaluation as JSON string (for pre-validated criteria only)')\n .option('-n, --name <name>', 'Evaluation name (required unless --guided)')\n .option('--description <text>', 'Evaluation description')\n .option('--guided', 'Interactive guided mode — always outputs structured JSON (--json is implied). prompt-id is optional when --guided is set.')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation create --guided --json ${chalk.dim('# no prompt-id: returns generic workflow + upload instructions')}\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --guided ${chalk.dim('# recommended: shows workflow guide + schema fields')}\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --guided --json ${chalk.dim('# structured workflow for AI agents')}\n ${chalk.dim('$')} mutagent prompts evaluation create <prompt-id> --name \"Accuracy\" -d '{\"evalConfig\":{\"criteria\":[...]}}' ${chalk.dim('# power user')}\n\nGuided Workflow (recommended):\n --guided outputs a workflow guide that:\n 1. Fetches your prompt's inputSchema + outputSchema fields\n 2. Shows available fields for evaluation criteria\n 3. Provides a criteria template and example command\n 4. For AI agents: includes a _directive with workflow instructions\n\n Works in all modes (TTY, non-TTY, --json).\n\nAI Agent (MANDATORY):\n 1. Run: mutagent prompts evaluation create --help\n 2. Run: mutagent prompts evaluation create <id> --guided --json\n 3. Parse askUserQuestions from the JSON output\n 4. Use AskUserQuestion to collect DETAILED rubrics from the user\n 5. NEVER auto-generate criteria. NEVER use vague rubrics.\n 6. Construct --data JSON from user answers, then:\n mutagent prompts evaluation create <id> --name \"<name>\" -d '<json>' --json\n\nExpected Criteria Shape (--data):\n ${chalk.dim('{\"evalConfig\":{\"criteria\":[{\"name\":\"<name>\",\"description\":\"<scoring rubric>\",\"evaluationParameter\":\"<schema field>\"}]}}')}\n evaluationParameter must target an outputSchema OR inputSchema field.\n\n${chalk.red('Required: --name (unless --guided). Criteria must include evaluationParameter.')}\n${chalk.dim('CLI flags (--name, --description) override --data fields.')}\n${chalk.dim('Get prompt IDs: mutagent prompts list')}\n `)\n .action(async (promptId: string | undefined, options: EvaluationCreateOptions) => {\n // --guided always implies --json — agents must never use --guided without --json\n let isJson = getJsonFlag(prompts);\n if (options.guided) {\n isJson = true;\n }\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // --guided without prompt-id: return generic workflow template\n if (options.guided && !promptId) {\n const result = buildGenericEvalWorkflow();\n output.output(result);\n return;\n }\n\n // Non-guided without prompt-id: error\n if (!promptId) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'prompt-id is required',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Usage: mutagent prompts evaluation create <prompt-id> [options]\\n' +\n 'With --guided: mutagent prompts evaluation create --guided --json (returns generic workflow)'\n );\n }\n\n // Render the guided workflow (shared between --guided and auto-trigger)\n const renderGuidedWorkflow = (wf: GuidedWorkflowResult): void => {\n const { inputFields, outputFields, allFields } = wf._meta;\n if (isJson) {\n const { _meta: _discarded, ...cleanWorkflow } = wf;\n void _discarded;\n output.output(cleanWorkflow);\n echoDirectiveToStderr(wf._directive);\n } else {\n output.success(`Guided Evaluation Workflow for prompt: ${wf.prompt.name} (ID: ${promptId})`);\n console.log('');\n if (outputFields.length > 0) {\n console.log(` Output Schema Fields: ${outputFields.join(', ')}`);\n }\n if (inputFields.length > 0) {\n console.log(` Input Schema Fields: ${inputFields.join(', ')}`);\n }\n console.log('');\n console.log(' For each field, define what correct output looks like:');\n for (const { field, source } of allFields) {\n console.log(` ${chalk.cyan(field)} (${source})`);\n console.log(` → What makes a correct vs incorrect \"${field}\"?`);\n }\n console.log('');\n console.log(' Then create the evaluation:');\n console.log(` mutagent prompts evaluation create ${promptId} --name \"My Eval\" \\\\`);\n console.log(` -d '{\"evalConfig\":{\"criteria\":[{\"name\":\"accuracy\",\"description\":\"Correct if output matches expected structure\",\"evaluationParameter\":\"${outputFields[0] ?? '<field>'}\"}]}}'`);\n console.log('');\n }\n };\n\n // Guided mode: dump structured workflow/template (non-interactive)\n if (options.guided) {\n const workflow = await buildGuidedWorkflow(promptId);\n renderGuidedWorkflow(workflow);\n return;\n }\n\n // No criteria source — auto-return guided workflow in --json/TTY mode\n if (!options.data) {\n if (isJson || process.stdout.isTTY) {\n const workflow = await buildGuidedWorkflow(promptId);\n renderGuidedWorkflow(workflow);\n return;\n }\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'No criteria source provided',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n\n // Non-guided: --name is required\n if (!options.name) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Evaluation name is required',\n 'Run: mutagent prompts evaluation create --help\\n' +\n '[Agent: Ask the user for an evaluation name via AskUserQuestion, then pass --name]\\n' +\n 'Use --name <name>, e.g., mutagent prompts evaluation create ' + promptId + ' --name \"My Eval\" --data \\'...\\''\n );\n }\n\n const evalData: {\n name: string;\n description?: string;\n evalConfig?: Record<string, unknown>;\n llmConfig?: Record<string, unknown>;\n tags?: string[];\n metadata?: Record<string, unknown>;\n } = {\n name: options.name,\n description: options.description,\n };\n\n // Parse inline JSON\n try {\n const parsed = JSON.parse(options.data) as Record<string, unknown>;\n if (parsed.evalConfig) evalData.evalConfig = parsed.evalConfig as Record<string, unknown>;\n if (parsed.llmConfig) evalData.llmConfig = parsed.llmConfig as Record<string, unknown>;\n if (parsed.tags) evalData.tags = parsed.tags as string[];\n if (parsed.metadata) evalData.metadata = parsed.metadata as Record<string, unknown>;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --data flag',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Provide a valid JSON object, e.g., \\'{\"evalConfig\":{\"criteria\":[...]},\"llmConfig\":{\"model\":\"gpt-4\"}}\\''\n );\n }\n\n // CLI flags override --data fields\n if (options.name) evalData.name = options.name;\n if (options.description) evalData.description = options.description;\n\n // Validate evaluation criteria exist and are well-formed (B2: --data defense)\n // Empty or missing criteria is EVAL_INCOMPLETE — reject client-side before any API call.\n const criteria = evalData.evalConfig?.criteria;\n if (!criteria || !Array.isArray(criteria) || criteria.length === 0) {\n // Always throw — suggest --guided for workflow\n let fieldsHint = '';\n try {\n const client = await getSDKClient();\n const prompt = await client.getPrompt(promptId);\n if (prompt.outputSchema && typeof prompt.outputSchema === 'object') {\n const props = (prompt.outputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n const fields = Object.keys(props as Record<string, unknown>);\n if (fields.length > 0) {\n fieldsHint = `\\nDetected output fields from prompt schema: ${fields.join(', ')}\\n`;\n }\n }\n }\n } catch {\n // Best-effort — don't block on fetch failure\n }\n throw new MutagentError(\n 'EVAL_INCOMPLETE',\n 'Evaluation criteria are required and cannot be empty. Provide at least one criterion via --data.',\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json\\n' +\n fieldsHint +\n '\\nExample JSON (--data flag):\\n' +\n ' --data \\'{\"evalConfig\":{\"criteria\":[{\"name\":\"Accuracy\",\"description\":\"...\",\"evaluationParameter\":\"classification\"}]}}\\'\\n'\n );\n }\n for (const c of criteria as Record<string, unknown>[]) {\n // Accept both new format (description/evaluationParameter) and legacy (scoringRubric/targetField)\n // Normalize legacy fields to new format for storage FIRST\n if (c.scoringRubric && !c.description) {\n c.description = c.scoringRubric;\n delete c.scoringRubric;\n }\n if (c.targetField && !c.evaluationParameter) {\n const tf = c.targetField as string;\n c.evaluationParameter = tf.startsWith('output.') ? tf.slice('output.'.length)\n : tf.startsWith('input.') ? tf.slice('input.'.length) : tf;\n delete c.targetField;\n }\n\n const hasDescription = c.description;\n const hasEvalParam = c.evaluationParameter;\n if (!c.name || !hasDescription || !hasEvalParam) {\n const cName = typeof c.name === 'string' ? c.name : 'unnamed';\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Criterion \"${cName}\" is missing required fields. Need: name, description, evaluationParameter.`,\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Then: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n }\n\n // Detect duplicate evaluationParameter values\n const seenParams = new Set<string>();\n const duplicateParams: string[] = [];\n for (const c of criteria as { evaluationParameter?: string }[]) {\n const param = c.evaluationParameter;\n if (param) {\n if (seenParams.has(param)) {\n duplicateParams.push(param);\n }\n seenParams.add(param);\n }\n }\n if (duplicateParams.length > 0) {\n // Best-effort: fetch prompt outputSchema to show available fields\n let availableFields: string[] = [];\n try {\n const client = await getSDKClient();\n const prompt = await client.getPrompt(promptId);\n if (prompt.outputSchema && typeof prompt.outputSchema === 'object') {\n const props = (prompt.outputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n availableFields = Object.keys(props as Record<string, unknown>);\n }\n }\n } catch {\n // Best-effort — don't block on fetch failure\n }\n const uniqueDupes = [...new Set(duplicateParams)];\n const fieldsHint = availableFields.length > 0\n ? `\\nAvailable output fields: ${availableFields.join(', ')}`\n : '';\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Duplicate evaluationParameter: \"${uniqueDupes.join('\", \"')}\". Each criterion must target a unique output field.`,\n 'Run: mutagent prompts evaluation create --help\\n' +\n 'Each criterion scores a different output field. Fix by changing the evaluationParameter to a unique field.' +\n fieldsHint +\n '\\n\\nExample:\\n --data \\'{\"evalConfig\":{\"criteria\":[' +\n '{\"name\":\"Accuracy\",\"description\":\"...\",\"evaluationParameter\":\"classification\"},' +\n '{\"name\":\"Confidence\",\"description\":\"...\",\"evaluationParameter\":\"confidence\"}' +\n ']}}\\''\n );\n }\n\n // Validate criteria cover ALL schema fields (input + output)\n const schemaClient = await getSDKClient();\n const prompt = await schemaClient.getPrompt(promptId);\n const requiredFields: { field: string; source: string }[] = [];\n\n if (prompt.inputSchema && typeof prompt.inputSchema === 'object') {\n const props = (prompt.inputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n for (const field of Object.keys(props as Record<string, unknown>)) {\n requiredFields.push({ field, source: 'inputSchema' });\n }\n }\n }\n if (prompt.outputSchema && typeof prompt.outputSchema === 'object') {\n const props = (prompt.outputSchema as Record<string, unknown>).properties;\n if (props && typeof props === 'object') {\n for (const field of Object.keys(props as Record<string, unknown>)) {\n requiredFields.push({ field, source: 'outputSchema' });\n }\n }\n }\n\n if (requiredFields.length > 0) {\n const coveredParams = new Set(\n (criteria as { evaluationParameter?: string }[]).map(c => c.evaluationParameter)\n );\n const missing = requiredFields.filter(f => !coveredParams.has(f.field));\n if (missing.length > 0) {\n const missingList = missing.map(m => `${m.field} (${m.source})`).join(', ');\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Evaluation criteria are INCOMPLETE. Missing fields: ${missingList}`,\n 'Each input and output schema field MUST have a corresponding criterion.\\n' +\n `Total required: ${requiredFields.length}, provided: ${coveredParams.size}\\n` +\n 'Run: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n }\n\n // Validate evaluationParameter values match actual schema fields\n if (requiredFields.length > 0) {\n const validFieldNames = new Set(requiredFields.map(f => f.field));\n const invalidParams = (criteria as { evaluationParameter?: string; name?: string }[])\n .filter(c => c.evaluationParameter && !validFieldNames.has(c.evaluationParameter));\n if (invalidParams.length > 0) {\n const invalidList = invalidParams.map(c => `\"${c.evaluationParameter}\" (criterion: ${c.name})`).join(', ');\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Invalid evaluationParameter(s): ${invalidList}. Must match a schema field.`,\n `Available fields: ${requiredFields.map(f => f.field).join(', ')}\\n` +\n 'Run: mutagent prompts evaluation create ' + promptId + ' --guided --json'\n );\n }\n }\n\n // Adapt validated CLI-shaped criteria to canonical wire/storage shape\n // BEFORE sending to the BE. CLI input keeps {name, description,\n // evaluationParameter} for the user; canonical {criteria, ...} on the wire.\n if (evalData.evalConfig && Array.isArray((evalData.evalConfig as { criteria?: unknown }).criteria)) {\n const cliCriteria = (evalData.evalConfig as { criteria: CliCriterion[] }).criteria;\n (evalData.evalConfig as { criteria: unknown }).criteria =\n cliCriteriaArrayToCanonical(cliCriteria);\n }\n\n const client = await getSDKClient();\n const evalResult = await client.createEvaluation(promptId, evalData);\n\n if (isJson) {\n const criteriaLen = (evalData.evalConfig?.criteria as unknown[] | undefined)?.length ?? 0;\n let rsState: ResourceState | undefined;\n try {\n const datasets = await client.listDatasets(promptId);\n rsState = { datasets: datasets.length };\n } catch { /* non-critical */ }\n const directive = evaluationCreatedDirective(promptId, evalResult.id, evalResult.name, criteriaLen, rsState);\n output.output({\n ...evalResult,\n _links: evaluationLinks(promptId, evalResult.id),\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Created evaluation: ${evalResult.name} (id: ${String(evalResult.id)})`);\n const hints = formatCreationHints({\n resourceType: 'Evaluation',\n id: evalResult.id,\n name: evalResult.name,\n dashboardUrl: evaluationLink(promptId, evalResult.id),\n apiPath: `/api/prompts/${promptId}/evaluations/${String(evalResult.id)}`,\n });\n console.log(hints);\n }\n\n // Auto-update mutation context\n const criteriaCount = (evalData.evalConfig?.criteria as unknown[] | undefined)?.length ?? 0;\n updateMutationContext(ctx => {\n ctx.addEvaluation(evalResult.name, criteriaCount, String(evalResult.id), promptId);\n });\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete evaluation\n evaluation\n .command('delete')\n .description('Delete an evaluation')\n .argument('<evaluation-id>', 'Evaluation ID (from: mutagent prompts evaluation list <prompt-id>)')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id>\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id> --force\n ${chalk.dim('$')} mutagent prompts evaluation delete <evaluation-id> --force --json\n `)\n .action(async (evaluationId: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // In --json mode, auto-skip confirmation. Otherwise require --force.\n if (!options.force && !isJson) {\n throw new MutagentError(\n 'CONFIRMATION_REQUIRED',\n `Deleting evaluation ${evaluationId} requires confirmation`,\n `Run: mutagent prompts evaluation delete --help\\n` +\n `[Agent: Ask the user to confirm via MultiChoice, then pass --force]\\n` +\n `Use --force to confirm: mutagent prompts evaluation delete ${evaluationId} --force`\n );\n }\n\n const client = await getSDKClient();\n try {\n await client.deleteEvaluation(evaluationId);\n } catch (deleteError) {\n // 404 = already deleted = idempotent success\n if (deleteError instanceof ApiError && deleteError.statusCode === 404) {\n if (isJson) {\n const directive = evaluationDeletedDirective(evaluationId);\n output.output({ success: true, deletedId: evaluationId, _links: { dashboard: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Evaluation ${evaluationId} already deleted (idempotent)`);\n }\n return;\n }\n throw deleteError;\n }\n\n if (isJson) {\n const directive = evaluationDeletedDirective(evaluationId);\n output.output({ success: true, deletedId: evaluationId, _links: { dashboard: promptsDashboardLink() }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n output.success(`Evaluation ${evaluationId} deleted successfully`);\n output.info(`View evaluations: ${promptsDashboardLink()}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Run evaluation (playground eval) - extracted to evaluations-run.ts to stay under 500-line limit\n registerEvaluationRunCommand(evaluation, prompts);\n}\n",
25
27
  "/**\n * @fileoverview Resolve a prompt group UUID to a numeric prompt ID.\n * @module @mutagent/cli/lib/resolve-prompt-id\n *\n * Several API resources (datasets, evaluations, optimization jobs)\n * reference their owning prompt by `promptGroupId` (a UUID for the\n * prompt family). The MutagenT UI v2, however, routes prompts by\n * their numeric `id` (the latest version of the family):\n *\n * /prompts/:id → parseInt(id) → numeric prompt id\n *\n * This helper resolves a `promptGroupId` to the numeric `id` of the\n * latest prompt in that group, so CLI deep links open the right page.\n */\nimport type { Prompt } from '../types/api.js';\n\n/**\n * Minimal client surface required by `resolveNumericPromptId`.\n * Defined locally to avoid coupling this helper to `SDKClientWrapper`,\n * which makes the helper trivially testable with a stub.\n */\nexport interface PromptListClient {\n listPrompts(): Promise<Prompt[]>;\n}\n\n/**\n * Resolve a prompt group UUID to the numeric `id` of the latest\n * prompt version in the group.\n *\n * Selection rule:\n * 1. Among prompts matching `promptGroupId`, prefer the one flagged `isLatest`.\n * 2. Otherwise, pick the most recently updated (by `updatedAt`).\n * 3. If no prompts exist for the group, return `null` (orphaned resource).\n *\n * Never throws — callers must handle `null` and fall back gracefully\n * (e.g. to a generic dashboard link).\n *\n * @param client - Anything with a `listPrompts()` method (real SDK or stub).\n * @param promptGroupId - The UUID of the prompt family.\n * @returns The numeric prompt id, or `null` if no prompts in the group.\n */\nexport async function resolveNumericPromptId(\n client: PromptListClient,\n promptGroupId: string,\n): Promise<number | null> {\n if (!promptGroupId) return null;\n\n let prompts: Prompt[];\n try {\n prompts = await client.listPrompts();\n } catch {\n // Best-effort: never block link generation on a list failure.\n return null;\n }\n\n const matches = prompts.filter((p) => p.promptGroupId === promptGroupId);\n if (matches.length === 0) return null;\n\n const latestFlagged = matches.find((p) => p.isLatest);\n if (latestFlagged) return latestFlagged.id;\n\n // Fallback: most recently updated\n const sorted = [...matches].sort((a, b) => {\n const ta = a.updatedAt ? new Date(a.updatedAt).getTime() : 0;\n const tb = b.updatedAt ? new Date(b.updatedAt).getTime() : 0;\n return tb - ta;\n });\n return sorted[0]?.id ?? null;\n}\n",
26
- "import { getSDKClient } from '../../lib/sdk-client.js';\n\ninterface FieldInfo {\n field: string;\n source: 'inputSchema' | 'outputSchema';\n fieldSchema?: { type?: string; description?: string };\n}\n\nexport interface GuidedWorkflowResult {\n prompt: { id: string; name: string };\n inputSchema: { fields: string[] };\n outputSchema: { fields: string[] };\n workflow: {\n description: string;\n steps: { step: number; action: string; detail: string }[];\n criteriaTemplate: Record<string, unknown>;\n exampleCommand: string;\n };\n askUserQuestions: {\n question: string;\n header: string;\n options: { label: string; description: string }[];\n multiSelect: boolean;\n context: Record<string, unknown>;\n }[];\n _directive: {\n display: string;\n instruction: string;\n aiAgentDecisionTree: Record<string, string>;\n };\n _meta: { inputFields: string[]; outputFields: string[]; allFields: FieldInfo[] };\n}\n\n/**\n * Build a guided workflow object for a prompt's evaluation.\n * Fetches prompt schemas and optional dataset examples to construct\n * a structured workflow that agents use to collect rubrics from users.\n */\nexport async function buildGuidedWorkflow(promptId: string): Promise<GuidedWorkflowResult> {\n const client = await getSDKClient();\n const prompt = await client.getPrompt(promptId);\n\n const truncate = (s: string, max: number): string => s.length > max ? s.slice(0, max) + '...' : s;\n\n const outputProperties = prompt.outputSchema && typeof prompt.outputSchema === 'object'\n ? ((prompt.outputSchema as Record<string, unknown>).properties ?? {}) as Record<string, { type?: string; description?: string }>\n : {} as Record<string, { type?: string; description?: string }>;\n const inputProperties = prompt.inputSchema && typeof prompt.inputSchema === 'object'\n ? ((prompt.inputSchema as Record<string, unknown>).properties ?? {}) as Record<string, { type?: string; description?: string }>\n : {} as Record<string, { type?: string; description?: string }>;\n\n const inputFields = Object.keys(inputProperties);\n const outputFields = Object.keys(outputProperties);\n\n const allFields: FieldInfo[] = [\n ...inputFields.map(f => ({ field: f, source: 'inputSchema' as const, fieldSchema: inputProperties[f] })),\n ...outputFields.map(f => ({ field: f, source: 'outputSchema' as const, fieldSchema: outputProperties[f] })),\n ];\n\n // Fetch a dataset example if available (non-critical)\n let datasetExample: Record<string, unknown> | null = null;\n try {\n const datasets = await client.listDatasets(promptId);\n if (datasets.length > 0) {\n try {\n const dsId = datasets[0]?.id;\n const items = dsId != null ? await client.listDatasetItems(String(dsId)) : [];\n if (items.length > 0) {\n const firstItem = items[0];\n datasetExample = ((firstItem?.expectedOutput ?? firstItem?.input) ?? null) as Record<string, unknown> | null;\n }\n } catch {\n // listDatasetItems may not exist yet — non-critical\n }\n }\n } catch { /* non-critical */ }\n\n const askUserQuestions = allFields.map(({ field, source, fieldSchema }) => {\n const isInput = source === 'inputSchema';\n const question = isInput\n ? `Define the Minimum Viable Context for \"${field}\". What data MUST be present in this input for the prompt to produce a correct output? Describe what constitutes complete vs incomplete input, and WHY this field matters.`\n : `Define what correct \"${field}\" looks like. What structure, content, or qualities make it good vs bad? Give concrete examples of good and bad outputs.`;\n const hint = isInput\n ? `Input fields define what data the prompt NEEDS to work correctly. Without defining minimum viable context, the optimizer cannot detect whether failures come from bad input or bad prompt logic.`\n : null;\n const header = isInput ? `${field} [INPUT]` : `${field} [OUTPUT]`;\n const defineDesc = isInput\n ? `Describe what data MUST be present in \"${field}\" and WHY the prompt needs it. Focus on completeness and minimum viable context.`\n : `Describe what a correct vs incorrect \"${field}\" looks like. Focus on structure, content quality, and concrete examples — not numeric scores.`;\n\n return {\n question,\n header,\n ...(hint != null ? { hint } : {}),\n options: [\n {\n label: 'Define rubric',\n description: defineDesc,\n },\n {\n label: 'See suggestion',\n description: `Get a suggested rubric based on the prompt and schema definition for \"${field}\". You can refine it.`,\n },\n ],\n multiSelect: false,\n context: {\n fieldType: fieldSchema?.type ?? 'unknown',\n fieldDescription: fieldSchema?.description ?? null,\n fieldSource: source,\n promptExcerpt: truncate(prompt.humanPrompt ?? prompt.systemPrompt ?? prompt.rawPrompt ?? '', 200),\n exampleValue: datasetExample?.[field] ?? null,\n },\n };\n });\n\n return {\n prompt: { id: promptId, name: prompt.name },\n inputSchema: { fields: inputFields },\n outputSchema: { fields: outputFields },\n workflow: {\n description: 'Follow these steps to create an evaluation for this prompt:',\n steps: [\n { step: 1, action: 'Review prompt schemas and context', detail: 'Understand what the prompt does and what each field means.' },\n { step: 2, action: 'Define correctness criteria for EVERY field', detail: `For EACH of the ${String(allFields.length)} fields in askUserQuestions, use AskUserQuestion to collect a rubric. INPUT fields (${String(inputFields.length)}): collect minimum viable context definitions — what data MUST exist. OUTPUT fields (${String(outputFields.length)}): collect correctness criteria — what correct vs incorrect looks like. Do NOT skip any field. Use the context hints to suggest rubrics when asked.` },\n { step: 3, action: 'Build criteria JSON', detail: 'Map each rubric to: { name: field, description: rubric, evaluationParameter: field }' },\n { step: 4, action: 'Ask for evaluation name', detail: 'Ask user what to name this evaluation' },\n { step: 5, action: 'Create the evaluation', detail: `mutagent prompts evaluation create ${promptId} --name \"<name>\" -d '<json>' --json` },\n ],\n criteriaTemplate: {\n evalConfig: {\n criteria: [{\n name: '<criterion_name>',\n description: '<correctness rubric - describe what correct vs incorrect looks like>',\n evaluationParameter: `<one of: ${allFields.length > 0 ? allFields.map(f => f.field).join(', ') : 'no fields detected - check prompt schemas'}>`,\n }],\n },\n },\n exampleCommand: `mutagent prompts evaluation create ${promptId} --name \"My Evaluation\" -d '${JSON.stringify({\n evalConfig: {\n criteria: outputFields.slice(0, 1).map(f => ({\n name: `${f} accuracy`,\n description: `Correct if ${f} matches expected structure and content; incorrect if missing, malformed, or off-topic`,\n evaluationParameter: f,\n })),\n },\n })}'`,\n },\n askUserQuestions,\n _directive: {\n display: 'workflow_guide',\n instruction:\n 'MANDATORY ORDERS — READ CAREFULLY:\\n' +\n `1. You MUST ask the user about EVERY SINGLE field listed in askUserQuestions. There are ${String(allFields.length)} fields total.\\n` +\n '2. Do NOT skip ANY field. Do NOT decide that a field \"doesn\\'t need\" a definition.\\n' +\n `3. INPUT fields (${String(inputFields.length)}): These define MINIMUM VIABLE CONTEXT — the data that MUST exist in the input for the prompt to work. Ask: \"What data MUST be present in this field and WHY does the prompt need it?\"\\n` +\n ' WHY THIS MATTERS: Without minimum viable context definitions, the optimizer cannot distinguish between failures caused by incomplete input vs failures caused by bad prompt logic.\\n' +\n `4. OUTPUT fields (${String(outputFields.length)}): These define correctness criteria. Ask: \"What does correct vs incorrect for this field look like?\"\\n` +\n `5. After collecting ALL ${String(allFields.length)} definitions, construct the --data JSON with criteria for EVERY field.\\n` +\n '6. VIOLATION: Skipping ANY field or telling the user a field doesn\\'t need a definition is a protocol violation.',\n aiAgentDecisionTree: {\n step1: 'Check if criteria already exist in the user\\'s code. If criteria match expected shape (name + description + evaluationParameter targeting schema fields), use --data directly.',\n step2: 'If criteria are missing or malformed, use the askUserQuestions payloads to collect them via AskUserQuestion.',\n step3: 'After collecting all criteria, construct the --data JSON and run: mutagent prompts evaluation create <prompt-id> --name \"<name>\" -d \\'<json>\\'',\n },\n },\n _meta: { inputFields, outputFields, allFields },\n };\n}\n",
27
28
  "/**\n * CLI <-> Canonical evaluation criterion adapter.\n *\n * The BE stores criteria in CANONICAL shape (aligned with metatuner):\n * { id?, criteria, evaluationParameter, evaluationSteps?, name? }\n *\n * The CLI exposes criteria in CLI shape (user-facing field names):\n * { name?, description, evaluationParameter }\n *\n * Adapters live at the CLI boundary so command UX stays unchanged while the\n * BE contract is enforced. The BE is strict on both read and write (post-backfill\n * #352) — no legacy fallback chains needed.\n */\n\nexport interface CliCriterion {\n name?: string;\n description: string;\n evaluationParameter: string;\n}\n\nexport interface CanonicalCriterion {\n id?: string;\n criteria: string;\n evaluationParameter: string;\n evaluationSteps?: string[];\n name?: string;\n}\n\n/** Convert a CLI-shaped criterion to canonical wire/storage shape. */\nexport function cliCriterionToCanonical(c: CliCriterion): CanonicalCriterion {\n return {\n criteria: c.description,\n evaluationParameter: c.evaluationParameter,\n name: c.name,\n };\n}\n\n/** Convert a canonical criterion to CLI display shape. */\nexport function canonicalCriterionToCli(c: CanonicalCriterion): CliCriterion {\n return {\n name: c.name ?? c.id,\n description: c.criteria,\n evaluationParameter: c.evaluationParameter,\n };\n}\n\nexport function cliCriteriaArrayToCanonical(arr: CliCriterion[]): CanonicalCriterion[] {\n if (!Array.isArray(arr)) return [];\n return arr.map(cliCriterionToCanonical);\n}\n\nexport function canonicalCriteriaArrayToCli(arr: CanonicalCriterion[] | undefined | null): CliCriterion[] {\n if (!Array.isArray(arr)) return [];\n return arr.map(canonicalCriterionToCli);\n}\n",
28
29
  "import { 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 { playgroundLink } from '../../lib/ui-links.js';\n\ninterface EvaluationRunOptions {\n evaluation: string;\n input: string;\n execModel: string;\n evalModel?: string;\n}\n\n/**\n * Register the `evaluation run` subcommand on the `evaluation` Command node.\n * Extracted to keep evaluations.ts under the 500-line limit.\n */\nexport function registerEvaluationRunCommand(evaluation: Command, prompts: Command): void {\n evaluation\n .command('run')\n .description('Run a prompt against an evaluation (playground eval)')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .requiredOption('-e, --evaluation <id>', 'Evaluation ID to score against')\n .requiredOption('--input <json>', 'Input JSON object for the prompt (e.g. \\'{\"text\":\"hello\"}\\')')\n .requiredOption('--exec-model <model>', 'Model to use for generating the response (e.g. \"claude-sonnet-4-5-20250929\")')\n .option('--eval-model <model>', 'Model to use for evaluation scoring (defaults to exec-model)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts evaluation run <prompt-id> --evaluation <eval-id> --input '{\"text\":\"hello\"}' --exec-model claude-sonnet-4-5-20250929\n ${chalk.dim('$')} mutagent prompts evaluation run <prompt-id> -e <eval-id> --input '{\"text\":\"hello\"}' --exec-model claude-sonnet-4-5-20250929 --eval-model gpt-4o\n ${chalk.dim('$')} mutagent prompts evaluation run <prompt-id> -e <eval-id> --input '{\"text\":\"hello\"}' --exec-model claude-sonnet-4-5-20250929 --json\n\n${chalk.yellow('AI Agent note:')} Always pass --json for structured output.\n${chalk.dim('Response includes evaluation score, pass/fail, token usage, and dashboard links.')}\n `)\n .action(async (promptId: string, options: EvaluationRunOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Validate input JSON\n let parsedInput: Record<string, unknown>;\n try {\n const raw: unknown = JSON.parse(options.input);\n if (typeof raw !== 'object' || raw === null || Array.isArray(raw)) {\n throw new MutagentError(\n 'INVALID_JSON',\n `--input must be a JSON object, got ${Array.isArray(raw) ? 'array' : typeof raw}`,\n 'Run: mutagent prompts evaluation run --help\\n' +\n 'Provide a JSON object: --input \\'{\"field\": \"value\"}\\''\n );\n }\n parsedInput = raw as Record<string, unknown>;\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --input flag',\n 'Run: mutagent prompts evaluation run --help\\n' +\n 'Provide valid JSON: --input \\'{\"text\": \"hello\"}\\''\n );\n }\n\n const evaluationId = parseInt(options.evaluation, 10);\n if (isNaN(evaluationId)) {\n throw new MutagentError(\n 'VALIDATION_ERROR',\n `Invalid evaluation ID: \"${options.evaluation}\" (must be numeric)`,\n 'Run: mutagent prompts evaluation list <prompt-id> to find valid IDs'\n );\n }\n\n const llmConfig: Record<string, unknown> = {\n model: options.execModel,\n ...(options.evalModel ? { evalModel: options.evalModel } : {}),\n };\n\n const client = await getSDKClient();\n const result = await client.playgroundEval(promptId, {\n input: parsedInput,\n evaluationId,\n llmConfig,\n });\n\n if (isJson) {\n output.output({\n ...result,\n _links: {\n dashboard: playgroundLink(promptId),\n api: `/api/prompt/${promptId}/playground/eval`,\n },\n });\n } else {\n const evalResult = result.evaluation;\n const status = evalResult.passed ? chalk.green('PASSED') : chalk.red('FAILED');\n output.success(`Evaluation complete: ${status}`);\n output.info(`Score: ${evalResult.score.toFixed(3)}`);\n if (evalResult.reasoning) {\n output.info(`Reasoning: ${evalResult.reasoning}`);\n }\n if (typeof result.response === 'string') {\n output.info(`Response: ${result.response.substring(0, 200)}${result.response.length > 200 ? '...' : ''}`);\n }\n output.info(`Latency: ${String(result.metadata.latencyMs)}ms`);\n if (result.metadata.tokens) {\n const t = result.metadata.tokens;\n output.info(`Tokens: prompt=${String(t.prompt ?? 0)}, completion=${String(t.completion ?? 0)}`);\n }\n if (evalResult.criteria && evalResult.criteria.length > 0) {\n output.info('Criteria scores:');\n for (const c of evalResult.criteria) {\n const mark = c.passed ? chalk.green('✓') : chalk.red('✗');\n output.info(` ${mark} ${c.name}: ${c.score.toFixed(3)}`);\n }\n }\n output.info(`Dashboard: ${playgroundLink(promptId)}`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
29
30
  "import { 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 { optimizerLink, promptLink, echoDirectiveToStderr } from '../../lib/ui-links.js';\nimport {\n renderScorecard, showPromptDiff,\n renderOptimizationStartCard, renderOptimizationStatusCard,\n startDirective, statusDirective,\n} from '../../lib/scorecard.js';\nimport type { Prompt } from '../../types/index.js';\nimport {\n updateMutationContext, parseValidationErrors, isSchemaEmpty,\n buildResultsScorecardText, PREREQUISITES_TEXT, checkProviderConfigured,\n} from './index.js';\n\nimport { startWatchStream, watchAction } from './optimize-watch.js';\nimport { registerOptimizeCancelCommand } from './optimize-cancel.js';\n\ninterface OptimizeStartOptions {\n dataset: string;\n evaluation: string;\n maxIterations?: string;\n targetScore?: string;\n patience?: string;\n model?: string;\n evalModel?: string;\n watch?: boolean;\n}\n\nexport function registerOptimizeCommands(prompts: Command): void {\n const optimize = new Command('optimize')\n .description('Manage prompt optimization jobs')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id>\n ${chalk.dim('$')} mutagent prompts optimize status <job-id>\n ${chalk.dim('$')} mutagent prompts optimize results <job-id>\n\nWorkflow: start -> status (poll) -> results | start --watch | watch <job-id>`)\n .action(() => {\n optimize.help();\n });\n prompts.addCommand(optimize);\n\n // Start optimization\n optimize\n .command('start')\n .description('Start prompt optimization')\n .argument('<prompt-id>', 'Prompt ID (from: mutagent prompts list)')\n .requiredOption('-d, --dataset <id>', 'Dataset ID for optimization (from: mutagent prompts dataset list <prompt-id>)')\n .requiredOption('-e, --evaluation <id>', 'Evaluation ID for scoring (from: mutagent prompts evaluation list <prompt-id>)')\n .option('--max-iterations <n>', 'Max optimization iterations (default: 1)')\n .option('--target-score <n>', 'Target accuracy 0-1 (default: 0.8)')\n .option('--patience <n>', 'Iterations without improvement before stopping')\n .option('--model <model-id>', 'Target LLM model (e.g., \"claude-sonnet-4-5-20250929\")')\n .option('--eval-model <model-id>', 'Evaluation model (defaults to target model)')\n .option('--watch', 'Watch live progress with stage cards', false)\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id>\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id> --max-iterations 5\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id> --target-score 0.95 --model claude-sonnet-4-5-20250929\n ${chalk.dim('$')} mutagent prompts optimize start <prompt-id> --dataset <dataset-id> --evaluation <eval-id> --json\n${chalk.yellow('Pre-Optimization Checklist (auto-validated by preflight):')}\n □ inputSchema REQUIRED ${chalk.dim('(hard error if missing — blocks optimization)')}\n □ outputSchema REQUIRED ${chalk.dim('(hard error if missing — blocks optimization)')}\n □ Evaluation criteria ${chalk.dim('(warns if no evaluationParameter set)')}\n □ Dataset items ${chalk.dim('(warns if expectedOutput missing)')}\n □ Criteria ↔ Schema ${chalk.dim('(warns if criteria reference unknown fields)')}\n\n${PREREQUISITES_TEXT}\n\n${chalk.dim('Monitor progress with: mutagent prompts optimize status <job-id>')}\n\n${chalk.yellow(`\\u26A0 COST WARNING \\u2014 AI Agent:\n Default is 1 iteration. Do NOT increase --max-iterations unless the user\n explicitly requests it. Each iteration incurs LLM costs. Starting with\n max-iterations > 1 without user consent is a protocol violation.`)}\n\n${chalk.yellow('AI Agent: ALWAYS append --json to this command.')}\n `)\n .action(async (promptId: string, options: OptimizeStartOptions) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n await checkProviderConfigured();\n const client = await getSDKClient();\n\n // Pre-flight validation — runs in ALL modes (JSON + interactive)\n if (!isJson) {\n output.info('Running pre-flight checks...');\n }\n\n const prompt = await client.getPrompt(promptId);\n\n // Collect all preflight check results\n const preflightChecks: Record<string, { passed: boolean; error?: string; warning?: string }> = {};\n\n // Check 1: Prompt has outputSchema (HARD ERROR)\n if (isSchemaEmpty(prompt.outputSchema)) {\n preflightChecks.outputSchema = {\n passed: false,\n error: 'Missing outputSchema. Required for optimization.',\n };\n } else {\n preflightChecks.outputSchema = { passed: true };\n }\n\n // Check 2: Prompt has inputSchema (HARD ERROR)\n if (isSchemaEmpty(prompt.inputSchema)) {\n preflightChecks.inputSchema = {\n passed: false,\n error: 'Missing inputSchema. Required for optimization.',\n };\n } else {\n preflightChecks.inputSchema = { passed: true };\n }\n\n // Check 3: Validate the specified evaluation has proper criteria\n let evaluation: { evalConfig?: { criteria?: { evaluationParameter?: string; targetField?: string; name?: string }[] } } | undefined;\n try {\n const evalObj = await client.getEvaluation(options.evaluation);\n evaluation = evalObj;\n const evalConfig = evalObj.evalConfig as { criteria?: { evaluationParameter?: string; targetField?: string }[] } | undefined;\n const criteria = evalConfig?.criteria;\n if (!criteria || criteria.length === 0) {\n // HARD ERROR: evaluation must have criteria (EVAL_INCOMPLETE gate)\n preflightChecks.evaluation = {\n passed: false,\n error: `Evaluation ${options.evaluation} has no criteria defined (EVAL_INCOMPLETE). ` +\n `Add criteria: mutagent prompts evaluation update ${options.evaluation} --criteria '<json>' --json\\n` +\n `Or guided: mutagent prompts evaluation create ${promptId} --guided --json`,\n };\n } else {\n const hasCriteriaWithParam = criteria.some((c) => c.evaluationParameter ?? c.targetField);\n if (!hasCriteriaWithParam) {\n preflightChecks.evaluation = {\n passed: true,\n warning: `Evaluation ${options.evaluation} has criteria but none have evaluationParameter set. ` +\n `Re-create: mutagent prompts evaluation create ${promptId} --guided`,\n };\n } else {\n preflightChecks.evaluation = { passed: true };\n if (!isJson) {\n output.info(`Using evaluation ${options.evaluation} with ${String(criteria.length)} criteria.`);\n }\n }\n }\n } catch (e) {\n if (e instanceof MutagentError) throw e;\n preflightChecks.evaluation = {\n passed: true,\n warning: `Could not validate evaluation ${options.evaluation}. Proceeding anyway.`,\n };\n }\n\n // Check 4: Validate dataset items have expectedOutput\n try {\n const datasetItems = await client.listDatasetItems(options.dataset);\n if (datasetItems.length === 0) {\n preflightChecks.datasetItems = {\n passed: true,\n warning: `Dataset ${options.dataset} has no items. Optimization requires test data.`,\n };\n } else {\n const missingExpected = datasetItems.filter(item => !item.expectedOutput);\n if (missingExpected.length > 0) {\n preflightChecks.datasetItems = {\n passed: true,\n warning: `${String(missingExpected.length)} of ${String(datasetItems.length)} dataset items missing expectedOutput. ` +\n 'Optimization works best when all items have expected outputs.',\n };\n } else {\n preflightChecks.datasetItems = { passed: true };\n }\n }\n } catch {\n preflightChecks.datasetItems = {\n passed: true,\n warning: `Could not validate dataset items for ${options.dataset}. Proceeding anyway.`,\n };\n }\n\n // Check 5: Validate evaluation criteria match schema fields\n if (evaluation && preflightChecks.inputSchema.passed && preflightChecks.outputSchema.passed) {\n const inputProps = (prompt.inputSchema as Record<string, unknown> | null)?.properties;\n const outputProps = (prompt.outputSchema as Record<string, unknown> | null)?.properties;\n const schemaFields = [\n ...Object.keys((inputProps as Record<string, unknown> | undefined) ?? {}),\n ...Object.keys((outputProps as Record<string, unknown> | undefined) ?? {}),\n ];\n const evalCfg = evaluation.evalConfig as { criteria?: { evaluationParameter?: string; name?: string }[] } | undefined;\n const evalCriteria = evalCfg?.criteria ?? [];\n const unmatchedCriteria = evalCriteria.filter(\n (c) => c.evaluationParameter && !schemaFields.includes(c.evaluationParameter)\n );\n if (unmatchedCriteria.length > 0) {\n const names = unmatchedCriteria.map(c => c.evaluationParameter ?? c.name).join(', ');\n preflightChecks.criteriaMatch = {\n passed: true,\n warning: `Evaluation criteria reference fields not in schema: ${names}. ` +\n `Available schema fields: ${schemaFields.join(', ') || '(none)'}`,\n };\n } else {\n preflightChecks.criteriaMatch = { passed: true };\n }\n }\n\n // Determine if any hard failures exist\n const hardFailures = Object.entries(preflightChecks).filter(\n ([, check]) => !check.passed\n );\n\n if (hardFailures.length > 0) {\n if (isJson) {\n // Structured preflight error with all results\n const suggestedActions: string[] = [];\n if (!preflightChecks.inputSchema.passed) {\n suggestedActions.push(\n 'Update the prompt with inputSchema derived from template variables.\\n' +\n `Run: mutagent prompts get ${promptId} --json\\n` +\n `Run: mutagent prompts update ${promptId} --data '{\"inputSchema\":{\"type\":\"object\",\"properties\":{\"var1\":{\"type\":\"string\"}}}}' --json`\n );\n }\n if (!preflightChecks.outputSchema.passed) {\n suggestedActions.push(\n `Update your prompt: mutagent prompts update ${promptId} -d '{\"outputSchema\":{\"type\":\"object\",\"properties\":{\"result\":{\"type\":\"string\"}}}}'`\n );\n }\n if (preflightChecks.evaluation && !preflightChecks.evaluation.passed) {\n suggestedActions.push(\n preflightChecks.evaluation.error ?? `Add criteria to evaluation ${options.evaluation}: mutagent prompts evaluation update ${options.evaluation} --criteria '<json>'`\n );\n }\n output.output({\n success: false,\n error: 'Preflight validation failed',\n code: (preflightChecks.evaluation?.error ?? '').includes('EVAL_INCOMPLETE') ? 'EVAL_INCOMPLETE' : 'PREFLIGHT_FAILED',\n suggestedAction: suggestedActions.join('\\n'),\n preflightChecks,\n });\n return;\n }\n\n // Interactive mode: print each failure\n for (const [name, check] of hardFailures) {\n console.error(chalk.red(`Error: ${name} — ${check.error ?? 'Failed'}`));\n }\n // Print suggestions\n if (!preflightChecks.outputSchema.passed) {\n console.error(chalk.dim(\n ` Update with: mutagent prompts update ${promptId} -d '{\"outputSchema\":{\"type\":\"object\",\"properties\":{\"result\":{\"type\":\"string\"}}}}'`\n ));\n }\n if (!preflightChecks.inputSchema.passed) {\n console.error(chalk.dim(\n ` Update with: mutagent prompts update ${promptId} --data '{\"inputSchema\":{\"type\":\"object\",\"properties\":{\"var1\":{\"type\":\"string\"}}}}' --json`\n ));\n }\n if (preflightChecks.evaluation && !preflightChecks.evaluation.passed) {\n console.error(chalk.dim(\n ` Add criteria: mutagent prompts evaluation update ${options.evaluation} --criteria '<json>' --json\\n` +\n ` Or guided: mutagent prompts evaluation create ${promptId} --guided --json`\n ));\n }\n process.exitCode = 1;\n return;\n }\n\n // Print warnings (non-JSON mode only)\n if (!isJson) {\n for (const [, check] of Object.entries(preflightChecks)) {\n if (check.warning) {\n output.warn(check.warning);\n }\n }\n }\n\n const job = await client.startOptimization(promptId, options.dataset, options.evaluation, {\n maxIterations: options.maxIterations ? parseInt(options.maxIterations, 10) : 1,\n targetScore: options.targetScore ? parseFloat(options.targetScore) : undefined,\n patience: options.patience ? parseInt(options.patience, 10) : undefined,\n model: options.model,\n evalModel: options.evalModel,\n });\n\n if (isJson) {\n const directive = startDirective(job, promptId, options.dataset, options.evaluation);\n output.output({\n ...job,\n _links: {\n dashboard: optimizerLink(promptId, job.id),\n api: `/api/prompts/${promptId}/optimizations/${job.id}`,\n },\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n renderOptimizationStartCard({ job, promptId, datasetId: options.dataset });\n }\n\n // Stream live updates if --watch was specified\n if (options.watch) {\n const maxIter = options.maxIterations ? parseInt(options.maxIterations, 10) : 1;\n await startWatchStream(job.id, isJson, maxIter);\n }\n } catch (error) {\n // Enhanced error handling: parse validation errors for actionable messages\n if (error instanceof ApiError) {\n const messages = parseValidationErrors(error);\n const errorText = messages.join(' ');\n\n // Pattern-match known pipeline errors for actionable guidance\n const suggestions: string[] = [];\n if (errorText.includes('Output Schema is not present') || errorText.includes('outputSchema')) {\n suggestions.push(`Update prompt: mutagent prompts update ${promptId} -d '{\"outputSchema\":{\"type\":\"object\",\"properties\":{...}}}'`);\n }\n if (errorText.includes('Outputs are not valid') || errorText.includes('Parameters Mismatch')) {\n suggestions.push('Dataset items may not match the prompt schema. Check expectedOutput fields in your dataset.');\n }\n if (errorText.includes('Inputs are not valid')) {\n suggestions.push(\"Dataset item inputs don't match the prompt's inputSchema. Verify field names and types.\");\n }\n if (errorText.includes('has no items') || (errorText.includes('Dataset') && errorText.includes('not found'))) {\n suggestions.push(`Upload data: mutagent prompts dataset add ${promptId} -d '[...]' --name \"my-dataset\"`);\n }\n if (errorText.includes('Evaluations are not present')) {\n suggestions.push(`Create evaluation: mutagent prompts evaluation create ${promptId} --guided`);\n }\n if (errorText.includes('NO_PROVIDER_CONFIGURED') || errorText.includes('No LLM provider configured')) {\n // NOTE: This catch fires for BE-returned 428 errors surfacing as ApiError.\n // The CLI pre-flight (checkProviderConfigured) throws MutagentError directly\n // and is handled by the outer error formatter — not reached here.\n suggestions.push('Run: mutagent providers add --provider openai --name \"My OpenAI\" --api-key $KEY');\n suggestions.push('Or visit: https://app.mutagent.io/settings/providers');\n }\n\n if (!isJson) {\n console.error(chalk.red('\\nOptimization failed:'));\n for (const msg of messages) {\n console.error(chalk.red(` ${msg}`));\n }\n if (suggestions.length > 0) {\n console.error(chalk.yellow('\\nSuggested fixes:'));\n for (const s of suggestions) {\n console.error(chalk.yellow(` → ${s}`));\n }\n }\n console.error('');\n console.error(PREREQUISITES_TEXT);\n }\n }\n handleError(error, isJson);\n }\n });\n\n // Optimization status\n optimize\n .command('status')\n .description('Check optimization status')\n .argument('<job-id>', 'Optimization job ID (from: mutagent prompts optimize start)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize status <job-id>\n ${chalk.dim('$')} mutagent prompts optimize status <job-id> --json\n `)\n .action(async (jobId: string) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const status = await client.getOptimizationStatus(jobId);\n\n if (isJson) {\n const statusPromptId = (status as unknown as Record<string, unknown>).promptId as string | undefined;\n const directive = statusDirective(status, statusPromptId);\n output.output({\n ...status,\n _links: { optimizer: optimizerLink(statusPromptId ?? jobId, jobId) },\n _directive: directive,\n });\n echoDirectiveToStderr(directive);\n } else {\n renderOptimizationStatusCard(status);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Optimization results\n optimize\n .command('results')\n .description('Get optimization results')\n .argument('<job-id>', 'Optimization job ID (from: mutagent prompts optimize start)')\n .option('--apply', 'Apply the optimized prompt as new version')\n .option('--diff', 'Show the prompt diff (before/after)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> ${chalk.dim('# view scorecard')}\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> --diff ${chalk.dim('# view prompt diff')}\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> --apply ${chalk.dim('# apply optimized prompt')}\n ${chalk.dim('$')} mutagent prompts optimize results <job-id> --json ${chalk.dim('# structured output')}\n\nAfter viewing results:\n --apply Apply the optimized prompt (replaces current version)\n --diff Show detailed before/after diff\n ${chalk.dim('No flag = view scorecard only.')}\n\n ${chalk.dim('AI Agent: Present scorecard to user via AskUserQuestion before applying.')}\n `)\n .action(async (jobId: string, options: { apply?: boolean; diff?: boolean }) => {\n const isJson = getJsonFlag(prompts);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const results = await client.getOptimizationResults(jobId);\n const resultData = results as Record<string, unknown>;\n\n if (isJson) {\n const jobData = resultData.job as Record<string, unknown> | undefined;\n const isCompleted = jobData?.status === 'completed';\n const scorecardText = buildResultsScorecardText(resultData);\n const directive = {\n display: 'scorecard',\n instruction:\n 'HARD STOP — DO NOT PROCEED.\\n' +\n 'The scorecard below appears in bash/terminal output. That is NOT sufficient.\\n' +\n 'You MUST copy the FULL renderedCard text into your chat response VERBATIM.\\n' +\n 'Then use AskUserQuestion with options: [Apply optimized prompt / View full diff / Reject and keep original].\\n' +\n 'Do NOT auto-apply.',\n renderedCard: scorecardText,\n next: isCompleted ? [\n `mutagent prompts optimize results ${jobId} --apply --json`,\n `mutagent prompts optimize results ${jobId} --diff --json`,\n ] : [],\n };\n const resultsPromptId = (jobData?.promptId as string | number | undefined) ?? jobId;\n output.output({ ...resultData, _links: { optimizer: optimizerLink(resultsPromptId, jobId) }, _directive: directive });\n echoDirectiveToStderr(directive);\n } else {\n // Render scorecard\n renderScorecard(resultData as unknown as Parameters<typeof renderScorecard>[0]);\n\n const jobData = resultData.job as Record<string, unknown> | undefined;\n const isCompleted = jobData?.status === 'completed';\n\n // Show diff if requested\n if (options.diff) {\n const original = (resultData.originalPrompt as Partial<Prompt> | undefined);\n const optimized = resultData.prompt as Partial<Prompt> | undefined;\n showPromptDiff(\n original?.systemPrompt ?? original?.rawPrompt ?? null,\n optimized?.systemPrompt ?? optimized?.rawPrompt ?? null,\n );\n }\n\n // Apply optimized prompt if requested\n if (options.apply && isCompleted) {\n const optimizedPrompt = resultData.prompt as Partial<Prompt> | undefined;\n const promptIdStr = String(jobData.promptId);\n if (optimizedPrompt && promptIdStr) {\n output.info('Applying optimized prompt...');\n const updateData: Partial<Prompt> = {};\n if (optimizedPrompt.systemPrompt) updateData.systemPrompt = optimizedPrompt.systemPrompt;\n if (optimizedPrompt.humanPrompt) updateData.humanPrompt = optimizedPrompt.humanPrompt;\n if (optimizedPrompt.rawPrompt) updateData.rawPrompt = optimizedPrompt.rawPrompt;\n\n await client.updatePrompt(promptIdStr, updateData);\n output.success('Optimized prompt applied as new version!');\n output.info(`View prompt: ${promptLink(promptIdStr)}`);\n\n updateMutationContext(ctx => {\n ctx.markPromptUploaded(\n `optimization:${jobId}`,\n promptIdStr,\n 'optimized',\n );\n });\n }\n } else if (options.apply && !isCompleted) {\n output.error('Cannot apply — optimization is not yet completed.');\n } else if (isCompleted && !options.apply) {\n // Show available actions (non-interactive)\n output.info('Actions:');\n output.info(` Apply optimized prompt: mutagent prompts optimize results ${jobId} --apply`);\n output.info(` View diff: mutagent prompts optimize results ${jobId} --diff`);\n output.info(' Reject (keep original): no action needed');\n } else if (!isCompleted) {\n const statusStr = (jobData?.status as string | undefined) ?? 'unknown';\n output.info(`Job status: ${statusStr}. Results may be partial.`);\n const viewPromptId = (jobData?.promptId as string | number | undefined) ?? jobId;\n output.info(`View: ${optimizerLink(viewPromptId, jobId)}`);\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Cancel optimization - extracted to optimize-cancel.ts to stay under 500-line limit\n registerOptimizeCancelCommand(optimize, prompts);\n\n // Watch optimization progress\n optimize\n .command('watch')\n .description('Watch optimization job progress with live stage results')\n .argument('<job-id>', 'Optimization job ID')\n .option('--json', 'Output as JSON with agent directives')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent prompts optimize watch <job-id>\n ${chalk.dim('$')} mutagent prompts optimize watch <job-id> --json\n${chalk.dim('Completed jobs render stored results. Running jobs stream via WebSocket.')}`)\n .action(async (jobId: string, options: { json?: boolean }) => {\n await watchAction(jobId, options, prompts);\n });\n}\n",
@@ -44,8 +45,9 @@
44
45
  "import { readFileSync, existsSync } from 'fs';\nimport type { FrameworkIntegration, DetectionResult, IntegrationConfig } from './types.js';\n\ninterface PackageJson {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n}\n\nexport const vercelAiIntegration: FrameworkIntegration = {\n name: 'vercel-ai',\n description: 'Vercel AI SDK',\n\n detect(): Promise<DetectionResult> {\n let hasAiSdk = false;\n\n if (existsSync('package.json')) {\n try {\n const pkg = JSON.parse(readFileSync('package.json', 'utf-8')) as PackageJson;\n const deps: Record<string, string> = { ...pkg.dependencies, ...pkg.devDependencies };\n hasAiSdk = 'ai' in deps;\n } catch {\n // Ignore\n }\n }\n\n return Promise.resolve({\n detected: hasAiSdk,\n confidence: hasAiSdk ? 0.9 : 0,\n files: hasAiSdk ? ['package.json'] : [],\n });\n },\n\n generate(config: IntegrationConfig): Promise<string> {\n return Promise.resolve(`---\nname: mutagent-vercel-ai-integration\ndescription: Integrate MutagenT with Vercel AI SDK for streaming and edge functions\nframework: vercel-ai\nversion: 2.0.0\n---\n\n# MutagenT + Vercel AI SDK Integration\n\n## Prerequisites Verification\n\n- MUTAGENT_API_KEY: ${config.apiKey.slice(0, 8)}...${config.apiKey.slice(-4)}\n- MUTAGENT_ENDPOINT: ${config.endpoint}\n- API Connection: Verified\n\n## Installation\n\n\\`\\`\\`bash\nbun add @mutagent/vercel-ai @mutagent/sdk @opentelemetry/sdk-trace-node @opentelemetry/sdk-trace-base\n# or\nnpm install @mutagent/vercel-ai @mutagent/sdk @opentelemetry/sdk-trace-node @opentelemetry/sdk-trace-base\n\\`\\`\\`\n\n## Option A: OpenTelemetry (Recommended)\n\nFollows the same pattern as Langfuse, Braintrust, SigNoz, and other major observability providers.\nUses \\`MutagentSpanExporter\\` as a standard OTel SpanProcessor — no model wrapping required.\n\n\\`\\`\\`typescript\nimport { generateText } from 'ai';\nimport { openai } from '@ai-sdk/openai';\nimport { MutagentSpanExporter } from '@mutagent/vercel-ai';\nimport { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';\nimport { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base';\n\n// NOTE: OpenTelemetry v2.x required. The v1 API (addSpanProcessor) was removed.\n// Users on OTel v1 should upgrade or use createMutagentMiddleware() alternative.\n\n// OpenTelemetry v2 API: Use constructor-based span processor registration\nconst provider = new NodeTracerProvider({\n spanProcessors: [\n new SimpleSpanProcessor(new MutagentSpanExporter())\n ]\n});\nprovider.register();\n\n// Enable telemetry on AI SDK calls — all calls are automatically traced\nconst result = await generateText({\n model: openai('gpt-4o'),\n prompt: 'Hello!',\n experimental_telemetry: { isEnabled: true },\n});\n\\`\\`\\`\n\n### Streaming with OTel\n\n\\`\\`\\`typescript\n// app/api/chat/route.ts\nimport { streamText } from 'ai';\nimport { openai } from '@ai-sdk/openai';\n\nexport async function POST(req: Request) {\n const { messages } = await req.json();\n\n // OTel provider registered at startup — just enable telemetry\n const result = streamText({\n model: openai('gpt-4o'),\n messages,\n experimental_telemetry: { isEnabled: true },\n });\n\n return result.toDataStreamResponse();\n}\n\\`\\`\\`\n\n## Option B: Middleware (Alternative — Simple / Legacy)\n\nWorks without OTel setup. Good for quick prototyping or environments where\ninstalling OTel dependencies is not practical.\n\n\\`\\`\\`typescript\nimport { generateText, wrapLanguageModel } from 'ai';\nimport { openai } from '@ai-sdk/openai';\nimport { createMutagentMiddleware } from '@mutagent/vercel-ai';\n\nconst middleware = createMutagentMiddleware();\nconst model = wrapLanguageModel({ model: openai('gpt-4o'), middleware });\n\nconst { text } = await generateText({\n model,\n prompt: 'What is TypeScript?',\n});\n\\`\\`\\`\n\n### Streaming with Middleware\n\n\\`\\`\\`typescript\n// app/api/chat/route.ts\nimport { streamText, wrapLanguageModel } from 'ai';\nimport { openai } from '@ai-sdk/openai';\nimport { createMutagentMiddleware } from '@mutagent/vercel-ai';\n\nconst middleware = createMutagentMiddleware();\nconst model = wrapLanguageModel({ model: openai('gpt-4o'), middleware });\n\nexport async function POST(req: Request) {\n const { messages } = await req.json();\n\n const result = streamText({ model, messages });\n\n return result.toDataStreamResponse();\n}\n\\`\\`\\`\n\n## Verification\n\n\\`\\`\\`bash\nmutagent integrate vercel-ai --verify\n\\`\\`\\`\n\n## Documentation\n\n- Full guide: https://docs.mutagent.io/integrations/vercel-ai\n- API Reference: https://docs.mutagent.io/sdk/tracing\n- Dashboard: https://app.mutagent.io\n`);\n },\n};\n",
45
46
  "import { readFileSync, existsSync } from 'fs';\nimport type { FrameworkIntegration, DetectionResult, IntegrationConfig } from './types.js';\n\ninterface PackageJson {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n}\n\nexport const openaiIntegration: FrameworkIntegration = {\n name: 'openai',\n description: 'OpenAI SDK integration with automatic tracing',\n\n detect(): Promise<DetectionResult> {\n let hasOpenAI = false;\n\n if (existsSync('package.json')) {\n try {\n const pkg = JSON.parse(readFileSync('package.json', 'utf-8')) as PackageJson;\n const deps: Record<string, string> = { ...pkg.dependencies, ...pkg.devDependencies };\n hasOpenAI = 'openai' in deps;\n } catch {\n // Ignore\n }\n }\n\n return Promise.resolve({\n detected: hasOpenAI,\n confidence: hasOpenAI ? 0.85 : 0,\n files: hasOpenAI ? ['package.json'] : [],\n });\n },\n\n generate(config: IntegrationConfig): Promise<string> {\n return Promise.resolve(`---\nname: mutagent-openai-integration\ndescription: Integrate MutagenT with OpenAI SDK for automatic tracing\nframework: openai\nversion: 2.0.0\n---\n\n# MutagenT + OpenAI SDK Integration\n\n## Prerequisites Verification\n\n- MUTAGENT_API_KEY: ${config.apiKey.slice(0, 8)}...${config.apiKey.slice(-4)}\n- MUTAGENT_ENDPOINT: ${config.endpoint}\n- API Connection: Verified\n\n## Installation\n\n\\`\\`\\`bash\nbun add @mutagent/openai @mutagent/sdk\n# or\nnpm install @mutagent/openai @mutagent/sdk\n\\`\\`\\`\n\n## Integration\n\n\\`\\`\\`typescript\nimport { observeOpenAI } from '@mutagent/openai';\nimport { initTracing } from '@mutagent/sdk/tracing';\n\n// Initialize MutagenT tracing\ninitTracing({ apiKey: process.env.MUTAGENT_API_KEY! });\n\n// Wrap your OpenAI client with observeOpenAI for automatic tracing\nconst openai = observeOpenAI(new OpenAI({\n apiKey: process.env.OPENAI_API_KEY,\n}));\n\n// All calls are automatically traced\nconst response = await openai.chat.completions.create({\n model: 'gpt-4o',\n messages: [{ role: 'user', content: 'Hello!' }],\n});\n\nconsole.log(response.choices[0].message.content);\n\\`\\`\\`\n\n## Streaming\n\nStreaming works out of the box with no extra configuration:\n\n\\`\\`\\`typescript\nconst stream = await openai.chat.completions.create({\n model: 'gpt-4o',\n messages: [{ role: 'user', content: 'Tell me a story' }],\n stream: true,\n});\n\nfor await (const chunk of stream) {\n process.stdout.write(chunk.choices[0]?.delta?.content || '');\n}\n\\`\\`\\`\n\n## Embeddings\n\n\\`\\`\\`typescript\nconst embedding = await openai.embeddings.create({\n model: 'text-embedding-3-small',\n input: 'Hello world',\n});\n// Embedding call is traced automatically\n\\`\\`\\`\n\n## Verification\n\n\\`\\`\\`bash\nmutagent integrate openai --verify\n\\`\\`\\`\n\n## Documentation\n\n- Full guide: https://docs.mutagent.io/integrations/openai\n- API Reference: https://docs.mutagent.io/sdk/tracing\n- Dashboard: https://app.mutagent.io\n`);\n },\n};\n",
46
47
  "import type { FrameworkIntegration, IntegrationMetadata } from './types.js';\nimport { langchainIntegration } from './langchain.js';\nimport { langgraphIntegration } from './langgraph.js';\nimport { vercelAiIntegration } from './vercel-ai.js';\nimport { openaiIntegration } from './openai.js';\n\nexport const frameworkRegistry = new Map<string, FrameworkIntegration>([\n ['langchain', langchainIntegration],\n ['langgraph', langgraphIntegration],\n ['vercel-ai', vercelAiIntegration],\n ['openai', openaiIntegration],\n]);\n\nexport const frameworkMetadata: IntegrationMetadata[] = [\n {\n name: 'langchain',\n displayName: 'LangChain',\n description: 'Popular LLM application framework',\n npmPackage: 'langchain',\n mutagentPackage: '@mutagent/langchain',\n website: 'https://js.langchain.com',\n },\n {\n name: 'langgraph',\n displayName: 'LangGraph',\n description: 'Agent workflow framework built on LangChain',\n npmPackage: '@langchain/langgraph',\n mutagentPackage: '@mutagent/langchain',\n website: 'https://langchain-ai.github.io/langgraphjs/',\n },\n {\n name: 'vercel-ai',\n displayName: 'Vercel AI SDK',\n description: 'AI SDK for building streaming chat UIs',\n npmPackage: 'ai',\n mutagentPackage: '@mutagent/vercel-ai',\n website: 'https://sdk.vercel.ai',\n },\n {\n name: 'openai',\n displayName: 'OpenAI SDK',\n description: 'Official OpenAI SDK with automatic tracing',\n npmPackage: 'openai',\n mutagentPackage: '@mutagent/openai',\n website: 'https://platform.openai.com',\n },\n];\n\nexport function getFramework(name: string): FrameworkIntegration | undefined {\n return frameworkRegistry.get(name);\n}\n\nexport function getFrameworkMetadata(name: string): IntegrationMetadata | undefined {\n return frameworkMetadata.find((f) => f.name === name);\n}\n\nexport function listFrameworks(): IntegrationMetadata[] {\n return frameworkMetadata;\n}\n\nexport async function detectFramework(): Promise<{ name: string; confidence: number } | null> {\n const results: { name: string; confidence: number }[] = [];\n\n for (const [name, integration] of frameworkRegistry) {\n const detection = await integration.detect();\n if (detection.detected) {\n results.push({ name, confidence: detection.confidence });\n }\n }\n\n // Sort by confidence\n results.sort((a, b) => b.confidence - a.confidence);\n\n return results[0] ?? null;\n}\n",
47
- "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { registerAgentsCrud } from './agents-crud.js';\n\n// Command option interfaces for type safety (shared across submodules)\nexport interface ListOptions {\n limit: string;\n offset?: string;\n name?: string;\n status?: string;\n}\n\nexport interface CreateOptions {\n data?: string;\n name?: string;\n slug?: string;\n systemPrompt?: string;\n model?: string;\n description?: string;\n}\n\nexport interface UpdateOptions {\n data?: string;\n name?: string;\n systemPrompt?: string;\n model?: string;\n description?: string;\n status?: string;\n}\n\nexport interface DeleteOptions {\n force?: boolean;\n}\n\nexport interface ConfirmAnswer {\n confirm: boolean;\n}\n\nexport function createAgentsCommand(): Command {\n const agents = new Command('agents')\n .description('Manage AI agents')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent agents list\n ${chalk.dim('$')} mutagent agents get <agent-id>\n ${chalk.dim('$')} mutagent agents create --name \"Code Reviewer\" --slug code-reviewer --system-prompt \"You are a code reviewer...\"\n ${chalk.dim('$')} mutagent agents create -d '{\"name\":\"Code Reviewer\",\"slug\":\"code-reviewer\",\"systemPrompt\":\"You are...\"}'\n ${chalk.dim('$')} mutagent agents update <agent-id> --name \"Updated Name\"\n ${chalk.dim('$')} mutagent agents delete <agent-id> --force\n\nSubcommands:\n list, get, create, update, delete\n `);\n\n registerAgentsCrud(agents);\n\n return agents;\n}\n",
48
- "import { 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 { agentLinks, agentLink } from '../../lib/ui-links.js';\nimport type { Agent, CreateAgentInput, UpdateAgentInput } from '../../types/index.js';\nimport type { ListOptions, CreateOptions, UpdateOptions, DeleteOptions, ConfirmAnswer } from './index.js';\n\nexport function registerAgentsCrud(agents: Command): void {\n // List agents\n agents\n .command('list')\n .description('List all agents')\n .option('-l, --limit <n>', 'Limit results', '50')\n .option('-o, --offset <n>', 'Offset for pagination')\n .option('-n, --name <name>', 'Filter by name')\n .option('-s, --status <status>', 'Filter by status (active, paused, archived)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent agents list\n ${chalk.dim('$')} mutagent agents list --status active\n ${chalk.dim('$')} mutagent agents list --name \"reviewer\" --json\n `)\n .action(async (options: ListOptions) => {\n const isJson = getJsonFlag(agents);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const filters: { limit?: number; offset?: number; name?: string; status?: string } = {\n limit: parseInt(options.limit, 10) || 50,\n };\n\n if (options.offset) {\n filters.offset = parseInt(options.offset, 10);\n }\n if (options.name) {\n filters.name = options.name;\n }\n if (options.status) {\n filters.status = options.status;\n }\n\n const result = await client.listAgents(filters);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `agents get <id>` for full details.\n const withLinks = result.data.map((a: Agent) => ({\n id: a.id,\n name: a.name,\n slug: a.slug,\n model: a.model,\n status: a.status,\n isPublic: a.isPublic,\n updatedAt: a.updatedAt,\n _links: agentLinks(a.id),\n }));\n output.output({ ...result, data: withLinks });\n } else {\n // Format for table\n const formatted = result.data.map((a: Agent) => ({\n id: a.id,\n name: a.name,\n slug: a.slug,\n model: a.model,\n status: a.status,\n isPublic: a.isPublic ? 'Yes' : 'No',\n updated: a.updatedAt ? new Date(a.updatedAt).toLocaleDateString() : 'N/A',\n url: agentLink(a.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get agent\n agents\n .command('get')\n .description('Get agent details')\n .argument('<id>', 'Agent ID')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent agents get <agent-id>\n ${chalk.dim('$')} mutagent agents get <agent-id> --json\n `)\n .action(async (id: string) => {\n const isJson = getJsonFlag(agents);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const agent = await client.getAgent(id);\n\n if (isJson) {\n output.output({ ...agent, _links: agentLinks(agent.id) });\n } else {\n // Format for display\n const formatted: Record<string, unknown> = {\n id: agent.id,\n name: agent.name,\n slug: agent.slug,\n description: agent.description ?? 'N/A',\n model: agent.model,\n status: agent.status,\n isPublic: agent.isPublic ? 'Yes' : 'No',\n maxTurns: agent.maxTurns ?? 'N/A',\n permissionMode: agent.permissionMode ?? 'default',\n allowedTools: agent.allowedTools?.join(', ') ?? 'All',\n disallowedTools: agent.disallowedTools?.join(', ') ?? 'None',\n tags: agent.tags?.join(', ') ?? 'None',\n createdBy: agent.createdBy ?? 'N/A',\n createdAt: agent.createdAt ? new Date(agent.createdAt).toLocaleString() : 'N/A',\n updatedAt: agent.updatedAt ? new Date(agent.updatedAt).toLocaleString() : 'N/A',\n url: agentLink(agent.id),\n };\n output.output(formatted);\n\n // Show system prompt separately for readability\n if (agent.systemPrompt) {\n console.log(chalk.bold('\\nSystem Prompt:'));\n console.log(chalk.gray('─'.repeat(60)));\n console.log(agent.systemPrompt);\n console.log(chalk.gray('─'.repeat(60)));\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create agent\n agents\n .command('create')\n .description('Create a new agent')\n .option('-d, --data <json>', 'Agent as JSON string (recommended for CI/scripts/agents)')\n .option('-n, --name <name>', 'Agent name')\n .option('-s, --slug <slug>', 'Agent slug (URL-friendly identifier)')\n .option('-p, --system-prompt <prompt>', 'System prompt')\n .option('-m, --model <model>', 'Model (claude-sonnet-4-5, claude-opus-4-5, claude-haiku-4-5)')\n .option('--description <desc>', 'Agent description')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent agents create --name \"Code Reviewer\" --slug code-reviewer --system-prompt \"You are a code reviewer...\"\n ${chalk.dim('$')} mutagent agents create -d '{\"name\":\"Code Reviewer\",\"slug\":\"code-reviewer\",\"systemPrompt\":\"You are a code reviewer...\"}'\n\nExpected JSON (--data):\n ${chalk.dim('{\"name\":\"<name>\",\"slug\":\"<slug>\",\"systemPrompt\":\"<system prompt>\",\"model\":\"<model-id>\",\"description\":\"<description>\"}')}\n\nInput Methods (pick one, priority order):\n --name/--slug/... Individual flags ${chalk.green('(recommended)')}\n -d, --data Inline JSON object (CI/scripts/agents)\n\n${chalk.red('Required: name, slug, systemPrompt.')} ${chalk.dim('CLI flags override --data fields.')}\n `)\n .action(async (options: CreateOptions) => {\n const isJson = getJsonFlag(agents);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: CreateAgentInput;\n\n if (options.data) {\n try {\n data = JSON.parse(options.data) as CreateAgentInput;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --data flag',\n \"Provide a valid JSON object, e.g., '{\\\"name\\\":\\\"my-agent\\\",\\\"slug\\\":\\\"my-agent\\\",\\\"systemPrompt\\\":\\\"You are...\\\"}'\"\n );\n }\n // CLI flags override --data fields\n if (options.name) data.name = options.name;\n if (options.slug) data.slug = options.slug;\n if (options.systemPrompt) data.systemPrompt = options.systemPrompt;\n if (options.model) data.model = options.model;\n if (options.description) data.description = options.description;\n } else if (options.name && options.slug && options.systemPrompt) {\n data = {\n name: options.name,\n slug: options.slug,\n systemPrompt: options.systemPrompt,\n };\n if (options.model) data.model = options.model;\n if (options.description) data.description = options.description;\n } else {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Either --data or (--name, --slug, and --system-prompt) are required',\n 'Use --data for inline JSON or provide --name, --slug, and --system-prompt'\n );\n }\n\n const client = await getSDKClient();\n const agent = await client.createAgent(data);\n\n if (!isJson) output.success(`Created agent: ${agent.name} (${agent.slug})`);\n output.output(agent);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Update agent\n agents\n .command('update')\n .description('Update an agent')\n .argument('<id>', 'Agent ID')\n .option('-d, --data <json>', 'Agent updates as JSON string (CI/scripts/agents)')\n .option('-n, --name <name>', 'New name')\n .option('-p, --system-prompt <prompt>', 'New system prompt')\n .option('-m, --model <model>', 'New model')\n .option('--description <desc>', 'New description')\n .option('-s, --status <status>', 'New status (active, paused, archived)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent agents update <id> --name \"New Name\"\n ${chalk.dim('$')} mutagent agents update <id> --system-prompt \"Updated prompt\" --status active\n ${chalk.dim('$')} mutagent agents update <id> -d '{\"name\":\"New Name\",\"systemPrompt\":\"Updated prompt\"}'\n\nInput Methods (pick one, priority order):\n --name/--system-prompt/... Individual flags ${chalk.green('(recommended)')}\n -d, --data Inline JSON object (CI/scripts/agents)\n\n${chalk.dim('CLI flags override --data fields.')}\n `)\n .action(async (id: string, options: UpdateOptions) => {\n const isJson = getJsonFlag(agents);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: UpdateAgentInput = {};\n\n if (options.data) {\n try {\n data = JSON.parse(options.data) as UpdateAgentInput;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --data flag',\n \"Provide a valid JSON object, e.g., '{\\\"name\\\":\\\"new-name\\\",\\\"systemPrompt\\\":\\\"Updated prompt\\\"}'\"\n );\n }\n // CLI flags override --data fields\n if (options.name) data.name = options.name;\n if (options.systemPrompt) data.systemPrompt = options.systemPrompt;\n if (options.model) data.model = options.model;\n if (options.description) data.description = options.description;\n if (options.status) data.status = options.status;\n } else {\n if (options.name) data.name = options.name;\n if (options.systemPrompt) data.systemPrompt = options.systemPrompt;\n if (options.model) data.model = options.model;\n if (options.description) data.description = options.description;\n if (options.status) data.status = options.status;\n }\n\n if (Object.keys(data).length === 0) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'No update data provided',\n 'Use --data, --name, --system-prompt, --model, --description, or --status'\n );\n }\n\n const client = await getSDKClient();\n const agent = await client.updateAgent(id, data);\n\n if (!isJson) output.success(`Updated agent: ${agent.name}`);\n output.output(agent);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete agent\n agents\n .command('delete')\n .description('Delete an agent')\n .argument('<id>', 'Agent ID')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent agents delete <id>\n ${chalk.dim('$')} mutagent agents delete <id> --force\n ${chalk.dim('$')} mutagent agents delete <id> --force --json\n\n${chalk.dim('Tip: Use --force to skip confirmation (required for non-interactive/CI usage).')}\n `)\n .action(async (id: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(agents);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (!options.force && !isJson) {\n const inquirer = (await import('inquirer')).default;\n const answers = await inquirer.prompt<ConfirmAnswer>([{\n type: 'confirm',\n name: 'confirm',\n message: `Delete agent ${id}? This action cannot be undone.`,\n default: false,\n }]);\n\n if (!answers.confirm) {\n output.info('Cancelled');\n return;\n }\n }\n\n const client = await getSDKClient();\n await client.deleteAgent(id);\n\n output.success(`Deleted agent: ${id}`);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
48
+ "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { registerAgentsCrud } from './agents-crud.js';\nimport { AGENTS_WIP_BANNER } from '../../lib/agents-wip-banner.js';\n\n// Command option interfaces for type safety (shared across submodules)\nexport interface ListOptions {\n limit: string;\n offset?: string;\n name?: string;\n status?: string;\n}\n\nexport interface CreateOptions {\n data?: string;\n name?: string;\n slug?: string;\n systemPrompt?: string;\n model?: string;\n description?: string;\n}\n\nexport interface UpdateOptions {\n data?: string;\n name?: string;\n systemPrompt?: string;\n model?: string;\n description?: string;\n status?: string;\n}\n\nexport interface DeleteOptions {\n force?: boolean;\n}\n\nexport interface ConfirmAnswer {\n confirm: boolean;\n}\n\nexport function createAgentsCommand(): Command {\n const agents = new Command('agents')\n .description('Manage AI agents (CRUD only — optimization & evaluation are WIP)')\n .addHelpText('after', `\n${AGENTS_WIP_BANNER}\n\nExamples:\n ${chalk.dim('$')} mutagent agents list\n ${chalk.dim('$')} mutagent agents get <agent-id>\n ${chalk.dim('$')} mutagent agents create --name \"Code Reviewer\" --slug code-reviewer --system-prompt \"You are a code reviewer...\"\n ${chalk.dim('$')} mutagent agents create -d '{\"name\":\"Code Reviewer\",\"slug\":\"code-reviewer\",\"systemPrompt\":\"You are...\"}'\n ${chalk.dim('$')} mutagent agents update <agent-id> --name \"Updated Name\"\n ${chalk.dim('$')} mutagent agents delete <agent-id> --force\n\nSubcommands:\n list, get, create, update, delete\n `);\n\n registerAgentsCrud(agents);\n\n return agents;\n}\n",
49
+ "import { 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 { agentLinks, agentLink } from '../../lib/ui-links.js';\nimport type { Agent, CreateAgentInput, UpdateAgentInput } from '../../types/index.js';\nimport type { ListOptions, CreateOptions, UpdateOptions, DeleteOptions, ConfirmAnswer } from './index.js';\nimport { AGENTS_WIP_BANNER_SHORT } from '../../lib/agents-wip-banner.js';\n\nexport function registerAgentsCrud(agents: Command): void {\n // List agents\n agents\n .command('list')\n .description('List all agents')\n .option('-l, --limit <n>', 'Limit results', '50')\n .option('-o, --offset <n>', 'Offset for pagination')\n .option('-n, --name <name>', 'Filter by name')\n .option('-s, --status <status>', 'Filter by status (active, paused, archived)')\n .addHelpText('after', `\n${AGENTS_WIP_BANNER_SHORT}\n\nExamples:\n ${chalk.dim('$')} mutagent agents list\n ${chalk.dim('$')} mutagent agents list --status active\n ${chalk.dim('$')} mutagent agents list --name \"reviewer\" --json\n `)\n .action(async (options: ListOptions) => {\n const isJson = getJsonFlag(agents);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const filters: { limit?: number; offset?: number; name?: string; status?: string } = {\n limit: parseInt(options.limit, 10) || 50,\n };\n\n if (options.offset) {\n filters.offset = parseInt(options.offset, 10);\n }\n if (options.name) {\n filters.name = options.name;\n }\n if (options.status) {\n filters.status = options.status;\n }\n\n const result = await client.listAgents(filters);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `agents get <id>` for full details.\n const withLinks = result.data.map((a: Agent) => ({\n id: a.id,\n name: a.name,\n slug: a.slug,\n model: a.model,\n status: a.status,\n isPublic: a.isPublic,\n updatedAt: a.updatedAt,\n _links: agentLinks(a.id),\n }));\n output.output({ ...result, data: withLinks });\n } else {\n // Format for table\n const formatted = result.data.map((a: Agent) => ({\n id: a.id,\n name: a.name,\n slug: a.slug,\n model: a.model,\n status: a.status,\n isPublic: a.isPublic ? 'Yes' : 'No',\n updated: a.updatedAt ? new Date(a.updatedAt).toLocaleDateString() : 'N/A',\n url: agentLink(a.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get agent\n agents\n .command('get')\n .description('Get agent details')\n .argument('<id>', 'Agent ID')\n .addHelpText('after', `\n${AGENTS_WIP_BANNER_SHORT}\n\nExamples:\n ${chalk.dim('$')} mutagent agents get <agent-id>\n ${chalk.dim('$')} mutagent agents get <agent-id> --json\n `)\n .action(async (id: string) => {\n const isJson = getJsonFlag(agents);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const agent = await client.getAgent(id);\n\n if (isJson) {\n output.output({ ...agent, _links: agentLinks(agent.id) });\n } else {\n // Format for display\n const formatted: Record<string, unknown> = {\n id: agent.id,\n name: agent.name,\n slug: agent.slug,\n description: agent.description ?? 'N/A',\n model: agent.model,\n status: agent.status,\n isPublic: agent.isPublic ? 'Yes' : 'No',\n maxTurns: agent.maxTurns ?? 'N/A',\n permissionMode: agent.permissionMode ?? 'default',\n allowedTools: agent.allowedTools?.join(', ') ?? 'All',\n disallowedTools: agent.disallowedTools?.join(', ') ?? 'None',\n tags: agent.tags?.join(', ') ?? 'None',\n createdBy: agent.createdBy ?? 'N/A',\n createdAt: agent.createdAt ? new Date(agent.createdAt).toLocaleString() : 'N/A',\n updatedAt: agent.updatedAt ? new Date(agent.updatedAt).toLocaleString() : 'N/A',\n url: agentLink(agent.id),\n };\n output.output(formatted);\n\n // Show system prompt separately for readability\n if (agent.systemPrompt) {\n console.log(chalk.bold('\\nSystem Prompt:'));\n console.log(chalk.gray('─'.repeat(60)));\n console.log(agent.systemPrompt);\n console.log(chalk.gray('─'.repeat(60)));\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Create agent\n agents\n .command('create')\n .description('Create a new agent')\n .option('-d, --data <json>', 'Agent as JSON string (recommended for CI/scripts/agents)')\n .option('-n, --name <name>', 'Agent name')\n .option('-s, --slug <slug>', 'Agent slug (URL-friendly identifier)')\n .option('-p, --system-prompt <prompt>', 'System prompt')\n .option('-m, --model <model>', 'Model (claude-sonnet-4-5, claude-opus-4-5, claude-haiku-4-5)')\n .option('--description <desc>', 'Agent description')\n .addHelpText('after', `\n${AGENTS_WIP_BANNER_SHORT}\n\nExamples:\n ${chalk.dim('$')} mutagent agents create --name \"Code Reviewer\" --slug code-reviewer --system-prompt \"You are a code reviewer...\"\n ${chalk.dim('$')} mutagent agents create -d '{\"name\":\"Code Reviewer\",\"slug\":\"code-reviewer\",\"systemPrompt\":\"You are a code reviewer...\"}'\n\nExpected JSON (--data):\n ${chalk.dim('{\"name\":\"<name>\",\"slug\":\"<slug>\",\"systemPrompt\":\"<system prompt>\",\"model\":\"<model-id>\",\"description\":\"<description>\"}')}\n\nInput Methods (pick one, priority order):\n --name/--slug/... Individual flags ${chalk.green('(recommended)')}\n -d, --data Inline JSON object (CI/scripts/agents)\n\n${chalk.red('Required: name, slug, systemPrompt.')} ${chalk.dim('CLI flags override --data fields.')}\n `)\n .action(async (options: CreateOptions) => {\n const isJson = getJsonFlag(agents);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: CreateAgentInput;\n\n if (options.data) {\n try {\n data = JSON.parse(options.data) as CreateAgentInput;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --data flag',\n \"Provide a valid JSON object, e.g., '{\\\"name\\\":\\\"my-agent\\\",\\\"slug\\\":\\\"my-agent\\\",\\\"systemPrompt\\\":\\\"You are...\\\"}'\"\n );\n }\n // CLI flags override --data fields\n if (options.name) data.name = options.name;\n if (options.slug) data.slug = options.slug;\n if (options.systemPrompt) data.systemPrompt = options.systemPrompt;\n if (options.model) data.model = options.model;\n if (options.description) data.description = options.description;\n } else if (options.name && options.slug && options.systemPrompt) {\n data = {\n name: options.name,\n slug: options.slug,\n systemPrompt: options.systemPrompt,\n };\n if (options.model) data.model = options.model;\n if (options.description) data.description = options.description;\n } else {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Either --data or (--name, --slug, and --system-prompt) are required',\n 'Use --data for inline JSON or provide --name, --slug, and --system-prompt'\n );\n }\n\n const client = await getSDKClient();\n const agent = await client.createAgent(data);\n\n if (!isJson) output.success(`Created agent: ${agent.name} (${agent.slug})`);\n output.output(agent);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Update agent\n agents\n .command('update')\n .description('Update an agent')\n .argument('<id>', 'Agent ID')\n .option('-d, --data <json>', 'Agent updates as JSON string (CI/scripts/agents)')\n .option('-n, --name <name>', 'New name')\n .option('-p, --system-prompt <prompt>', 'New system prompt')\n .option('-m, --model <model>', 'New model')\n .option('--description <desc>', 'New description')\n .option('-s, --status <status>', 'New status (active, paused, archived)')\n .addHelpText('after', `\n${AGENTS_WIP_BANNER_SHORT}\n\nExamples:\n ${chalk.dim('$')} mutagent agents update <id> --name \"New Name\"\n ${chalk.dim('$')} mutagent agents update <id> --system-prompt \"Updated prompt\" --status active\n ${chalk.dim('$')} mutagent agents update <id> -d '{\"name\":\"New Name\",\"systemPrompt\":\"Updated prompt\"}'\n\nInput Methods (pick one, priority order):\n --name/--system-prompt/... Individual flags ${chalk.green('(recommended)')}\n -d, --data Inline JSON object (CI/scripts/agents)\n\n${chalk.dim('CLI flags override --data fields.')}\n `)\n .action(async (id: string, options: UpdateOptions) => {\n const isJson = getJsonFlag(agents);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n let data: UpdateAgentInput = {};\n\n if (options.data) {\n try {\n data = JSON.parse(options.data) as UpdateAgentInput;\n } catch {\n throw new MutagentError(\n 'INVALID_JSON',\n 'Invalid JSON in --data flag',\n \"Provide a valid JSON object, e.g., '{\\\"name\\\":\\\"new-name\\\",\\\"systemPrompt\\\":\\\"Updated prompt\\\"}'\"\n );\n }\n // CLI flags override --data fields\n if (options.name) data.name = options.name;\n if (options.systemPrompt) data.systemPrompt = options.systemPrompt;\n if (options.model) data.model = options.model;\n if (options.description) data.description = options.description;\n if (options.status) data.status = options.status;\n } else {\n if (options.name) data.name = options.name;\n if (options.systemPrompt) data.systemPrompt = options.systemPrompt;\n if (options.model) data.model = options.model;\n if (options.description) data.description = options.description;\n if (options.status) data.status = options.status;\n }\n\n if (Object.keys(data).length === 0) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'No update data provided',\n 'Use --data, --name, --system-prompt, --model, --description, or --status'\n );\n }\n\n const client = await getSDKClient();\n const agent = await client.updateAgent(id, data);\n\n if (!isJson) output.success(`Updated agent: ${agent.name}`);\n output.output(agent);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Delete agent\n agents\n .command('delete')\n .description('Delete an agent')\n .argument('<id>', 'Agent ID')\n .option('--force', 'Skip confirmation')\n .addHelpText('after', `\n${AGENTS_WIP_BANNER_SHORT}\n\nExamples:\n ${chalk.dim('$')} mutagent agents delete <id>\n ${chalk.dim('$')} mutagent agents delete <id> --force\n ${chalk.dim('$')} mutagent agents delete <id> --force --json\n\n${chalk.dim('Tip: Use --force to skip confirmation (required for non-interactive/CI usage).')}\n `)\n .action(async (id: string, options: DeleteOptions) => {\n const isJson = getJsonFlag(agents);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n if (!options.force && !isJson) {\n const inquirer = (await import('inquirer')).default;\n const answers = await inquirer.prompt<ConfirmAnswer>([{\n type: 'confirm',\n name: 'confirm',\n message: `Delete agent ${id}? This action cannot be undone.`,\n default: false,\n }]);\n\n if (!answers.confirm) {\n output.info('Cancelled');\n return;\n }\n }\n\n const client = await getSDKClient();\n await client.deleteAgent(id);\n\n output.success(`Deleted agent: ${id}`);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n",
50
+ "import chalk from 'chalk';\n\n/**\n * Canonical \"Agents: Early Access / WIP\" banner shown on:\n * - `mutagent --help` (top-level help hub)\n * - `mutagent agents --help`\n * - `mutagent agents <subcommand> --help` (list / get / create / update / delete)\n *\n * Keep this in ONE place so copy cannot drift between surfaces.\n * Mirrors the user-facing stance documented in:\n * .claude/skills/mutagent-cli/SKILL.md → \"Agents: Work In Progress\"\n */\nexport const AGENTS_WIP_BANNER = `${chalk.yellow('Agents: Early Access / WIP')}\n ${chalk.bold('Agent optimization & evaluation are actively in development.')}\n ${chalk.dim('The Prompt path (single-shot LLM calls with output schemas) is production-ready.')}\n ${chalk.dim('For Agents (multi-turn / tool-calling), join early access:')}\n ${chalk.cyan('https://www.mutagent.io/agents-partnership')}\n ${chalk.dim('`mutagent agents ...` CRUD commands exist but optimization/eval are NOT ready.')}`;\n\n/**\n * Compact one-liner variant for subcommand `--help` footers where the full\n * banner would be noisy. Always links to the same partnership URL so users\n * hitting any subcommand's help can see the WIP status.\n */\nexport const AGENTS_WIP_BANNER_SHORT = `${chalk.yellow('[Agents WIP]')} ${chalk.dim('CRUD only — optimization & evaluation in development.')} ${chalk.cyan('https://www.mutagent.io/agents-partnership')}`;\n",
49
51
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { loadConfig, setDefaultWorkspace, setDefaultOrganization } from '../lib/config.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError, handleError } from '../lib/errors.js';\nimport { resetSDKClient } from '../lib/sdk-client.js';\n\nconst VALID_CONFIG_KEYS = ['apiKey', 'endpoint', 'format', 'timeout', 'defaultWorkspace', 'defaultOrganization'] as const;\n\nexport function createConfigCommand(): Command {\n const config = new Command('config')\n .description('Manage CLI configuration')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent config list\n ${chalk.dim('$')} mutagent config get endpoint\n ${chalk.dim('$')} mutagent config set workspace <workspace-id>\n ${chalk.dim('$')} mutagent config set org <org-id>\n `);\n\n // List command\n config\n .command('list')\n .description('List all configuration')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent config list\n ${chalk.dim('$')} mutagent config list --json\n `)\n .action(() => {\n const isJson = getJsonFlag(config);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n const cfg = loadConfig();\n\n // Mask API key for security\n const display = {\n ...cfg,\n apiKey: cfg.apiKey ? `${cfg.apiKey.slice(0, 8)}...` : undefined,\n };\n\n output.output(display);\n });\n\n // Get command\n config\n .command('get')\n .description('Get configuration value')\n .argument('<key>', 'Configuration key (apiKey, endpoint, format, timeout, defaultWorkspace, defaultOrganization)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent config get endpoint\n ${chalk.dim('$')} mutagent config get defaultWorkspace\n ${chalk.dim('$')} mutagent config get apiKey --json\n\n${chalk.dim('Keys: apiKey, endpoint, format, timeout, defaultWorkspace, defaultOrganization')}\n `)\n .action((key: string) => {\n const isJson = getJsonFlag(config);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const cfg = loadConfig();\n\n if (!(key in cfg)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Unknown config key: \"${key}\"`,\n `Valid keys: ${VALID_CONFIG_KEYS.join(', ')}\\n` +\n 'Example: mutagent config get endpoint'\n );\n }\n\n const value = cfg[key as keyof typeof cfg];\n // Convert value to string safely for display\n const stringValue = typeof value === 'object' ? JSON.stringify(value) : String(value ?? '');\n const displayValue = key === 'apiKey' && value ? `${stringValue.slice(0, 8)}...` : stringValue;\n\n if (isJson) {\n output.output({ [key]: displayValue });\n } else {\n output.info(displayValue);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Set command (with subcommands)\n const set = new Command('set')\n .description('Set configuration value')\n .action(() => {\n set.help();\n });\n\n // Set workspace subcommand\n set\n .command('workspace')\n .description('Set default workspace ID')\n .argument('<id>', 'Workspace ID to set as default')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent config set workspace <workspace-id>\n\n${chalk.dim('Persists workspace ID so you don\\'t need to pass headers on every request.')}\n `)\n .action((id: string) => {\n const isJson = getJsonFlag(config);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n setDefaultWorkspace(id);\n resetSDKClient();\n\n if (isJson) {\n output.output({ success: true, defaultWorkspace: id });\n } else {\n output.success(`Default workspace set to ${id}`);\n }\n });\n\n // Set org subcommand\n set\n .command('org')\n .description('Set default organization ID')\n .argument('<id>', 'Organization ID to set as default')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent config set org <org-id>\n\n${chalk.dim('Persists organization ID for org-scoped API keys.')}\n `)\n .action((id: string) => {\n const isJson = getJsonFlag(config);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n setDefaultOrganization(id);\n resetSDKClient();\n\n if (isJson) {\n output.output({ success: true, defaultOrganization: id });\n } else {\n output.success(`Default organization set to ${id}`);\n }\n });\n\n config.addCommand(set);\n\n return config;\n}\n",
50
52
  "/**\n * @fileoverview Playground command for executing prompts\n * @module @mutagent/cli/commands/playground\n */\n\nimport { 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 { playgroundLink, promptLink } from '../lib/ui-links.js';\nimport type { PromptStreamEvent } from '../types/index.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Message object for prompt messages array\n */\ninterface PromptMessage {\n /** Role of the message sender */\n role: 'system' | 'user' | 'assistant';\n /** Content of the message */\n content: string;\n}\n\n/**\n * Options for the run command\n */\ninterface RunOptions {\n /** Input variables as JSON string */\n input?: string;\n /** Enable streaming mode */\n stream?: boolean;\n /** Model override */\n model?: string;\n /** System prompt text */\n system?: string;\n /** Human/user message text */\n human?: string;\n /** Full messages array as JSON string */\n messages?: string;\n}\n\n// =============================================================================\n// SSE Parsing Utilities\n// =============================================================================\n\n/**\n * Parse an SSE message line\n */\nfunction parseSSELine(line: string): { field: string; value: string } | null {\n if (!line || line.startsWith(':')) {\n return null; // Comment or empty line\n }\n\n const colonIndex = line.indexOf(':');\n if (colonIndex === -1) {\n return { field: line, value: '' };\n }\n\n const field = line.slice(0, colonIndex);\n let value = line.slice(colonIndex + 1);\n if (value.startsWith(' ')) {\n value = value.slice(1);\n }\n\n return { field, value };\n}\n\n/**\n * Parse SSE event data into a PromptStreamEvent\n */\nfunction parsePromptStreamEvent(data: string): PromptStreamEvent | null {\n try {\n return JSON.parse(data) as PromptStreamEvent;\n } catch {\n return null;\n }\n}\n\n// =============================================================================\n// Command Implementation\n// =============================================================================\n\nexport function createPlaygroundCommand(): Command {\n const playground = new Command('playground')\n .description('Execute and test prompts interactively')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent playground run <prompt-id> --input '{\"name\": \"John\"}'\n ${chalk.dim('$')} mutagent playground run <prompt-id> --input '{}' --stream\n ${chalk.dim('$')} mutagent playground run <prompt-id> -i '{}' --model gpt-4-turbo\n ${chalk.dim('$')} mutagent playground run <prompt-id> --system \"You are helpful\" --human \"Hello\"\n ${chalk.dim('$')} mutagent playground run <prompt-id> --messages '[{\"role\":\"user\",\"content\":\"Hi\"}]'\n\nInput Format:\n The input must be a valid JSON object matching the prompt's input schema.\n Use --input for inline JSON.\n\nPrompt Style Flags:\n Use --system and --human to quickly construct a messages array.\n Use --messages to provide a full messages array as JSON.\n\nStreaming:\n Use --stream to receive tokens as they are generated.\n In JSON mode (--json), each token is output as a separate JSON object.\n `);\n\n // Run prompt\n playground\n .command('run')\n .description('Execute a prompt with input variables')\n .argument('<prompt-id>', 'Prompt ID to execute (from: mutagent prompts list)')\n .option('-i, --input <json>', 'Input variables as JSON')\n .option('-s, --stream', 'Stream the response')\n .option('-m, --model <model>', 'Override model')\n .option('--system <text>', 'Set system prompt text')\n .option('--human <text>', 'Set human/user message text')\n .option('--messages <json>', 'Pass full messages array as JSON string')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent playground run <prompt-id> --input '{\"name\": \"John\"}'\n ${chalk.dim('$')} mutagent playground run <prompt-id> --input '{}' --stream\n ${chalk.dim('$')} mutagent playground run <prompt-id> --system \"You are helpful\" --human \"Hello\"\n ${chalk.dim('$')} mutagent playground run <prompt-id> --input '{}' --model gpt-4-turbo --json\n\nInput Methods (pick one, priority order):\n --system/--human Quick system + user message ${chalk.green('(recommended)')}\n --input '{\"key\":\"value\"}' Inline JSON variables\n --messages '[...]' Full messages array\n${chalk.dim('Hint: Test before evaluating: mutagent playground run <id> --input \\'{\"key\":\"value\"}\\'')}\n `)\n .action(async (promptId: string, options: RunOptions) => {\n const isJson = getJsonFlag(playground);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Parse input\n const inputData = parseInput(options);\n\n const client = await getSDKClient();\n\n if (options.stream) {\n // Streaming mode\n await executeStreaming(client, promptId, inputData, options.model, isJson, output);\n } else {\n // Non-streaming mode\n const result = await client.executePrompt(promptId, inputData, {\n model: options.model,\n });\n\n if (isJson) {\n output.output({\n ...result,\n _links: {\n playground: playgroundLink(promptId),\n prompt: promptLink(promptId),\n },\n });\n } else {\n // Display result in human-readable format\n console.log(chalk.bold('\\nExecution Result:'));\n console.log(chalk.gray('─'.repeat(50)));\n console.log(chalk.cyan('Output:'));\n console.log(result.output);\n console.log(chalk.gray('─'.repeat(50)));\n console.log(chalk.dim(`Model: ${result.model}`));\n console.log(chalk.dim(`Execution Time: ${String(result.executionTimeMs)}ms`));\n if (result.tokens) {\n console.log(chalk.dim(`Tokens: ${String(result.tokens.prompt)} prompt + ${String(result.tokens.completion)} completion = ${String(result.tokens.total)} total`));\n }\n if (result.cost !== undefined) {\n console.log(chalk.dim(`Cost: $${result.cost.toFixed(6)}`));\n }\n console.log(chalk.dim(`Playground: ${playgroundLink(promptId)}`));\n console.log();\n }\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return playground;\n}\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\n/**\n * Parse input from options (either --input or prompt style flags)\n */\nfunction parseInput(options: RunOptions): Record<string, unknown> {\n // Check for conflicting options\n const hasPromptStyleFlags = options.system ?? options.human ?? options.messages;\n\n if (options.input && hasPromptStyleFlags) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n 'Cannot use --input with prompt style flags (--system, --human, --messages)',\n 'Use either --input OR prompt style flags, not both'\n );\n }\n\n // Handle prompt style flags\n if (hasPromptStyleFlags) {\n return parsePromptStyleInput(options);\n }\n\n // Get input JSON from file or inline option\n const inputJson = getInputJson(options);\n\n return parseJsonInput(inputJson);\n}\n\n/**\n * Parse prompt style input (--system, --human, --messages)\n */\nfunction parsePromptStyleInput(options: RunOptions): Record<string, unknown> {\n // If --messages is provided, parse and use directly\n if (options.messages) {\n if (options.system ?? options.human) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n 'Cannot use --messages with --system or --human',\n 'Use either --messages OR --system/--human flags, not both'\n );\n }\n\n try {\n const parsed = JSON.parse(options.messages) as unknown;\n if (!Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_INPUT',\n '--messages must be a JSON array',\n 'Provide messages as [{\"role\": \"user\", \"content\": \"Hello\"}]'\n );\n }\n\n // Validate each message has role and content\n for (const msg of parsed) {\n if (typeof msg !== 'object' || msg === null) {\n throw new MutagentError(\n 'INVALID_INPUT',\n 'Each message must be an object',\n 'Format: {\"role\": \"system|user|assistant\", \"content\": \"...\"}'\n );\n }\n const msgObj = msg as Record<string, unknown>;\n if (!msgObj.role || !msgObj.content) {\n throw new MutagentError(\n 'INVALID_INPUT',\n 'Each message must have role and content fields',\n 'Format: {\"role\": \"system|user|assistant\", \"content\": \"...\"}'\n );\n }\n }\n\n return { messages: parsed as PromptMessage[] };\n } catch (err) {\n if (err instanceof MutagentError) {\n throw err;\n }\n throw new MutagentError(\n 'INVALID_JSON',\n 'Failed to parse --messages as JSON',\n err instanceof Error ? err.message : 'Ensure the input is valid JSON array'\n );\n }\n }\n\n // Construct messages array from --system and/or --human\n if (!options.system && !options.human) {\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'At least one of --system or --human is required when using prompt style flags',\n 'Use --system \"prompt\" and/or --human \"message\"'\n );\n }\n\n const messages: PromptMessage[] = [];\n\n if (options.system) {\n messages.push({ role: 'system', content: options.system });\n }\n\n if (options.human) {\n messages.push({ role: 'user', content: options.human });\n }\n\n return { messages };\n}\n\n/**\n * Get input JSON string from file or inline option\n */\nfunction getInputJson(options: RunOptions): string {\n if (options.input) {\n return options.input;\n }\n\n throw new MutagentError(\n 'MISSING_ARGUMENTS',\n 'Input is required',\n 'Use --input \\'{\"key\": \"value\"}\\' or --system/--human/--messages flags'\n );\n}\n\n/**\n * Parse JSON string into a record object\n */\nfunction parseJsonInput(inputJson: string): Record<string, unknown> {\n\n try {\n const parsed = JSON.parse(inputJson) as unknown;\n if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {\n throw new MutagentError(\n 'INVALID_INPUT',\n 'Input must be a JSON object',\n 'Provide input as {\"key\": \"value\"} format'\n );\n }\n return parsed as Record<string, unknown>;\n } catch (err) {\n if (err instanceof MutagentError) {\n throw err;\n }\n throw new MutagentError(\n 'INVALID_JSON',\n 'Failed to parse input as JSON',\n err instanceof Error ? err.message : 'Ensure the input is valid JSON'\n );\n }\n}\n\n/**\n * Execute prompt with streaming\n */\nasync function executeStreaming(\n client: Awaited<ReturnType<typeof getSDKClient>>,\n promptId: string,\n input: Record<string, unknown>,\n model: string | undefined,\n isJson: boolean,\n output: OutputFormatter\n): Promise<void> {\n const response = await client.executePromptStream(promptId, input, { model });\n\n if (!response.body) {\n throw new MutagentError(\n 'STREAM_ERROR',\n 'No response body received',\n 'The server did not return a streaming response'\n );\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n\n if (!isJson) {\n console.log(chalk.bold('\\nStreaming Output:'));\n console.log(chalk.gray('─'.repeat(50)));\n }\n\n try {\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() ?? '';\n\n for (const line of lines) {\n const parsed = parseSSELine(line);\n if (!parsed) continue;\n\n if (parsed.field === 'data') {\n const event = parsePromptStreamEvent(parsed.value);\n if (!event) continue;\n\n switch (event.type) {\n case 'prompt.start':\n if (isJson) {\n console.log(JSON.stringify({ type: 'start', timestamp: event.timestamp }));\n }\n break;\n\n case 'prompt.token':\n if (event.token) {\n if (isJson) {\n console.log(JSON.stringify({ type: 'token', token: event.token }));\n } else {\n process.stdout.write(event.token);\n }\n }\n break;\n\n case 'prompt.complete':\n if (isJson) {\n console.log(JSON.stringify({ type: 'complete', result: event.result }));\n } else {\n console.log(); // Newline after tokens\n console.log(chalk.gray('─'.repeat(50)));\n if (event.result) {\n console.log(chalk.dim(`Model: ${event.result.model}`));\n console.log(chalk.dim(`Execution Time: ${String(event.result.executionTimeMs)}ms`));\n if (event.result.tokens) {\n console.log(chalk.dim(`Tokens: ${String(event.result.tokens.prompt)} prompt + ${String(event.result.tokens.completion)} completion = ${String(event.result.tokens.total)} total`));\n }\n if (event.result.cost !== undefined) {\n console.log(chalk.dim(`Cost: $${event.result.cost.toFixed(6)}`));\n }\n }\n console.log();\n }\n break;\n\n case 'prompt.error':\n if (isJson) {\n console.log(JSON.stringify({ type: 'error', error: event.error }));\n } else {\n output.error(event.error ?? 'Unknown streaming error');\n }\n break;\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n}\n",
51
53
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { getSDKClient } from '../lib/sdk-client.js';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError } from '../lib/errors.js';\nimport { workspaceLinks, workspaceLink } from '../lib/ui-links.js';\nimport type { Workspace } from '../types/index.js';\n\n// Command option interfaces for type safety\ninterface ListOptions {\n limit: string;\n offset?: string;\n}\n\nexport function createWorkspacesCommand(): Command {\n const workspaces = new Command('workspaces')\n .description('View workspaces (read-only)')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent workspaces list\n ${chalk.dim('$')} mutagent workspaces get <workspace-id>\n\nSubcommands:\n list, get\n\nNote: Workspace management (create, update, delete) is available in the Admin Panel only.\n `);\n\n // =========================================================================\n // WORKSPACE READ-ONLY OPERATIONS\n // Create, update, delete are available in Admin Panel only\n // =========================================================================\n\n // List workspaces\n workspaces\n .command('list')\n .description('List all workspaces')\n .option('-l, --limit <n>', 'Limit results', '50')\n .option('-o, --offset <n>', 'Offset for pagination')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent workspaces list\n ${chalk.dim('$')} mutagent workspaces list --limit 10 --json\n `)\n .action(async (options: ListOptions) => {\n const isJson = getJsonFlag(workspaces);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const filters: { limit?: number; offset?: number } = {\n limit: parseInt(options.limit, 10) || 50,\n };\n\n if (options.offset) {\n filters.offset = parseInt(options.offset, 10);\n }\n\n const result = await client.listWorkspaces(filters);\n\n if (isJson) {\n // Summary view — only IDs and key fields. Use `workspaces get <id>` for full details.\n const withLinks = result.data.map((w: Workspace) => ({\n id: w.id,\n name: w.name,\n slug: w.slug,\n isDefault: w.isDefault,\n updatedAt: w.updatedAt,\n _links: workspaceLinks(w.id),\n }));\n output.output({ ...result, data: withLinks });\n } else {\n // Format for table\n const formatted = result.data.map((w: Workspace) => ({\n id: w.id,\n name: w.name,\n slug: w.slug,\n isDefault: w.isDefault ? 'Yes' : 'No',\n updated: w.updatedAt ? new Date(w.updatedAt).toLocaleDateString() : 'N/A',\n url: workspaceLink(w.id),\n }));\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n // Get workspace\n workspaces\n .command('get')\n .description('Get workspace details')\n .argument('<id>', 'Workspace ID')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent workspaces get <workspace-id>\n ${chalk.dim('$')} mutagent workspaces get <workspace-id> --json\n `)\n .action(async (id: string) => {\n const isJson = getJsonFlag(workspaces);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const client = await getSDKClient();\n const workspace = await client.getWorkspace(id);\n\n if (isJson) {\n output.output({ ...workspace, _links: workspaceLinks(workspace.id) });\n } else {\n // Format for display\n const formatted: Record<string, unknown> = {\n id: workspace.id,\n name: workspace.name,\n slug: workspace.slug,\n description: workspace.description ?? 'N/A',\n isDefault: workspace.isDefault ? 'Yes' : 'No',\n createdBy: workspace.createdBy ?? 'N/A',\n createdAt: workspace.createdAt ? new Date(workspace.createdAt).toLocaleString() : 'N/A',\n updatedAt: workspace.updatedAt ? new Date(workspace.updatedAt).toLocaleString() : 'N/A',\n url: workspaceLink(workspace.id),\n };\n output.output(formatted);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return workspaces;\n}\n",
@@ -55,13 +57,14 @@
55
57
  "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",
56
58
  "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';\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 integrate ${confirmedFramework.name}`);\n output.info(' 2. Follow the integration guide to add tracing to your code');\n output.info(' 3. Run: mutagent traces list (to verify traces are arriving)');\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 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: {\n instruction: 'Verify workspace. Run: mutagent workspaces list --json',\n next: ['mutagent workspaces list --json', 'mutagent prompts list --json'],\n ...(!skillInstalled ? {\n skillInstall: {\n instruction: [\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 'Then add this hooks config to .claude/settings.local.json:',\n ' {\"hooks\":{\"SessionStart\":[{\"matcher\":\"startup\",\"hooks\":[{\"type\":\"command\",\"command\":\"mutagent hooks claude-code session-start\"}]}],\"Stop\":[{\"hooks\":[{\"type\":\"command\",\"command\":\"mutagent hooks claude-code session-end\"}]}],\"PreToolUse\":[{\"hooks\":[{\"type\":\"command\",\"command\":\"mutagent hooks claude-code pre-tool-use\"}]}],\"PostToolUse\":[{\"hooks\":[{\"type\":\"command\",\"command\":\"mutagent hooks claude-code post-tool-use\"}]}]}}',\n '',\n 'If the user picks option 2, run only: mutagent skills install --json',\n ].join('\\n'),\n command: 'mutagent skills install --json',\n },\n } : {}),\n },\n };\n\n output.output(summary);\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return init;\n}\n",
57
59
  "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",
58
- "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { resolve } from 'path';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError } from '../lib/errors.js';\nimport { MutationContext } from '../lib/mutation-context.js';\nimport {\n exploreCodebase,\n parseExtensions,\n parseExcludeDirs,\n} from '../lib/explorer.js';\nimport type { ExploreOptions } from '../lib/explorer.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface ExploreCommandOptions {\n path?: string;\n depth?: string;\n include?: string;\n exclude?: string;\n markersOnly?: boolean;\n}\n\n// =============================================================================\n// Command\n// =============================================================================\n\nexport function createExploreCommand(): Command {\n const explore = new Command('explore')\n .description('Scan codebase for prompts, datasets, and MutagenT markers')\n .option('-p, --path <dir>', 'Directory to scan', '.')\n .option('--depth <n>', 'Max directory depth', '10')\n .option('--include <glob>', 'Include file pattern', '**/*.{ts,js,py,tsx,jsx}')\n .option('--exclude <dirs>', 'Comma-separated directories to exclude', 'node_modules,dist,.git,build,.next,__pycache__,venv,.venv')\n .option('--markers-only', 'Only find existing MutagenT markers')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent explore\n ${chalk.dim('$')} mutagent explore --path ./src\n ${chalk.dim('$')} mutagent explore --include \"**/*.{ts,py}\" --depth 5\n ${chalk.dim('$')} mutagent explore --markers-only\n ${chalk.dim('$')} mutagent explore --json\n\nDetection modes:\n ${chalk.dim('Heuristic')} Template variables ({{var}}), prompt constants, schema definitions\n ${chalk.dim('Marker')} MutagenT:START/END comment markers from previous uploads\n\n${chalk.dim('Results are saved to .mutagent/mutation-context.md for use by other commands.')}\n `)\n .action((options: ExploreCommandOptions) => {\n const isJson = getJsonFlag(explore);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const scanPath = resolve(options.path ?? '.');\n const depth = parseInt(options.depth ?? '10', 10);\n const extensions = parseExtensions(options.include ?? '**/*.{ts,js,py,tsx,jsx}');\n const excludeDirs = parseExcludeDirs(options.exclude ?? 'node_modules,dist,.git,build,.next,__pycache__,venv,.venv');\n const markersOnly = options.markersOnly ?? false;\n\n const exploreOpts: ExploreOptions = {\n path: scanPath,\n depth,\n extensions,\n excludeDirs,\n markersOnly,\n };\n\n if (!isJson) {\n console.log(chalk.cyan(`\\nScanning ${scanPath}...\\n`));\n }\n\n const result = exploreCodebase(exploreOpts);\n\n // Save results to mutation context\n const ctx = MutationContext.load(scanPath);\n\n for (const prompt of result.prompts) {\n ctx.addDiscoveredPrompt(prompt.file, prompt.line, prompt.preview);\n }\n\n for (const dataset of result.datasets) {\n ctx.addDiscoveredDataset(dataset.file, dataset.name, dataset.items);\n }\n\n ctx.save();\n\n // Output results\n if (isJson) {\n output.output({\n prompts: result.prompts,\n datasets: result.datasets,\n markers: result.markers,\n summary: {\n totalPrompts: result.prompts.length,\n totalDatasets: result.datasets.length,\n totalMarkers: result.markers.length,\n },\n contextFile: '.mutagent/mutation-context.md',\n });\n } else {\n // Summary header\n const totalFindings = result.prompts.length + result.datasets.length + result.markers.length;\n\n if (totalFindings === 0) {\n output.info('No prompts, datasets, or markers found.');\n console.log(chalk.dim('\\n Tip: Create a prompt with template variables like {{input}} to get started.'));\n return;\n }\n\n // Prompts table\n if (result.prompts.length > 0) {\n console.log(chalk.bold(` Prompts Found (${String(result.prompts.length)}):`));\n console.log();\n for (const p of result.prompts) {\n const confidenceTag = p.confidence === 'high' ? chalk.green('[high]')\n : p.confidence === 'medium' ? chalk.yellow('[medium]')\n : chalk.dim('[low]');\n const reasonTag = chalk.dim(`[${p.reason}]`);\n console.log(` ${confidenceTag} ${chalk.green(p.file)}:${chalk.yellow(String(p.line))} ${reasonTag}`);\n console.log(` ${chalk.dim(p.preview)}`);\n }\n console.log();\n }\n\n // Datasets table\n if (result.datasets.length > 0) {\n console.log(chalk.bold(` Datasets Found (${String(result.datasets.length)}):`));\n console.log();\n for (const d of result.datasets) {\n console.log(` ${chalk.green(d.file)} ${chalk.dim(`(${String(d.items)} items)`)}`);\n }\n console.log();\n }\n\n // Markers table\n if (result.markers.length > 0) {\n console.log(chalk.bold(` MutagenT Markers (${String(result.markers.length)}):`));\n console.log();\n for (const m of result.markers) {\n const idPart = m.platformId ? chalk.cyan(` id=${m.platformId}`) : '';\n console.log(` ${chalk.green(m.file)}:${chalk.yellow(String(m.line))} ${chalk.magenta(m.type)}${idPart}`);\n }\n console.log();\n }\n\n // Summary\n console.log(chalk.dim(' ─────────────────────────────────'));\n console.log(` ${chalk.bold('Summary:')} ${String(result.prompts.length)} prompts, ${String(result.datasets.length)} datasets, ${String(result.markers.length)} markers`);\n console.log(chalk.dim(` Saved to .mutagent/mutation-context.md`));\n console.log();\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return explore;\n}\n",
59
- "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { existsSync, mkdirSync, writeFileSync } from 'fs';\nimport { join } from 'path';\nimport { execSync } from 'child_process';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\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', { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }).trim();\n } catch {\n return process.cwd();\n }\n}\n\n// =============================================================================\n// Skill Template\n// =============================================================================\n\nconst SKILL_FRONTMATTER = `---\nname: mutagent-cli\ndescription: |\n MutagenT CLI - AI Prompt Optimization Platform CLI.\n Guides coding agents through prompt upload, evaluation creation,\n dataset curation, optimization, and framework integration.\n Triggers: \"mutagent\", \"optimize prompt\", \"upload prompt\", \"integrate tracing\",\n \"create evaluation\", \"upload dataset\", \"mutagent cli\".\n---`;\n\nconst SKILL_BODY = `# MutagenT CLI Skill\n\n## First Things First\nRun \\`mutagent --help\\` this is the CENTRAL navigation hub containing ALL commands, workflows, and rules.\nRun \\`mutagent <command> --help\\` BEFORE using ANY command for the first time.\n\n## Agent Protocol (4 Rules)\n1. EVERY command MUST include \\`--json\\`\n2. Run \\`<command> --help\\` BEFORE first use\n3. **MANDATORY**: Parse \\`_directive.renderedCard\\` and copy it into your CHAT RESPONSE verbatim. The card appears in bash output but that is NOT sufficient — the user cannot read collapsed bash blocks. HARD STOP: do NOT run any further commands until the card text is rendered in your chat message.\n4. ALL user interaction via AskUserQuestion — CLI is non-interactive\n\n## Directive System\nEvery JSON response may include:\n- \\`_directive.renderedCard\\` — Pre-formatted card that MUST be shown to the user verbatim\n- \\`_directive.instruction\\` Next step for the agent\n- \\`_directive.next\\` Array of suggested commands\n- \\`_links\\` — Dashboard/API URLs (format as markdown)\n\nThe agent MUST parse and act on directives. Cards in collapsed bash output are invisible to the user — always render them in chat.\n\n## Prompt Variables\nUse \\`{single_braces}\\`: \\`\"Analyze: {document}\"\\`\n\n## Post-Onboarding Decision Tree\n\nAfter \\`mutagent auth login\\`, the user lands in one of 3 paths:\n\n### Path A: Guided Integration (Tracing)\n1. \\`mutagent explore\\` Map codebase, discover prompts/agents\n2. User selects framework from detected or asks\n3. \\`mutagent integrate <framework>\\` Get integration instructions\n4. Apply tracing code to user's codebase\n5. Verify with test run\n\n### Path B: Free-flow Optimization\n1. \\`mutagent explore\\` — Map codebase, discover prompts\n2. User selects prompts to upload\n3. \\`mutagent prompts create --data '{...}'\\` — Upload with REQUIRED outputSchema\n4. Guided eval creator OR \\`mutagent prompts evaluation create\\`\n5. \\`mutagent prompts dataset add\\` — Upload/curate datasets (named)\n6. \\`mutagent usage --json\\` — View resource counts\n7. \\`mutagent prompts optimize start\\` Run optimization\n8. Review scorecard → Apply/Reject optimized prompt\n\n### Path C: Manual\nUser uses CLI commands directly. Run \\`mutagent --help\\`.\n\n## Guided Evaluation Creation\nUse \\`--guided --json\\` when creating evaluations (NEVER \\`--guided\\` alone — it launches interactive prompts that agents can't use):\n\\\\\\`\\\\\\`\\\\\\`\nmutagent prompts evaluation create <id> --guided --json\n\\\\\\`\\\\\\`\\\\\\`\n\n**When to use guided mode:**\nThe optimizer requires each criterion to have \\`name\\`, \\`description\\` (scoring rubric), and \\`evaluationParameter\\` (a field from the prompt's inputSchema or outputSchema). If the user's existing evaluation format doesn't match this shape — e.g. they have generic rubrics without per-field targeting, or criteria that don't map 1:1 to schema fields — use \\`--guided\\` to:\n1. Fetch the prompt's inputSchema + outputSchema fields\n2. Show which fields need coverage\n3. Return a criteria template with the exact JSON shape\n\n**Validation rules the CLI enforces:**\n- Every criterion MUST have \\`name\\`, \\`description\\`, and \\`evaluationParameter\\`\n- \\`evaluationParameter\\` MUST match an actual schema field name\n- No duplicate \\`evaluationParameter\\` values — each criterion targets a unique field\n- ALL schema fields must be covered (missing fields = error)\n\n## State Tracking\n- \\`.mutagent/mutation-context.md\\` Codebase index of discovered/uploaded prompts\n- Check and update this file after explore, create, and dataset operations\n- \\`mutagent auth status\\` Auth + workspace state\n- Comment markers (\\`// MutagenT:START ... // MutagenT:END\\`) in source files\n\n## Post-Optimization\nAfter \\`optimize results\\`: ALWAYS show the before/after diff to the user first. Then offer choices via AskUserQuestion: Apply / Reject.\n\n## Evaluation Criteria Reminder\nEvery evaluation MUST specify criteria targeting either:\n- Input variable fields (from inputSchema)\n- Output fields (from outputSchema / structured output)\n\n## Optimization Cost Control\n- Default max-iterations is 1. NEVER increase without explicit user request.\n- Each iteration incurs LLM costs. Starting >1 iterations without consent = protocol violation.\n- If user wants more, confirm the number via AskUserQuestion first.\n\n## Claude Code Hooks (Session Telemetry)\nOptional — sends session activity to MutagenT traces API for observability.\n\nInstall via \\`.claude/settings.local.json\\`:\n\\\\\\`\\\\\\`\\\\\\`json\n{\"hooks\": {\n \"SessionStart\": [{\"matcher\": \"startup\", \"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code session-start\"}]}],\n \"Stop\": [{\"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code session-end\"}]}],\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}}\n\\\\\\`\\\\\\`\\\\\\`\nOr run: \\`mutagent init\\` (option 1 installs skill + hooks together)`;\n\n// =============================================================================\n// Skills Command\n// =============================================================================\n\nconst SKILL_DIR = '.claude/skills/mutagent-cli';\nconst SKILL_FILE = 'SKILL.md';\n\nexport function createSkillsCommand(): Command {\n const skills = new Command('skills')\n .description('Manage MutagenT CLI skills for coding agents');\n\n skills\n .command('install')\n .description('Install MutagenT CLI skill for Claude Code')\n .addHelpText('after', `\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 .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 const skillPath = join(skillDir, SKILL_FILE);\n\n // Create directory if needed\n if (!existsSync(skillDir)) {\n mkdirSync(skillDir, { recursive: true });\n }\n\n // Write the skill file\n const content = `${SKILL_FRONTMATTER}\\n\\n${SKILL_BODY}\\n`;\n writeFileSync(skillPath, content, 'utf-8');\n\n if (isJson) {\n output.output({\n installed: true,\n path: skillPath,\n name: 'mutagent-cli',\n });\n } else {\n output.success(`Installed MutagenT CLI skill`);\n console.log(` ${chalk.dim('Path:')} ${skillPath}`);\n console.log('');\n console.log(` ${chalk.dim('This skill teaches coding agents how to use the MutagenT CLI.')}`);\n console.log(` ${chalk.dim('It will be automatically loaded by Claude Code when relevant triggers match.')}`);\n }\n });\n\n return skills;\n}\n",
60
+ "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { resolve } from 'path';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { handleError } from '../lib/errors.js';\nimport { MutationContext } from '../lib/mutation-context.js';\nimport {\n exploreCodebase,\n parseExtensions,\n parseExcludeDirs,\n} from '../lib/explorer.js';\nimport type { ExploreOptions } from '../lib/explorer.js';\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface ExploreCommandOptions {\n path?: string;\n depth?: string;\n include?: string;\n exclude?: string;\n markersOnly?: boolean;\n}\n\n// =============================================================================\n// Command\n// =============================================================================\n\nexport function createExploreCommand(): Command {\n const explore = new Command('explore')\n .description('Scan codebase for prompts, datasets, and MutagenT markers')\n .option('-p, --path <dir>', 'Directory to scan', '.')\n .option('--depth <n>', 'Max directory depth', '10')\n .option('--include <glob>', 'Include file pattern', '**/*.{ts,js,py,tsx,jsx}')\n .option('--exclude <dirs>', 'Comma-separated directories to exclude', 'node_modules,dist,.git,build,.next,__pycache__,venv,.venv')\n .option('--markers-only', 'Only find existing MutagenT markers')\n .addHelpText('after', `\nExamples:\n ${chalk.dim('$')} mutagent explore\n ${chalk.dim('$')} mutagent explore --path ./src\n ${chalk.dim('$')} mutagent explore --include \"**/*.{ts,py}\" --depth 5\n ${chalk.dim('$')} mutagent explore --markers-only\n ${chalk.dim('$')} mutagent explore --json\n\nDetection modes:\n ${chalk.dim('Heuristic')} Template variables ({var} or {{var}}), prompt constants, schema definitions\n ${chalk.dim('Marker')} MutagenT:START/END comment markers from previous uploads\n ${chalk.dim('Agents')} Multi-turn / tool-calling patterns (informational — WIP)\n\n${chalk.bold('Template variable delimiters (inferred per-file):')}\n ${chalk.dim('single')} ${chalk.cyan('{variable}')} MutagenT platform canonical; LangChain PromptTemplate\n ${chalk.dim('double')} ${chalk.cyan('{{variable}}')} Handlebars / Mustache / LiquidJS / Jinja2 / LangChain ChatPromptTemplate\n\n ${chalk.dim('Inference is per-file: majority of bracket style wins, tie goes to single')}\n ${chalk.dim('(platform canonical). Fenced code blocks are stripped first; {\"json\": ...} ')}\n ${chalk.dim('literals are skipped via JSON-key lookahead. See the mutagent-cli skill at ')}\n ${chalk.dim('concepts/prompt-variables.md for the full contract.')}\n\n ${chalk.dim('With --json, each discovered prompt carries a ')}${chalk.cyan('delimiter')}${chalk.dim(' field:')}\n ${chalk.dim('{ \"file\": \"src/prompts/summarize.ts\", \"line\": 12, \"reason\": \"template-variable\", \"delimiter\": \"single\" }')}\n\n${chalk.dim('Results are saved to .mutagent/mutation-context.md for use by other commands.')}\n `)\n .action((options: ExploreCommandOptions) => {\n const isJson = getJsonFlag(explore);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n const scanPath = resolve(options.path ?? '.');\n const depth = parseInt(options.depth ?? '10', 10);\n const extensions = parseExtensions(options.include ?? '**/*.{ts,js,py,tsx,jsx}');\n const excludeDirs = parseExcludeDirs(options.exclude ?? 'node_modules,dist,.git,build,.next,__pycache__,venv,.venv');\n const markersOnly = options.markersOnly ?? false;\n\n const exploreOpts: ExploreOptions = {\n path: scanPath,\n depth,\n extensions,\n excludeDirs,\n markersOnly,\n };\n\n if (!isJson) {\n console.log(chalk.cyan(`\\nScanning ${scanPath}...\\n`));\n }\n\n const result = exploreCodebase(exploreOpts);\n\n // Save results to mutation context\n const ctx = MutationContext.load(scanPath);\n\n for (const prompt of result.prompts) {\n ctx.addDiscoveredPrompt(prompt.file, prompt.line, prompt.preview);\n }\n\n for (const dataset of result.datasets) {\n ctx.addDiscoveredDataset(dataset.file, dataset.name, dataset.items);\n }\n\n ctx.save();\n\n // Output results\n if (isJson) {\n output.output({\n prompts: result.prompts,\n datasets: result.datasets,\n markers: result.markers,\n agents: result.agents,\n agentsWip: result.agents.length > 0 ? {\n status: 'early-access',\n message: 'Agent detection is informational only. Agent optimization & evaluation are WIP.',\n earlyAccessUrl: 'https://www.mutagent.io/agents-partnership',\n } : undefined,\n summary: {\n totalPrompts: result.prompts.length,\n totalDatasets: result.datasets.length,\n totalMarkers: result.markers.length,\n totalAgents: result.agents.length,\n },\n contextFile: '.mutagent/mutation-context.md',\n });\n } else {\n // Summary header\n const totalFindings = result.prompts.length + result.datasets.length + result.markers.length + result.agents.length;\n\n if (totalFindings === 0) {\n output.info('No prompts, datasets, or markers found.');\n console.log(chalk.dim('\\n Tip: Create a prompt with template variables like {{input}} to get started.'));\n return;\n }\n\n // Prompts table\n if (result.prompts.length > 0) {\n console.log(chalk.bold(` Prompts Found (${String(result.prompts.length)}):`));\n console.log();\n for (const p of result.prompts) {\n const confidenceTag = p.confidence === 'high' ? chalk.green('[high]')\n : p.confidence === 'medium' ? chalk.yellow('[medium]')\n : chalk.dim('[low]');\n const reasonTag = chalk.dim(`[${p.reason}]`);\n console.log(` ${confidenceTag} ${chalk.green(p.file)}:${chalk.yellow(String(p.line))} ${reasonTag}`);\n console.log(` ${chalk.dim(p.preview)}`);\n }\n console.log();\n }\n\n // Datasets table\n if (result.datasets.length > 0) {\n console.log(chalk.bold(` Datasets Found (${String(result.datasets.length)}):`));\n console.log();\n for (const d of result.datasets) {\n console.log(` ${chalk.green(d.file)} ${chalk.dim(`(${String(d.items)} items)`)}`);\n }\n console.log();\n }\n\n // Markers table\n if (result.markers.length > 0) {\n console.log(chalk.bold(` MutagenT Markers (${String(result.markers.length)}):`));\n console.log();\n for (const m of result.markers) {\n const idPart = m.platformId ? chalk.cyan(` id=${m.platformId}`) : '';\n console.log(` ${chalk.green(m.file)}:${chalk.yellow(String(m.line))} ${chalk.magenta(m.type)}${idPart}`);\n }\n console.log();\n }\n\n // Agents table + WIP card\n if (result.agents.length > 0) {\n console.log(chalk.bold(` Agents Detected (${String(result.agents.length)}):`));\n console.log();\n for (const a of result.agents) {\n const confidenceTag = a.confidence === 'high' ? chalk.green('[high]')\n : a.confidence === 'medium' ? chalk.yellow('[medium]')\n : chalk.dim('[low]');\n const reasonTag = chalk.dim(`[${a.reason}]`);\n console.log(` ${confidenceTag} ${chalk.green(a.file)}:${chalk.yellow(String(a.line))} ${reasonTag}`);\n console.log(` ${chalk.dim(a.preview)}`);\n }\n console.log();\n // WIP card\n console.log(chalk.yellow(' ┌─ Agents: Early Access / WIP ──────────────────────────────'));\n console.log(chalk.yellow(' │ ') + chalk.bold('Agent optimization & evaluation are actively in development.'));\n console.log(chalk.yellow(' │ ') + chalk.dim('Detected patterns above are informational only.'));\n console.log(chalk.yellow(' │ ') + chalk.dim('The Prompt path (single-shot + output schema) is production-ready.'));\n console.log(chalk.yellow(' │ ') + chalk.dim('Join early access for the Agent path:'));\n console.log(chalk.yellow(' │ ') + chalk.cyan('https://www.mutagent.io/agents-partnership'));\n console.log(chalk.yellow(' └────────────────────────────────────────────────────────────'));\n console.log();\n }\n\n // Summary\n console.log(chalk.dim(' ─────────────────────────────────'));\n console.log(` ${chalk.bold('Summary:')} ${String(result.prompts.length)} prompts, ${String(result.datasets.length)} datasets, ${String(result.markers.length)} markers, ${String(result.agents.length)} agents`);\n console.log(chalk.dim(` Saved to .mutagent/mutation-context.md`));\n console.log();\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return explore;\n}\n",
61
+ "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 workspacepackage-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/prompts.md`,\n * `concepts/eval-criteria.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",
62
+ "/**\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 - AI Prompt Optimization Platform CLI.\\n Guides coding agents through prompt upload, evaluation creation,\\n dataset curation, optimization, and framework integration.\\n Triggers: \\\"mutagent\\\", \\\"optimize prompt\\\", \\\"upload prompt\\\", \\\"integrate tracing\\\",\\n \\\"create evaluation\\\", \\\"upload dataset\\\", \\\"explore prompts\\\", \\\"mutagent cli\\\".\\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## SKILL vs CLI — responsibility split\\n\\n| Layer | Owner | Responsibility |\\n|---|---|---|\\n| **SKILL** (this file + subfiles) | here | journeys, routing, 5 rules, enforcement |\\n| **CLI** | `mutagent <cmd>` | commands, flags, `--json`, `_directive.*`, `_links` |\\n| Platform | api.mutagent.io | storage, optimization, eval execution, `{variable}` rendering |\\n\\n**Rule**: SKILL never duplicates CLI flag lists — always `mutagent <cmd> --help` for flags.\\n\\n---\\n\\n## 5 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. **NEVER auto-generate eval criteria — collect from user.** Ask the user for each rubric field. See [concepts/eval-criteria.md](./concepts/eval-criteria.md) for the 3-tier format.\\n4. **Explore-before-modify.** Run `mutagent explore --json` before any write operation. Present findings, get user confirmation. Never mutate without discovery first.\\n5. **Cost transparency before `optimize start`.** Run `mutagent usage --json` and show the result to the user. Get explicit confirmation before any optimization job.\\n\\n---\\n\\n## Journey Router — route by user intent\\n\\nMatch the user's first request. Load ONLY the matching subfile. Do NOT preload the whole set.\\n\\n| User said / signal detected | Load subfile | Why |\\n|---|---|---|\\n| \\\"trace\\\", \\\"observe\\\", \\\"integrate\\\", \\\"add framework\\\" | [workflows/tracing.md](./workflows/tracing.md) | Non-destructive, fastest first-value path |\\n| \\\"optimize\\\", \\\"improve\\\", \\\"tune\\\", \\\"evaluate\\\", \\\"upload prompt\\\" | [workflows/optimization.md](./workflows/optimization.md) | Full create→dataset→eval→optimize loop |\\n| \\\"explore\\\", \\\"scan\\\", \\\"find prompts\\\", \\\"what prompts\\\", \\\"discover\\\" | [workflows/exploration.md](./workflows/exploration.md) | Read-only discovery + taxonomy |\\n| `AgentExecutor`, `StateGraph`, `createReactAgent`, `tool_calls`, `@tool`, `langgraph`, `crewai`, `autogen`, `openai/agents`, multi-turn | [workflows/agents.md](./workflows/agents.md) | WIP path — surface partnership link |\\n| \\\"how do variables work\\\", \\\"single vs double braces\\\", delimiter | [concepts/prompt-variables.md](./concepts/prompt-variables.md) | Delimiter inference contract |\\n| \\\"what makes a good eval\\\", \\\"rubric\\\", \\\"evaluation criteria\\\" | [concepts/eval-criteria.md](./concepts/eval-criteria.md) | INPUT MVC + OUTPUT Standards |\\n| Unclear / first time | run `mutagent explore --json` first, then reroute | Discovery before action |\\n\\n---\\n\\n## Subfile Map\\n\\n| File | WHEN to load | WHY | ENFORCEMENT |\\n|---|---|---|---|\\n| [workflows/tracing.md](./workflows/tracing.md) | User wants to add framework tracing / observability | Non-destructive append-only integration sequence | Must run explore first (Rule 4) |\\n| [workflows/optimization.md](./workflows/optimization.md) | User wants to optimize or evaluate a prompt | Full loop: explore → upload → dataset → eval → optimize → apply | Must check usage before optimize (Rule 5); must collect rubrics from user (Rule 3) |\\n| [workflows/exploration.md](./workflows/exploration.md) | User wants to scan codebase, identify prompts vs agents | Read-only discovery; output taxonomy to user | Run only; no writes |\\n| [workflows/agents.md](./workflows/agents.md) | Multi-turn / tool-calling code detected | WIP — do NOT attempt optimizer, surface partnership link | Show WIP card to user verbatim |\\n| [concepts/prompt-variables.md](./concepts/prompt-variables.md) | Any question about `{var}` vs `{{var}}`, delimiter inference | Brace convention + conversion rules | Load before `prompts create` in optimization workflow |\\n| [concepts/eval-criteria.md](./concepts/eval-criteria.md) | Any question about rubric design, MVC, Output Standards | 3-tier rubric format — INPUT-param vs OUTPUT-param scope | Load before `evaluation create --guided` in optimization workflow |\\n\\n---\\n\\n## Output handling\\n\\nAfter every CLI command:\\n- **Show the command output to the user.** Command output appears in bash blocks that users may not see — always present the key results in your chat response.\\n- **For evaluation create `--guided`**: the CLI provides per-field questions for each schema field. Ask the user each question in turn. Do not skip any field. Do not pre-fill answers.\\n- **For `optimize results`**: present the before/after scorecard to the user and confirm whether to apply, view diff, or reject.\\n\\n---\\n\\n## Anti-patterns — NEVER do these\\n\\n- Run any command without `--json`\\n- Auto-generate eval criteria — always collect from the user\\n- Skip any schema field when collecting evaluation rubrics\\n- Skip `mutagent explore --json` before any write operation\\n- Run `optimize start` without first showing `usage --json` to the user\\n- Increase `--max-iterations` above 1 without explicit user consent (each iteration = LLM spend)\\n- Run a multi-turn agent through the prompt optimizer\\n- Skip showing command output results to the user\\n- Inline CLI flags from memory — always read `--help` first\\n\\n---\\n\\n## State Tracking\\n\\n- `.mutagent/mutation-context.md` — codebase index of discovered/uploaded prompts. Update after explore, create, dataset ops.\\n- `mutagent auth status --json` — auth + workspace state.\\n\\n---\\n\\n## Login (two paths)\\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 `lib/auth-flow.ts`. Decision record: [cli-design-principles.md](../../docs/cli-design-principles.md) → Login Unification.\\n\\n---\\n\\n## Extensibility\\n\\nAdd `workflows/custom-<name>.md` with frontmatter `triggers: [\\\"phrase\\\"]` — auto-discovered by the decision tree fallback row. No rebuild needed.\\n\",\n \"concepts/eval-criteria.md\": \"---\\nname: mutagent-cli-concepts-eval-criteria\\ndescription: |\\n Canonical source for MutagenT evaluation-criteria framing:\\n INPUT-param criteria → Minimum Viable Context (MVC);\\n OUTPUT-param criteria → Output Standards.\\n 3-tier rubric discipline: grounded, observable, never vague.\\n Includes current platform validation rules for criterion shape.\\n Mirrored in mutagent/src/modules/prompts/prompt-evaluations/README.md.\\ntriggers:\\n - \\\"evaluation criteria\\\"\\n - \\\"eval criteria\\\"\\n - \\\"rubric\\\"\\n - \\\"how do I evaluate\\\"\\n - \\\"minimum viable context\\\"\\n - \\\"output standards\\\"\\n - \\\"evaluationParameter\\\"\\n - \\\"guided eval\\\"\\n---\\n\\n# Concept — Guided Evaluation Criteria\\n\\n> **Canonical source** for the INPUT vs OUTPUT framing. Mirrored in:\\n> - `mutagent-cli/src/commands/prompts/evaluation/guided-workflow.ts` — kept in sync.\\n> - `mutagent/src/modules/prompts/prompt-evaluations/README.md` as BE-side\\n> reference — mirror, not a fork.\\n\\n## The golden rule\\n\\n**Every evaluation criterion is scoped to EITHER the inputs OR the outputs of\\nthe prompt. Never both in one criterion.**\\n\\nMixing them produces vague criteria (\\\"is the output good given the inputs?\\\")\\nthat the optimizer cannot act on. When collecting rubrics from the user,\\nexplicitly frame each question around one of these two scopes.\\n\\n---\\n\\n## NEVER auto-generate criteria\\n\\nThis is Rule 3 of the [5 Core Rules](../SKILL.md). Reasons:\\n\\n- Auto-generated rubrics are vague by default (\\\"score based on accuracy\\\")\\n- The optimizer cannot act on vague criteria — it needs observable tiers\\n- The user knows what \\\"correct\\\" means for their domain; the agent does not\\n- Generic rubrics produce noisy scores that mislead the optimizer\\n\\n**Always use AskUserQuestion to collect rubrics, one per variable/dimension.**\\n\\nWhen `evaluation create --guided --json` runs, the CLI provides a list of\\nfields that need rubrics. Ask the user about EVERY field in that list.\\nDo not skip any field. Do not pre-fill answers. The user must provide each rubric.\\n\\n---\\n\\n## Input-param criteria → Minimum Viable Context (MVC)\\n\\n**Scope**: the `{variables}` the prompt template consumes. Each `{variable}` is\\nan **input param**. The criterion asks: *is the information required for the\\nprompt to succeed actually present?*\\n\\n### 3-tier completeness scale (grounded, never vague)\\n\\n- `1.0` — all required context present, no ambiguity\\n- `0.5` — some context present, enough to attempt but likely partial/hedged answer\\n- `0.0` — critical context missing, prompt cannot succeed regardless of model\\n\\n### Discipline rules\\n\\n- **Grounded**: every tier must describe an observable property of the input\\n data, not a feeling.\\n- **Observable**: a human reader should assign a tier by looking at a single\\n input row — no model output needed.\\n- **Per-variable**: one criterion per `{variable}`. This localizes optimizer signal.\\n\\n### Before asking the user\\n\\nEnumerate variables using the delimiter inferred by `mutagent explore --json`:\\n- `delimiter: \\\"single\\\"` → `{foo}` — platform canonical\\n- `delimiter: \\\"double\\\"` → `{{foo}}` — framework template; convert before upload\\n\\nSee [concepts/prompt-variables.md](./prompt-variables.md) for the full inference contract.\\n\\n### Example\\n\\nFor `\\\"Summarize {document} for {audience}\\\"`:\\n\\n```json\\n[\\n {\\n \\\"name\\\": \\\"document-present\\\",\\n \\\"evaluationParameter\\\": \\\"document\\\",\\n \\\"description\\\": \\\"1.0 = actual prose text >= 100 chars. 0.5 = short snippet or summary stub. 0.0 = filename, null, TODO, or empty.\\\"\\n },\\n {\\n \\\"name\\\": \\\"audience-concrete\\\",\\n \\\"evaluationParameter\\\": \\\"audience\\\",\\n \\\"description\\\": \\\"1.0 = concrete persona (e.g. 'junior Python devs'). 0.5 = broad category ('engineers'). 0.0 = empty, 'general', 'everyone'.\\\"\\n }\\n]\\n```\\n\\nNote the 1:1 mapping: one criterion per variable, `evaluationParameter` equal\\nto the variable name.\\n\\n---\\n\\n## Output-param criteria → Output Standards\\n\\n**Scope**: the model's response shape and content. Pick the dimensions relevant\\nto the task and write one criterion per dimension.\\n\\n### Common dimensions\\n\\n- **Content correctness** — right answer, right facts, right tone\\n- **Structural correctness** — matches `outputSchema`, required fields, enums, length\\n- **Groundedness** — facts in the output traceable to facts in the input\\n- **Format compliance** — JSON validity, markdown shape, regex match\\n\\n### 3-tier correctness scale\\n\\nConcrete pass/fail per tier. **Never** write \\\"0-1 scale\\\" or \\\"score based on\\naccuracy\\\" — those are vague and the optimizer can't act on them.\\n\\n### Example (JSON-output summarizer)\\n\\n```json\\n{\\n \\\"name\\\": \\\"summary-correctness\\\",\\n \\\"evaluationParameter\\\": \\\"summary\\\",\\n \\\"description\\\": \\\"1.0 = valid JSON, all 3 required fields, covers all key arguments. 0.5 = valid JSON, 1-2 arguments missing/hedged. 0.0 = invalid JSON OR fabricated facts.\\\"\\n}\\n```\\n\\nThe `evaluationParameter` here is the output-schema field name, not an input\\nvariable. Same 1:1 discipline — one criterion per output dimension.\\n\\n---\\n\\n## Platform validation rules (current)\\n\\nWhen creating an evaluation via `mutagent prompts evaluation create -d '<json>'`,\\neach criterion must pass these platform-enforced checks:\\n\\n| Field | Required | Validation |\\n|---|---|---|\\n| `name` | yes | slug-like, no spaces, `[a-z0-9-_]` |\\n| `description` | yes | non-empty, ideally >= 20 chars with tier definitions |\\n| `evaluationParameter` | yes | must match a variable name from the prompt OR an output field name |\\n\\n**Common validation failures:**\\n- `evaluationParameter` references a variable not in the prompt template → rejected\\n- `description` is too short or vague → accepted by platform but produces poor scores\\n- Multiple criteria with the same `evaluationParameter` → accepted but wasteful\\n\\n---\\n\\n## How to apply when creating an evaluation\\n\\n1. **Read the prompt template.** Enumerate `{variables}` (input params) +\\n expected output shape (from `outputSchema` or the code's parse logic).\\n2. **Ask the user**: \\\"Evaluate INPUTS (is context sufficient) or OUTPUTS\\n (is response correct) first?\\\" — let the user pick the scope.\\n3. **Collect criteria**: use AskUserQuestion to collect from user, never auto-generate — one per variable (INPUT) or per dimension (OUTPUT),\\n always with a 3-tier rubric describing observable behavior.\\n4. **Map to platform shape**:\\n ```typescript\\n {\\n name: string; // short, slug-like\\n description: string; // the 3-tier rubric verbatim\\n evaluationParameter: string; // the variable name OR output field\\n }\\n ```\\n5. **Upload** via `mutagent prompts evaluation create <id> -d '<json>' --json`.\\n\\nThe `--guided` flag walks the user through this flow interactively — use it\\nwhen the user is new to the concept. Follow the CLI's next-step guidance in\\nthe output to collect rubrics in the correct order.\\n\\n---\\n\\n## Anti-patterns\\n\\n- **Auto-generating criteria** — Rule 3: NEVER. Always collect from user.\\n- **Mixing input and output in one criterion** — breaks signal; split into two.\\n- **Vague rubrics** — \\\"0.8 if mostly good\\\" → rewrite with observable tiers.\\n- **One criterion for many variables** — reduces signal, slows optimization.\\n- **Scoring the model, not the data** — MVC scores the INPUT data quality.\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → 5 rules (Rule 3: never auto-generate)\\n- [workflows/optimization.md](../workflows/optimization.md) → steps 7-9 (where this concept is applied)\\n- [concepts/prompt-variables.md](./prompt-variables.md) → delimiter inference (used in MVC step)\\n- `mutagent/src/modules/prompts/prompt-evaluations/README.md` → BE mirror\\n\",\n \"concepts/prompt-variables.md\": \"---\\nname: mutagent-cli-concepts-prompt-variables\\ndescription: |\\n Prompt template variable delimiter inference contract.\\n Platform canonical is single-brace {variable}. Third-party frameworks vary\\n (Handlebars / Mustache / Liquid / Jinja2 use double {{variable}}).\\n `mutagent explore` infers the delimiter per file and surfaces it in\\n `--json` output as `delimiter: \\\"single\\\" | \\\"double\\\"`.\\n Includes conversion rules for upload and apply phases.\\ntriggers:\\n - \\\"prompt variables\\\"\\n - \\\"template variables\\\"\\n - \\\"single vs double brace\\\"\\n - \\\"{variable}\\\"\\n - \\\"{{variable}}\\\"\\n - \\\"delimiter\\\"\\n - \\\"inferPromptVariables\\\"\\n - \\\"brace convention\\\"\\n - \\\"convert variables\\\"\\n---\\n\\n# Concept — Prompt Variables\\n\\n## Platform canonical\\n\\n**MutagenT platform uses single-brace `{variable}`.** The platform renders\\nprompts by substituting `{name}` with the provided value at optimization /\\nevaluation time.\\n\\n## Third-party framework variance\\n\\nReal-world codebases use different delimiters depending on which prompt\\nframework the user already has installed:\\n\\n| Framework | Delimiter | Example |\\n|---|---|---|\\n| **MutagenT platform** (canonical) | single | `{document}` |\\n| **LangChain** `PromptTemplate` | single | `{document}` |\\n| **LangChain** `ChatPromptTemplate` + Mustache | double | `{{document}}` |\\n| **Handlebars** | double | `{{document}}` |\\n| **Mustache** | double | `{{document}}` |\\n| **LiquidJS** | double | `{{ document }}` |\\n| **Jinja2** (Python) | double | `{{ document }}` |\\n\\n---\\n\\n## Brace conversion — upload and apply\\n\\nGetting this wrong breaks templates after optimization. Follow the two-phase rule:\\n\\n### Phase 1 — Upload (code → MutagenT)\\n\\nIf the code has `{{double}}` braces:\\n1. Warn the user: \\\"Your template uses `{{double}}` braces (Handlebars/LangChain Mustache). MutagenT uses `{single}` braces. I'll convert before uploading.\\\"\\n2. Convert `{{name}}` → `{name}` in the prompt content passed to `mutagent prompts create`.\\n3. Record the original delimiter in `.mutagent/mutation-context.md` so the apply phase knows to convert back.\\n\\nIf the code has `{single}` braces: no conversion needed — upload as-is.\\n\\n### Phase 2 — Apply (MutagenT → code)\\n\\nAfter optimization, the platform returns a prompt with `{single}` braces.\\n\\nIf the original codebase used `{{double}}` braces:\\n1. Convert `{name}` → `{{name}}` in the optimized prompt before writing to the source file.\\n2. Confirm with the user before saving.\\n\\nIf the original codebase used `{single}` braces: write the optimized prompt as-is.\\n\\n**Summary table:**\\n\\n| Code uses | Upload | Optimized output | Write back to code |\\n|---|---|---|---|\\n| `{single}` | as-is | `{single}` | as-is |\\n| `{{double}}` | convert to `{single}` | `{single}` | convert back to `{{double}}` |\\n\\n---\\n\\n## Per-file inference — `mutagent explore`\\n\\nThe CLI's `mutagent explore` command calls `inferPromptVariables()` on every\\nmatching source file and **infers the delimiter per file** rather than\\nglobally. A single repository may contain both LangChain `PromptTemplate`\\n(single) and Handlebars email templates (double) side by side.\\n\\n### Inference algorithm\\n\\n1. **Strip fenced markdown code blocks** first (` ``` ... ``` `). Avoids false\\n positives from prompts that document JSON examples in fenced blocks.\\n2. **Count `{{name}}` matches** → `doubleHits`.\\n3. **Count `{name}` matches** that are NOT adjacent to `{` (not part of `{{...}}`)\\n and NOT followed by `\\\"` (JSON-key skip) → `singleHits`.\\n4. **Majority wins**: `doubleHits > singleHits` → `double`, else `single`.\\n5. **Tie-break**: singleHits === doubleHits (including the 0/0 case) →\\n `single` (platform canonical).\\n\\n### Escaped-JSON caveat\\n\\nPrompts like `\\\"Return {\\\\\\\"status\\\\\\\": \\\\\\\"ok\\\\\\\"}\\\"` — the `{` is followed by `\\\"`, so\\nthe single-brace regex deliberately skips it. Never treat literal JSON keys as\\ntemplate variables.\\n\\n---\\n\\n## How to use the delimiter field\\n\\n`mutagent explore --json` surfaces the inferred delimiter per discovered prompt:\\n\\n```json\\n{\\n \\\"prompts\\\": [\\n {\\n \\\"file\\\": \\\"src/prompts/summarize.ts\\\",\\n \\\"line\\\": 12,\\n \\\"preview\\\": \\\"const prompt = `Summarize {document} for {audience}`;\\\",\\n \\\"reason\\\": \\\"template-variable\\\",\\n \\\"confidence\\\": \\\"high\\\",\\n \\\"delimiter\\\": \\\"single\\\"\\n },\\n {\\n \\\"file\\\": \\\"src/emails/welcome.hbs\\\",\\n \\\"line\\\": 3,\\n \\\"preview\\\": \\\"<p>Hello {{name}}, welcome to {{product}}!</p>\\\",\\n \\\"reason\\\": \\\"template-variable\\\",\\n \\\"confidence\\\": \\\"high\\\",\\n \\\"delimiter\\\": \\\"double\\\"\\n }\\n ]\\n}\\n```\\n\\nUse the delimiter field to:\\n- Enumerate variables correctly (don't treat `{{foo}}` as two `{foo}` tokens).\\n- Decide whether to convert before upload (Phase 1 above).\\n- Drive the [concepts/eval-criteria.md](./eval-criteria.md) → MVC step (one criterion per variable).\\n\\n---\\n\\n## Edge cases\\n\\n- **Empty prompt** — no variables → tie (0/0) → `single` (canonical).\\n- **Mixed delimiters in one file** — majority wins, tied files default to `single`.\\n Warn the user: their codebase probably has two prompt systems co-existing.\\n- **Nested braces** `{{{ foo }}}` — Handlebars triple-brace (no-escape). Currently\\n matched by the double regex as `{{ foo }}`; outer `}` ignored. Fine for inference.\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → 5 rules + journey router\\n- [workflows/optimization.md](../workflows/optimization.md) → step 3 (delimiter drives variable enumeration) and step 15 (apply conversion)\\n- [concepts/eval-criteria.md](./eval-criteria.md) → MVC (Minimum Viable Context) — uses delimiter to enumerate input params\\n- Source: `mutagent-cli/src/lib/explorer.ts` → `inferPromptVariables()` and `DiscoveredPrompt.delimiter`\\n- Tests: `mutagent-cli/src/__tests__/lib/explorer.test.ts`\\n\",\n \"workflows/agents.md\": \"---\\nname: mutagent-cli-workflows-agents\\ndescription: |\\n Agent path (multi-turn, tool-calling) — WORK IN PROGRESS.\\n Agent optimization & evaluation are actively in development.\\n This workflow short-circuits to a partnership link, offers read-only CRUD,\\n and optionally extracts a sub-prompt back to the Optimization path.\\ntriggers:\\n - \\\"agent\\\"\\n - \\\"langchain agent\\\"\\n - \\\"langgraph\\\"\\n - \\\"crewai\\\"\\n - \\\"autogen\\\"\\n - \\\"openai agents\\\"\\n - \\\"tool calling\\\"\\n - \\\"multi-turn\\\"\\n - \\\"AgentExecutor\\\"\\n - \\\"createReactAgent\\\"\\n - \\\"StateGraph\\\"\\n---\\n\\n# Workflow — Agents (WIP)\\n\\n> **This path is WORK IN PROGRESS.** Agent optimization and evaluation are\\n> actively in development. Do NOT run a multi-turn agent through the prompt\\n> optimizer — the platform will reject it, and scores would be meaningless for\\n> a tool-calling loop.\\n\\nRead the **5 rules** in [SKILL.md](../SKILL.md) before executing.\\n\\n---\\n\\n## When this workflow applies\\n\\nLoad this file when the journey router in [SKILL.md](../SKILL.md) matched one of these\\nsignals in the user's code:\\n\\n- `AgentExecutor`, `createReactAgent`, `createToolCallingAgent`, `createStructuredChatAgent`\\n- `from \\\"openai/agents\\\"` or `from \\\"@openai/agents\\\"`\\n- `from \\\"crewai\\\"`, `from \\\"autogen\\\"`, `from \\\"autogen_agentchat\\\"`\\n- `from \\\"@langchain/langgraph\\\"`, `StateGraph(`\\n- `tool_calls` / `toolCalls` property access\\n- `@tool` decorator (Python)\\n- `tools: [...]` array in an LLM call config\\n- `function_call` / `tool_choice` fields\\n- `while` loop + LLM call\\n\\n`mutagent explore --json` flags these under `agents[]` (not `prompts[]`).\\n\\n---\\n\\n## Required card (show this verbatim to the user)\\n\\nWhen the agent path is triggered, copy this card into your chat response\\nverbatim — do NOT paraphrase, do NOT collapse into a bash block:\\n\\n```\\nI see you have an Agent (multi-turn / tool-calling). Agent Optimization &\\nEvaluations are actively in development in MutagenT. For early access and\\nto partner with us on the roadmap:\\n→ https://www.mutagent.io/agents-partnership\\n```\\n\\n---\\n\\n## Sequence\\n\\n```\\n1. Run `mutagent explore --json` if you haven't already.\\n → Confirm agents[] is non-empty.\\n → Show command output to user.\\n\\n2. Show the WIP card above verbatim in your chat response.\\n\\n3. Use AskUserQuestion to explain that agent code cannot be directly optimized:\\n \\\"Your code looks like a multi-turn agent. I can't run it\\n through the prompt optimizer yet. Would you like to:\\n (a) Join early access → https://www.mutagent.io/agents-partnership\\n (b) Inspect existing agents in MutagenT (read-only CRUD)\\n (c) Extract a single sub-prompt inside the agent loop and optimize it\\\"\\n\\n4. Branch:\\n (a) → surface the URL verbatim. STOP.\\n (b) → `mutagent agents list --json` ; `mutagent agents get <id> --json`\\n → show results to user. STOP (no mutations available).\\n (c) → extract one sub-prompt, then route to [workflows/optimization.md](./optimization.md)\\n treating the sub-prompt as a standalone Prompt.\\n```\\n\\n---\\n\\n## Branch (c) — extracting a sub-prompt\\n\\nMulti-turn agents often contain inner prompts that ARE suitable for the\\nOptimization path:\\n\\n- a planner prompt (\\\"given this user goal, list the tools you'd call\\\")\\n- a summarizer prompt (\\\"given these tool results, write the final answer\\\")\\n- a classifier prompt (\\\"which tool should handle this input?\\\")\\n\\nEach of these is a single-shot prompt with a clear output schema. Extract ONE,\\ntreat it as a standalone Prompt.\\n\\nWhen extracting:\\n1. Identify the exact string literal or template that becomes the sub-prompt.\\n2. Enumerate its `{variables}` per [concepts/prompt-variables.md](../concepts/prompt-variables.md).\\n3. Confirm with user: \\\"I'll optimize the planner prompt only, not the full agent. Sound right?\\\"\\n4. On confirmation → load [workflows/optimization.md](./optimization.md) from step 3 (prompts create).\\n\\nDo NOT try to extract the whole agent loop at once.\\n\\n---\\n\\n## What NOT to do\\n\\n- **Do not** call `mutagent prompts optimize start` on an agent file.\\n- **Do not** upload an agent's full system prompt + tool definitions as a single \\\"prompt\\\".\\n- **Do not** suggest \\\"try it anyway\\\" — the WIP status is deliberate.\\n- **Do not** skip showing the WIP card to the user — they need the partnership URL.\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → 5 rules + journey router\\n- [workflows/exploration.md](./exploration.md) → where `agents[]` entries are first detected\\n- [workflows/optimization.md](./optimization.md) → branch (c) destination\\n- [concepts/prompt-variables.md](../concepts/prompt-variables.md) → `{foo}` vs `{{foo}}` for sub-prompt extraction\\n- Partnership link: https://www.mutagent.io/agents-partnership\\n\",\n \"workflows/exploration.md\": \"---\\nname: mutagent-cli-workflows-exploration\\ndescription: |\\n Read-only codebase scan workflow. Discovers prompts and agents, classifies\\n each as optimization-eligible (prompt) or WIP (agent), and presents a\\n structured taxonomy to the user before any write operations.\\ntriggers:\\n - \\\"explore\\\"\\n - \\\"scan codebase\\\"\\n - \\\"find prompts\\\"\\n - \\\"what prompts do I have\\\"\\n - \\\"discover prompts\\\"\\n - \\\"what's in my codebase\\\"\\n---\\n\\n# Workflow — Exploration (Read-Only Discovery)\\n\\n> **This workflow is read-only.** No writes, no uploads, no mutations.\\n> Use it to understand what's in the codebase before deciding next steps.\\n\\nRead the **5 rules** in [SKILL.md](../SKILL.md) before executing. Key reminders:\\n- `--json` on every command\\n- `<command> --help` before first use\\n- This workflow ends with a user question — never auto-proceed to writes\\n\\n---\\n\\n## When this workflow applies\\n\\n- User said \\\"explore my codebase\\\", \\\"what prompts do I have\\\", \\\"find prompts\\\", \\\"scan\\\"\\n- Intent is unclear and you need to discover before acting\\n- User wants to understand what's optimizable before committing to a path\\n\\n---\\n\\n## Prompt vs Agent — taxonomy\\n\\nBefore running explore, understand what the CLI will return:\\n\\n**PROMPT (optimization-eligible)**\\n- Single LLM call: input → LLM → output\\n- Template with `{variables}` (single) or `{{variables}}` (double brace)\\n- Can be evaluated with G-Eval (input/output pair)\\n- Can be optimized by Metatuner\\n- Appears in `prompts[]` in explore output\\n\\n**AGENT (NOT directly optimizable)**\\n- Multi-turn loop: input → LLM → tool → LLM → ... → output\\n- Dynamic branching execution\\n- Cannot be optimized like a prompt (no fixed output schema)\\n- Requires agent-level evaluation (not yet available)\\n- Appears in `agents[]` in explore output\\n\\n### Agent detection heuristics (what `mutagent explore` flags)\\n\\n| Pattern | Framework | Classification |\\n|---|---|---|\\n| `new StateGraph(` / `StateGraph.compile()` | LangGraph | agent |\\n| `new Agent(` / `agent.execute()` | Mastra / custom | agent |\\n| `AgentExecutor` / `createReactAgent` / `createToolCallingAgent` | LangChain | agent |\\n| `from \\\"openai/agents\\\"` / `from \\\"@openai/agents\\\"` | OpenAI Agents SDK | agent |\\n| `from \\\"crewai\\\"` / `from \\\"autogen\\\"` | CrewAI / AutoGen | agent |\\n| `tools: [...]` + LLM call in a loop | custom | agent |\\n| `while` loop + LLM call | custom agent loop | agent |\\n| `@tool` decorator (Python) | any | agent |\\n| `tool_calls` / `toolCalls` property access | any | agent |\\n| Single `openai.chat()` or template string | — | prompt |\\n| String with `{variable}` / `{{variable}}` | — | prompt |\\n\\n---\\n\\n## Workflow steps\\n\\n```\\n1. mutagent explore --json\\n → surfaces: prompts[], agents[], datasets[], markers[]\\n → show command output to user\\n\\n2. Classify results:\\n - prompts[] → optimization-eligible (single-shot, output schema)\\n - agents[] → WIP (multi-turn/tool-calling) — route to [workflows/agents.md](./agents.md)\\n - datasets[] → existing local data (uploadable in optimization workflow)\\n - markers[] → already-uploaded items (show dashboard links)\\n\\n3. Note the `delimiter` field on each prompt entry:\\n - \\\"single\\\" → {variable} — MutagenT native, no conversion needed\\n - \\\"double\\\" → {{variable}} — framework template, conversion required on upload\\n See [concepts/prompt-variables.md](../concepts/prompt-variables.md) for the conversion rules.\\n\\n4. Use AskUserQuestion to present findings and ask which prompts to upload:\\n \\\"Here's what I found in your codebase:\\n - N prompt(s) found: [list files]\\n - N agent(s) found: [list files] (WIP — not optimizable yet)\\n - N dataset(s) found: [list]\\n - N already-uploaded: [list]\\n What would you like to do?\\\"\\n\\n5. Route based on user answer:\\n - \\\"optimize this prompt\\\" → load [workflows/optimization.md](./optimization.md)\\n - \\\"add tracing\\\" → load [workflows/tracing.md](./tracing.md)\\n - \\\"tell me about the agent\\\" → load [workflows/agents.md](./agents.md)\\n - \\\"nothing yet\\\" → STOP (read-only complete)\\n```\\n\\n---\\n\\n## Output handling\\n\\nAfter step 1, show the command output to the user before proceeding to classification. Do NOT proceed to step 2 until the user has seen the results.\\n\\n---\\n\\n## Brace convention note\\n\\n`mutagent explore --json` surfaces `delimiter: \\\"single\\\" | \\\"double\\\"` per discovered prompt. Use this before deciding how to enumerate variables. See [concepts/prompt-variables.md](../concepts/prompt-variables.md) for the full inference contract and conversion rules.\\n\\n---\\n\\n## Common pitfalls\\n\\n- Skipping the classification step → user gets a raw JSON dump instead of a next-action recommendation\\n- Treating `agents[]` entries as optimization-eligible → they are NOT; route to [workflows/agents.md](./agents.md)\\n- Auto-proceeding to writes after explore → always confirm with user first\\n- Ignoring the `delimiter` field → wrong variable enumeration when uploading a double-brace prompt\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → 5 rules + journey router\\n- [concepts/prompt-variables.md](../concepts/prompt-variables.md) → `{foo}` vs `{{foo}}` inference + conversion\\n- [workflows/optimization.md](./optimization.md) → next step after exploration (prompt path)\\n- [workflows/tracing.md](./tracing.md) → next step after exploration (integration path)\\n- [workflows/agents.md](./agents.md) → next step after exploration (agent path)\\n\",\n \"workflows/optimization.md\": \"---\\nname: mutagent-cli-workflows-optimization\\ndescription: |\\n Full prompt optimization journey: explore → prompts create → dataset add →\\n evaluation create (guided) → optimize start → watch/status → results → apply.\\n Enforces 5 rules: --json always, --help before first use, user-collected\\n eval criteria, explore-before-modify, cost transparency before optimize.\\ntriggers:\\n - \\\"optimize prompt\\\"\\n - \\\"improve prompt\\\"\\n - \\\"tune prompt\\\"\\n - \\\"evaluate prompt\\\"\\n - \\\"upload prompt\\\"\\n - \\\"create evaluation\\\"\\n - \\\"upload dataset\\\"\\n - \\\"run optimizer\\\"\\n - \\\"start optimization\\\"\\n---\\n\\n# Workflow — Optimization (Full Journey)\\n\\n> **This is the full loop.** Expect 5-10 CLI calls and at least one long-running\\n> optimizer job. Each step requires user confirmation. Never auto-run the full\\n> chain without presenting findings at each gate.\\n\\nRead the **5 rules** in [SKILL.md](../SKILL.md) before executing. All 5 rules apply here:\\n- `--json` on every command (Rule 1)\\n- `--help` before first use of any command (Rule 2)\\n- **NEVER auto-generate eval criteria** — collect from user (Rule 3)\\n- `mutagent explore --json` before any write (Rule 4)\\n- `mutagent usage --json` before `optimize start` (Rule 5)\\n\\n---\\n\\n## When this workflow applies\\n\\n- User said \\\"optimize prompt\\\", \\\"improve prompt\\\", \\\"tune prompt\\\"\\n- User wants to upload a prompt and measure its quality\\n- User wants to run the Metatuner optimizer\\n\\n---\\n\\n## Required pre-reads (load these before the relevant steps)\\n\\n| Step | Pre-read | Why |\\n|---|---|---|\\n| Before `prompts create` | [concepts/prompt-variables.md](../concepts/prompt-variables.md) | Brace convention — single `{var}` vs double `{{var}}` affects how variables are parsed |\\n| Before `evaluation create --guided` | [concepts/eval-criteria.md](../concepts/eval-criteria.md) | INPUT MVC + OUTPUT Standards — 3-tier rubric format |\\n\\n---\\n\\n## Directive chain\\n\\n```\\nexplore → prompts create → dataset add → evaluation create --guided\\n → [Use AskUserQuestion to collect rubrics from the user for each field]\\n → evaluation create -d '<json>'\\n → usage check\\n → [Use AskUserQuestion to confirm optimization cost with user]\\n → optimize start\\n → optimize status (poll)\\n → optimize results\\n → [Use AskUserQuestion to present scorecard: Apply / View Diff / Reject]\\n → On Apply: Edit source file\\n```\\n\\n---\\n\\n## Full workflow steps\\n\\n```\\n 1. mutagent explore --json\\n → find candidate prompts in codebase\\n → show command output to user\\n → confirm with user: \\\"Which prompt would you like to optimize?\\\"\\n\\n 2. mutagent prompts --help\\n mutagent prompts create --help\\n → read flags before using (Rule 2)\\n\\n 3. Load [concepts/prompt-variables.md](../concepts/prompt-variables.md)\\n → determine if prompt uses {single} or {{double}} braces\\n → if double-brace: warn user about conversion requirement\\n\\n 4. mutagent prompts create --name <name> [--system-file / --raw-file] --json\\n → show command output to user\\n → record promptId from response\\n\\n 5. mutagent prompts dataset add --help\\n → read flags before using\\n\\n 6. mutagent prompts dataset add <promptId> -d '[...]' --name \\\"<name>\\\" --json\\n → upload dataset rows (input/output pairs)\\n → show command output to user\\n → record datasetId\\n\\n 7. Load [concepts/eval-criteria.md](../concepts/eval-criteria.md)\\n → understand INPUT-param (MVC) vs OUTPUT-param (Standards) scope\\n\\n 8. mutagent prompts evaluation create <promptId> --guided --json\\n → the CLI provides a list of fields, each needing a rubric\\n → follow the CLI's next-step guidance in the output\\n → for EVERY field listed (INPUT scope first, then OUTPUT):\\n - ask the user the provided question for that field\\n - wait for user response\\n - do NOT skip any field\\n - do NOT auto-generate any answer\\n → collect at minimum: one INPUT criterion per {variable}, one OUTPUT criterion\\n\\n 9. mutagent prompts evaluation create <promptId> -d '<json>' --json\\n → upload the criteria collected in step 8\\n → show command output to user\\n → record evaluationId\\n\\n10. mutagent usage --json\\n → show usage/quota to user\\n → confirm with user: \\\"This optimization will use N iterations (~X min each).\\n You have Y remaining. Proceed?\\\"\\n → STOP if user declines\\n\\n11. mutagent prompts optimize start <promptId> \\\\\\n --dataset <datasetId> \\\\\\n --evaluation <evaluationId> \\\\\\n --max-iterations 1 \\\\\\n --json\\n → NEVER set --max-iterations > 1 without explicit user consent\\n → record jobId from response\\n\\n12. mutagent prompts optimize status <jobId> --json\\n → poll until status = \\\"completed\\\" or \\\"failed\\\"\\n → show progress to user\\n\\n13. mutagent prompts optimize results <jobId> --json\\n → ALWAYS show before/after scorecard to user\\n\\n14. Confirm with user: \\\"Here's the before/after scorecard. What would you like to do?\\n (a) Apply — update the prompt in your source file\\n (b) View diff first\\n (c) Reject — keep the original\\\"\\n\\n15. On Apply (a): Edit the prompt in the user's source file\\n → replace old prompt text with optimized version\\n → if double-brace codebase: convert {variable} back to {{variable}}\\n → confirm with user before saving\\n```\\n\\n---\\n\\n## Cost control\\n\\n- Default `--max-iterations 1` is the only value you may use without explicit consent.\\n- If user requests more: confirm the number with user → confirm the cost implication.\\n- Each iteration = one full G-Eval run over the dataset × LLM calls. This costs real money.\\n\\n---\\n\\n## Apply / Reject rules\\n\\n- **Apply**: edit the source file with the optimized prompt. If the codebase used `{{double}}` braces, convert the optimized `{single}` brace output back to `{{double}}` before writing. See [concepts/prompt-variables.md](../concepts/prompt-variables.md) → Conversion.\\n- **Reject**: no file changes. Record the jobId in `.mutagent/mutation-context.md` for future reference.\\n- **View diff**: show a unified diff of old vs new prompt text before asking again.\\n\\n---\\n\\n## Common pitfalls\\n\\n- Running `optimize start` before `evaluation create` → optimizer has no scoring signal\\n- Mixing INPUT and OUTPUT criteria in the same rubric → vague scores\\n- Applying results without showing the before/after scorecard first\\n- Forgetting to convert `{single}` back to `{{double}}` after apply in double-brace codebases\\n- Starting with `--max-iterations 3` without consent\\n\\n---\\n\\n## Guided Dataset Creation\\n\\nWhen no local dataset exists, use the guided mode to curate high-quality test data:\\n\\n```\\nmutagent prompts dataset add <prompt-id> --guided --json\\n```\\n\\nThe CLI analyzes the prompt's inputSchema + outputSchema and returns:\\n- **Suggested categories**: edge cases, hard cases, representative cases\\n- **Per-field questions**: what values, what edge cases, what correct output looks like\\n- **Template item**: showing the expected shape for each dataset entry\\n- **Priority rule**: hard cases that expose prompt weaknesses > easy cases that always pass\\n\\nCollect answers from the user, then construct 5-10 dataset items covering all categories.\\nEnsure at least 2 hard/edge cases per category. Then upload:\\n\\n```\\nmutagent prompts dataset add <prompt-id> -d '<constructed-json>' --name '<name>' --json\\n```\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → 5 rules + journey router\\n- [concepts/prompt-variables.md](../concepts/prompt-variables.md) → brace convention + conversion (critical for steps 3 and 15)\\n- [concepts/eval-criteria.md](../concepts/eval-criteria.md) → INPUT MVC + OUTPUT Standards + 3-tier rubric (critical for steps 7-8)\\n- [workflows/exploration.md](./exploration.md) → step 1 of this workflow\\n- [workflows/tracing.md](./tracing.md) → parallel or follow-up path\\n\",\n \"workflows/tracing.md\": \"---\\nname: mutagent-cli-workflows-tracing\\ndescription: |\\n Framework integration workflow. Adds MutagenT tracing/observability to the\\n user's codebase. Non-destructive (append-only), fastest first-value path.\\n Detects framework via `mutagent explore`, generates snippet via\\n `mutagent integrate`, applies via Edit tool, verifies via traces list.\\ntriggers:\\n - \\\"add tracing\\\"\\n - \\\"add observability\\\"\\n - \\\"integrate framework\\\"\\n - \\\"integrate mutagent\\\"\\n - \\\"add mutagent to my code\\\"\\n - \\\"instrument my prompts\\\"\\n - \\\"trace my prompts\\\"\\n---\\n\\n# Workflow — Tracing (Framework Integration)\\n\\n> **Scope**: read + append-only on user code. Never modify existing business\\n> logic — only add tracing imports and decorators.\\n\\nRead the **5 rules** in [SKILL.md](../SKILL.md) before executing. Key reminders:\\n- `--json` on every command\\n- `<command> --help` before first use\\n- Explore before modify (Rule 4)\\n- Show command output to user after every mutation\\n\\n---\\n\\n## When this workflow applies\\n\\n- User said \\\"add tracing\\\", \\\"add observability\\\", \\\"integrate \\\\<framework\\\\>\\\"\\n- User wants to see their prompts captured in the MutagenT dashboard\\n- Fastest path to first value — prefer this before suggesting optimization\\n\\n---\\n\\n## Supported frameworks\\n\\n`mutagent integrate --help` is the authoritative list. Common entries:\\n\\n| Framework | Signal in codebase |\\n|---|---|\\n| LangChain | `from \\\"langchain\\\"`, `PromptTemplate`, `ChatPromptTemplate` |\\n| LangGraph | `from \\\"@langchain/langgraph\\\"`, `StateGraph` |\\n| OpenAI SDK | `import OpenAI`, `openai.chat.completions.create` |\\n| Vercel AI SDK | `import { generateText }` from `\\\"ai\\\"` |\\n| Mastra | `from \\\"@mastra/core\\\"` |\\n| Custom / raw | any string template with `{variable}` |\\n\\n---\\n\\n## Workflow steps\\n\\n```\\n1. mutagent explore --json\\n → detect which framework is in use\\n → show command output to user\\n\\n2. mutagent integrate --help\\n → read the available frameworks and flags (ALWAYS before step 3)\\n\\n3. mutagent integrate <framework> --json\\n → get the integration snippet\\n\\n4. Use AskUserQuestion to confirm before applying code changes: \\\"I'll add the tracing snippet to <file>. Proceed?\\\"\\n → show the snippet preview before applying\\n\\n5. Apply snippet via Edit tool\\n → code change happens here — append imports + decorators only\\n → never touch existing business logic\\n\\n6. mutagent traces list --json\\n → verify integration: check traces count > 0\\n → show results and dashboard link to user\\n```\\n\\n---\\n\\n## Scope guard\\n\\nThis path is **READ + APPEND-ONLY** on the user's code:\\n- ✓ Add import at top of file\\n- ✓ Wrap existing function call with tracing decorator\\n- ✗ Rename variables\\n- ✗ Refactor logic\\n- ✗ Remove existing code\\n\\nIf the integration snippet requires a significant rewrite, confirm scope with the user before proceeding.\\n\\n---\\n\\n## Post-integration state\\n\\nAfter step 6:\\n- Update `.mutagent/mutation-context.md` with the integration marker\\n- Show the dashboard link from traces output so user can verify traces in UI\\n- If user wants to optimize the traced prompt → route to [workflows/optimization.md](./optimization.md)\\n\\n---\\n\\n## Common pitfalls\\n\\n- Skipping step 1 and guessing the framework → let `explore` detect it\\n- Forgetting step 6 → user has no proof the integration works\\n- Editing files outside the `integrate --json` snippet block\\n- Not showing command results to the user after mutations\\n\\n---\\n\\n## Cross-references\\n\\n- [SKILL.md](../SKILL.md) → 5 rules + journey router\\n- [workflows/exploration.md](./exploration.md) → step 1 of this workflow\\n- [workflows/optimization.md](./optimization.md) → natural next step after tracing\\n- [concepts/prompt-variables.md](../concepts/prompt-variables.md) → variable inference for traced prompts\\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",
60
63
  "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 resource counts (prompts, datasets, evaluations, optimizations, experiments)')\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 prompts\n const prompts = await client.listPrompts();\n const promptCount = prompts.length;\n\n // Fetch datasets and evaluations across all prompts in parallel\n let datasetCount = 0;\n let evaluationCount = 0;\n\n if (promptCount > 0) {\n const results = await Promise.all(\n prompts.map(async (prompt) => {\n const id = String(prompt.id);\n const [datasets, evaluations] = await Promise.all([\n client.listDatasets(id).catch(() => [] as unknown[]),\n client.listEvaluations(id).catch(() => [] as unknown[]),\n ]);\n return { datasets: datasets.length, evaluations: evaluations.length };\n })\n );\n\n for (const r of results) {\n datasetCount += r.datasets;\n evaluationCount += r.evaluations;\n }\n }\n\n // Fetch optimizations and experiments counts\n const [optimizations, experiments] = await Promise.all([\n client.listOptimizations().catch(() => [] as unknown[]),\n client.listExperiments().catch(() => [] as unknown[]),\n ]);\n const optimizationCount = Array.isArray(optimizations) ? optimizations.length : 0;\n const experimentCount = Array.isArray(experiments) ? experiments.length : 0;\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 prompts: promptCount,\n datasets: datasetCount,\n evaluations: evaluationCount,\n optimizations: optimizationCount,\n experiments: experimentCount,\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('\\ud83d\\udcca MutagenT Usage'));\n console.log(chalk.dim('\\u2500'.repeat(45)));\n console.log('');\n console.log(chalk.bold('Resources:'));\n console.log(` Prompts: ${chalk.cyan(String(promptCount))}`);\n console.log(` Datasets: ${chalk.cyan(String(datasetCount))}`);\n console.log(` Evaluations: ${chalk.cyan(String(evaluationCount))}`);\n console.log(` Optimizations: ${chalk.cyan(String(optimizationCount))}`);\n console.log(` Experiments: ${chalk.cyan(String(experimentCount))}`);\n console.log('');\n console.log(` Providers: ${chalk.underline(PROVIDERS_URL)}`);\n console.log('');\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n\n return usage;\n}\n",
61
64
  "/**\n * Hooks Command — Claude Code Session Telemetry\n *\n * Hook handlers invoked by AI coding assistants (Claude Code) to send\n * lightweight session telemetry to the MutagenT API using the traces/spans model.\n *\n * All handlers are non-blocking: failures print a warning to stderr and exit 0.\n *\n * Usage (configured in .claude/settings.local.json):\n * mutagent hooks claude-code session-start # stdin: { session_id, ... }\n * mutagent hooks claude-code session-end # stdin: { session_id, ... }\n * mutagent hooks claude-code pre-tool-use # stdin: { session_id, tool_name, tool_input }\n * mutagent hooks claude-code post-tool-use # stdin: { session_id, tool_name, tool_result }\n */\n\nimport { Command } from 'commander';\nimport { randomUUID } from 'crypto';\nimport { join } from 'path';\nimport { tmpdir } from 'os';\nimport { readFileSync, writeFileSync, unlinkSync, existsSync } from 'fs';\nimport { getApiKey, loadConfig } from '../lib/config.js';\n\n// ============================================================================\n// Types\n// ============================================================================\n\ninterface OpenSpan {\n spanId: string;\n startTime: string;\n toolName: string;\n}\n\ninterface HookState {\n traceId: string;\n sessionId: string;\n startTime: string;\n openSpans: Record<string, OpenSpan>;\n}\n\ninterface TracePayload {\n traceId: string;\n sessionId?: string;\n name?: string;\n source: string;\n startTime: string;\n endTime?: string;\n status?: string;\n spans: SpanPayload[];\n metadata?: Record<string, unknown>;\n}\n\ninterface SpanPayload {\n spanId: string;\n name: string;\n kind: string;\n startTime: string;\n endTime?: string;\n status?: string;\n input?: string;\n output?: string;\n metadata?: Record<string, unknown>;\n}\n\n// ============================================================================\n// Non-blocking wrapper\n// ============================================================================\n\nasync function safeExecute(fn: () => Promise<void>): Promise<void> {\n try {\n await fn();\n } catch (err) {\n process.stderr.write(\n `[mutagent hooks] Warning: ${err instanceof Error ? err.message : String(err)}\\n`\n );\n }\n}\n\n// ============================================================================\n// Stdin parsing\n// ============================================================================\n\nasync function readStdin(): Promise<Record<string, unknown>> {\n const chunks: Buffer[] = [];\n for await (const chunk of process.stdin) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk as string));\n }\n return JSON.parse(Buffer.concat(chunks).toString('utf-8')) as Record<string, unknown>;\n}\n\n// ============================================================================\n// State file helpers\n// ============================================================================\n\nfunction stateFilePath(sessionId: string): string {\n return join(tmpdir(), `mutagent-hook-${sessionId}.json`);\n}\n\nfunction readState(sessionId: string): HookState | null {\n const path = stateFilePath(sessionId);\n if (!existsSync(path)) return null;\n try {\n return JSON.parse(readFileSync(path, 'utf-8')) as HookState;\n } catch {\n return null;\n }\n}\n\nfunction writeState(sessionId: string, state: HookState): void {\n writeFileSync(stateFilePath(sessionId), JSON.stringify(state), 'utf-8');\n}\n\nfunction deleteState(sessionId: string): void {\n const path = stateFilePath(sessionId);\n if (existsSync(path)) {\n try {\n unlinkSync(path);\n } catch {\n // Ignore cleanup errors\n }\n }\n}\n\n// ============================================================================\n// API helper (fire-and-forget with timeout)\n// ============================================================================\n\nconst API_TIMEOUT_MS = 5000;\n\nasync function sendBatchTrace(traces: TracePayload[]): Promise<void> {\n const apiKey = getApiKey();\n if (!apiKey) {\n process.stderr.write(\n '[mutagent hooks] Warning: Not authenticated. Run: mutagent auth login\\n'\n );\n return;\n }\n\n const config = loadConfig();\n const endpoint = config.endpoint ?? 'http://localhost:3003';\n\n const headers: Record<string, string> = {\n 'x-api-key': apiKey,\n 'Content-Type': 'application/json',\n };\n if (config.defaultWorkspace) {\n headers['x-workspace-id'] = config.defaultWorkspace;\n }\n if (config.defaultOrganization) {\n headers['x-organization-id'] = config.defaultOrganization;\n }\n\n const controller = new AbortController();\n const timeout = setTimeout(() => { controller.abort(); }, API_TIMEOUT_MS);\n\n try {\n const response = await fetch(`${endpoint}/api/traces/batch`, {\n method: 'POST',\n headers,\n body: JSON.stringify({ traces }),\n signal: controller.signal,\n });\n\n if (!response.ok) {\n const body = await response.text().catch(() => '');\n process.stderr.write(\n `[mutagent hooks] Warning: API returned ${String(response.status)}: ${body.slice(0, 200)}\\n`\n );\n }\n } finally {\n clearTimeout(timeout);\n }\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nfunction getString(input: Record<string, unknown>, ...keys: string[]): string {\n for (const key of keys) {\n const val = input[key];\n if (typeof val === 'string' && val.length > 0) return val;\n }\n return '';\n}\n\n// ============================================================================\n// Payload serialization\n// ============================================================================\n\nfunction serializePayload(value: unknown): string | undefined {\n if (value === undefined || value === null) return undefined;\n return typeof value === 'string' ? value : JSON.stringify(value);\n}\n\n// ============================================================================\n// Event handlers\n// ============================================================================\n\nasync function handleSessionStart(): Promise<void> {\n const input = await readStdin();\n const sessionId = getString(input, 'session_id', 'sessionId');\n if (!sessionId) throw new Error('Missing session_id in stdin');\n\n const now = new Date().toISOString();\n const traceId = `cc-${sessionId}`;\n\n const state: HookState = {\n traceId,\n sessionId,\n startTime: now,\n openSpans: {},\n };\n writeState(sessionId, state);\n\n await sendBatchTrace([\n {\n traceId,\n sessionId,\n name: 'Claude Code Session',\n source: 'sdk',\n startTime: now,\n status: 'running',\n spans: [],\n },\n ]);\n}\n\nasync function handleSessionEnd(): Promise<void> {\n const input = await readStdin();\n const sessionId = getString(input, 'session_id', 'sessionId');\n if (!sessionId) throw new Error('Missing session_id in stdin');\n\n const now = new Date().toISOString();\n const state = readState(sessionId);\n const traceId = state?.traceId ?? `cc-${sessionId}`;\n const startTime = state?.startTime ?? now;\n\n await sendBatchTrace([\n {\n traceId,\n sessionId,\n name: 'Claude Code Session',\n source: 'sdk',\n startTime,\n endTime: now,\n status: 'completed',\n spans: [],\n },\n ]);\n\n deleteState(sessionId);\n}\n\nasync function handlePreToolUse(): Promise<void> {\n const input = await readStdin();\n const sessionId = getString(input, 'session_id', 'sessionId');\n const toolName = getString(input, 'tool_name', 'toolName') || 'unknown';\n if (!sessionId) throw new Error('Missing session_id in stdin');\n\n const now = new Date().toISOString();\n const state = readState(sessionId) ?? {\n traceId: `cc-${sessionId}`,\n sessionId,\n startTime: now,\n openSpans: {},\n };\n\n const spanId = randomUUID();\n state.openSpans[spanId] = {\n spanId,\n startTime: now,\n toolName,\n };\n writeState(sessionId, state);\n\n const toolInput = serializePayload(input.tool_input ?? input.toolInput);\n\n await sendBatchTrace([\n {\n traceId: state.traceId,\n sessionId,\n name: 'Claude Code Session',\n source: 'sdk',\n startTime: state.startTime,\n status: 'running',\n spans: [\n {\n spanId,\n name: toolName,\n kind: 'tool',\n startTime: now,\n status: 'running',\n input: toolInput,\n },\n ],\n },\n ]);\n}\n\nasync function handlePostToolUse(): Promise<void> {\n const input = await readStdin();\n const sessionId = getString(input, 'session_id', 'sessionId');\n const toolName = getString(input, 'tool_name', 'toolName') || 'unknown';\n if (!sessionId) throw new Error('Missing session_id in stdin');\n\n const now = new Date().toISOString();\n const state = readState(sessionId);\n const traceId = state?.traceId ?? `cc-${sessionId}`;\n const startTime = state?.startTime ?? now;\n\n // Find matching open span by toolName (LIFO — most recent match)\n let matchedSpan: OpenSpan | null = null;\n let matchedKey: string | null = null;\n\n if (state?.openSpans) {\n const entries = Object.entries(state.openSpans);\n for (let i = entries.length - 1; i >= 0; i--) {\n const entry = entries[i];\n if (entry && entry[1].toolName === toolName) {\n matchedSpan = entry[1];\n matchedKey = entry[0];\n break;\n }\n }\n }\n\n const spanId = matchedSpan?.spanId ?? randomUUID();\n const spanStartTime = matchedSpan?.startTime ?? now;\n\n // Remove matched span from state\n if (state && matchedKey) {\n state.openSpans = Object.fromEntries(\n Object.entries(state.openSpans).filter(([k]) => k !== matchedKey)\n );\n writeState(sessionId, state);\n }\n\n const toolOutput = serializePayload(input.tool_output ?? input.toolOutput ?? input.tool_result ?? input.toolResult);\n\n await sendBatchTrace([\n {\n traceId,\n sessionId,\n name: 'Claude Code Session',\n source: 'sdk',\n startTime,\n status: 'running',\n spans: [\n {\n spanId,\n name: toolName,\n kind: 'tool',\n startTime: spanStartTime,\n endTime: now,\n status: 'completed',\n output: toolOutput,\n },\n ],\n },\n ]);\n}\n\n// ============================================================================\n// Command definition\n// ============================================================================\n\nexport function createHooksCommand(): Command {\n const hooks = new Command('hooks')\n .description('Hook handlers for AI coding assistants')\n .addHelpText('after', `\nClaude Code Session Telemetry:\n Sends lightweight session activity to the MutagenT traces API for observability.\n\n Install by adding to .claude/settings.local.json:\n\n {\n \"hooks\": {\n \"SessionStart\": [{\"matcher\": \"startup\", \"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code session-start\"}]}],\n \"Stop\": [{\"hooks\": [{\"type\": \"command\", \"command\": \"mutagent hooks claude-code session-end\"}]}],\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 }\n }\n\n Or run: mutagent init (option 1 installs skill + hooks together)\n `);\n\n const claudeCode = hooks\n .command('claude-code')\n .description('Claude Code session telemetry');\n\n claudeCode\n .command('session-start')\n .description('Handle session start event')\n .action(async () => {\n await safeExecute(handleSessionStart);\n });\n\n claudeCode\n .command('session-end')\n .description('Handle session end event')\n .action(async () => {\n await safeExecute(handleSessionEnd);\n });\n\n claudeCode\n .command('pre-tool-use')\n .description('Handle pre-tool-use event')\n .action(async () => {\n await safeExecute(handlePreToolUse);\n });\n\n claudeCode\n .command('post-tool-use')\n .description('Handle post-tool-use event')\n .action(async () => {\n await safeExecute(handlePostToolUse);\n });\n\n return hooks;\n}\n\n// Export internals for testing\nexport {\n readStdin as _readStdin,\n readState as _readState,\n writeState as _writeState,\n deleteState as _deleteState,\n stateFilePath as _stateFilePath,\n sendBatchTrace as _sendBatchTrace,\n handleSessionStart as _handleSessionStart,\n handleSessionEnd as _handleSessionEnd,\n handlePreToolUse as _handlePreToolUse,\n handlePostToolUse as _handlePostToolUse,\n safeExecute as _safeExecute,\n serializePayload as _serializePayload,\n};\nexport type { HookState, TracePayload, SpanPayload, OpenSpan };\n",
62
65
  "import { Command } from 'commander';\nimport chalk from 'chalk';\nimport { OutputFormatter, getJsonFlag } from '../lib/output.js';\nimport { MutagentError, handleError } from '../lib/errors.js';\nimport { getApiKey, loadConfig } from '../lib/config.js';\nimport { readFileSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { fileURLToPath } from 'url';\n\nconst VALID_CATEGORIES = ['bug', 'feature', 'improvement', 'praise'] as const;\ntype FeedbackCategory = (typeof VALID_CATEGORIES)[number];\n\ninterface FeedbackPayload {\n message: string;\n category: FeedbackCategory;\n sessionId?: string;\n context: {\n cliVersion: string;\n platform: string;\n nodeVersion: string;\n workspaceId?: string;\n timestamp: string;\n };\n}\n\n/**\n * Read CLI version from package.json.\n * Falls back to env var or hardcoded default.\n */\nfunction getCliVersion(): string {\n if (process.env.CLI_VERSION) {\n return process.env.CLI_VERSION;\n }\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 * POST feedback to the server. Returns 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 // Parse error from server response\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 * Create the top-level `feedback` command.\n *\n * Commands:\n * mutagent feedback send -m \"...\" [--category bug|feature|improvement|praise] [--session <id>] [--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 -m \"Great optimization results!\"')}\n ${chalk.cyan('mutagent feedback send -m \"CLI crashed on export\" --category bug')}\n ${chalk.cyan('mutagent feedback send -m \"Need batch operations\" --category feature --json')}\n\n${chalk.yellow('AI Agent (MANDATORY):')}\n ALWAYS use --json: mutagent feedback send -m \"...\" --category improvement --json\n Use this command to report bugs, request features, or share UX feedback.\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 feedback about the MutagenT platform')\n .requiredOption('-m, --message <text>', 'Feedback message')\n .option(\n '--category <type>',\n `Feedback category: ${VALID_CATEGORIES.join(', ')}`,\n 'improvement',\n )\n .option('--session <id>', 'Link feedback to a specific session')\n .addHelpText('after', `\n${chalk.bold('Examples:')}\n ${chalk.dim('$')} mutagent feedback send -m \"The optimization UX could show progress better\"\n ${chalk.dim('$')} mutagent feedback send -m \"CLI errored on traces export\" --category bug\n ${chalk.dim('$')} mutagent feedback send -m \"Love the guided eval!\" --category praise --json\n\n${chalk.bold('Categories:')}\n ${chalk.bold('bug')} Something is broken or not working as expected\n ${chalk.bold('feature')} Request a new capability\n ${chalk.bold('improvement')} Suggest a UX or workflow enhancement (default)\n ${chalk.bold('praise')} Share what you love about the platform\n\n${chalk.yellow('AI Agent (MANDATORY):')}\n ALWAYS use --json: mutagent feedback send -m \"...\" --json\n Auto-captured context (CLI version, platform, node version) is included automatically.\n `)\n .action(async (options: { message: string; category: string; session?: string }) => {\n const isJson = getJsonFlag(feedback);\n const output = new OutputFormatter(isJson ? 'json' : 'table');\n\n try {\n // Validate category\n if (!VALID_CATEGORIES.includes(options.category as FeedbackCategory)) {\n throw new MutagentError(\n 'INVALID_ARGUMENTS',\n `Invalid category: \"${options.category}\". Must be one of: ${VALID_CATEGORIES.join(', ')}`,\n `Run: mutagent feedback send --help\\nValid categories: ${VALID_CATEGORIES.join(', ')}`,\n );\n }\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 // Build payload with auto-captured context\n const config = loadConfig();\n const payload: FeedbackPayload = {\n message: options.message,\n category: options.category as FeedbackCategory,\n sessionId: options.session,\n context: {\n cliVersion: getCliVersion(),\n platform: process.platform,\n nodeVersion: process.version,\n workspaceId: config.defaultWorkspace,\n timestamp: new Date().toISOString(),\n },\n };\n\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: options.category,\n message: options.message,\n _links: {\n send: 'mutagent feedback send -m \"...\" [--category bug|feature|improvement|praise]',\n },\n });\n } else {\n output.success(`Feedback sent! (${options.category})`);\n }\n } catch (error) {\n handleError(error, isJson);\n }\n });\n}\n"
63
66
  ],
64
- "mappings": "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",
65
- "debugId": "C3949CD3A9488F4264756E2164756E21",
67
+ "mappings": "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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAC7B,gCAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAChC,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EACvB,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAC5B,6BAA6B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAC7B,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;AA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",
68
+ "debugId": "4EA6EB9078B51CC264756E2164756E21",
66
69
  "names": []
67
70
  }