Commit Graph

19 Commits

Author SHA1 Message Date
Max Zavodniuk 4e374aa9db fix(config.ts): pass config object to configValidators[CONFIG_KEYS.OCO_OPENAI_API_KEY] to allow access to other config values (#225)
* any length `OCO_OPENAI_API_KEY` if `OCO_OPENAI_BASE_PATH` is set
2023-09-03 12:21:13 +08:00
di-sukharev 897eb73cd7 feat(README.md): add GitHub Hackathon winner badge to project description
docs(README.md): restructure README, move CLI setup instructions to top for better visibility
feat(cli.cjs): extend file exclusion list in 'getDiff' to include image files for better performance
refactor(config.ts): add more model options in configValidators for flexibility
refactor(config.ts): set default model to 'gpt-3.5-turbo-16k' for better performance
refactor(git.ts): simplify 'getCoreHooksPath' function for readability
feat(git.ts): extend file exclusion list in 'getDiff' to include image files for better performance
2023-07-05 15:11:17 +08:00
seho 3c0a271bf8 feat(config.ts): add OCO_MESSAGE_TEMPLATE_PLACEHOLDER configuration item to allow users to customize the message template placeholder (#208)
feat(commit.ts): add check for message templates in extraArgs and replace OCO_MESSAGE_TEMPLATE_PLACEHOLDER with generated commit message if found
docs(README.md): add documentation for OCO_MESSAGE_TEMPLATE_PLACEHOLDER configuration item and how to use it in the command line (#205)
2023-07-05 14:27:43 +08:00
Sam Rudloff ccfd24a9e5 Adding gpt-3.5-turbo-16k Modal (#215) 2023-07-05 14:25:21 +08:00
Gabriel Moreli 32f3e176f0 feat(api.ts): solving bad request issue (#187)
* 2.0.18

* patch

* 2.0.19

* style(.prettierrc): reorder properties to follow alphabetical order and improve readability

* feat(generateCommitMessageFromGitDiff.ts): changing logic of MAX_REQ_TOKENS

fix(api.ts): add missing import for GenerateCommitMessageErrorEnum
The token count validation is added to prevent the request from exceeding the default model token limit. The validation is done by counting the tokens in each message and adding 4 to each count to account for the additional tokens added by the API. If the total token count exceeds the limit, an error is thrown. The missing import for GenerateCommitMessageErrorEnum is also added.

feat: add support for splitting long line-diffs into smaller pieces
This change adds support for splitting long line-diffs into smaller pieces to avoid exceeding the maximum commit message length. The `splitDiff` function splits a single line into multiple lines if it exceeds the maximum length. It also splits the diff into smaller pieces if adding the next line would exceed the maximum length. This change improves the readability of commit messages and makes them more consistent.

refactor: improve code readability by adding whitespace and reformatting code
This commit improves the readability of the code by adding whitespace and reformatting the code. The changes do not affect the functionality of the code. Additionally, a new function `delay` has been added to the file.

---------

Co-authored-by: di-sukharev <dim.sukharev@gmail.com>
2023-05-26 13:07:09 +08:00
henrycunh cba599337d refactor(config.ts): handle undefined values and improve validation for OCO_OPENAI_MAX_TOKENS and OCO_MODEL (#176)
fix(config.ts): set default values for OCO_MODEL and OCO_LANGUAGE when reading from environment variables
refactor(generateCommitMessageFromGitDiff.ts): remove unused GenerateCommitMessageError interface
2023-05-22 12:30:41 +08:00
Sukharev 3eb319a919 GitHub action (#173)
* add option to run OpenCommit as a Github Action
2023-05-21 16:15:45 +08:00
di-sukharev 8daa3ca130 Merge remote-tracking branch 'origin/dev' 2023-05-19 13:42:43 +08:00
Takuya Ono 13015a9033 🐛 fix(config.ts): convert string value to number in OPENAI_MAX_TOKENS validator (#162)
The OPENAI_MAX_TOKENS validator now converts a string value to a number before validating it. This ensures that the validator works correctly when a string value is passed in.
2023-05-07 17:16:32 +08:00
Takuya Ono 7b90b6a287 🐛 fix(config.ts): error message for OPENAI_BASE_PATH validation (#164)
The error message for the OPENAI_BASE_PATH validation has been updated
to be more descriptive and helpful. The message now reads "Must be
string" instead of "${value} is not supported yet". This change improves
the clarity of the error message and makes it easier for developers to
understand what went wrong when the validation fails.
2023-05-07 17:15:55 +08:00
di-sukharev 0bb89abccc Merge remote-tracking branch 'origin/dev' 2023-05-04 12:51:35 +08:00
Juan José López Lira 3f5df6ef7c Bugfix/increase tokens (#132)
* feat(api.ts): add support for OPENAI_MAX_TOKENS environment variable
feat(config.ts): add OPENAI_MAX_TOKENS to CONFIG_KEYS and configValidators

* 2.0.2

* 2.0.3

* docs(README.md): add GPT-4 usage instructions and mention the cost difference compared to GPT-3.5-turbo

---------

Co-authored-by: di-sukharev <dim.sukharev@gmail.com>
2023-05-04 12:33:06 +08:00
di-sukharev 51613c2aea feat(api.ts, config.ts): add support for custom model selection in OpenAi class
feat(config.ts): add model validation in configValidators
2023-04-28 15:29:32 +08:00
kimlym 5a9b460033 feat(api.ts): add support for OPENAI_BASE_PATH configuration variable (#80)
feat(config.ts): add OPENAI_BASE_PATH configuration key and validator function

Co-authored-by: yiminglu <yiming.lu@mioying.com>
2023-04-05 12:26:02 +08:00
di-sukharev a2d03e054c 🔀 chore(CommandsEnum.ts): reorder COMMANDS enum values
🐛 fix(config.ts): add missing new lines
🐛 fix(githook.ts): capitalize OpenCommit and fix grammar
The COMMANDS enum values were reordered to improve readability and consistency. In config.ts, missing new lines were added to improve code readability. In githook.ts, OpenCommit was capitalized and grammar was fixed to improve clarity.
2023-03-28 11:31:42 +08:00
openefit 5ae52cd8bb 🚀 i18n: add internationalization support (#31)
* 🚀  i18n: add internationalization support
2023-03-17 13:57:26 +08:00
di-sukharev b35a393152 * docs(README.md): add reminder to add payment details to OpenAI API key
* docs(api.ts): update error message to remind user to add payment details to OpenAI API key
* refactor(cli.ts): remove unused import
* refactor(config.ts): update error message to use outro instead of throwing an error and exit the process

* chore(generateCommitMessageFromGitDiff.ts): add console.log for error debugging
2023-03-11 13:23:46 +08:00
di-sukharev 33491486bb * feat(CommandsEnum.ts): add COMMANDS enum
* refactor(api.ts): use CONFIG_MODES enum from config.ts
* refactor(config.ts): use COMMANDS and CONFIG_MODES enums, extract validateConfig function
* feat(config.ts): add CONFIG_MODES enum and refactor configCommand function to use it

* refactor(githook.ts): import COMMANDS enum from CommandsEnum.js file
2023-03-11 00:23:30 +08:00
di-sukharev eae7618d57 * 📝 docs(TODO.md): add TODOs
Added a TODO list with tasks that need to be completed. These tasks include building for both mjs and cjs, configuring esbuild to make the bundle smaller, adding // TODOs in the code, batching small files in one request, adding tests, and making the hook work.

*  feat(api.ts): add OpenAI class with generateCommitMessage method
This commit adds a new OpenAI class with a generateCommitMessage method that uses the OpenAI API to generate a commit message based on an array of messages. The method takes an array of ChatCompletionRequestMessage objects and returns a Promise that resolves to a ChatCompletionResponseMessage object. The OpenAI class is exported as a singleton instance named api.

*  feat(prepare-commit-msg-hook.ts): add support for generating commit messages with chat completion
This commit adds support for generating commit messages with chat completion. The `prepare-commit-msg-hook.ts` file now imports the `generateCommitMessageWithChatCompletion` function from the `generateCommitMessageFromGitDiff` module. The function generates a commit message based on the staged git diff and appends it to the commit message file. If the `OPENAI_API_KEY` environment variable is not set, an error is thrown. If the commit source is specified, the function returns without generating a commit message.

* 🆕 feat(generateCommitMessageFromGitDiff.ts): add functionality to generate commit messages from git diff
This commit adds a new file, generateCommitMessageFromGitDiff.ts, which contains a function that generates commit messages from the output of the 'git diff --staged' command. The function uses the OpenAI API to prompt the user to create a commit message in the conventional commit convention. The user can choose to use Gitmoji convention to preface the commit and add a short description of what the commit is about.

* 🐛 fix(server.ts): change port variable case from lowercase port to uppercase PORT
*  feat(server.ts): add support for process.env.PORT environment variable
The port variable is now named PORT, which improves consistency with the naming conventions as PORT is a constant. Support for an environment variable allows the application to be more flexible as it can now run on any available port specified via the process.env.PORT environment variable.

* 🚀 feat: add function to generate commit messages from diff
This commit adds a new function that generates commit messages from a diff. The function takes a diff as input and splits it into files. It then generates commit messages for each file and returns them as a concatenated string. If the total length of the commit message exceeds the maximum allowed length, the function skips the file. If the commit message is empty, the function skips the file. If an error occurs during the process, the function returns an error.

*  feat(git.ts): add function to assert git repository existence
*  feat(git.ts): add function to get staged git diff
The assertGitRepo function checks if the current directory is a git repository by running the 'git rev-parse' command. If the command fails, an error is thrown.

The getStagedGitDiff function returns the staged diff of the git repository. It takes an optional boolean argument isStageAllFlag, which when true stages all changes before getting the diff. The function uses the 'git diff --staged' command to get the diff and excludes big files from the diff. The function returns an object with two properties: files, which is an array of the names of the files that have changes, and diff, which is the diff of the staged changes.
2023-03-06 22:55:02 +08:00