from memory_Context import * from llm import * # Exit # # Conditions: # 1. `e`, `exit`, `q`, or `quit` was entered # 2. Victory has just been reported @llm_by_value def cli_exit( c: memory_Context ) -> memory_Context: if ( c.recentField == "input" and ( c.input == "e" or c.input == "exit" or c.input == "q" or c.input == "quit" ) ): c.exit = True c.recentField = "exit" return c #} if ( c.recentField == "outputVictory" ): c.exit = True c.recentField = "exit" return c #} c.recentField = "none" return c #} # Ask user to go on # # Conditions: # 1. Items have just matched and there are still items left to select @llm_by_value def cli_goOn( c: memory_Context ) -> memory_Context: if ( c.recentField == "outputMatchedItems" and len(c.hiddenItems) != len(c.playfieldItems) ): c.outputGoOn = "Go on:" c.recentField = "outputGoOn" return c #} c.recentField = "none" return c #} # Greet the user # # Conditions: # 1. Just launched @llm_by_value def cli_greetUser( c: memory_Context ) -> memory_Context: if ( c.recentField == "didLaunch" and c.didLaunch == True ): c.outputGreeting = "OGS Memory Command Line Interface" c.recentField = "outputGreeting" return c #} c.recentField = "none" return c #} # Ask user to select second item to have a pair of selected items # # Conditions: # 1. Single item has just been selected @llm_by_value def cli_promptSecondItemSelection( c: memory_Context ) -> memory_Context: if ( c.recentField == "selectedItems" and len(c.selectedItems) == 1 ): c.outputPromptSelection = "Select the second item now:" c.recentField = "outputPromptSelection" return c #} c.recentField = "none" return c #} # Report matched items # # Conditions: # 1. Items were hidden (i.e., they matched) @llm_by_value def cli_reportMatchedItems( c: memory_Context ) -> memory_Context: if ( c.recentField == "hiddenItems" ): c.outputMatchedItems = "Items matched!" c.recentField = "outputMatchedItems" return c #} c.recentField = "none" return c #} # Report victory @llm_by_value def cli_reportVictory( c: memory_Context ) -> memory_Context: if ( c.recentField == "victory" ): c.outputVictory = "VICTORY! The game is over now" c.recentField = "outputVictory" return c #} c.recentField = "none" return c #} # Select item # # Conditions: # 1. Id is digit @llm_by_value def cli_selectItem( c: memory_Context ) -> memory_Context: if ( c.recentField == "input" and llm_isDigit(c.input) ): # CLI ids start with 1 while memory module has ids starting with 0 # Convert CLI id to memory id c.selectedId = llm_strToInt(c.input) - 1 c.recentField = "selectedId" return c #} c.recentField = "none" return c #} # Show help (aka commands) # # Conditions: # 1. Just launched # 1. `h` or `help` was entered @llm_by_value def cli_showHelp( c: memory_Context ) -> memory_Context: if ( ( c.recentField == "didLaunch" and c.didLaunch == True ) or ( c.recentField == "input" and c.input == "h" ) or ( c.recentField == "input" and c.input == "help" ) ): c.outputHelp = "Commands:\n\te, exit, q, quit\n\t\tExit\n\th, help\n\t\tList commands\n\t1, 2, 3, ...\n\t\tSelect item\nEnter your choice:" c.recentField = "outputHelp" return c #} c.recentField = "none" return c #} # Report mismatched items @llm_by_value def cli_reportMismatchedItems( c: memory_Context ) -> memory_Context: if ( c.recentField == "mismatchedItems" ): c.outputMismatchedItems = "Wrong! Try again:" c.recentField = "outputMismatchedItems" return c #} c.recentField = "none" return c #} ## Report selection of invalid item ids ## ## Conditions: ## 1. Index out of bounds: less than minimum ## 2. Index out of bounds: greater than maximum ## 3. Item is already hidden ##@llm_by_value ##def cli_shouldReportInvalidItemSelection( ## c: cli_Context ##) -> cli_Context: ## if ( ## c.recentField == "cMemory" and ## c.cMemory.recentField == "selectedItems" and ## len(c.cMemory.selectedItems) == 1 ## ): ## c.outputPromptSelection = "Select the second item now:" ## c.recentField = "outputPromptSelection" ## return c ## #} ## c.recentField = "none" ## return c ###}