@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
TypeScript
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[];
}