@elsikora/commitizen-plugin-commitlint-ai 1.0.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +150 -0
- package/dist/cjs/ManualProcess.d.ts +6 -0
- package/dist/cjs/ManualProcess.d.ts.map +1 -0
- package/dist/cjs/ManualProcess.js +111 -0
- package/dist/cjs/ManualProcess.js.map +1 -0
- package/dist/cjs/Process.d.ts +6 -0
- package/dist/cjs/Process.d.ts.map +1 -0
- package/dist/cjs/Process.js +165 -0
- package/dist/cjs/Process.js.map +1 -0
- package/dist/cjs/Question.d.ts +46 -0
- package/dist/cjs/Question.d.ts.map +1 -0
- package/dist/cjs/SectionBody.d.ts +4 -0
- package/dist/cjs/SectionBody.d.ts.map +1 -0
- package/dist/cjs/SectionFooter.d.ts +13 -0
- package/dist/cjs/SectionFooter.d.ts.map +1 -0
- package/dist/cjs/SectionHeader.d.ts +15 -0
- package/dist/cjs/SectionHeader.d.ts.map +1 -0
- package/dist/cjs/index.d.ts +14 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +70 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/services/commitlintConfig.d.ts +4 -0
- package/dist/cjs/services/commitlintConfig.d.ts.map +1 -0
- package/dist/cjs/services/commitlintConfig.js +198 -0
- package/dist/cjs/services/commitlintConfig.js.map +1 -0
- package/dist/cjs/services/commitlintValidator.d.ts +20 -0
- package/dist/cjs/services/commitlintValidator.d.ts.map +1 -0
- package/dist/cjs/services/commitlintValidator.js +145 -0
- package/dist/cjs/services/commitlintValidator.js.map +1 -0
- package/dist/cjs/services/getRuleQuestionConfig.d.ts +4 -0
- package/dist/cjs/services/getRuleQuestionConfig.d.ts.map +1 -0
- package/dist/cjs/services/llm/anthropic.d.ts +3 -0
- package/dist/cjs/services/llm/anthropic.d.ts.map +1 -0
- package/dist/cjs/services/llm/anthropic.js +118 -0
- package/dist/cjs/services/llm/anthropic.js.map +1 -0
- package/dist/cjs/services/llm/config.d.ts +5 -0
- package/dist/cjs/services/llm/config.d.ts.map +1 -0
- package/dist/cjs/services/llm/config.js +181 -0
- package/dist/cjs/services/llm/config.js.map +1 -0
- package/dist/cjs/services/llm/index.d.ts +6 -0
- package/dist/cjs/services/llm/index.d.ts.map +1 -0
- package/dist/cjs/services/llm/index.js +398 -0
- package/dist/cjs/services/llm/index.js.map +1 -0
- package/dist/cjs/services/llm/models.d.ts +34 -0
- package/dist/cjs/services/llm/models.d.ts.map +1 -0
- package/dist/cjs/services/llm/models.js +65 -0
- package/dist/cjs/services/llm/models.js.map +1 -0
- package/dist/cjs/services/llm/openai.d.ts +3 -0
- package/dist/cjs/services/llm/openai.d.ts.map +1 -0
- package/dist/cjs/services/llm/openai.js +111 -0
- package/dist/cjs/services/llm/openai.js.map +1 -0
- package/dist/cjs/services/llm/types.d.ts +71 -0
- package/dist/cjs/services/llm/types.d.ts.map +1 -0
- package/dist/cjs/store/defaultPromptConfigs.d.ts +33 -0
- package/dist/cjs/store/defaultPromptConfigs.d.ts.map +1 -0
- package/dist/cjs/store/defaultPromptConfigs.js +39 -0
- package/dist/cjs/store/defaultPromptConfigs.js.map +1 -0
- package/dist/cjs/store/prompts.d.ts +6 -0
- package/dist/cjs/store/prompts.d.ts.map +1 -0
- package/dist/cjs/store/prompts.js +40 -0
- package/dist/cjs/store/prompts.js.map +1 -0
- package/dist/cjs/store/rules.d.ts +7 -0
- package/dist/cjs/store/rules.d.ts.map +1 -0
- package/dist/cjs/types.d.ts +3 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/utils/case-function.d.ts +9 -0
- package/dist/cjs/utils/case-function.d.ts.map +1 -0
- package/dist/cjs/utils/full-stop-function.d.ts +9 -0
- package/dist/cjs/utils/full-stop-function.d.ts.map +1 -0
- package/dist/cjs/utils/leading-blank-function.d.ts +8 -0
- package/dist/cjs/utils/leading-blank-function.d.ts.map +1 -0
- package/dist/cjs/utils/rules.d.ts +26 -0
- package/dist/cjs/utils/rules.d.ts.map +1 -0
- package/dist/esm/ManualProcess.d.ts +6 -0
- package/dist/esm/ManualProcess.d.ts.map +1 -0
- package/dist/esm/ManualProcess.js +107 -0
- package/dist/esm/ManualProcess.js.map +1 -0
- package/dist/esm/Process.d.ts +6 -0
- package/dist/esm/Process.d.ts.map +1 -0
- package/dist/esm/Process.js +161 -0
- package/dist/esm/Process.js.map +1 -0
- package/dist/esm/Question.d.ts +46 -0
- package/dist/esm/Question.d.ts.map +1 -0
- package/dist/esm/SectionBody.d.ts +4 -0
- package/dist/esm/SectionBody.d.ts.map +1 -0
- package/dist/esm/SectionFooter.d.ts +13 -0
- package/dist/esm/SectionFooter.d.ts.map +1 -0
- package/dist/esm/SectionHeader.d.ts +15 -0
- package/dist/esm/SectionHeader.d.ts.map +1 -0
- package/dist/esm/index.d.ts +14 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +67 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/services/commitlintConfig.d.ts +4 -0
- package/dist/esm/services/commitlintConfig.d.ts.map +1 -0
- package/dist/esm/services/commitlintConfig.js +196 -0
- package/dist/esm/services/commitlintConfig.js.map +1 -0
- package/dist/esm/services/commitlintValidator.d.ts +20 -0
- package/dist/esm/services/commitlintValidator.d.ts.map +1 -0
- package/dist/esm/services/commitlintValidator.js +142 -0
- package/dist/esm/services/commitlintValidator.js.map +1 -0
- package/dist/esm/services/getRuleQuestionConfig.d.ts +4 -0
- package/dist/esm/services/getRuleQuestionConfig.d.ts.map +1 -0
- package/dist/esm/services/llm/anthropic.d.ts +3 -0
- package/dist/esm/services/llm/anthropic.d.ts.map +1 -0
- package/dist/esm/services/llm/anthropic.js +116 -0
- package/dist/esm/services/llm/anthropic.js.map +1 -0
- package/dist/esm/services/llm/config.d.ts +5 -0
- package/dist/esm/services/llm/config.d.ts.map +1 -0
- package/dist/esm/services/llm/config.js +178 -0
- package/dist/esm/services/llm/config.js.map +1 -0
- package/dist/esm/services/llm/index.d.ts +6 -0
- package/dist/esm/services/llm/index.d.ts.map +1 -0
- package/dist/esm/services/llm/index.js +393 -0
- package/dist/esm/services/llm/index.js.map +1 -0
- package/dist/esm/services/llm/models.d.ts +34 -0
- package/dist/esm/services/llm/models.d.ts.map +1 -0
- package/dist/esm/services/llm/models.js +60 -0
- package/dist/esm/services/llm/models.js.map +1 -0
- package/dist/esm/services/llm/openai.d.ts +3 -0
- package/dist/esm/services/llm/openai.d.ts.map +1 -0
- package/dist/esm/services/llm/openai.js +109 -0
- package/dist/esm/services/llm/openai.js.map +1 -0
- package/dist/esm/services/llm/types.d.ts +71 -0
- package/dist/esm/services/llm/types.d.ts.map +1 -0
- package/dist/esm/store/defaultPromptConfigs.d.ts +33 -0
- package/dist/esm/store/defaultPromptConfigs.d.ts.map +1 -0
- package/dist/esm/store/defaultPromptConfigs.js +35 -0
- package/dist/esm/store/defaultPromptConfigs.js.map +1 -0
- package/dist/esm/store/prompts.d.ts +6 -0
- package/dist/esm/store/prompts.d.ts.map +1 -0
- package/dist/esm/store/prompts.js +38 -0
- package/dist/esm/store/prompts.js.map +1 -0
- package/dist/esm/store/rules.d.ts +7 -0
- package/dist/esm/store/rules.d.ts.map +1 -0
- package/dist/esm/types.d.ts +3 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/utils/case-function.d.ts +9 -0
- package/dist/esm/utils/case-function.d.ts.map +1 -0
- package/dist/esm/utils/full-stop-function.d.ts +9 -0
- package/dist/esm/utils/full-stop-function.d.ts.map +1 -0
- package/dist/esm/utils/leading-blank-function.d.ts +8 -0
- package/dist/esm/utils/leading-blank-function.d.ts.map +1 -0
- package/dist/esm/utils/rules.d.ts +26 -0
- package/dist/esm/utils/rules.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/index.cjs +6 -0
- package/package.json +101 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManualProcess.js","sources":["../../../src/ManualProcess.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { QualifiedRules, UserPromptConfig } from "@commitlint/types";
|
|
2
|
+
import type { Answers, DistinctQuestion } from "inquirer";
|
|
3
|
+
export default function Process(rules: QualifiedRules, prompts: UserPromptConfig, inquirer: {
|
|
4
|
+
prompt(questions: Array<DistinctQuestion>): Promise<Answers>;
|
|
5
|
+
}): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=Process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Process.d.ts","sourceRoot":"","sources":["../../src/Process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAa1D,wBAA8B,OAAO,CACpC,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE;IACT,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7D,GACC,OAAO,CAAC,MAAM,CAAC,CAmMjB"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { extractLLMPromptContext } from './services/commitlintConfig.js';
|
|
3
|
+
import { validateAndFixCommitMessage } from './services/commitlintValidator.js';
|
|
4
|
+
import { selectLLMProvider, generateCommitMessage } from './services/llm/index.js';
|
|
5
|
+
import { setPromptConfig } from './store/prompts.js';
|
|
6
|
+
import { getLLMConfig } from './services/llm/config.js';
|
|
7
|
+
|
|
8
|
+
async function Process(rules, prompts, inquirer) {
|
|
9
|
+
setPromptConfig(prompts);
|
|
10
|
+
// First, ask for LLM provider and API key
|
|
11
|
+
await selectLLMProvider(inquirer);
|
|
12
|
+
// Extract context from commitlint config
|
|
13
|
+
const promptContext = extractLLMPromptContext(rules, prompts);
|
|
14
|
+
// Check if manual mode is enabled in config
|
|
15
|
+
const config = getLLMConfig();
|
|
16
|
+
// If manual mode is enabled, skip AI generation and go straight to manual entry
|
|
17
|
+
if (config && config.mode === "manual") {
|
|
18
|
+
console.log(chalk.blue("Using manual commit entry mode..."));
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
try {
|
|
22
|
+
console.log(chalk.blue("Generating commit message with AI..."));
|
|
23
|
+
// Generate commit message using LLM
|
|
24
|
+
const commitConfig = await generateCommitMessage(promptContext);
|
|
25
|
+
// Validate the commit message with commitlint and fix if needed
|
|
26
|
+
const validatedCommitMessage = await validateAndFixCommitMessage(commitConfig, promptContext);
|
|
27
|
+
// If validation returned null, it means we should switch to manual mode
|
|
28
|
+
if (validatedCommitMessage === null) {
|
|
29
|
+
console.log(chalk.yellow("Switching to manual commit entry after failed validation attempts."));
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
console.log(chalk.green("AI generated commit message successfully!"));
|
|
33
|
+
// Show the generated message to the user
|
|
34
|
+
console.log("\n" + chalk.yellow("Generated commit message:"));
|
|
35
|
+
console.log(chalk.white("-----------------------------------"));
|
|
36
|
+
console.log(chalk.white(validatedCommitMessage));
|
|
37
|
+
console.log(chalk.white("-----------------------------------\n"));
|
|
38
|
+
// Ask for confirmation
|
|
39
|
+
const { confirmCommit } = await inquirer.prompt([
|
|
40
|
+
{
|
|
41
|
+
// eslint-disable-next-line @elsikora-typescript/naming-convention
|
|
42
|
+
default: true,
|
|
43
|
+
message: "Do you want to proceed with this commit message?",
|
|
44
|
+
name: "confirmCommit",
|
|
45
|
+
type: "confirm",
|
|
46
|
+
},
|
|
47
|
+
]);
|
|
48
|
+
if (confirmCommit) {
|
|
49
|
+
return validatedCommitMessage;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// If user rejects the generated message, fall through to the manual entry option
|
|
53
|
+
console.log(chalk.yellow("AI-generated message rejected. Switching to manual commit entry."));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
// Only show error for AI mode errors, not when manual mode is intentionally used
|
|
59
|
+
if (config?.mode !== "manual") {
|
|
60
|
+
console.error(chalk.red("Error generating commit with AI:"), error);
|
|
61
|
+
console.log(chalk.yellow("Falling back to manual commit entry..."));
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// Fallback to regular prompts if LLM fails or in manual mode
|
|
66
|
+
const commitQuestions = [
|
|
67
|
+
{
|
|
68
|
+
choices: promptContext.typeEnum?.map((type) => {
|
|
69
|
+
const desc = promptContext.typeDescriptions?.[type]?.description ?? "";
|
|
70
|
+
const emoji = promptContext.typeDescriptions?.[type]?.emoji ?? "";
|
|
71
|
+
// Remove emoji from description if it already appears at the beginning
|
|
72
|
+
let cleanDesc = desc;
|
|
73
|
+
if (emoji && desc.startsWith(emoji)) {
|
|
74
|
+
cleanDesc = desc.slice(emoji.length).trim();
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
name: type + (emoji ? " " + emoji : "") + ": " + cleanDesc,
|
|
78
|
+
value: type,
|
|
79
|
+
};
|
|
80
|
+
}) ?? [],
|
|
81
|
+
message: promptContext.typeDescription ?? "Select the type of change that you're committing:",
|
|
82
|
+
name: "type",
|
|
83
|
+
type: "list",
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
message: promptContext.scopeDescription ?? 'What is the scope of this change:\n - Use component, directory or area of codebase\n - Use comma-separated list for multiple areas\n - Type "global" for project-wide changes\n - Press enter to skip if scope is not applicable',
|
|
87
|
+
name: "scope",
|
|
88
|
+
type: "input",
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
message: promptContext.subject.description ?? "Write a short, imperative mood description of the change:",
|
|
92
|
+
name: "subject",
|
|
93
|
+
type: "input",
|
|
94
|
+
// eslint-disable-next-line @elsikora-sonar/function-return-type
|
|
95
|
+
validate: (input) => {
|
|
96
|
+
if (!input)
|
|
97
|
+
return "Subject is required";
|
|
98
|
+
return true;
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
message: promptContext.body?.description ?? "Provide a longer description of the change: (press enter to skip)",
|
|
103
|
+
name: "body",
|
|
104
|
+
type: "input",
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
// eslint-disable-next-line @elsikora-typescript/naming-convention
|
|
108
|
+
default: false,
|
|
109
|
+
message: "Are there any breaking changes?",
|
|
110
|
+
name: "isBreaking",
|
|
111
|
+
type: "confirm",
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
message: "Describe the breaking changes:",
|
|
115
|
+
name: "breakingBody",
|
|
116
|
+
type: "input",
|
|
117
|
+
// eslint-disable-next-line @elsikora-typescript/no-unsafe-return
|
|
118
|
+
when: (answers) => answers.isBreaking,
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
// First get all commit details
|
|
122
|
+
// @ts-ignore
|
|
123
|
+
const answers = await inquirer.prompt(commitQuestions);
|
|
124
|
+
// Construct message from manual answers
|
|
125
|
+
// eslint-disable-next-line @elsikora-typescript/no-unsafe-argument,@elsikora-typescript/restrict-plus-operands
|
|
126
|
+
const header = "".concat(answers.type, answers.scope ? "(" + answers.scope + ")" : "", ": ", answers.subject);
|
|
127
|
+
let body = "";
|
|
128
|
+
if (answers.isBreaking) {
|
|
129
|
+
// eslint-disable-next-line @elsikora-typescript/restrict-template-expressions
|
|
130
|
+
body = `BREAKING CHANGE: ${answers.breakingBody || "This commit introduces breaking changes."}\n\n`;
|
|
131
|
+
}
|
|
132
|
+
if (answers.body) {
|
|
133
|
+
// eslint-disable-next-line @elsikora-typescript/restrict-plus-operands
|
|
134
|
+
body += answers.body;
|
|
135
|
+
}
|
|
136
|
+
const commitMessage = [header, body].filter(Boolean).join("\n\n");
|
|
137
|
+
// Display the commit message to the user
|
|
138
|
+
console.log("\n" + chalk.yellow("Your commit message:"));
|
|
139
|
+
console.log(chalk.white("-----------------------------------"));
|
|
140
|
+
console.log(chalk.white(commitMessage));
|
|
141
|
+
console.log(chalk.white("-----------------------------------\n"));
|
|
142
|
+
// Now ask for confirmation
|
|
143
|
+
const { confirmCommit } = await inquirer.prompt([
|
|
144
|
+
{
|
|
145
|
+
// eslint-disable-next-line @elsikora-typescript/naming-convention
|
|
146
|
+
default: true,
|
|
147
|
+
message: "Are you sure you want to proceed with the commit above?",
|
|
148
|
+
name: "confirmCommit",
|
|
149
|
+
type: "confirm",
|
|
150
|
+
},
|
|
151
|
+
]);
|
|
152
|
+
// Check confirmation
|
|
153
|
+
if (!confirmCommit) {
|
|
154
|
+
console.log(chalk.yellow("Commit canceled."));
|
|
155
|
+
throw new Error("User canceled the commit");
|
|
156
|
+
}
|
|
157
|
+
return commitMessage;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export { Process as default };
|
|
161
|
+
//# sourceMappingURL=Process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Process.js","sources":["../../../src/Process.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { PromptMessages, PromptName } from "@commitlint/types";
|
|
2
|
+
import type { Answers, ChoiceCollection, DistinctQuestion } from "inquirer";
|
|
3
|
+
import type { CaseFunction as CaseFunction } from "./utils/case-function.js";
|
|
4
|
+
import type { FullStopFunction as FullStopFunction } from "./utils/full-stop-function.js";
|
|
5
|
+
export type QuestionConfig = {
|
|
6
|
+
caseFn?: CaseFunction;
|
|
7
|
+
defaultValue?: string;
|
|
8
|
+
enumList?: ChoiceCollection<{
|
|
9
|
+
name: string;
|
|
10
|
+
value: string;
|
|
11
|
+
}> | null;
|
|
12
|
+
fullStopFn?: FullStopFunction;
|
|
13
|
+
maxLength?: number;
|
|
14
|
+
messages: PromptMessages;
|
|
15
|
+
minLength?: number;
|
|
16
|
+
multipleSelectDefaultDelimiter?: string;
|
|
17
|
+
multipleValueDelimiters?: RegExp;
|
|
18
|
+
skip?: boolean;
|
|
19
|
+
title: string;
|
|
20
|
+
when?: DistinctQuestion["when"];
|
|
21
|
+
};
|
|
22
|
+
export default class Question {
|
|
23
|
+
get maxLength(): number;
|
|
24
|
+
set maxLength(maxLength: number);
|
|
25
|
+
get minLength(): number;
|
|
26
|
+
set minLength(minLength: number);
|
|
27
|
+
get question(): Readonly<DistinctQuestion>;
|
|
28
|
+
private _maxLength;
|
|
29
|
+
private _minLength;
|
|
30
|
+
private readonly _question;
|
|
31
|
+
private readonly caseFn;
|
|
32
|
+
private readonly fullStopFn;
|
|
33
|
+
private readonly messages;
|
|
34
|
+
private readonly multipleSelectDefaultDelimiter?;
|
|
35
|
+
private readonly multipleValueDelimiters?;
|
|
36
|
+
private readonly skip;
|
|
37
|
+
private readonly title;
|
|
38
|
+
constructor(name: PromptName, { caseFn, defaultValue, enumList, fullStopFn, maxLength, messages, minLength, multipleSelectDefaultDelimiter, multipleValueDelimiters, skip, title, when }: QuestionConfig);
|
|
39
|
+
getMessage(key: string): string;
|
|
40
|
+
protected beforeQuestionStart(_answers: Answers): void;
|
|
41
|
+
protected decorateMessage(_answers: Answers): string;
|
|
42
|
+
protected filter(input: Array<string> | string): string;
|
|
43
|
+
protected transformer(input: string, _answers: Answers): string;
|
|
44
|
+
protected validate(input: string): boolean | string;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=Question.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Question.d.ts","sourceRoot":"","sources":["../../src/Question.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpE,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5E,OAAO,KAAK,EAAE,YAAY,IAAI,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,IAAI,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAO1F,MAAM,MAAM,cAAc,GAAG;IAC5B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;QAC3B,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACd,CAAC,GAAG,IAAI,CAAC;IACV,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC5B,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,EAE9B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,SAAS,CAAC,SAAS,EAAE,MAAM,EAE9B;IAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAEzC;IAED,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IAEvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IAEtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmB;IAE9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;IAE1C,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAS;IAEzD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAS;IAElD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;IAE/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,8BAA8B,EAAE,uBAAuB,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,cAAc;IAiDxM,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI/B,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAItD,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM;IA4BpD,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,MAAM;IAoBvD,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM;IAa/D,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM;CA4BnD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionBody.d.ts","sourceRoot":"","sources":["../../src/SectionBody.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAa1D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAuB7D;AAED,wBAAgB,YAAY,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAKtD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PromptName } from "@commitlint/types";
|
|
2
|
+
import type { Answers, DistinctQuestion } from "inquirer";
|
|
3
|
+
import type { QuestionConfig } from "./Question.js";
|
|
4
|
+
import Question from "./Question.js";
|
|
5
|
+
export declare class FooterQuestion extends Question {
|
|
6
|
+
footerMaxLength: number;
|
|
7
|
+
footerMinLength: number;
|
|
8
|
+
constructor(name: PromptName, questionConfig: QuestionConfig, footerMaxLength?: number, footerMinLength?: number);
|
|
9
|
+
beforeQuestionStart(answers: Answers): void;
|
|
10
|
+
}
|
|
11
|
+
export declare function combineCommitMessage(answers: Answers): string;
|
|
12
|
+
export declare function getQuestions(): Array<DistinctQuestion>;
|
|
13
|
+
//# sourceMappingURL=SectionFooter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionFooter.d.ts","sourceRoot":"","sources":["../../src/SectionFooter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKpD,OAAO,QAAQ,MAAM,eAAe,CAAC;AAOrC,qBAAa,cAAe,SAAQ,QAAQ;IAC3C,eAAe,EAAE,MAAM,CAAC;IAExB,eAAe,EAAE,MAAM,CAAC;gBAEZ,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM;IAMhH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAK3C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAiD7D;AAED,wBAAgB,YAAY,IAAI,KAAK,CAAC,gBAAgB,CAAC,CA+FtD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { PromptName, RuleField } from "@commitlint/types";
|
|
2
|
+
import type { Answers, DistinctQuestion } from "inquirer";
|
|
3
|
+
import type { QuestionConfig } from "./Question.js";
|
|
4
|
+
import Question from "./Question.js";
|
|
5
|
+
import getRuleQuestionConfig from "./services/getRuleQuestionConfig.js";
|
|
6
|
+
export declare class HeaderQuestion extends Question {
|
|
7
|
+
headerMaxLength: number;
|
|
8
|
+
headerMinLength: number;
|
|
9
|
+
constructor(name: PromptName, questionConfig: QuestionConfig, headerMaxLength?: number, headerMinLength?: number);
|
|
10
|
+
beforeQuestionStart(answers: Answers): void;
|
|
11
|
+
}
|
|
12
|
+
export declare function combineCommitMessage(answers: Answers): string;
|
|
13
|
+
export declare function getQuestionConfig(name: RuleField): ReturnType<typeof getRuleQuestionConfig>;
|
|
14
|
+
export declare function getQuestions(): Array<DistinctQuestion>;
|
|
15
|
+
//# sourceMappingURL=SectionHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionHeader.d.ts","sourceRoot":"","sources":["../../src/SectionHeader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,qBAAqB,MAAM,qCAAqC,CAAC;AAGxE,qBAAa,cAAe,SAAQ,QAAQ;IAC3C,eAAe,EAAE,MAAM,CAAC;IAExB,eAAe,EAAE,MAAM,CAAC;gBAEZ,IAAI,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM;IAMhH,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAK3C;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAO7D;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAY3F;AAED,wBAAgB,YAAY,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAqBtD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Answers, DistinctQuestion } from "inquirer";
|
|
2
|
+
export { getLLMConfig, setLLMConfig } from "./services/llm/index.js";
|
|
3
|
+
export type { CommitMode, LLMConfig, LLMConfigStorage, LLMModel, LLMProvider } from "./services/llm/types.js";
|
|
4
|
+
type Commit = (message: string) => void;
|
|
5
|
+
/**
|
|
6
|
+
* Entry point for commitizen
|
|
7
|
+
* @param inquirerIns instance passed by commitizen, unused
|
|
8
|
+
* @param commit callback to execute with complete commit message
|
|
9
|
+
* @return {void}
|
|
10
|
+
*/
|
|
11
|
+
export declare function prompter(inquirerIns: {
|
|
12
|
+
prompt(questions: Array<DistinctQuestion>): Promise<Answers>;
|
|
13
|
+
}, commit: Commit): Promise<void>;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAW1D,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAU9G,KAAK,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAkCxC;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC7B,WAAW,EAAE;IACZ,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC7D,EACD,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAkBf"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import load from '@commitlint/load';
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { config } from 'dotenv';
|
|
6
|
+
import Process from './Process.js';
|
|
7
|
+
import './services/llm/index.js';
|
|
8
|
+
import { getLLMConfig } from './services/llm/config.js';
|
|
9
|
+
export { setLLMConfig } from './services/llm/config.js';
|
|
10
|
+
|
|
11
|
+
// Load environment variables from .env file
|
|
12
|
+
try {
|
|
13
|
+
config();
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
// Silently continue if .env file is not found or cannot be loaded
|
|
17
|
+
}
|
|
18
|
+
// Check what commit mode to use based on config, environment variable, and fallback file
|
|
19
|
+
const getCommitMode = () => {
|
|
20
|
+
try {
|
|
21
|
+
// First check environment variable (highest priority)
|
|
22
|
+
// Next check for manual flag file
|
|
23
|
+
if (existsSync(join("./.elsikora", "manual"))) {
|
|
24
|
+
return "manual";
|
|
25
|
+
}
|
|
26
|
+
// Finally check config file
|
|
27
|
+
const config = getLLMConfig();
|
|
28
|
+
if (config?.mode && // Validation is now done in config.ts to avoid duplicate messages
|
|
29
|
+
(config.mode === "auto" || config.mode === "manual")) {
|
|
30
|
+
return config.mode;
|
|
31
|
+
}
|
|
32
|
+
// Default to auto if not specified
|
|
33
|
+
return "auto";
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// In case of any errors, default to auto
|
|
37
|
+
return "auto";
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Entry point for commitizen
|
|
42
|
+
* @param inquirerIns instance passed by commitizen, unused
|
|
43
|
+
* @param commit callback to execute with complete commit message
|
|
44
|
+
* @return {void}
|
|
45
|
+
*/
|
|
46
|
+
async function prompter(inquirerIns, commit) {
|
|
47
|
+
// eslint-disable-next-line @elsikora-typescript/typedef
|
|
48
|
+
await load().then(async ({ prompt = {}, rules }) => {
|
|
49
|
+
// Use process (AI mode) unless manual mode is enabled
|
|
50
|
+
const commitMode = getCommitMode();
|
|
51
|
+
if (commitMode === "manual") {
|
|
52
|
+
console.log(chalk.blue("Using manual commit mode..."));
|
|
53
|
+
// Import manualProcess dynamically to avoid loading AI deps when not needed
|
|
54
|
+
// eslint-disable-next-line @elsikora-typescript/typedef
|
|
55
|
+
await import('./ManualProcess.js').then(async ({ default: manualProcess }) => {
|
|
56
|
+
await manualProcess(rules, prompt, inquirerIns).then(commit);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
console.log(chalk.blue("Using AI-powered commit mode..."));
|
|
61
|
+
await Process(rules, prompt, inquirerIns).then(commit);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export { getLLMConfig, prompter };
|
|
67
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":[null],"names":["loadDotEnvironment","process"],"mappings":";;;;;;;;;;AAcA;AACA,IAAI;AACH,IAAAA,MAAkB,EAAE;AACrB;AAAE,MAAM;;AAER;AASA;AACA,MAAM,aAAa,GAAG,MAAiB;AACtC,IAAA,IAAI;;;QAIH,IAAI,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,EAAE;AAC9C,YAAA,OAAO,QAAQ;;;AAIhB,QAAA,MAAM,MAAM,GAAmD,YAAY,EAAE;AAE7E,QAAA,IACC,MAAM,EAAE,IAAI;AACZ,aAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,EACnD;YACD,OAAO,MAAM,CAAC,IAAI;;;AAInB,QAAA,OAAO,MAAM;;AACZ,IAAA,MAAM;;AAEP,QAAA,OAAO,MAAM;;AAEf,CAAC;AAED;;;;;AAKG;AACI,eAAe,QAAQ,CAC7B,WAEC,EACD,MAAc,EAAA;;AAGd,IAAA,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,EAAE,KAAI;;AAElD,QAAA,MAAM,UAAU,GAAsB,aAAa,EAAE;AAErD,QAAA,IAAI,UAAU,KAAK,QAAQ,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;;;AAGtD,YAAA,MAAM,OAAO,oBAAoB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAI;AAC5E,gBAAA,MAAM,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;AAC7D,aAAC,CAAC;;aACI;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;AAC1D,YAAA,MAAMC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;AAExD,KAAC,CAAC;AACH;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { QualifiedRules, UserPromptConfig } from "@commitlint/types";
|
|
2
|
+
import type { LLMPromptContext } from "./llm/types.js";
|
|
3
|
+
export declare function extractLLMPromptContext(rules: QualifiedRules, prompt: UserPromptConfig): LLMPromptContext;
|
|
4
|
+
//# sourceMappingURL=commitlintConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commitlintConfig.d.ts","sourceRoot":"","sources":["../../../src/services/commitlintConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAkB,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAMvD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,GAAG,gBAAgB,CA2PzG"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { RuleConfigSeverity } from '@commitlint/types';
|
|
2
|
+
|
|
3
|
+
// eslint-disable-next-line no-duplicate-imports
|
|
4
|
+
// eslint-disable-next-line @elsikora-sonar/cognitive-complexity
|
|
5
|
+
function extractLLMPromptContext(rules, prompt) {
|
|
6
|
+
const context = {
|
|
7
|
+
subject: {},
|
|
8
|
+
};
|
|
9
|
+
// Extract type enum
|
|
10
|
+
if (rules["type-enum"] && rules["type-enum"][0] !== RuleConfigSeverity.Disabled) {
|
|
11
|
+
const typeEnumRule = rules["type-enum"];
|
|
12
|
+
if (typeEnumRule && typeEnumRule.length >= 3 && Array.isArray(typeEnumRule[2])) {
|
|
13
|
+
context.typeEnum = typeEnumRule[2];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
// Extract type case rules
|
|
17
|
+
if (rules["type-case"] && rules["type-case"][0] !== RuleConfigSeverity.Disabled) {
|
|
18
|
+
const typeCaseRule = rules["type-case"];
|
|
19
|
+
if (typeCaseRule && typeCaseRule.length >= 3) {
|
|
20
|
+
context.typeCase = Array.isArray(typeCaseRule[2]) ? typeCaseRule[2] : [typeCaseRule[2]];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Extract type empty rules
|
|
24
|
+
if (rules["type-empty"] && rules["type-empty"][0] !== RuleConfigSeverity.Disabled) {
|
|
25
|
+
const typeEmptyRule = rules["type-empty"];
|
|
26
|
+
if (typeEmptyRule && typeEmptyRule.length >= 2) {
|
|
27
|
+
context.typeEmpty = typeEmptyRule[1] !== "never";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// Extract type descriptions from prompt config
|
|
31
|
+
if (prompt.questions?.type) {
|
|
32
|
+
// Get the type description
|
|
33
|
+
if (prompt.questions.type.description) {
|
|
34
|
+
context.typeDescription = prompt.questions.type.description;
|
|
35
|
+
}
|
|
36
|
+
// Get the enum descriptions
|
|
37
|
+
if (prompt.questions.type.enum) {
|
|
38
|
+
// @ts-ignore
|
|
39
|
+
context.typeDescriptions = prompt.questions.type.enum;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Extract scope case rules
|
|
43
|
+
if (rules["scope-case"] && rules["scope-case"][0] !== RuleConfigSeverity.Disabled) {
|
|
44
|
+
const scopeCaseRule = rules["scope-case"];
|
|
45
|
+
if (scopeCaseRule && scopeCaseRule.length >= 3) {
|
|
46
|
+
context.scopeCase = Array.isArray(scopeCaseRule[2]) ? scopeCaseRule[2] : [scopeCaseRule[2]];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Extract scope empty rules
|
|
50
|
+
if (rules["scope-empty"] && rules["scope-empty"][0] !== RuleConfigSeverity.Disabled) {
|
|
51
|
+
const scopeEmptyRule = rules["scope-empty"];
|
|
52
|
+
if (scopeEmptyRule && scopeEmptyRule.length >= 2) {
|
|
53
|
+
context.scopeEmpty = scopeEmptyRule[1] !== "never";
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// Extract scope max length
|
|
57
|
+
if (rules["scope-max-length"] && rules["scope-max-length"][0] !== RuleConfigSeverity.Disabled) {
|
|
58
|
+
const scopeMaxLengthRule = rules["scope-max-length"];
|
|
59
|
+
if (scopeMaxLengthRule && scopeMaxLengthRule.length >= 3 && typeof scopeMaxLengthRule[2] === "number") {
|
|
60
|
+
context.scopeMaxLength = scopeMaxLengthRule[2];
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Extract case function options for subject
|
|
64
|
+
if (rules["subject-case"] && rules["subject-case"][0] !== RuleConfigSeverity.Disabled) {
|
|
65
|
+
const subjectCaseRule = rules["subject-case"];
|
|
66
|
+
if (subjectCaseRule && subjectCaseRule.length >= 3) {
|
|
67
|
+
context.subject.case = Array.isArray(subjectCaseRule[2]) ? subjectCaseRule[2] : [subjectCaseRule[2]];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Extract subject-empty rules
|
|
71
|
+
if (rules["subject-empty"] && rules["subject-empty"][0] !== RuleConfigSeverity.Disabled) {
|
|
72
|
+
const subjectEmptyRule = rules["subject-empty"];
|
|
73
|
+
if (subjectEmptyRule && subjectEmptyRule.length >= 2) {
|
|
74
|
+
context.subject.empty = subjectEmptyRule[1] !== "never";
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Extract subject full-stop rules
|
|
78
|
+
if (rules["subject-full-stop"] && rules["subject-full-stop"][0] !== RuleConfigSeverity.Disabled) {
|
|
79
|
+
const subjectFullStopRule = rules["subject-full-stop"];
|
|
80
|
+
if (subjectFullStopRule && subjectFullStopRule.length >= 3) {
|
|
81
|
+
context.subject.fullStop = {
|
|
82
|
+
// eslint-disable-next-line @elsikora-typescript/naming-convention
|
|
83
|
+
required: subjectFullStopRule[1] === "always",
|
|
84
|
+
// eslint-disable-next-line @elsikora-typescript/no-unsafe-assignment
|
|
85
|
+
value: subjectFullStopRule[2],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Extract scope and subject descriptions from prompt config
|
|
90
|
+
if (prompt.questions?.scope?.description) {
|
|
91
|
+
context.scopeDescription = prompt.questions.scope.description;
|
|
92
|
+
}
|
|
93
|
+
if (prompt.questions?.subject?.description) {
|
|
94
|
+
context.subject.description = prompt.questions.subject.description;
|
|
95
|
+
}
|
|
96
|
+
// Extract header case rules
|
|
97
|
+
if (rules["header-case"] && rules["header-case"][0] !== RuleConfigSeverity.Disabled) {
|
|
98
|
+
const headerCaseRule = rules["header-case"];
|
|
99
|
+
if (headerCaseRule && headerCaseRule.length >= 3) {
|
|
100
|
+
context.headerCase = Array.isArray(headerCaseRule[2]) ? headerCaseRule[2] : [headerCaseRule[2]];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Extract header full-stop rules
|
|
104
|
+
if (rules["header-full-stop"] && rules["header-full-stop"][0] !== RuleConfigSeverity.Disabled) {
|
|
105
|
+
const headerFullStopRule = rules["header-full-stop"];
|
|
106
|
+
if (headerFullStopRule && headerFullStopRule.length >= 3) {
|
|
107
|
+
context.headerFullStop = {
|
|
108
|
+
// eslint-disable-next-line @elsikora-typescript/naming-convention
|
|
109
|
+
required: headerFullStopRule[1] === "always",
|
|
110
|
+
// eslint-disable-next-line @elsikora-typescript/no-unsafe-assignment
|
|
111
|
+
value: headerFullStopRule[2],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Extract header max length
|
|
116
|
+
if (rules["header-max-length"] && rules["header-max-length"][0] !== RuleConfigSeverity.Disabled) {
|
|
117
|
+
const headerMaxLengthRule = rules["header-max-length"];
|
|
118
|
+
if (headerMaxLengthRule && headerMaxLengthRule.length >= 3 && typeof headerMaxLengthRule[2] === "number") {
|
|
119
|
+
context.headerMaxLength = headerMaxLengthRule[2];
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Extract header min length
|
|
123
|
+
if (rules["header-min-length"] && rules["header-min-length"][0] !== RuleConfigSeverity.Disabled) {
|
|
124
|
+
const headerMinLengthRule = rules["header-min-length"];
|
|
125
|
+
if (headerMinLengthRule && headerMinLengthRule.length >= 3 && typeof headerMinLengthRule[2] === "number") {
|
|
126
|
+
context.headerMinLength = headerMinLengthRule[2];
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Extract subject max length
|
|
130
|
+
if (rules["subject-max-length"] && rules["subject-max-length"][0] !== RuleConfigSeverity.Disabled) {
|
|
131
|
+
const subjectMaxLengthRule = rules["subject-max-length"];
|
|
132
|
+
if (subjectMaxLengthRule && subjectMaxLengthRule.length >= 3 && typeof subjectMaxLengthRule[2] === "number") {
|
|
133
|
+
context.subject.maxLength = subjectMaxLengthRule[2];
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Extract subject min length
|
|
137
|
+
if (rules["subject-min-length"] && rules["subject-min-length"][0] !== RuleConfigSeverity.Disabled) {
|
|
138
|
+
const subjectMinLengthRule = rules["subject-min-length"];
|
|
139
|
+
if (subjectMinLengthRule && subjectMinLengthRule.length >= 3 && typeof subjectMinLengthRule[2] === "number") {
|
|
140
|
+
context.subject.minLength = subjectMinLengthRule[2];
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Extract body related rules
|
|
144
|
+
context.body = {};
|
|
145
|
+
// Body max length
|
|
146
|
+
if (rules["body-max-length"] && rules["body-max-length"][0] !== RuleConfigSeverity.Disabled) {
|
|
147
|
+
const bodyMaxLengthRule = rules["body-max-length"];
|
|
148
|
+
if (bodyMaxLengthRule && bodyMaxLengthRule.length >= 3 && typeof bodyMaxLengthRule[2] === "number") {
|
|
149
|
+
context.body.maxLength = bodyMaxLengthRule[2];
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// Body max line length
|
|
153
|
+
if (rules["body-max-line-length"] && rules["body-max-line-length"][0] !== RuleConfigSeverity.Disabled) {
|
|
154
|
+
const bodyMaxLineLengthRule = rules["body-max-line-length"];
|
|
155
|
+
if (bodyMaxLineLengthRule && bodyMaxLineLengthRule.length >= 3 && typeof bodyMaxLineLengthRule[2] === "number") {
|
|
156
|
+
context.body.maxLineLength = bodyMaxLineLengthRule[2];
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Body full-stop
|
|
160
|
+
if (rules["body-full-stop"] && rules["body-full-stop"][0] !== RuleConfigSeverity.Disabled) {
|
|
161
|
+
const bodyFullStopRule = rules["body-full-stop"];
|
|
162
|
+
if (bodyFullStopRule && bodyFullStopRule.length >= 3) {
|
|
163
|
+
context.body.fullStop = {
|
|
164
|
+
// eslint-disable-next-line @elsikora-typescript/naming-convention
|
|
165
|
+
required: bodyFullStopRule[1] === "always",
|
|
166
|
+
// eslint-disable-next-line @elsikora-typescript/no-unsafe-assignment
|
|
167
|
+
value: bodyFullStopRule[2],
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// Body-leading-blank
|
|
172
|
+
if (rules["body-leading-blank"] && rules["body-leading-blank"][0] !== RuleConfigSeverity.Disabled) {
|
|
173
|
+
const bodyLeadingBlankRule = rules["body-leading-blank"];
|
|
174
|
+
if (bodyLeadingBlankRule && bodyLeadingBlankRule.length >= 2) {
|
|
175
|
+
context.body.leadingBlank = bodyLeadingBlankRule[1] === "always";
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Footer-leading-blank
|
|
179
|
+
if (rules["footer-leading-blank"] && rules["footer-leading-blank"][0] !== RuleConfigSeverity.Disabled) {
|
|
180
|
+
const footerLeadingBlankRule = rules["footer-leading-blank"];
|
|
181
|
+
if (footerLeadingBlankRule && footerLeadingBlankRule.length >= 2) {
|
|
182
|
+
context.footerLeadingBlank = footerLeadingBlankRule[1] === "always";
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Footer-max-line-length
|
|
186
|
+
if (rules["footer-max-line-length"] && rules["footer-max-line-length"][0] !== RuleConfigSeverity.Disabled) {
|
|
187
|
+
const footerMaxLineLengthRule = rules["footer-max-line-length"];
|
|
188
|
+
if (footerMaxLineLengthRule && footerMaxLineLengthRule.length >= 3 && typeof footerMaxLineLengthRule[2] === "number") {
|
|
189
|
+
context.footerMaxLineLength = footerMaxLineLengthRule[2];
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return context;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export { extractLLMPromptContext };
|
|
196
|
+
//# sourceMappingURL=commitlintConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commitlintConfig.js","sources":["../../../../src/services/commitlintConfig.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { CommitConfig, LLMPromptContext } from "./llm";
|
|
2
|
+
interface ValidationResult {
|
|
3
|
+
errors?: string;
|
|
4
|
+
isValid: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Validates a commit message and retries with LLM if there are errors
|
|
8
|
+
* @param commitConfig The original commit configuration
|
|
9
|
+
* @param promptContext The prompt context used to generate the commit
|
|
10
|
+
* @returns A promise that resolves to a valid commit message or null if manual entry is needed
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateAndFixCommitMessage(commitConfig: CommitConfig, promptContext: LLMPromptContext): Promise<null | string>;
|
|
13
|
+
/**
|
|
14
|
+
* Validates a commit message with commitlint
|
|
15
|
+
* @param commitMessage The commit message to validate
|
|
16
|
+
* @returns A promise that resolves to an object with the validation result
|
|
17
|
+
*/
|
|
18
|
+
export declare function validateWithCommitlint(commitMessage: string): Promise<ValidationResult>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=commitlintValidator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commitlintValidator.d.ts","sourceRoot":"","sources":["../../../src/services/commitlintValidator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAa5D,UAAU,gBAAgB;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAAC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAqErI;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiB7F"}
|