Add OpenRouterEngine class and integrate it into the configuration
system. OpenRouter provides access to 300+ AI models through a
unified API, expanding model availability for commit message
generation beyond existing providers.
When user wants one line commits the system prompt and the user/assistant one-shot example were contradicting each other, confusing the LLM. This fix modifies the assistant output so that prompt and one-shot are consistent.
This commit adds a new 'describe' mode to the config command, allowing users
to get detailed information about configuration parameters. It includes:
1. New CONFIG_MODES.describe enum value
2. Functions to generate and print help messages for config parameters
3. Updated configCommand to handle the new 'describe' mode
4. README updates to document the new 'describe' functionality
- export parseCustomHeaders from src/utils/engine.ts
- use parseCustomHeaders in OpenAiEngine for config.customHeaders
- remove try/catch and inline JSON.parse logic
- update config test to expect headers as object and drop JSON.parse
Centralize header parsing for reuse and simplify engine code
Update tests to match new header format for clarity
Use OpenAI.ClientOptions for stronger typing and clarity
Extract custom headers parsing into parseCustomHeaders util
Simplify getEngine by delegating header parsing to helper
Improve maintainability and reduce code duplication
Add OCO_API_CUSTOM_HEADERS variable to README, config enum,
and env parsing to allow JSON string of custom headers.
Validate that custom headers are valid JSON in config validator.
Extend AiEngineConfig with customHeaders and pass headers to
OllamaEngine and OpenAiEngine clients when creating requests.
Parse custom headers in utils/engine and warn on invalid format.
Add unit tests to ensure OCO_API_CUSTOM_HEADERS is handled
correctly and merged from env over global config.
This enables users to send additional headers such as
Authorization or tracing headers with LLM API calls.
The space normalization logic is updated to replace only multiple spaces
and tabs with a single space, while preserving newlines. This change
ensures that the formatting of the content is maintained, especially
when dealing with empty line requirements and max line length.
The commitlint configuration and prompts have been refactored to enhance
clarity and maintain consistency throughout the codebase. The type
assertion for commitLintConfig is updated to use 'as any' for better
type handling. Additionally, formatting adjustments are made in the
prompts to ensure proper readability and alignment with the defined
conventions. These changes aim to streamline the commit message
generation process and improve overall code maintainability.
This update introduces a new structure for generating commit messages by defining a constant for commit types and consolidating the logic into a single function. The changes enhance readability and maintainability while ensuring consistent formatting based on the OCO_OMIT_SCOPE configuration.
This change allows opencommit to locate commitlint installed globally
(with opencommit), which is useful for project that does not use node.js
environment or dose not have opencommit and @commitlint installed locally.
Add DeepSeekEngine to support DeepSeek API. This
includes a new DeepSeekConfig interface and updates to
the engine selection logic.
feat(README.md, src/commands/config.ts): Add DeepSeek support
Adds support for the DeepSeek AI provider. Updates the README,
config validation, and model list to include DeepSeek. This
allows users to utilize DeepSeek models with the OpenCommit
tool.
fix(deepseek.ts): update DeepSeek API base URL to include version number v1
refactor(deepseek.ts): improve DeepSeekEngine constructor
The DeepSeekEngine constructor is refactored to use the
spread syntax for better readability and maintainability
when merging config parameters. The baseURL is now
explicitly set within the constructor.
fix(README.md): remove Groq from the list of supported AI providers
refactor(deepseek.ts): rename interface DeepseekConfig to DeepSeekEngineeekConfig and fix typo
Revert "refactor(deepseek.ts): rename interface DeepseekConfig to DeepSeekEngineeekConfig and fix typo"
This reverts commit f492367d3885fa97cd685feca889f93d6c465b2f.
refactor(deepseek.ts): Rename DeepseekConfig to DeepSeekConfig for consistency
✨ feat(engine): add DeepSeekEngine to support DeepSeek API
♻️ refactor(engine): improve OpenAiEngine and create a
new DeepSeekEngine class to handle DeepSeek API
requests. The DeepSeekEngine class inherits from
OpenAiEngine and overrides the
generateCommitMessage method to use the DeepSeek
API. This change improves code organization and
maintainability.
🐛 Fix: Correct DeepSeekEngine import and class name
The import path and class name for DeepSeekEngine were
incorrect, causing a runtime error. This commit corrects
the import path and class name to `DeepseekEngine` to
resolve the issue.
Revert "🐛 Fix: Correct DeepSeekEngine import and class name"
This reverts commit 738fd36c434d9df9c3a458b1e8230c974bd2a76e.
🐛 Fix: Correct DeepSeekEngine import and class name
The import path and class name for DeepSeekEngine were corrected to match the actual file and class name. This fixes a runtime error.
Restore ./out directory to master state
* feat(commit.ts): add option to skip pushing commits to a remote repository to enhance user flexibility during commit process
* Update src/commands/commit.ts
---------
Co-authored-by: GPT8 <57486732+di-sukharev@users.noreply.github.com>
* feat(config): add support for groq AI provider, including config validation and engine implementation (#381)
* fix migrations (#414)
---------
Co-authored-by: Takanori Matsumoto <matscube@gmail.com>
Co-authored-by: BILLY Maxime <ozeliurs@gmail.com>
* refactor(config.ts): improve code readability by formatting array elements and conditions
* fix(migrations): handle undefined values correctly when setting default config values
* fix(migrations): ensure process exits with error code on migration failure
* fix(commit.ts): update error handling to provide clearer feedback when commit message generation fails
* feat(config.ts): add cleanUndefinedValues function to sanitize config values by converting 'undefined' and 'null' strings to actual values
* refactor(config.ts): return cleaned config from getConfig function to ensure consistent data types
* chore(migrations): log entriesToSet in migration to assist with debugging and tracking changes
* 378: fix hook env (#402)
* fix(prepare-commit-msg-hook): update error handling to provide clearer instructions for setting API keys and improve user guidance
* Fix: a bug that causes an error when pushing without setting git remote (#396)
* refactoring v2 (#408)
* 3.2.0
* update deploy commands
---------
Co-authored-by: Takanori Matsumoto <matscube@gmail.com>
* fix(config.ts): move 'gpt-4o-mini' in MODEL_LIST
* docs(config.ts): update API key validation message with detailed instructions
* refactor(config.ts): simplify model validation logic to check for string type instead of MODEL_LIST
* 3.0.19
* refactor(anthropic.ts, openAi.ts): remove model validation against predefined list to allow any string as model, simplifying configuration and improving flexibility
* 📝 (README.md): add support for custom AI models and update documentation to reflect new environment variable OCO_ AI_PROVIDER (#351)
* Feat/add gemini (#349)
* 🐛Fix: prompt-module/@commitlint (#336)
* fix(commitlint/utils.ts): correct variable used in search for JSON block end tag
* ♻️ (commitlint/config.ts & pwd-commitlint.ts): Refactor commitlint config loading to support both CJS and ESM modules
💡 (pwd-commitlint.ts): Add detailed comments and error handling for better clarity and robustness in commitlint module loading process
* ✨ (package.json): Add setup script for e2e tests to install dependencies for commitlint configurations
🔧 (setup.sh): Add shell script to set up commitlint configurations for e2e tests
* ✨ (config.ts): Add support for OCO_TEST_MOCK_TYPE configuration key to define test mock type for testing purposes
📝 (config.ts): Update documentation for OCO_TEST_MOCK_TYPE configuration key in configValidators and getConfig functions
📝 (testAi.ts): Add TEST_MOCK_TYPES constant array to define supported test mock types
📝 (testAi.ts): Update generateCommitMessage function to use OCO_TEST_MOCK_TYPE from config for different test mock types
📝 (commitlint.test.ts): Add e2e test for running "oco commitlint force" with different @commitlint versions using CJS and ESM
📝 (utils.ts): Add wait function to introduce delay in milliseconds for testing purposes
* ✨ (commitlint.test.ts): refactor setupCommitlint function to accept a version parameter for better code organization and readability
📝 (commitlint.test.ts): add test case for commitlint@9 using CJS to ensure proper functionality and compatibility
📝 (commitlint.test.ts): add test case for commitlint@18 using CJS to ensure proper functionality and compatibility
📝 (commitlint.test.ts): add test case for commitlint@19 using ESM to ensure proper functionality and compatibility
* 🔧 (commitlint.test.ts): remove unnecessary commands to create and add index.ts file before running tests
* refactor(test/e2e/prompt-module/commitlint.test.ts): remove unused import configure
style(test/e2e/prompt-module/commitlint.test.ts): add missing semicolon for consistency
test(test/e2e/prompt-module/commitlint.test.ts): add e2e tests for @commitlint prompt-module integration
* ✨ (e2e tests): add package.json copying to setupCommitlint for version accuracy
♻️ (commitlint config): refactor commitlint.config.js to use ES module syntax
✨ (package.json): specify "type": "module" to support ES module syntax
* docs: spelling fix (#325)
* 3.0.17
* ♻️ (config.ts): refactor OCO_AZURE_ENDPOINT default value from empty string to undefined resolving #352 - creates invalid config file
---------
Co-authored-by: tumf <y.takahara@gmail.com>
Co-authored-by: Drew Payment <drew.payment@gmail.com>
Co-authored-by: Takanori Matsumoto <matscube@gmail.com>
Co-authored-by: Kellan Stevens <kellan@kellanstevens.com>
Co-authored-by: di-sukharev <dim.sukharev@gmail.com>