/** * AI Agent Detection and NDJSON Output Utilities * * When an AI agent is detected via environment variables, CNW switches to * AI-optimized output mode: * - NDJSON (Newline-Delimited JSON) output * - No spinners * - Non-interactive mode * - Structured progress and result messages */ import { CnwErrorCode } from '../error-utils'; export declare function isAiAgent(): boolean; export declare function isClaudeCode(): boolean; export declare function isOpenCode(): boolean; export declare function isReplitAi(): boolean; export declare function isCursorAi(): boolean; export type ProgressStage = 'starting' | 'cloning' | 'installing' | 'configuring' | 'initializing' | 'complete' | 'error'; export interface ProgressMessage { stage: ProgressStage; message: string; } export interface TemplateOption { name: string; value: string; description: string; } export interface TemplateRequiredResult { stage: 'needs_input'; success: false; title: string; message: string; suggestedName: string; templates: TemplateOption[]; recommendedTemplate: string; exampleCommand: string; docsGettingStarted: string; } export interface NextStep { title: string; url?: string; note?: string; } export interface UserNextSteps { /** Description for the AI about what to do with these steps */ description: string; steps: NextStep[]; } export interface SuccessResult { stage: 'complete'; success: true; /** Informational data about what was created */ result: { title: string; workspacePath: string; workspaceName: string; template?: string; preset?: string; }; /** Display these to the user as next steps */ userNextSteps: UserNextSteps; /** Reference documentation */ docs: { gettingStarted: string; nxCloud: string; }; } export interface ErrorResult { stage: 'error'; success: false; title: string; error: string; errorCode: CnwErrorCode | 'UNKNOWN'; hints: string[]; errorLogPath?: string; docsGettingStarted: string; } export interface PartialSuccessResult extends SuccessResult { nxCloudError?: string; } export type AiOutputMessage = ProgressMessage | TemplateRequiredResult | SuccessResult | ErrorResult; /** * Write NDJSON message to stdout. * Each message is a single line of JSON. * For success results, also outputs plain text instructions at the end. */ export declare function writeAiOutput(message: AiOutputMessage): void; /** * Log progress stage during workspace creation */ export declare function logProgress(stage: ProgressStage, message: string): void; /** * Build template required result for AI agents * This tells the AI which templates are available and how to proceed */ export declare function buildTemplateRequiredResult(workspaceName?: string): TemplateRequiredResult; /** * Build success result object */ export declare function buildSuccessResult(options: { workspacePath: string; workspaceName: string; template?: string; preset?: string; nxCloudConnectUrl?: string; nxCloudError?: string; }): SuccessResult | PartialSuccessResult; /** * Build error result object with helpful hints */ export declare function buildErrorResult(error: string, errorCode: CnwErrorCode | 'UNKNOWN', errorLogPath?: string): ErrorResult; /** * Suggested workspace name for AI mode. * AI should check if directory exists and append a number if needed. */ export declare const SUGGESTED_WORKSPACE_NAME = "my-nx-repo"; //# sourceMappingURL=ai-output.d.ts.map