Commit graph

191 commits

Author SHA1 Message Date
c94c016cf1
fix(docker): use env vars for GitHub credentials in workflows
Some checks failed
Docker CI/CD / Docker Build and Push (push) Failing after 5m37s
Migrated from direct GitHub context references to environment variables for GitHub SHA, actor, and token within the Docker build and push actions. This enhances portability and consistency across different execution environments, ensuring better compatibility and security when interfacing with GitHub and Forgejo Docker registries.
2024-04-23 10:45:57 +02:00
f049285cb1
feat(docker): support dynamic tag based on commit SHA
Some checks failed
Docker CI/CD / Docker Build and Push (push) Failing after 1m34s
Enhanced Docker build workflows in `.forgejo/workflows/docker-latest.yml` to include dynamic tagging based on the GITHUB_SHA, alongside the existing 'latest' tag for both the kumitterer/matrix-gptbot and git.private.coffee/privatecoffee/matrix-gptbot images. This change allows for more precise versioning and traceability of images, facilitating rollback and specific version deployment. Also standardized authentication token variables for Docker login to the Forgejo Docker Registry, improving readability and consistency in CI/CD configurations.
2024-04-23 10:40:06 +02:00
35254a0b49
feat(docker): extend CI to push images to Forgejo
Some checks failed
Docker CI/CD / Docker Build and Push (push) Failing after 5m44s
Enhanced the CI pipeline for Docker images by supporting an additional push to the Forgejo Docker Registry alongside the existing push to Docker Hub. This change allows for better integration with private infrastructures and provides an alternative for users and systems that prefer or require images to be stored in a more controlled or private registry. It involves logging into both Docker Hub and Forgejo with respective credentials and pushing the built images to both, ensuring broader availability and redundancy of our Docker images.
2024-04-23 10:27:15 +02:00
bd0d6c5588
feat(docker): streamline Docker setup for GPTBot
All checks were successful
Docker CI/CD / Docker Build and Push (push) Successful in 7m23s
Moved the installation of build-essential and libpython3-dev from the Docker workflow to the Dockerfile itself. This change optimizes the Docker setup process, ensuring that all necessary dependencies are encapsulated within the Docker build context. It simplifies the CI workflow by removing redundant steps and centralizes dependency management, making the build process more straightforward and maintainable.

This adjustment aids in achieving a cleaner division between CI setup and application-specific build requirements, potentially improving build times and reducing complexity for future updates or dependency changes.
2024-04-23 09:52:43 +02:00
224535373e
feat(docker-workflow): add essential build dependencies
Some checks failed
Docker CI/CD / Docker Build and Push (push) Failing after 5m24s
Updated the docker-latest workflow to install additional critical build dependencies including build-essential and libpython3-dev, alongside docker.io. This enhancement is geared towards supporting a wider range of development scenarios and facilitating more complex build requirements directly within the CI pipeline.
2024-04-23 09:43:14 +02:00
a3b4cf217c
feat(docker-ci): enhance Docker CI/CD workflow
Some checks failed
Docker CI/CD / Docker Build and Push (push) Failing after 9m10s
Updated the Docker CI/CD pipeline in the `.forgejo/workflows/docker-latest.yml` to support better integration and efficiency. Key enhancements include setting a container environment with Node 20 on Debian Bookworm for consistency across builds, and installing Docker directly within the runner to streamline the process. This refinement simplifies the setup steps, reduces potential for errors, and possibly decreases pipeline execution time. These changes ensure that our Docker images are built and pushed in a more reliable and faster environment.
2024-04-23 09:26:15 +02:00
d23cfa35fa
refactor(docker-latest.yml): remove ubuntu-latest runner
Some checks failed
Docker CI/CD / docker (push) Failing after 1m35s
Removed the specific runner designation from the Docker workflow to allow for dynamic runner selection. This change aims to increase flexibility and compatibility across different CI environments. It reduces the dependency on a single OS version, potentially leading to better resource availability and efficiency in workflow execution.
2024-04-23 09:22:36 +02:00
054f29ea39
feat: Add Docker CI/CD and update docs for Docker usage
Some checks are pending
Docker CI/CD / docker (push) Waiting to run
Introduced a new Docker CI/CD workflow to automatically build and push images to Docker Hub on pushes to the 'docker' branch. This automation ensures that the latest version of the bot is readily available for deployment, facilitating easier distribution and deployment for users.

The README.md has been updated to improve clarity around installation methods, emphasizing PyPI as the recommended installation method while expanding on Docker usage. It now includes detailed instructions for Docker Hub images, local image building, and Docker Compose deployment, catering to a broader range of users and deployment scenarios. This update aims to make the bot more accessible and manageable by providing clear, step-by-step guidance for different deployment strategies.

Related to these changes, the documentation has been restructured to better organize information related to configuration and running the bot, ensuring users have a smoother experience setting up and deploying it in their environment.

These changes reflect our commitment to enhancing user experience and streamlining deployment processes, making it easier for users to adopt and maintain the matrix-gptbot in various environments.
2024-04-23 09:21:05 +02:00
f8861a16ad
feat: update GPTbot volume mapping
Changed the volume mapping for GPTbot service in `docker-compose.yml` from `settings.ini` to `config.ini`. This modification aligns the container configuration with the new application configuration file naming convention, facilitating easier configuration management and clarity for development and deployment processes.

This change is essential for maintaining consistency across our documentation and deployment scripts, ensuring that all references to configuration files are accurate and up to date.
2024-04-23 08:46:31 +02:00
ca07adbc93
refactor(docker): restructure project for improved management
Redesigned the Docker setup to enhance project structure and configuration management. Changes include a more organized directory structure within the Docker container, separating source code, project metadata, and licenses explicitly to the `/app` directory for better clarity and management. Additionally, integrated `pantalaimon` as a dependency service in `docker-compose.yml`, enabling secure communication with Matrix services by automatically managing settings and configurations through mounted files. This setup simplifies the development environment setup and streamlines deployments.
2024-04-23 08:42:12 +02:00
df2587ee74
feat: Add Docker support for GPTBot
Introduced Dockerfile and docker-compose.yml to encapsulate GPTBot into a Docker container. This simplifies deployment and ensures consistent environments across development and production setups. The Dockerfile outlines the necessary steps to build the image, incl. setting up the working directory, copying the current directory into the container, installing all dependencies, and defining the command to run the bot. The docker-compose.yml file further streamlines the deployment process by specifying service configuration, leveraging Docker Compose version 3.8 for its extended feature set and compatibility.

By containerizing GPTBot, we enhance portability, reduce set-up times for new contributors, and minimize "works on my machine" issues, fostering a more robust development lifecycle.
2024-04-23 08:25:12 +02:00
69fbbe251c
feat: Clarifications in README
Extended the README to include a new section on bot configuration setup, emphasizing the necessity of a config.ini file for operation. This update clarifies the setup process for new users, ensuring they understand the requirement of configuring the bot before use. Additionally, outlined the repository policy regarding the use of the `main` branch for development and the process for contributing through feature branches and pull requests, aiming to streamline contribution workflows and maintain code quality.

The formatting improvements across the README enhance readability and ensure consistency in documentation presentation.
2024-04-23 08:19:32 +02:00
63dc903123
refactor(openai.py): remove redundant logging
Removed an extraneous log statement that recorded the first message content in the OpenAI class. This change streamlines the logging process by eliminating unnecessary log clutter, improving the readability of logs and potentially enhancing performance by reducing I/O operations on the logging system. This adjustment is pivotal for maintaining a clean and efficient codebase, especially in production environments where excessive logging can lead to inflated log sizes and make troubleshooting more challenging.
2024-04-23 08:14:33 +02:00
819e4bbaae
feat: Prepare for 0.3.9 release and update copyright
- Initialized preparations for the unreleased 0.3.9 version in the changelog.
- Updated copyright information to include 2024 and added Private.coffee Team alongside Kumi Mitterer to reflect the collaborative nature of the project going forward.
- Incremented the project version to 0.3.9.dev0 in pyproject.toml to align with upcoming development efforts.
- Modified all references from Kumi's personal repo to the Private.coffee Team's repo in README.md, LICENSE, and pyproject.toml, ensuring future contributions and issues are directed to the correct repository. This change facilitates a broader collaboration platform and acknowledges the team's growing involvement in the project's development.

These updates are critical for the upcoming development phase and for accurately representing the collaborative efforts behind the project.
2024-04-23 07:58:34 +02:00
94a9881465
feat(changelog): update for v0.3.7/0.3.8 enhancements
All checks were successful
Python Package CI/CD / Setup and Test (push) Successful in 1m20s
Python Package CI/CD / Publish to PyPI (push) Successful in 37s
Updated the CHANGELOG.md to document enhancements in versions 0.3.7 and 0.3.8, including updates to URLs in the pyproject.toml and migration of the build pipeline to Forgejo Actions. These changes aim to improve project dependency management and streamline the CI/CD process, ensuring a more efficient development workflow.
2024-04-15 19:31:27 +02:00
6236142a21
chore: bump version to 0.3.8 and update URLs
Bumped project version to 0.3.8 for the next release cycle. Updated Homepage and Bug Tracker URLs to reflect the new hosting location, aiming for improved accessibility and collaboration. Additionally, introduced a Source Code URL for direct access to the repository, facilitating developers' engagement and contributions.
2024-04-15 19:29:23 +02:00
66d4dff72d
feat(release): streamline PyPI publishing process
All checks were successful
Python Package CI/CD / Setup and Test (push) Successful in 1m17s
Python Package CI/CD / Publish to PyPI (push) Successful in 39s
Simplified the publishing to PyPI steps in the release workflow by consolidating the Python environment setup, tool installation, package building, and publishing into a single job. This change makes the workflow more efficient and reduces the number of steps required to publish a package. It ensures that the environment setup, dependencies installation, package building, and publishing are done in one go, which can help in minimizing potential issues arising from multiple, separate steps.

This approach leverages the existing Python and PyPI tools more effectively and could potentially shorten the release cycle time. It also makes the workflow file cleaner and easier to maintain.
2024-04-15 19:22:07 +02:00
9110910b11
fix: use posix shell syntax for activation
Some checks failed
Python Package CI/CD / Setup and Test (push) Successful in 1m29s
Python Package CI/CD / Publish to PyPI (push) Failing after 18s
Switched the virtual environment activation command to be compliant with POSIX shell syntax. The previous `source` command is replaced with `.`, making the script more broadly compatible with different shell environments without requiring bash specifically. This change ensures greater portability and compatibility of the release workflow across diverse CI/CD execution environments.
2024-04-15 19:11:49 +02:00
c33efd2e73
feat(workflows): Use python3 for venv and version check
Some checks failed
Python Package CI/CD / Setup and Test (push) Failing after 21s
Python Package CI/CD / Publish to PyPI (push) Failing after 10m58s
Updated the GitHub Actions workflow in `.forgejo/workflows/release.yml` to explicitly use `python3` instead of `python` for both version checking and virtual environment setup. This change ensures compatibility and clarity across environments where `python` might still point to Python 2.x, preventing potential conflicts and erasing ambiguity. The adjustment aligns with modern best practices, acknowledging the widespread transition to Python 3 and its tooling.
2024-04-15 18:58:44 +02:00
d57a7367ab
feat(workflows): Switch base image to node:20-bookworm
Some checks failed
Python Package CI/CD / Setup and Test (push) Failing after 29s
Python Package CI/CD / Publish to PyPI (push) Failing after 16s
Updated the CI/CD pipeline in `.forgejo/workflows/release.yml` to utilize the `node:20-bookworm` image instead of `python:3.10`. This necessitated adding steps for installing Python dependencies, given the switch to a Node.js-based image. This change accommodates projects that require both Node.js and Python environments for their setup and publishing processes, ensuring better compatibility and flexibility in handling mixed-technology stacks.

This update enhances our pipeline's capability to manage dependencies more efficiently across different technologies, catering to the evolving needs of our projects.
2024-04-15 18:53:37 +02:00
037acf34b2
Version bump
Some checks failed
Python Package CI/CD / Publish to PyPI (push) Failing after 1m11s
Python Package CI/CD / Setup and Test (push) Failing after 11m51s
2024-04-15 18:18:43 +02:00
589c8395b7
ci: remove redundant GitLab CI configuration
Removed the entire `.gitlab-ci.yml`, discontinuing the GitLab CI/CD process. This change reflects a shift toward consolidating our CI/CD workflows, potentially to another platform or to streamline our current processes. It's essential to assess the impacts on project deployment and distribution, especially regarding PyPI publishing previously handled by this GitLab CI configuration.
2024-04-15 18:12:25 +02:00
35db931f4a
feat: Add CI/CD workflow and support badge
Introduced a new CI/CD GitHub Actions workflow for automated testing and publishing to PyPI, targeting Python 3.10 containers. This setup ensures code is tested before release and automates the distribution process to PyPI whenever a new tag is pushed. Additionally, updated README.md to include a support badge from private.coffee, encouraging community support and visibility.

This enhancement simplifies the release process, improves code quality assurance, and fosters community engagement by providing a direct way to support the project.
2024-04-15 18:11:42 +02:00
1e59c90df2
feat: Bump version to 0.3.6 with message type fix
Upgraded project version to 0.3.6 to introduce a critical fix for message type detection failing on certain messages. This version also amends the package directory structure for improved organization, moving from `src/gptbot` to just `gptbot`. Additionally, updated the CHANGELOG to reflect this fix and organizational change, ensuring that it stays current with the project's progress.

- Fixes message type detection issue
2024-04-11 07:41:52 +02:00
7edc69897b
Version bump to 0.3.5 2024-04-11 07:31:05 +02:00
cece8cfb24
feat(bot): enhance event processing robustness
Improve event type determination in the message fetching logic by adding try-except blocks to handle AttributeError and KeyError exceptions gracefully. This change allows the bot to continue processing other events if it encounters an event without a recognizable type or msgtype, avoiding premature termination and enhancing its ability to process diverse event streams more robustly. This approach also includes logging unprocessable events for debugging purposes, providing clearer insights into event handling anomalies.

Fixes #5
2024-04-11 07:20:44 +02:00
7e64dd5245
feat: Update repository URLs in README
Updated the repository URLs for the matrix-gptbot installation
instructions and cloning directions in the README. The change points to
a new hosting location on `git.private.coffee` from the previous
`kumig.it`. This adjustment ensures users access the most current
version of the code and contributes to a streamlined setup process by
guiding them directly to the updated repository.

This update is crucial for users looking to install the bot or
contribute to its development, ensuring they're interfacing with the
latest version and accurate information.
2024-04-01 07:48:52 +02:00
0289100a2d
feat(changelog): Updated changelog 2024-04-01 07:47:04 +02:00
a9c23ee9c4
feat: implement room state retrieval and
conditional avatar update

Introduces a new method `get_state_event` to asynchronously retrieve
state events for a given room and event type, enhancing the bot's
ability to fetch specific room states before performing actions. This
functionality is leveraged to conditionally update room avatars only if
they are not already set, reducing unnecessary updates and improving
efficiency. Additionally, the commit includes minor formatting
adjustments for better code readability.

Refactoring the avatar updating process to assess the current state
before action prevents redundant network calls and aligns with optimal
resource usage practices, contributing to a smoother operation and
potentially reducing the workload on the server.
2024-04-01 07:42:44 +02:00
d5a96aebb6
Version bump 2024-02-18 11:03:13 +01:00
c47f947f80
Refine message filtering in bot event processing
Enhanced event processing in the bot's message retrieval logic to
improve message relevance and accuracy. Changes include accepting all
'gptbot' prefixed events, refining handling of 'ignoreolder' command
with exact match rather than starts with, and now passing through
'custom' commands that start with '!'. The default behavior now excludes
notices unless explicitly included. This update allows for more precise
command interactions and reduces clutter from irrelevant notices.
2024-02-18 10:49:27 +01:00
2d564afd97
Fix parameter passing in chat response calls
Standardize the passing of 'messages' argument across various calls to
generate_chat_response method to ensure consistency and prevent
potential bugs in the GPT bot's response generation. The 'model'
parameter in one instance has been corrected to 'original_model' for
proper context loading. These changes improve code clarity and maintain
the intended message flow within the bot's conversation handling.
2024-02-15 18:11:19 +01:00
10b74187eb
Optimize chat model and message handling
Refactored initialization of OpenAI APIs to correct a redundancy and
enhance clarity. Improved content extraction logic for robust handling
of various message types. Enhanced logging and messaging by including
user and room context, facilitating better debugging and user
interaction. Extended `send_message` to support custom message types,
allowing for richer interaction within the chat ecosystem. Updated
hardcoded chat models to leverage newer versions for potentially more
accurate tool overrides. Fixed async method call in recursion handling
to ensure proper response generation. Finally, increased message history
retrieval limit based on the `max_messages` attribute for more effective
conversation context.

Resolves issues with message context and enhances user feedback during
operations.
2024-02-14 17:45:57 +01:00
b65dcc7d83
Finalize release version 0.3.3
Removed the '-dev' suffix from the project version indicating the transition from a development state to the official release of version 0.3.3. This version bump aligns with the completion of features and fixes slated for this iteration.
2024-01-26 09:31:12 +01:00
fc92ac1ebb
Clarify bot's E2E encryption caveat
Update the README to specify that issues with file attachments primarily occur in non-encrypted rooms when the same user operates the bot in both encrypted and non-encrypted rooms. This detail aims to inform users of potential pitfalls more precisely when setting up the bot with end-to-end encryption enabled.
2024-01-26 09:20:30 +01:00
2b33f681cd
Update CHANGELOG 2024-01-26 09:18:40 +01:00
c4e23cb9d3
Fix recursion errors in OpenAI class
Improved the error handling in the OpenAI class to prevent infinite recursion issues by retaining the original chat model during recursive calls. Enhanced logging within the recursion depth check for better debugging and traceability. Ensured consistency in chat responses by passing the initial model reference throughout the entire call stack. This is crucial when fallbacks due to errors or tool usage occur.

Refactored code for clarity and readability, ensuring that any recursion retains the original model and tool parameters. Additionally, proper logging and condition checks now standardize the flow of execution, preventing unintended modifications to the model's state that could lead to incorrect bot behavior.
2024-01-26 09:17:01 +01:00
87173ae284
Enable per-room model overrides and clean up code
Introduced the ability to specify and retrieve different OpenAI models on a per-room basis, thereby allowing enhanced customization of the bot's response behavior according to the preferences for each room. Cleaned up code formatting across the bot implementation files for improved readability and maintainability. Additional logic now checks for model overrides when generating responses, ensuring the correct model is used as configured.

Refactors include streamlined database and API initializations and a refined method for processing message formatting to accommodate images, texts, and system messages consistently. This change differentiates default behavior from room-specific configurations, catering to diverse user needs without compromising on default settings.
2024-01-26 09:11:39 +01:00
ad0d694222
Update docs
Updated README to better describe issues related to end-to-end encryption affecting file attachments in certain circumstances. Updated CHANGELOG.
2023-12-29 23:01:03 +01:00
e6bc23e564
Implement recursion check in response generation
Added a safety check to prevent infinite recursion within the response generation function. When `use_tools` is active, the code now inspects the call stack and terminates the process if a certain recursion depth is exceeded. This ensures that the code is robust against potential infinite loops that could block or crash the service. A default threshold is set with a TODO for revisiting the hard-coded limit, and the recursion detection logs the occurrence for easier debugging and maintenance.

Note: Recursion limit handling may require future adjustments to the `allow_override` parameter based on real-world feedback or testing.
2023-12-29 22:56:22 +01:00
0acc1456f9
Enable tool emulation and improved error logging
Introduced a configuration option to emulate tool usage in models that do not natively support tools, facilitating the use of such functionality without direct model support. This should benefit users aiming to leverage tool-based features without relying on specific AI models. Additionally, enhanced error logging in the GPTBot class by including traceback details, aiding in debugging and incident resolution.

- Added `EmulateTools` option in the `config.dist.ini` for flexible tool handling.
- Enriched error logging with stack traces in `bot.py` for better insight during failures.
2023-12-29 22:46:19 +01:00
c7e448126d
Enhanced debug logging in bot initialization
Introduced additional debug log entries in the `GPTBot` class to provide clarity on the initial sync and callback setup process. This helps with monitoring and troubleshooting during the early stages of bot deployment, making it easier to pinpoint issues around bot startup and room joining behavior.
Bumped project version to 0.3.3-dev to signal ongoing development.
2023-12-29 20:37:42 +01:00
f206aa8f0f
Warn against using E2E encryption due to bugs
Updated README to caution users about the current issues with end-to-end encryption, specifically that it can disrupt file uploads and downloads. The aim is to prevent user frustration and potential data loss until a fix is implemented.
2023-12-29 20:30:46 +01:00
63e52169a3
Fix file handling in encrypted rooms and update dependencies
Resolved an issue that prevented the bot from responding when files were uploaded to encrypted rooms by implementing a workaround. The bot now tries to generate text from uploaded files and logs errors without interrupting the message flow. Upgraded the Pantalaimon dependency to ensure compatibility. Also, refined the message processing logic to handle different message types correctly and made the download_file method asynchronous to match the matrix client's expected behavior. Additionally, updated the changelog and bumped the project version to reflect these fixes and improvements.

Known issues have been documented, including a limitation when using Pantalaimon where the bot cannot download/use files uploaded to encrypted rooms.
2023-12-14 18:10:12 +01:00
e1630795ba
Update changelog 2023-12-07 19:44:19 +01:00
2b7813f715
Make "gptbot -v" actually output the correct version 2023-12-07 19:43:30 +01:00
04662fc1f3
Internal version bump 2023-12-07 19:43:17 +01:00
62982ce23b
Remove uploading of keys 2023-12-07 16:39:04 +01:00
d4cf70b273
Fix handling of KeysUploadError 2023-12-07 16:38:47 +01:00
2211edc25a
Fix missing " in pyproject.toml 2023-12-07 16:36:01 +01:00