UNPKG

@hhoangphuoc/escape-room-cli

Version:

A CLI for playing AI-generated escape room games. Install globally with: npm install -g @hhoangphuoc/escape-room-cli

204 lines (203 loc) 5.28 kB
export interface BaseResponse { success: boolean; message: string; error?: string; } export interface HelpResponse extends BaseResponse { commands: Array<{ command: string; description: string; usage?: string; }>; currentContext?: { hasAI: boolean; currentModel?: string; currentRoom?: string; gameMode?: string; isAuthenticated: boolean; }; } export interface LookResponse extends BaseResponse { roomData: { name: string; background?: string; objects: string[]; }; } export interface InspectResponse extends BaseResponse { objectData?: { name: string; description: string; puzzle?: string; answer?: string; unlocked: boolean; details?: string[]; }; } export interface GuessResponse extends BaseResponse { objectData: { name: string; unlocked: boolean; correctAnswer: boolean; }; } export interface PasswordResponse extends BaseResponse { gameResult: { escaped: boolean; gameCompleted: boolean; timeElapsed?: number; hintsUsed?: number; }; } export interface HintResponse extends BaseResponse { hintData: { hint: string; hintsUsed: number; hintType?: 'general' | 'object-specific' | 'puzzle-hint'; }; } export interface NewGameResponse extends BaseResponse { gameData: { id: string | number; name: string; background: string; mode: string; currentRoom: number; totalRooms: number; objectCount: number; startTime?: string; }; } export interface LeaderboardResponse extends BaseResponse { leaderboardData: { entries: Array<{ rank: number; userName: string; timeElapsed: number; hintsUsed: number; gameMode: string; completedAt?: string; }>; count: number; mode: string; }; } export interface AuthResponse extends BaseResponse { userData?: { userId?: string; userName?: string; sessionToken?: string; apiKey?: string; apiKeyProvider?: 'openai' | 'anthropic'; }; } export interface InstructionsResponse extends BaseResponse { showInstructions: boolean; } export interface CostResponse extends BaseResponse { showCostMonitor?: boolean; costData?: { currentSessionCost?: number; currentSessionTokens?: number; userTotalCost?: number; userTotalTokens?: number; lastRequestCost?: number; lastRequestTokens?: number; averageCostPerRequest?: number; modelUsageBreakdown?: Record<string, { requests: number; cost: number; tokens: number; }>; }; } export interface UsageResponse extends BaseResponse { showUsageDashboard?: boolean; usageData?: { currentSessionCost: number; currentSessionTokens: number; userTotalCost: number; userTotalTokens: number; lastRequestCost: number; lastRequestTokens: number; averageCostPerRequest: number; sessionStartTime?: string; modelUsageBreakdown: Record<string, { requests: number; cost: number; tokens: number; }>; budgetSettings?: { dailyLimit?: number; monthlyLimit?: number; warningThreshold?: number; }; alerts?: Array<{ id: string; type: 'warning' | 'limit' | 'info'; message: string; timestamp: string; }>; }; } export interface PricingResponse extends BaseResponse { pricingData?: { models: Record<string, { input: number; output: number; reasoning?: number; category: string; }>; }; } export interface ComparisonResponse extends BaseResponse { comparisonData?: { models: Array<{ name: string; cost: number; speed: number; reasoning: number; category: string; }>; savings?: number; recommendation?: string; }; } export interface EstimateResponse extends BaseResponse { estimateData?: { model: string; inputTokens: number; outputTokens?: number; cost: number; volumePricing: Array<{ volume: number; totalCost: number; }>; }; } export interface GameInfo { id?: string | number; name?: string; background?: string; currentRoom?: number; totalRooms?: number; mode?: string; objectCount?: number; } export interface UserContext { userId?: string; sessionToken?: string; userName?: string; cliApiKey?: string; hasAICapability: boolean; selectedModel?: any; } export interface GameContext { currentGameId: string | number | null; currentRoomName: string; currentRoomBackground: string; currentGameMode: 'default' | 'single-custom' | 'multi-custom' | 'unknown'; totalRooms: number; unlockedObjects: string[]; currentRoomObjects: string[]; }