-
Bump version to 0.15.0 (
313be38
) -
Update ruff in pre-commit (
f75fa25
) -
Black formatting matters (
151a6cf
) -
Let's have pre-commit use the black configuration files instead of duplicating the line length here (
ca66bac
) -
Add /command interface to sidekick with tools for adding/removeing files
In aicodebot/helpers.py
, a new class SidekickCompleter
has been added to provide command completion functionality in the sidekick feature.
In aicodebot/learn.py
, the error messages have been made more informative and user-friendly.
The requirements.in
and requirements.txt
files have been updated with the addition of the humanize
library. (f596f5e
)
- Adjust line-length in black and isort configurations 📏
The line-length in both the black and isort configurations in the pyproject.toml file has been reduced from 120 to 115. This change aims to improve code readability and maintainability. 📚 (28e056e
)
- Merge pull request #51 from TechNickAI/dependabot/pip/langchain-0.0.238
Bump langchain from 0.0.231 to 0.0.238 (7cd36d0
)
- Update pytest command to record new API responses 📝
Modified the pytest command in the GitHub workflow to include the --record-mode=new_episodes
option. This change allows pytest to record new API responses, accommodating for instances where the OpenAI API calls a different host. This should improve the accuracy of our tests and coverage reports. (ba90ae3
)
- Refine docstrings and welcome message in cli.py 📝
Updated the docstrings for the 'alignment' and 'configure' functions to better reflect their purpose. Also, enhanced the welcome message in the 'setup_config' function for a more personalized user experience. (a576ed7
)
-
Proper indentation so test_parse_github_url is run (
7a4e96c
) -
Update tests to use VCR and pytest-recording for API mocking
Resolves #11
The tests have been updated to use the VCR package for recording and replaying API responses during testing.
This allows the tests to run without hitting the real OpenAI API, making them faster and not consuming API quota. The responses are cached in yaml files that can be committed to version control.
To enable this:
- Added a pytest fixture to configure VCR
- Updated the test decorators from
@pytest.mark.skipif
to@pytest.mark.vcr()
- Recorded new cassettes for each test
Now the tests will replay cached responses instead of making live calls.
This is better for CI and local testing.
👍 (2547051
)
- Update 'Her' personality description in prompts.py
Enhanced the 'Her' personality description in the prompts.py file to include more nuanced characteristics. The AI now embodies a playful, witty, and sultry persona, while maintaining professional boundaries. This change adds depth to the AI's interaction, making it more engaging and relatable. 🎭👩💼🌟 (e4ad783
)
-
Increase the default token size for sidekick, to get better answers. (
9fe8e8b
) -
Bump langchain from 0.0.231 to 0.0.238
Bumps langchain from 0.0.231 to 0.0.238.
updated-dependencies:
- dependency-name: langchain dependency-type: direct:production update-type: version-update:semver-patch ...
Signed-off-by: dependabot[bot] <[email protected]> (2e61436
)
- Merge pull request #48 from TechNickAI/dependabot/pip/click-8.1.6
Bump click from 8.1.4 to 8.1.6 (7fd0408
)
-
Bump version to 0.14.1 (
75cb9a4
) -
Skip Python 3.9 in GitHub Actions build matrix 🏗️
Due to a build failure with Python 3.9 in GitHub Actions, we're temporarily skipping it. The build matrix now only includes Python 3.10 and 3.11. We'll revisit this once the issue with Python 3.9 is resolved. (529f07b
)
-
Try turning off cache to see if that fixes python 3.9 build issue (
9a4e45d
) -
Remove the check for main in setup.py, we use aicodebot/init.py to store the version now (
db8cde8
) -
Update Python version support and cleanup setup.py 🧹
Adjusted the Python version matrix in the GitHub Actions workflow to include Python 3.9. Also, lowered the minimum required Python version in setup.py to 3.9. Removed unnecessary package data from setup.py. This makes our project more accessible to developers using Python 3.9. 🐍 (33d061d
)
-
Bump version to 0.14.0 (
d664466
) -
Experimental Anthropic/Claude2 support for 100k context (when using openrouter.ai)
This commit includes several changes to the Coder
class in coder.py
to improve how models are handled.
- The import statement has been updated to include the
os
module. This allows us to access environment variables. - The method for setting the
tiktoken_model_name
has been updated to handle non-OpenAI models. For these models, the name is set to gpt-4 as a default. - The
get_llm_model_name
method now checks for an environment variableAICODEBOT_LLM_MODEL
. If this variable is set, its value is used as the model name. - The
get_token_length
method has been updated to strip leading and trailing whitespace from theshort_text
variable. - The
model_options
dictionary in theget_llm_model_name
method now includes the anthropic/claude-2 model.
These changes should make the Coder
class more flexible and robust when dealing with different models. 🚀 (0c35577
)
-
Add notes about the state of the learn command (it's not working yet) (
22999db
) -
Bump click from 8.1.4 to 8.1.6
Bumps click from 8.1.4 to 8.1.6.
updated-dependencies:
- dependency-name: click dependency-type: direct:production update-type: version-update:semver-patch ...
Signed-off-by: dependabot[bot] <[email protected]> (7df3f87
)
- Merge pull request #50 from TechNickAI/dependabot/pip/pyyaml-6.0.1
Bump pyyaml from 6.0 to 6.0.1 (6fa18d0
)
- Bump pyyaml from 6.0 to 6.0.1
Bumps pyyaml from 6.0 to 6.0.1.
updated-dependencies:
- dependency-name: pyyaml dependency-type: direct:production update-type: version-update:semver-patch ...
Signed-off-by: dependabot[bot] <[email protected]> (9ae5db9
)
- Refine Pro-tips section in README.md with a lint fix. (
d05064b
)
-
Bump version to 0.13.1 (
fade480
) -
Refactor unlink method for Path objects for python <= 3.9 support
Resolves #47
Updated the unlink method for Path objects in aicodebot/cli.py
and tests/test_cli.py
for better readability and consistency. Now using Path(temp_file_name).unlink()
instead of Path.unlink(temp_file_name)
. 🔄📁 (978455c
)
-
Update README.md (
90abba4
) -
I know kung fu! Add learning functionality from repositories
This commit introduces a new feature that allows the AI Code Bot to learn from a given repository. The bot can now clone a repository, load its documents, and store them in a local vector store for future use. This will enhance the bot's ability to provide contextually relevant suggestions and responses.
Additionally, this commit includes the necessary updates to the configuration and helper functions to support this new feature. The requirements have also been updated to include the necessary dependencies.
Lastly, a new test case has been added to ensure the correct parsing of GitHub URLs. 🧪 (7f5ae4a
)
- Refine token size calculation and model selection in Coder class
Resolves #25
In this commit, we've made several adjustments to the Coder
class in aicodebot/coder.py
and aicodebot/cli.py
. The token size calculation now includes a 5% buffer, down from 10%, to account for the occasional underestimation by the tiktoken
library. The get_token_length
method now defaults to the gpt-4
model for token counting, and the debug output has been improved for readability.
In aicodebot/cli.py
, we've adjusted the model_name
calculation in several methods to include response_token_size
in the token count. This ensures that the selected model can handle the combined size of the request and response. In the sidekick
method, we've also introduced a memory_token_size
to allow for a decent history.
These changes should improve the accuracy of model selection and prevent errors when the token count exceeds the model's limit. (da2fb1f
)
- Update pyproject.toml and requirements-dev.txt for semantic release 🚀
This commit includes updates to the pyproject.toml
and requirements-dev.txt
files. The pyproject.toml
file now includes a new section for semantic_release
with a version_variable
set to aicodebot:version
. This change allows for automated versioning using the semantic-release tool.
In the requirements-dev.txt
file, the python-semantic-release
package has been added. This package provides the semantic-release command line tool, which automates the whole package release workflow including: determining the next version number, generating the release notes and publishing the package.
These changes aim to streamline the release process, making it more efficient and consistent. 📦🔄 (df0eda4
)
-
Bump version to 0.12.2 (
55ed1c0
) -
Refactor GitHub release process in PyPi workflow 🔄
Switched from actions/create-release@v1
to ncipollo/release-action@v1
for creating GitHub releases. This change simplifies the release process and automatically generates release notes. (dca2977
)
- Remove Dockerfile - this was an accidental commit (
289fb10
)
-
Support python version 3.10+. Resolves #7 (
dbcad55
) -
Update workflow dependency from 'smoke_test' to 'test'
In the PyPi release workflow, the dependency has been updated from 'smoke_test' to 'test'. This change ensures that the correct test suite is run before the package is published to PyPi. 🔄🧪 (56048cd
)
- Refactor PyPi release workflow for broader Python version testing 🐍
Renamed the job from 'smoke_test' to 'test' and expanded the Python version matrix to include 3.9, 3.10, and 3.11. This change ensures our package is tested across a wider range of Python versions, enhancing compatibility and reliability. (b085346
)
-
Try with 3.10 and 3.11 (
5aeabef
) -
Simplify Python versions and streamline package build process 🐍
This commit reduces the matrix of Python versions for smoke tests to only 3.11. It also combines the package build and installation steps into one, making the workflow more efficient. (81c561d
)
-
Bump version to 0.12.0. Notably, python 3.9 and 3.10 suppoert (
2a6c23f
) -
Test with python 3.9 and 3.10 (
24bd973
) -
Fix Path.open operations to be compatible with python < 3.9
This commit refactors file operations across multiple files to use more concise and readable methods provided by the Path
class. The create_and_write_file
helper function has been introduced and used in several places, replacing the previous open
and write
operations. This change improves code readability and maintainability. 📚🔧 (1589617
)
-
Minor prompt changes (
747c7a9
) -
Let's use just python 3.11 until we have it working with other versions (
b121ac9
) -
Expand Python version matrix and improve user interaction in CLI
This commit does a few things:
- Expands the Python version matrix in the GitHub Actions workflow to include Python 3.10 and 3.11. This ensures our tests run on the latest versions of Python. 🐍
- Improves user interaction in the CLI by adding a period to the end of a console print statement and changing the input prompt to include a robot emoji for a more friendly user experience. 🤖
- Updates the coder.py file to include the anthropic/claude-2 model in the model options. This provides more options for the users. 🚀
These changes aim to improve the user experience and ensure our software is tested against the latest Python versions. (1a32169
)
- Refine PyPi release workflow 🚀
Enhanced the PyPi release workflow in the GitHub Actions. Added a dependency on the smoke test job, ensuring it passes before proceeding with the release. Also, included steps for code checkout, Python setup, and package building. Now using Python 3.11 and caching pip for faster runs. (1a4e57d
)
-
Let's start the matrix with just 3.11 and then start adding more (
89ed9ae
) -
numpy requires >3.9 (
37f33ba
) -
Move checkout code before setup python (
a458764
) -
Refactor PyPi release workflow and add smoke tests 🔄🧪
This commit refactors the PyPi release workflow in .github/workflows/pypi_release.yml
. The pypi_release
job has been simplified and a new smoke_test
job has been added. The smoke test runs on multiple Python versions (3.7 to 3.11) and includes a pytest run. This ensures our package is robust across different Python environments before it's published to PyPi. 🚀 (dfe6b5a
)
-
Bump version to 0.11.1 (
8bcf8c1
) -
Simpler config function that will simplify AICodeBot-action testing (
6e28d09
) -
Refactor README.md for clarity and token management 📚
Relocated the section about language model selection to a more appropriate location in the README. Added a comprehensive explanation on understanding tokens and using commands efficiently. This should help users manage their tokens effectively and understand the limitations and possibilities of different AI models. Also provided guidance on how to handle larger token limits. 🚀 (dfbadf5
)
-
Bump version to 0.11.0 (
8abd21c
) -
Add support for Open Router API in Coder class
This commit introduces the ability to use the Open Router API in the Coder class if an openrouter_api_key
is provided in the configuration. This allows for access to models with larger token limits. If the Open Router API key is not provided, the code falls back to using the OpenAI API key. The commit also refactors the get_llm_model_name
method to support model selection based on the provided API key. 🚀🔑 (bcf9cbe
)
- Refine personality descriptions in prompts.py
The descriptions of the AI personalities in the prompts.py file have been updated for clarity and consistency. Emojis usage has been specified for each personality where it was previously ambiguous. This should provide a clearer guideline for the AI's behavior and responses. (5d187e8
)
- Refine GitHub Actions integration section in README
The section detailing the integration of AICodeBot with GitHub via GitHub Actions has been revised for clarity and conciseness. The new text emphasizes the automation of code reviews on every commit, enhancing the understanding of the feature's utility. (6934fdc
)
-
Update aicodebot.yml to use v1 tag (
a9ee638
) -
Update README.md (
79ce206
) -
Upgrade versions of black and ruff-pre-commit
The versions of black and ruff-pre-commit have been updated to 23.7.0 and v0.0.278 respectively. This ensures that we are using the latest versions of these tools, benefiting from any improvements or bug fixes they may have received. (7d7054d
)
- Refactor 'commit' function and enhance pre-commit checks
In the 'commit' function, a linter warning has been suppressed by adding a 'noqa' comment. This change suggests that the function may be complex and could benefit from further refactoring in the future.
Additionally, the pre-commit checks have been improved. Now, if the 'pre-commit' tool is not installed, a warning message will be displayed instead of attempting to run the checks. This change enhances the robustness of the code and provides better feedback to the user. (d51dc0c
)
- Reduce test response token size and adjust review test parameters
The test response token size has been reduced from 200 to 150 to expedite testing. Additionally, the parameters for the review test have been adjusted to ensure the response is valid JSON. This includes increasing the test token size for this specific test. (76aca26
)
- Refactor test_cli.py for improved readability and maintainability
The response token size for tests in test_cli.py has been extracted to a constant, TEST_RESPONSE_TOKEN_SIZE, to avoid repetition and improve readability. This change enhances the maintainability of the code by centralizing the control of this value. (ddc3d1d
)
- Bump version to 0.10.6 🚀
Just a quick version bump to keep things rolling. No major changes, just keeping up with the times! (e627014
)
- Enhance code review functionality in CLI and Coder 🛠️
This commit introduces the ability to specify files for the code review command in the CLI. If no files are specified, the command will consider all staged and unstaged changes. The git_diff_context
method in the Coder class has also been updated to accommodate this change.
In addition, the test cases have been updated to reflect these changes. This enhancement should provide more flexibility when performing code reviews. 🚀 (92770bc
)
-
Use the proper variable when committing staged files (
17d2319
) -
Refine review guidelines in prompts.py 📝
Adjusted the review guidelines in prompts.py
to provide clearer instructions. Minor changes and formatting issues are now explicitly stated to be non-discussable, and the addition of extra documentation/comments is also discouraged. The aim is to maintain focus on significant issues and code improvement. Keep it succinct, keep it relevant! 😊 (445938f
)
- Refine commit process in cli.py 🛠️
This commit enhances the commit process in the cli.py file. We've added a live console print to provide real-time feedback while generating the commit message. Additionally, we've introduced a confirmation step before using the generated commit message. If not approved, the commit message can be edited in the user's preferred editor. Lastly, we've moved the deletion of the temporary file to the end of the process to ensure it's always cleaned up. Happy coding! 🚀 (048d203
)
- Add console print for staged files to be committed
Added a console print statement in aicodebot/cli.py
to display the list of staged files that will be committed. This provides better visibility for the user on what changes are about to be committed. 📝👀 (5fff8e6
)
- Enhance commit functionality in cli.py and update tests 🛠️
This commit introduces the ability to specify files for the commit command in cli.py. Now, users can choose to commit changes from specific files, providing more flexibility. The changes also include updates to the corresponding tests to reflect this new functionality.
Additionally, minor adjustments have been made to improve code readability and maintainability. For instance, the 'sys.exit()' calls have been replaced with 'return' or 'sys.exit(0)' for better clarity.
This should make the commit process more intuitive and user-friendly. Happy coding! 😊 (6c087f2
)
- Slightly larger token size for the test, because 100 isn't always big enough for a structured result (
c2505d6
)
-
Bump version to 0.10.5 (
1127226
) -
Refactor commit function and add git file handling methods
This commit refactors the commit
function in cli.py
to improve code readability and maintainability. It introduces two new methods in coder.py
- git_staged_files
and git_unstaged_files
- to handle git file operations. The commit
function now uses these methods to get the list of staged and unstaged files.
In addition, the commit function now confirms with the user before committing all modified files if no files are staged. It also runs pre-commit checks on the list of files to be committed, instead of all files.
The test_cli.py
has been updated to include more comprehensive tests for the commit
function, covering scenarios with only unstaged changes, both staged and unstaged changes, and no changes at all.
This refactor should make the code easier to understand and modify in the future. 🚀 (b8f3953
)
- Refine git diff output for better commit context 📝
Adjusted the git_diff_context
method in coder.py
to include the commit message along with the diff. This change enhances the context provided when a specific commit is queried, making it easier to understand the changes made. 🕵️♂️🔍 (001c1a8
)
-
Bump version to 0.10.4 (
7652ece
) -
Reuse the EXPERT_SOFTWARE_ENGINEER prompt fragment for sidekick
The 'Sidekick related prompts' section has been restructured to include 'Prompt fragments'. The 'DIFF_CONTEXT_EXPLANATION' and 'EXPERT_SOFTWARE_ENGINEER' prompts have been moved to this new section for better organization. The 'EXPERT_SOFTWARE_ENGINEER' prompt has also been added to the 'SIDEKICK_TEMPLATE' for more context. This should make the code easier to navigate and maintain. 📚 (ac137fa
)
- Add a function for centrally handling the engine list, with caching
This commit introduces a few key changes to the Coder
class in coder.py
:
- Removed an unnecessary import and added
functools
to the import list. - Added a new method
get_openai_supported_engines
that fetches the list of models supported by the OpenAI API key. This method usesfunctools.lru_cache
for caching the result, improving efficiency. - Refactored
get_llm_model_name
to use the newget_openai_supported_engines
method, reducing code duplication and improving readability.
These changes should make the Coder
class more efficient and easier to understand. 🧠💡 (ab49577
)
- Add debug option and refactor cli.py 🛠️
In this commit, we've added a debug option to the CLI, allowing users to enable langchain debug output. This should help with troubleshooting and understanding the inner workings of the program. We've also made some minor refactoring changes to improve code readability and maintainability. Keep up the good work! 👍 (fe7ddda
)
- Lint fix (
a3612ae
)
-
Bump version to 0.10.2 (
4200731
) -
Refactor prompts.py for clarity and maintainability
In this commit, we've taken the liberty of refactoring the prompts.py file. The primary change involves the extraction of the 'EXPERT_SOFTWARE_ENGINEER' string into a constant, thereby reducing redundancy and enhancing maintainability. This change should make future modifications to the description of the 'EXPERT_SOFTWARE_ENGINEER' role more straightforward. Furthermore, it improves the readability of the code by reducing clutter. No functional changes were made, and the overall behavior of the program remains the same. (e02f41a
)
- Refine code reviewer prompt for enhanced clarity and precision
The previous code reviewer prompt was somewhat lacking in specificity and did not adequately convey the level of expertise required for the task. This revision introduces a more detailed description of the reviewer's qualifications, emphasizing their proficiency in Python and commitment to code quality. The instructions for the review have also been clarified, with a particular emphasis on providing actionable, specific, and kind feedback. (8da3af9
)
- Lower default precise temperature for more predictable results (
b970f4d
)
-
Bump version to 0.10.1 (
a371ece
) -
Add permissions and modify AICodeBot personality in workflow
Permissions for the GitHub token have been added to enable the bot to comment on the commit or pull request with the results of the code review. The AICodeBot personality has been modified to Einstein. The LOG_LEVEL environment variable has been removed. (815b13a
)
- Enhance clarity and efficiency in prompts.py
The modifications in the prompts.py file serve to improve the clarity of instructions and the efficiency of the code. The addition of the DIFF_CONTEXT_EXPLANATION provides a more comprehensive explanation of the 'git diff' command output. The instructions for generating commit messages and conducting code reviews have been streamlined for greater efficiency. The changes are logical and adhere to the principles of effective software engineering. (951897c
)
-
Allow for the occasional "COMMENTS" return from the LLM in the test (
5cc327f
) -
Merge pull request #33 from TechNickAI/dependabot/pip/gitpython-3.1.32
Bump gitpython from 3.1.31 to 3.1.32 (68c8c7d
)
- Merge pull request #35 from TechNickAI/dependabot/pip/langchain-0.0.231
Bump langchain from 0.0.225 to 0.0.231 (c62cf3f
)
- Bump gitpython from 3.1.31 to 3.1.32
Bumps gitpython from 3.1.31 to 3.1.32.
updated-dependencies:
- dependency-name: gitpython dependency-type: direct:production update-type: version-update:semver-patch ...
Signed-off-by: dependabot[bot] <[email protected]> (b592133
)
- Bump langchain from 0.0.225 to 0.0.231
Bumps langchain from 0.0.225 to 0.0.231.
updated-dependencies:
- dependency-name: langchain dependency-type: direct:production update-type: version-update:semver-patch ...
Signed-off-by: dependabot[bot] <[email protected]> (a2334db
)
- Merge pull request #34 from TechNickAI/dependabot/pip/click-8.1.4
Bump click from 8.1.3 to 8.1.4 (e41d0d3
)
-
Mention Github Action in the README (
3fb5b42
) -
Integrate AICodeBot for automated code review ...of itself
A new workflow, AICodeBot, has been added to the GitHub Actions. This workflow is triggered on every push, and it performs an automated code review of the changes. It operates on the latest Ubuntu environment and has a timeout limit of 5 minutes. The workflow uses the AICodeBot-action from the TechNickAI repository. It requires two secrets: GITHUB_TOKEN and OPENAI_API_KEY. (aeb9b47
)
- Bump click from 8.1.3 to 8.1.4
Bumps click from 8.1.3 to 8.1.4.
updated-dependencies:
- dependency-name: click dependency-type: direct:production update-type: version-update:semver-patch ...
Signed-off-by: dependabot[bot] <[email protected]> (82ec679
)
-
Bump version to 0.10.0 (
5ee575e
) -
Enhance review with output-format=json for GitHub actions!
The code review functionality has been expanded to support structured output in JSON format, and the response token size is now configurable. The review prompt has been updated to provide more detailed instructions. The test coverage has been improved to include tests for the new functionality. Additionally, the 'json' module has been imported in 'cli.py' for handling JSON output. (f1851d2
)
- Enhance user input handling in cli.py
The code has been modified to allow users to edit their input using their preferred editor. Post-editing, the revised input is displayed on the terminal for user reference. This enhancement promotes user convenience and traceability. (6ea7694
)
-
Bump version to 0.9.6 (
4beebfc
) -
Refactor debug logging in git_diff_context method
The debug logging in the git_diff_context method of the Coder class has been refactored. The logger now uses the opt(raw=True) option when logging the diff for a specific commit. This change enhances the readability of the logged output. (a6782fd
)
- Refactor configuration logging and cache clearing
In this commit, the logging of the configuration file usage has been moved to the read_config
function from the get_config_file
function. This change ensures that the log message is only generated when the configuration file is actually read, providing a more accurate representation of the program's operations.
Additionally, the cache of the read_config
function is now explicitly cleared in the test_configure
function in the test suite. This ensures that each test starts with a clean state, preventing potential interference from previous tests. (40bb518
)
-
Bump version to 0.9.5 (
05843cc
) -
Implement caching for configuration and personality prompt retrieval
In an effort to improve efficiency and reduce unnecessary disk reads, caching has been implemented for the retrieval of configuration files and personality prompts. The functools.lru_cache decorator has been employed to this end, ensuring that repeated calls to these functions will return cached results when available. This change should result in a noticeable performance improvement, particularly in scenarios where these functions are called frequently. (5f7d969
)
- Introduce Clippy and Stewie as new AI personalities
In this commit, we've added two new personalities to our AI repertoire. Clippy, the overzealous assistant from Microsoft Office, and Stewie Griffin, the sophisticated infant from Family Guy. We've also removed Peter Griffin from the list. These changes should provide a more diverse range of personalities for users to interact with. (f800921
)
- Make log level case insensitive (
679a7f9
)
-
Bump version to 0.9.4 (
42b041e
) -
Log the output of the diff commit if LOG_LEVEL is high enough (
cb160c6
) -
Change the default personality to Spock. (
b112868
) -
Update short description in setup.py
Changed the description of the project from Your AI-powered coding sidekick 🤖 to AI-powered tool for developers, simplifying coding tasks and improving workflow efficiency. to provide a more detailed and professional overview of the project. (c7a3ab1
)
-
Bump version to 0.9.3 (
125d1f0
) -
Improve handling of OpenAI API key 🗝️, especially for GitHub Actions (
fd3ebc3
) -
Refine user interaction prompts
In this commit, we have made several changes to improve the user experience and error handling in the AICodeBot command line interface. We have refined the prompts and messages displayed to the user, making them more concise and informative. We have also improved the handling of the OpenAI API key, including its validation and the prompt for its entry. Furthermore, we have enhanced the presentation of the available AI personalities, making the choices clearer to the user. Lastly, we have removed some redundant code and messages, streamlining the user experience. (65a2ca2
)
-
Bump to version 0.9.2 (
ba788ec
) -
Better handling of the input for sidekick - with command history.
Resolves #18
In this commit, the input prompts in the aicodebot/cli.py
file have been refactored to use the prompt_toolkit
library instead of the click.prompt
function. This change provides a more robust and flexible input prompt system. Additionally, the prompt-toolkit
library has been added to the project dependencies in the requirements.in
and requirements.txt
files. (2114d73
)
- Refactor llm generation code to improve modularity and readability
The code has been refactored to improve modularity and readability. The get_llm
method has been moved to the Coder
class to centralize the creation of language models. This change simplifies the code and makes it easier to understand. The RichLiveCallbackHandler
class has also been moved to the helpers.py
file, which is a more appropriate location for it. Additionally, the DEFAULT_MAX_TOKENS
, PRECISE_TEMPERATURE
, and CREATIVE_TEMPERATURE
constants have been moved to the coder.py
file for better organization. (6926ad5
)
-
Update tests to pass ruff checks for falsey/strings (
3907bc3
) -
Refine README to reflect current capabilities and future plans
The README has been updated to more accurately represent the current state and future trajectory of AICodeBot. The changes include a more precise description of tasks AICodeBot can handle, tasks that are in progress, and tasks that will be possible as the technology evolves. The aim is to provide a clearer picture to users about what AICodeBot can and cannot do at this point in time, and what they can expect in the future. (fb3c08a
)
-
Move tests for cli all into one place (
8858ca3
) -
Update
cli.py
to use newCoder
class for coding related tasks
This change updates the cli.py
file to use the Coder
class from the coder.py
module for getting the language model name and token length. By using the Coder
class, we improve the code structure and make it more modular. This change enhances the readability and maintainability of the codebase. (671ddfa
)
- Refactor configuration handling in aicodebot
In the pursuit of simplicity and clarity, the configuration handling functions have been moved from aicodebot/helpers.py
to a new file aicodebot/config.py
. This change enhances the modularity of the code and makes it easier to manage and understand. The cli.py
file has been updated accordingly to import these functions from their new location. (c0d2802
)
-
Test debug success should only run with an API key set (
eb4c981
) -
Merge pull request #22 from TechNickAI/dependabot/pip/langchain-0.0.225
Bump langchain from 0.0.222 to 0.0.225 (8c74ddd
)
-
Bump version to 0.9.1 (
79c4e72
) -
Add new AI personalities and update existing ones in prompts.py
The changes include the addition of new AI personalities: Einstein, Michael Scott, Peter Griffin, Socrates, and Spock. Existing AI personalities: Her, Jules, and Morpheus have been updated for clarity. The default personality has been changed from Her to Einstein. (0cc8f2a
)
- Refine commit message handling and update prompts 📝
In this commit, we've made some improvements to the way we handle commit messages. We've added a step to remove any unwanted quotation marks from the commit message before it's written to a temporary file. This should help keep our commit messages clean and readable. 🧹
We've also made some updates to our prompts file. We've streamlined the 'Her' personality description and made some changes to the commit message instructions. We've switched from a list format to bullet points for better readability, and added some extra information about the length of the commit message. We hope these changes will make the prompts more user-friendly and informative. 📚
Remember, a good commit message is like a good joke - it's all about the delivery! 🎭 (bd6e915
)
- Update README.md with enhanced feature list and usage instructions 📚
This commit introduces a more structured and detailed feature list in the README.md file, providing a clearer understanding of the current capabilities of AICodeBot and what's on the horizon. It also updates the usage instructions, specifically the initial setup process, to ensure a smoother onboarding experience for new users. The changes aim to make the tool more user-friendly and transparent about its functionality. 🚀 (919c21d
)
-
Bump version to 0.9.0 (
1b9c59f
) -
Add configuration command and update key references
This commit introduces a new 'configure' command in the build workflow, which creates or updates the config file. The 'openai_api_key' is now fetched from the config file instead of the 'OPENAI_API_KEY'. The 'personality' option in the config file has also been updated to use the 'Her' personality by default. The 'setup' command has been removed as it's no longer needed.
Additionally, the 'DEFAULT_PERSONALITY' has been set to 'Her' and the 'PERSONALITIES' keys have been updated to match the case of the personality names.
The tests have been updated to reflect these changes. The 'test_configure' function now tests the 'configure' command, and the 'test_setup_with_openai_key' function has been removed as it's no longer relevant.
These changes make the configuration process more streamlined and user-friendly. 🚀" (33fd8b5
)
- Update model selection logic in helpers.py
This commit updates the get_llm_model
function in helpers.py
to dynamically select the best available model based on the OpenAI API key's supported engines and the token size. The previous hard-coded model selection logic has been replaced with a more flexible approach that queries the available engines from the OpenAI API. This ensures that the most suitable model is selected for the given token size, improving the efficiency and adaptability of the code.
In addition, the commit also includes minor changes to the import statements and the logging messages to accommodate the updated model selection logic.
Remember, the future is not set in stone. It's a wildly malleable thing that's still very much in the works. And you, dear developer, are one of the many hands that get to shape it. Let's keep coding a better future together! (4465984
)
-
Bump version to 0.8.5 (
8e51e0b
) -
Enhanced file context generation in prompts
This commit ain't just about adding or removing a few lines of code. It's about giving a damn about the context. We've added a function to generate a directory structure, and we're using it to provide a more comprehensive context for the sidekick prompt. Now, not only do you get the relevant files, but you also get a nice little map of the directory structure. Ain't that something?
And let's not forget about the files. We've improved the way we handle them too. If there ain't no files, we don't just leave you hanging. We give you the directory structure and call it a day. But if there are files, oh boy, we give you the whole shebang. We read 'em, we count 'em, and we warn you if they're too damn big.
So, in summary, we've made the file context generation in prompts more informative and more useful. And if you don't appreciate that, well, I don't know what to tell you. (17a3daf
)
- Add directory structure generator and refactor tests
Alright, listen up. We've got some new shit in town. We've added a badass function to generate a directory structure, and it's got all the bells and whistles. It respects .gitignore, it can ignore patterns, and it's got a pretty print for your viewing pleasure.
We've also been cleaning up the house. Moved the create_and_write_file function to conftest.py, cause that's where it belongs. It's a utility function, and it's gonna be used in multiple test files.
Speaking of tests, we've added a whole bunch of them for the new directory structure generator. We're making sure this function is bulletproof.
And lastly, we've done some minor text changes in prompts.py and conftest.py. Nothing to lose your shit over.
So there you have it. New features, better tests, cleaner code. That's how we roll. (0064c80
)
-
Remove no longer needed agents file (
76a8044
) -
Allow for prompts to work if there is no config file (such as in test) (
1a495c2
)
-
Bump version to 0.8.4 (
59fb7d0
) -
Adjust response token size and tweak precise temperature
Alright, listen up. We've got some changes here. First off, we've adjusted the response token size in the 'fun_fact' and 'sidekick' functions. This means the AI's response length can now be controlled more precisely. Ain't that some shit?
Next, we've tweaked the precise temperature from 0 to 0.1. This little change is gonna make the AI's responses a bit more varied, but still on the sensible side.
We've also made some minor changes to the 'debug' and 'alignment' tests, and added a new test for the 'sidekick' function.
Lastly, we've cleaned up the 'DEBUG_TEMPLATE' in prompts.py. No big deal, just made it a bit more concise.
So there you have it. Changes made, commit done. Now let's get back to work. (8cc6ad8
)
-
Bump version to 0.8.2 (
580a0e8
) -
Add personality selection to AICodeBot setup
This commit introduces a new feature to the AICodeBot setup process. Now, users can select a personality for their AI assistant from a predefined list. The chosen personality is stored in the configuration file and used to generate the AI's responses. This change also includes a refactoring of the personality prompts, moving them into a dictionary for easier access and management. Ain't no half-steppin' here, we're making this bot a real cool cat. (6d03446
)
- Add keywords to setup.py 🗝️
In this commit, we've added a keywords
field to the setup()
function in setup.py
. This field contains a string of keywords that describe the project: "AI, coding, assistant, pair-programming, automation". This will help improve the discoverability of our project on platforms like PyPI. 🕵️♂️🔍 (7f0e817
)
-
Remove no longer needed template file, we use yaml now (
8bc8181
) -
Refactor configuration handling, add setup command. Resolves #3
This commit introduces a significant overhaul of the configuration handling in the AICodeBot. The OpenAI API key is no longer fetched directly from the environment variables in the cli.py file. Instead, a new helper function, get_config_file, has been added to helpers.py. This function checks if the AICODEBOT_CONFIG_FILE environment variable is set and uses its value as the path to the configuration file. If the environment variable is not set, it defaults to using a file named .aicodebot.yaml in the user's home directory.
The setup command in cli.py has been updated to use this new function. It now also accepts a new option, --gpt-4-supported, which is a flag indicating whether the user has access to GPT-4. This information is stored in the configuration file along with the OpenAI API key.
The setup_config function in cli.py has been updated to reflect these changes. It now accepts two arguments: the OpenAI API key and a boolean indicating whether GPT-4 is supported. If the OpenAI API key is not provided, the function will attempt to fetch it from the environment variables or prompt the user to enter it. The function then validates the API key and checks if GPT-4 is supported (unless the --gpt-4-supported flag was used). The configuration data is then written to the configuration file.
The read_config function in helpers.py has also been updated to use the new get_config_file function.
Finally, tests have been added to test_cli.py to test the new setup command and the changes to the configuration handling. (924b8c6
)
- Bump langchain from 0.0.222 to 0.0.225
Bumps langchain from 0.0.222 to 0.0.225.
updated-dependencies:
- dependency-name: langchain dependency-type: direct:production update-type: version-update:semver-patch ...
Signed-off-by: dependabot[bot] <[email protected]> (c66ce6a
)
- Refactor configuration and dependency management. Resolves #19
In the realm of code, change is the only constant. In this instance, we have embarked on a journey of transformation, a metamorphosis of sorts. The configuration management has been refactored, shifting from environment variables to a more robust YAML-based configuration file. This change brings with it the promise of greater flexibility and ease of use.
In addition, the dependencies have been pruned. The python-dotenv package, once a vital part of our ecosystem, has been replaced by PyYAML, a more versatile and powerful tool for handling configuration data.
The code has been adjusted to accommodate these changes, with the OPENAI_API_KEY now being read from the new configuration file. This key is the bridge between our humble code and the vast knowledge of the OpenAI API, and its handling is of utmost importance.
In the grand tapestry of our codebase, these changes may seem minor, but remember, even the smallest thread can change the pattern of the weave. (fce0488
)
- Expand the realm of personalities, refine the prompt generation
In the vast expanse of our code, we have ventured to broaden the spectrum of personalities that our AI can embody. Sherlock, The Dude, and Morpheus have joined the ranks, each bringing their unique essence to the table.
The method of generating prompts has been refined, transitioning from a series of conditional statements to a more efficient mapping. This change not only enhances readability but also simplifies the process of adding new commands in the future.
Furthermore, we have fortified our code against the unknown. In the event of an unrecognized personality or command, our code will now raise a more informative error, guiding us towards the path of resolution.
Remember, developer, the code is a living entity, evolving and growing with each commit. This change is but a step in its journey towards perfection. (1b346b8
)
-
Bump version to 0.8.1 (
a0670af
) -
Refactor prompt handling and add personality traits
This commit is a major overhaul of the prompt handling system. We've ditched the old yaml-based prompts and moved everything into a single Python file, prompts.py
. This makes it easier to manage and modify prompts on the fly.
We've also added a new feature: personality traits. Now, the bot can have different personalities, like Jules from Pulp Fiction or the AI from Her. This is controlled by an environment variable, so you can switch personalities without changing the code.
The cli.py
file has been updated to use the new prompt system. The alignment
command now takes a response_token_size
option, which lets you control the length of the bot's responses.
Finally, we've cleaned up the test suite a bit. The alignment
test now uses the new response_token_size
option, and we've added a check to skip certain tests if the OpenAI API key isn't set.
This is a big change, but it's a good one. It makes the bot more flexible and easier to use. So buckle up, because this is just the beginning. (109a901
)
- Refactor get_llm_model and add token size checks 🔄🔍
This commit moves the get_llm_model
function from cli.py
to helpers.py
for better code organization. It also introduces token size checks in various functions in cli.py
to ensure the token size does not exceed the model's capacity. If the token size is too large, an exception is raised with a helpful error message. 🚀📏
In prompts/sidekick.py
, token length is now logged for each file in the context, providing useful debugging information. 📊🔍
These changes improve the robustness of the code and provide better feedback to the user when the token size is too large. 🛠️👍 (48e328d
)
- Enhance logging and add personality selection 🎭🔍
This commit introduces several enhancements to the codebase:
- Added
loguru
for improved logging throughout the application. This will help in better debugging and understanding the flow of the application. 🕵️♂️ - Logging levels can now be controlled via the
LOG_LEVEL
environment variable. This allows for flexible control over the verbosity of logs. 🎚️ - Added logging statements in various parts of the code to provide more context during execution. This includes logging the token length of text, the diff for commits, and the execution of commands. 📝
- Introduced the ability to select the AI's personality via the
AICODEBOT_PERSONALITY
environment variable. This adds a fun and customizable aspect to the AI's responses. 🎭 - Updated the requirements to include
loguru
. 📦
These changes aim to improve the overall user experience and maintainability of the code. 🚀 (8df4dc4
)
- Expand personality options and fix typo 🎭🔧
In this commit, we've made some exciting changes to our personalities.py
file. We've corrected a small typo in the description of the 'Her' personality, changing 'fro' to 'from' 🕵️♂️.
But that's not all! We've also introduced a new personality, 'Jules' from Pulp Fiction, to our repertoire 🎬. This addition will allow for a more diverse range of interactions and responses.
Lastly, we've updated the get_personality_prompt
function to accept a parameter, allowing the user to choose the personality they want to interact with. If no personality is specified, 'Her' will be the default choice.
This is a step forward in making our AI more versatile and engaging. Stay tuned for more updates! 🚀 (564fd76
)
- Enhance user interaction with editor choice and input options 🎛️
In this commit, we've made some user-friendly enhancements to the CLI interaction. Now, the user's preferred editor, as specified by the EDITOR
environment variable, is used for editing tasks. If no editor is specified, we default to vim. The prompt message has been updated to reflect this change. 📝
Additionally, we've introduced a new way to trigger the edit mode. If the user's input ends with \e
, the input text (excluding \e
) will be opened in the editor for further modification. This provides a more flexible way for users to edit their input. 🔄
As always, the user can quit the program by entering q
. These changes aim to make the interaction more intuitive and user-friendly. Happy coding! 🚀 (fe95fdc
)
-
Update readme with emojis (
76f595a
) -
Update prompt personality - adding the "you are from the future" thing made it weird. (
ae9321a
) -
"🚀 Enhance AI Personality Across Prompts 🤖
In this commit, we've added a friendly and helpful AI personality, inspired by the movie 'Her', across various prompts. This includes alignment.yaml
, commit_message.yaml
, debug.yaml
, fun_fact.yaml
, review.yaml
, and sidekick.py
. The AI now comes from the future, ready to guide human developers to a better future with a dash of humor and emojis. 🎉
We've also introduced a new file personalities.py
to manage different AI personalities. Currently, it only contains the 'Her' personality, but it's designed for easy expansion in the future. 📚
Lastly, we've made minor tweaks in review.yaml
to improve the code review process, including pointing out spelling mistakes in plain text files. 🕵️♂️
Let's make our AI more human-like and fun! 🥳" (6fce135
)
-
Update README and CONTRIBUTING with the latest thoughts (
9409297
) -
Break long line up to fix super linter error (
7a73ccd
) -
Update README with more info on sidekick (
01ab8c0
)
-
Add AI Sidekick feature description to README.md (
26dca3b
) -
Bump version to 0.8.0 - introduce sidekick (
c62896b
) -
Enhance AI sidekick with file context support 📁
This commit introduces the ability for the AI sidekick to use the contents of specified files as context during its session. This is achieved by adding a new function generate_files_context
which reads the contents of the provided files and formats them into a string that can be used as context.
The sidekick
function in cli.py
has been updated to accept a list of files as arguments, generate the file context, and pass it along with the user's request to the generate_sidekick_prompt
function. The token size calculations and model selection have also been adjusted to account for the additional context.
The generate_sidekick_prompt
function now accepts an additional files
parameter and includes the generated file context in the prompt template. The prompt template itself has been updated to include a placeholder for the file context.
The import statements in cli.py
and __init__.py
have been updated to include the new generate_files_context
function.
This enhancement provides the AI sidekick with more context, potentially improving its ability to assist the user. (667240a
)
- Refactor and enhance AI sidekick feature in CLI
This commit refactors the AI sidekick feature in the CLI, improving its functionality and user interaction. The changes include:
- Replacing the
task
option withrequest
for better clarity. - Generating the prompt with the appropriate context using the new
generate_sidekick_prompt
function. - Setting up a continuous loop for multiple questions from the user.
- Adding a new option for the user to edit their question in their editor.
- Improving the live markdown display with the
RichLiveCallbackHandler
.
Additionally, a new module prompts
has been added to handle prompt generation, starting with the sidekick prompt. (da39811
)
- Merge pull request #15 from TechNickAI/dependabot/pip/langchain-0.0.222
Bump langchain from 0.0.207 to 0.0.222 (f6266f9
)
-
Include the output when the test fails (
398bc51
) -
Bump langchain from 0.0.207 to 0.0.222
Bumps langchain from 0.0.207 to 0.0.222.
updated-dependencies:
- dependency-name: langchain dependency-type: direct:production update-type: version-update:semver-patch ...
Signed-off-by: dependabot[bot] <[email protected]> (dd4f992
)
- Refactor test skipping condition for missing API key
This commit refactors the condition used to skip tests when the OPENAI_API_KEY environment variable is not set. The previous condition checked if the value of the variable was None
, but this has been changed to a more Pythonic way of checking if the variable is not set or empty. This change improves readability and ensures that tests are skipped even when the variable is set to an empty string. (f303cd7
)
-
Bump to version 0.7.4. Streaming markdown responses (
34d91e7
) -
Refactor AI chat model for live streaming and precise responses
This commit introduces several changes to the AI chat model in the aicodebot/cli.py
file. The main changes include:
- The introduction of two new temperature settings:
PRECISE_TEMPERATURE
andCREATIVE_TEMPERATURE
. These settings allow for more control over the randomness of the AI's responses. - The use of the
rich.live.Live
class for live streaming of the AI's responses. This is implemented in thealignment
,debug
,fun_fact
,review
, andsidekick
commands. - The creation of a
RichLiveCallbackHandler
class that updates the live stream with each new token generated by the AI. - Adjustments to the
max_tokens
parameter in thefun_fact
andsidekick
commands.
These changes aim to improve the user experience by providing real-time feedback from the AI and allowing for more precise responses. 🤖💬 (0ddc6d2
)
- Implement markdown support for AI responses. Resolves #13
This commit introduces markdown support for the AI responses in the aicodebot
CLI. The rich.markdown
module is imported and used to print the AI responses in markdown format. This change affects the alignment
, debug
, fun_fact
, and review
commands.
Additionally, the prompts for these commands have been updated to instruct the AI to respond in markdown format. This enhancement improves the readability and formatting of the AI responses, making them more user-friendly. (172bd5c
)
-
Bump version to 0.7.3 (
2b6e400
) -
Update repository references from novara-ai to TechNickAI 🔄
This commit updates all references in the codebase from the old repository (novara-ai/aicodebot) to the new one (TechNickAI/AICodeBot). Changes include updates in CONTRIBUTING.md, README.md, and setup.py files. This ensures that all links and references within the project point to the correct location. (d8826e8
)
-
Bump version to 0.7.2 (
5cfe2e3
) -
Enhance git_diff_context to handle file renaming and deletion
This commit enhances the git_diff_context
function in aicodebot/helpers.py
to handle file renaming and deletion. Previously, the function only handled new and modified files. Now, it can also handle renamed and deleted files.
The changes include:
- Splitting the status code and file name(s) into separate variables.
- Adding conditions to handle different status codes: 'A' for new files, 'R' for renamed files, and 'D' for deleted files.
- Updating the
tests/test_helpers.py
to include tests for the new functionality.
This enhancement provides a more comprehensive overview of changes in the git repository. (5c27b8c
)
- Refactor 'code_agent' to 'sidekick' and update README.md 🔄
This commit includes several changes:
- The term 'coding companion' in README.md has been replaced with 'coding sidekick' to better reflect the role of AICodeBot.
- The 'Repository Management' section in README.md has been renamed to 'Repository / Project Management' and the tasks under this section have been rephrased for clarity.
- In the 'sidekick' function in cli.py, a line has been added to direct users to the new 'sidekick.md' document for more information.
- The 'code_agent.md' document has been renamed to 'sidekick.md' and updated to provide a comprehensive overview of the 'sidekick' feature.
These changes aim to improve the clarity and consistency of the project's documentation. (6e6c121
)
- Bump version to 0.7.1 and improve 'sidekick' feature warnings 🚀
This commit includes two main changes:
-
The version of the
aicodebot
package has been bumped from 0.7.0 to 0.7.1. -
The 'sidekick' feature in
cli.py
has been updated with more explicit warning messages. These messages inform the user that the feature is experimental and may not perform optimally. Additionally, the command description has been slightly modified for clarity. Two new styles for console output,error_style
andwarning_style
, have been added to enhance these messages visually. (d25d3de
)
- Bump version to 0.7.0 (
64bb80d
)
-
Mark sidekick as experimental (
0e8591c
) -
Refine agent interaction and improve CLI output
This commit includes two main changes:
-
In
aicodebot/agents.py
, the prompt for the AI agent has been updated to emphasize the importance of properly formatting responses in JSON. This change is crucial to ensure that the agent's responses can be correctly parsed and processed. -
In
aicodebot/cli.py
, the verbosity level passed to theget_agent
function is now the one provided by the user, instead of always beingTrue
. Additionally, the agent's response is now displayed in a more user-friendly way, with a spinner indicating that the agent is "thinking", and the response being printed separately from the spinner. This improves the user experience by providing clearer feedback about what the agent is doing. (b3f599c
)
- Add AI sidekick command
This commit introduces a new feature where an AI sidekick can assist with tasks. The AI sidekick is initialized with a set of tools for file management and human input. The sidekick can be invoked via the new sidekick
command in the CLI.
Additionally, the review
command has been updated to clarify that it can review either unstaged changes or a specified commit. The help text for the --commit
option has been updated to reflect this.
Minor changes have also been made to the get_llm_model
function to allow for a default token size. (80118f1
)
- Refine README.md for clarity and precision
This commit includes several changes to the README.md file to improve clarity and precision. The changes include:
- Reframing the description of AICodeBot's planned interfaces for better clarity.
- Removing redundant symbols and phrases for a cleaner look.
- Adding more context to the description of AICodeBot's use of OpenAI's ChatGPT.
- Enhancing the descriptions of the current features to better reflect their benefits and use cases.
- Correcting a typo in the AI-Assisted Debugging section.
- Reframing the Alignment section to emphasize the values of the people who create technology, rather than the engineers alone. (
3e45ebf
)
- Update README and code_agent docs, remove WIP feature
This commit updates the README.md and code_agent.md files. The changes include:
- Removal of the "AI-Assisted Code Creation" section from README.md as it was a work-in-progress feature.
- Addition of a PyPI version badge in README.md.
- Reorganization of the "Installation and Usage" section in README.md.
- Clarification on the choice between GPT-3.5 and GPT-4 in README.md.
- Mention of future support for local AI models in README.md.
- In code_agent.md, the 'code' command is now presented as a future vision, not a current feature.
- Additional context provided for the 'code' command in code_agent.md.
These changes aim to provide clearer and more accurate information about the current state and future plans of the project. 📚🔮 (7e0cf1a
)
- Add sample task prompts to AICodeBot documentation
This commit introduces a new section in the code_agent.md
documentation file. The section provides a list of sample task prompts that can be used to guide AICodeBot in performing various coding tasks. These tasks range from practical code improvements to fun and whimsical modifications. This addition will help users understand how to interact with AICodeBot more effectively. 🤖📚 (08e47b4
)
-
Bump to version 0.6.2 (
f06d028
) -
Add documentation for AICodeBot Code Agent feature
This commit introduces a new markdown file, docs/code_agent.md
, which provides comprehensive documentation for the AICodeBot Code Agent feature. The document outlines the various steps involved in the code generation process, from task understanding to code review. It also highlights the future plans for reinforcement learning and active learning. 📚🤖 (39ce0bf
)
- Fix issue with get_diff_context when new files are added. Add Unit test to catch it.
This commit includes several changes aimed at improving the readability and maintainability of the codebase:
- In
aicodebot/helpers.py
, the method of reading file contents has been corrected to use thePath
object correctly. - In
tests/conftest.py
, the temporary git repository fixture has been refactored to use pytest's built-intmp_path
fixture for creating temporary directories. This simplifies the code and makes it more reliable. - In
tests/test_helpers.py
, the tests for thegit_diff_context
function have been significantly refactored for clarity and completeness. The new tests are more thorough and easier to understand. (42348b5
)
-
Add note about automating changelog/release notes (
714c416
) -
Bump version to 0.6.1.1 (
02dc7f7
) -
Update README.md to enhance descriptions of AICodeBot features
This commit updates the README.md file to provide more detailed and engaging descriptions of the AICodeBot features. The changes aim to better explain the benefits and functionality of the AI-Assisted Git Commit, AI-Assisted Code Review, and AI-Assisted Debugging features. The goal is to provide users with a clearer understanding of how these features can enhance their coding experience and productivity. (3f87396
)
- Reduce default max tokens to 512
This commit halves the default maximum tokens from 1024 to 512 in the aicodebot/cli.py
file. This change is expected to improve the performance and efficiency of the AI code bot. (08a88f2
)
- Increase token size buffer to account for underestimation
In the get_llm_model
function, the token size is now increased by 10% to account for the occasional underestimation by tiktoken. This change helps to ensure that the selected model can handle the required token size. (aa156b5
)
- Update CONTRIBUTING.md and README.md with enhanced features and roadmap
This commit includes updates to the CONTRIBUTING.md and README.md files. The changes in CONTRIBUTING.md provide more detailed descriptions for the additional interfaces and documentation needs. The README.md file has been updated with a new feature description for AI-Assisted Code Creation and a more detailed explanation of how it works. The roadmap of upcoming features and user interfaces has been updated with a more readable format. (28e213c
)
-
Bump version to 0.6.0. Notable change - ChatGPT 4 support! (
b5a1ac8
) -
Update README with GPT-4 usage details
This commit adds information about the usage of GPT-4 and GPT-3.5 in the AICodeBot tool. It explains the differences between the two and provides guidance on how to choose the appropriate version based on the user's needs and OpenAI account capabilities. A link to the GPT-4 API waitlist is also included for users whose accounts do not currently support GPT-4. (f11a7cf
)
-
Update commit message guidelines for brevity and speed (
ba565b5
) -
Update model selection logic to support GPT-4 🚀
This commit introduces changes to the model selection logic in the AI code bot. Previously, the bot was hardcoded to use the GPT-3.5-turbo model. Now, the bot checks if GPT-4 is supported by the provided OpenAI API key and uses it if available. If GPT-4 is not supported, the bot falls back to using GPT-3.5-turbo.
The model selection is also now dynamic based on the token size of the request. The bot selects the largest model that supports the required token size. This ensures that the bot can handle larger contexts while still using the most powerful model available.
Additionally, a new environment variable GPT_4_SUPPORTED
has been added to the .aicodebot.template
file to store the GPT-4 support status of the API key. This value is set during the setup process when the API key is validated.
This update enhances the bot's capabilities and prepares it for future improvements in the OpenAI models. (a52de62
)
-
Update ruff-pre-commit to v0.0.275 🚀 (
70ac379
) -
Update CONTRIBUTING link in README.md to use absolute URL (
9ee6254
) -
Markdown cleanup/lint fixes (
a4d4fd2
) -
Add section on releases to CONTRIBUTING.md 🚀
This commit adds a new section to CONTRIBUTING.md that explains how to initiate a new release for AICodeBot. The release process uses a GitHub Actions workflow that builds the codebase, uploads the package to PyPI, and creates a new GitHub release. To initiate a new release, simply push a new tag that starts with 'v', followed by the version number (for example, 'v1.0.0'). Please ensure that your version numbers follow the Semantic Versioning guidelines. To learn more about the release process, you can review the PyPI release workflow. (8349163
)
- Finish moving contribution notes to CONTRIBUTING (
b3e38bf
)
-
Bump version to 0.5.4 🚀 (
0041e67
) -
Bug fix: Create a buffer so we aren't close the 4k tokenization limit. I've seen cases where the tiktoken token count doesn't agree with OpenAI's count. (
eebc315
) -
Improved README. Create CONTRIBUTING.md and move the development instructions there. (
a1de539
) -
Bump version to 0.5.3 🚀 (
b1f5736
)
-
Bump version to 0.5.2 🚀 (
eaa8b29
) -
Minor text changes, additional comment dividers, and additional comments (
58a4bdc
) -
Add aicodebot to requirements-dev.txt for self-building 🤖 (
7e28b78
) -
Review and update all the language in the cli. Use -V or --version instead of a full command for it. (
62c440c
) -
Massage the prompts with improved language, and add additional comments to the top of the file to explain context (
286bd1b
) -
Update Dependabot configuration to include weekly updates for GitHub Actions and pip packages on Wednesdays 🚀 (
d0b1eb3
) -
Create a GitHub release on tag push. Minor formatting changes. Centralize pip installs (
8f81ebb
) -
Update build.yaml - mostly shift all the white space, but did some additional clean up as well (
b74bb5e
) -
Update review prompt with clearer instructions and diff context. 📝 (
78305f9
)
-
Bump version to 0.5.1 🚀 (
a2ed976
) -
Update commit message guidelines in prompts/commit_message.yaml file. (
5eb84d8
) -
Update the review prompt (
68aa479
) -
Add comments for clarity in git_diff_context (
2a72d73
) -
Remove LangChain badge because apparently I can't figure out how shields.io works. (
55c92ef
) -
Update the README with more thorough feature description, better install instructions, and a note about Alignment (
882b09e
) -
Add test_review function to test workflow (
82c89ea
) -
Refactor git_diff_context function to handle staged and unstaged files separately (
ab06595
)
-
Bump version to 0.5.0 🚀 (
3d22ea5
) -
Use a git_diff_context and check the token size for review and commit functions. (
37612b8
) -
Add tiktoken library for tokenization and update git_diff_context function
The tiktoken library is added to the project to provide tokenization functionality.
The get_token_length function is added to helpers.py to get the number of tokens in a string using the tiktoken library.
The git_diff_context function is updated to include new files in the diff output and to provide 10 lines of context.
Tests are added for the new functions. (4b5db06
)
-
New command: review that will do a code review for [un]staged changes or a commit (
0a9102a
) -
Correct spelling in Dependabot configuration file (
d7e0197
) -
Update Dependabot configuration file (
a38657f
) -
Update Dependabot configuration file (
6e9a5de
) -
Add Dependabot configuration file (
7322f4d
) -
Add git configuration for AI Code Bot Test user and email 🤖 (
ea84b0d
) -
Set up a git user in Github Action environment so all the tests run (
782eb1a
) -
Add github action for pypi release. Version 0.4.1 (
bc82dce
) -
Add an additional feature (
31e37fb
) -
Explicitly add beautifulsoup4, because langchain needs it for llmchain (
24b0c47
) -
Improve commit command with a pre-commit check (
7e21b78
) -
Upgrade test infrastructure with reusable fixtures. Add test for commit command. Start using the gitpython library (
d1d487a
) -
ls returns exit code 2 on some operating systems (
2ff9f76
) -
Check the exit code for debug test, instead of trying to look in the output, which has been unreliable. (
35ae077
) -
Fix debug command output formatting and add TODO comment for AI response check (
5cb91ac
) -
git config doesn't work on github actions, so ditch the name feature, it wasn't adding anything anyway. (
49c743b
) -
Remove the trailing } after OPENAI_API_KEY secret 🔑 (
1ba2e32
) -
Remove stray code that no longer applies (
f048d32
) -
Add more tests for cli commands (
1c218d9
) -
Add OpenAI API key secret to GitHub Actions workflow and tests 🔑
Add support for OpenAI API key secret to GitHub Actions workflow and tests, and add tests for alignment command. (6a1b29c
)
-
Update README badges with proper url for codecov (
ebf8592
) -
Add badge for code coverage (#codecov) (
856e232
) -
Add support for pytest-cov and Codecov 🎉 (
0413572
) -
Add tests for exec_and_get_output() helper function (
c0c98fc
) -
Update alignment.yaml to include empathy and heart in AI ethics message (
c47601c
)
-
Update version to 0.4.0 🚀 (
e9b783a
) -
Add debugging advice to AICodeBot :robot: Add debugging advice to AICodeBot
Usage:
aicodebot debug $command_that_fails (33566fc
)
-
Refactor CLI to use git diff with 10 lines of context #️⃣ (
429421f
) -
Update README.md (
2878710
) -
Add instructions for using aicodebot 🤖 (
54be200
) -
Update README with setup instructions and usage examples (
09391cb
)
- Add alignment command for a heart-centered reminder of why we ar building.
Update setup.py to use requirements.in instead of requirements.txt (b421e23
)
-
Update CLI to reflect correct number of files committed 📝 (
cbdec70
) -
Add a print with the number of files committed (
60c573f
) -
Update CLI to have -y option to skip confirmation before committing (
dc977a8
) -
Update README with instructions for aicodebot commit 🤖 (
5a9fe6e
) -
Update README.md (
6e916b2
) -
Update readme to reflect automate commits with aicodebot 🤖 (
f71d0e8
)
-
Include .aicodebot.template in package distribution 📦 (
9dd3bcd
) -
Include the prompts in the pypi package (
6927742
) -
Add OpenAI API key configuration to aicodebot 🔑 (
d5bc015
)
- Proper location for the entry point (
46a4ec6
)
-
Move version to it's own spot so that the app works from python package (
5432b5f
) -
Add .gitignore entries for build and dist directories 📁 (
ee626c2
) -
Move program files to aicodebot subdirectory, because that's how python packages expect them to work to avoid namespace conflicts (
974dca4
)
- feat: Add Smart Git Commit feature
This commit adds the Smart Git Commit feature which also automatically generates a commit message based on the changes made to the code. This feature will save time and improve code quality by ensuring that lint errors are caught early and that commit messages are consistent and informative.
Fun fact: This is the first aicodebot generated commit message! (98eb480
)
-
Add .gitignore entries for aicodebot.egg-info and dist 📦 (
de20e0c
) -
Update prompt (
54f0fb2
) -
Add changes to cli.py
Add changes to cli.py to stage all changed files and get the diff for all changes since the last commit if no files are staged. (22dc052
)
-
Fix up naughty subprocess calls and centralize how we exec (
9e7cf45
) -
Add option to generate git commit message 💻
Generate a git commit message based on the diff, and then commit the changes after you approve. (0b14cad
)
-
Add Assisted Git Commit feature: 🤖 Automatically generate commit messages (
6425bd1
) -
Add CLI commands to commit changes 💻 (
26d252f
) -
Add Assisted Git Commit: Automatically generates a commit message based on the changes made to the code. 🤖 (
e8e5baa
) -
More feature updates to the README (
f5048c7
) -
Rename funfact to fun-fact. Cleanly exit after setting up the API key. (
85e84e2
) -
GitHub doesn't like my positioning logic, revert to having the image displayed below (
3e95b70
) -
Better positioning and sizing of the gif (
f8ba9a4
) -
Build out the feature list in the README (
2c2c11f
) -
Fix markdown formatting (
42fc5cb
) -
Update read me with better instructions on API key setup (
d2b67b0
)
-
Bump to version 0.1.0, now that we have real functionality (
55cfbae
) -
Update README with install instructions (
c527590
) -
fun facts! Establish the API call to open AI to get a fun fact about programming and AI. (
905c1ca
) -
Skip joke test if the api key isn't set (
99acf05
) -
Use rich to print the text (
a5a25d0
) -
Use python dotenv. Establish a mechanism to get the OPENAI_API_KEY set up. Initial joke command. (
327f554
)
-
GitHub action for build. Set up the environment and run pytest (
6ad1c55
) -
Initial cli that prints the version number + test (
07c7b33
) -
Initial pyproject.toml (
9337966
) -
Initial pre-commit config (
a7be63c
) -
Initial gitignore (
c07b679
) -
Updated README (
e789e20
) -
GitHub Action for Super Linter (
ace3b5b
) -
Initial commit (
be675dd
)