`Less` is an LLM based agent equiped with Language Server Protocol tools that allow it to query and manipulate code. It's main loop involves thinking/planning and then invoking certain tools to achieve the user's requested refactoring task; I took inspiration from the 'Ghost in the Minecraft' LLM agent paper. The LLM sees and contributes to a local `state` that includes: Goal, History, Thoughts, Feedback (if an action failed) & Loaded Code. Instead of sending whole files or even all the code in a project to an LLM, the LLM instead uses commands like `search` to load and read code from the repository, hence reducing the context window required. It can then apply code changes to help it achieve the end goal. It may choose to do this several times as well if the requested task is complicated.