Metadata-Version: 2.4
Name: mylo-agent
Version: 1.0.6
Summary: An agent for analyzing GitHub and GitLab repositories.
Author-email: Monteluke <monteluke121@gmail.com>
License: MIT
Project-URL: Homepage, https://monteluke.github.io/mylo-project/index.html
Project-URL: Repository, https://github.com/MonteLuke/mylo-project
Project-URL: Documentation, https://monteluke.github.io/mylo-project/docs.html
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: langchain-anthropic>=1.4.6
Requires-Dist: langchain-core>=1.4.8
Requires-Dist: langchain-google-genai>=4.2.5
Requires-Dist: langchain-groq>=1.1.3
Requires-Dist: langchain-openai>=1.3.2
Requires-Dist: pygments>=2.20.0
Requires-Dist: python-dotenv>=1.2.2
Requires-Dist: requests>=2.34.2
Requires-Dist: rich>=15.0.0
Requires-Dist: textual>=0.50.0
Requires-Dist: kaggle>=2.2.4
Requires-Dist: tree-sitter>=0.25.2
Requires-Dist: tree-sitter-language-pack>=1.10.1
Requires-Dist: langchain-ollama>=1.1.0
Dynamic: license-file

# Mylo

An agent build with Langchain and Textual for Github and Gitlab repo analysis. 

## About Mylo

The main goal of Mylo is not to be another coding agent, but an agent that help you to find and analyse code made by other developers in a more easier and simple way. This will allow you to find repos and libraries that may fix your current problem or may suitable for your current or future projects :)


## Installation

Mylo requires **python version >= 3.9**. Install it via pip as follows,

```bash
pip install mylo-agent
```

To run,

```bash
mylo
```

## Main Features

* Supports models from providers such as OpenAI, Anthropic, Google, Groq and Huggingface via standard API keys. It also supports local models hosted using Ollama (run the model using ollama, keep it active and type the model name that is running in the model profile config window's "Model Name" input box). The api keys are stored in ~/mylo-config/.env

* Allow you to rewrite and modify the system prompt of the agent (the system prompt can be found in ~/mylo-config/SYSTEM_PROMPT.md )

* Allow you to create model profiles and specify the memory limit for each profile.

* Each model profile shares the same memory (or context). Therefore you can switch between multiple model with different memory limit in the same session.

* The TUI displays the total token usage for each query and the total cumulative token (which is the total token usage by that model profile in one session). The token counting is seperate for each model profile that you use.

* Allow you to execute inline local stateless commands in \cmd {command} format, without closing the tui.

* Allows you to add github, gitlab tokens (The tokens are stored in ~/mylo-config/.env) to enable more api requests by the agent.

* Allows you to add kaggle api token and kaggle username (It is necessary if you wanted the agent to use kaggle api to find notebooks and fetch code from notebooks). (The api token and username are stored in ~/mylo-config/.env).


### Model Profile 

Model Profile is a compact way of storing the model name, provider name, api key and memory limit. You can add name for each model profile allowing you to quick load the model that you wanted. Model profiles allow you to change the memory limit of each model that you use, giving more control over your token usage

### what is memory limit?

memory limit is the the maximum number of tokens passed to the LLM as conversation history. The TUI utilizes LangChain's trim_messages to dynamically trim older history, ensuring the context never exceeds this limit. This trimming process never affects your system prompt.

## Agent Functionalities

- Mylo can find names of repos from github and gitlab based on your specific needs

- Mylo can find names of kaggle python notebooks based on your specific needs

- Mylo can fetch code from a specific kaggle python notebook 

- Mylo can find names of language specific libraries from their official registry and their corresponding repo names based on your needs. (Currently it will not support lua since LuaRock doesnt expose user friendly search api. And for c and cpp, agent uses github search api, because these languages dont have a centralised registry and search api) 

- It can show the file structure of a repository (This also work for repositories of libraries)

- It can fetch / retrieve any files from a repository such as readme.md (you can ask it to retrive a file by specifying the path of the file in the repo (folder/file format). if it is not inside any folder, then just specify only the filename ).

- Mylo can also analyse the fetched files and kaggle notebook code

- Mylo can analyse files and kaggle notebook code more deeply by using the AST extractor functions (The agent currently supports 16 languages).

- Mylo can also write the retrieved files and kaggle notebook code into disk (should provide the path to which the file is to be saved).


***languages supported by the agent:*** Python, Javascript, Typescript, Lua, Rust, Kotlin, Swift, Dart, C, C++, C#, Java, Go, Scala, Ruby and Php


## Contributions

Contributions are highly welcome! Whether you are fixing a bug, optimizing performance, or adding a new tool to the agent, your help makes Mylo better.


For major architectural adjustments or feature requests, feel free to open an issue first to discuss what you would like to change.
