@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.
Files changed (149) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +150 -0
  3. package/dist/cjs/ManualProcess.d.ts +6 -0
  4. package/dist/cjs/ManualProcess.d.ts.map +1 -0
  5. package/dist/cjs/ManualProcess.js +111 -0
  6. package/dist/cjs/ManualProcess.js.map +1 -0
  7. package/dist/cjs/Process.d.ts +6 -0
  8. package/dist/cjs/Process.d.ts.map +1 -0
  9. package/dist/cjs/Process.js +165 -0
  10. package/dist/cjs/Process.js.map +1 -0
  11. package/dist/cjs/Question.d.ts +46 -0
  12. package/dist/cjs/Question.d.ts.map +1 -0
  13. package/dist/cjs/SectionBody.d.ts +4 -0
  14. package/dist/cjs/SectionBody.d.ts.map +1 -0
  15. package/dist/cjs/SectionFooter.d.ts +13 -0
  16. package/dist/cjs/SectionFooter.d.ts.map +1 -0
  17. package/dist/cjs/SectionHeader.d.ts +15 -0
  18. package/dist/cjs/SectionHeader.d.ts.map +1 -0
  19. package/dist/cjs/index.d.ts +14 -0
  20. package/dist/cjs/index.d.ts.map +1 -0
  21. package/dist/cjs/index.js +70 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/services/commitlintConfig.d.ts +4 -0
  24. package/dist/cjs/services/commitlintConfig.d.ts.map +1 -0
  25. package/dist/cjs/services/commitlintConfig.js +198 -0
  26. package/dist/cjs/services/commitlintConfig.js.map +1 -0
  27. package/dist/cjs/services/commitlintValidator.d.ts +20 -0
  28. package/dist/cjs/services/commitlintValidator.d.ts.map +1 -0
  29. package/dist/cjs/services/commitlintValidator.js +145 -0
  30. package/dist/cjs/services/commitlintValidator.js.map +1 -0
  31. package/dist/cjs/services/getRuleQuestionConfig.d.ts +4 -0
  32. package/dist/cjs/services/getRuleQuestionConfig.d.ts.map +1 -0
  33. package/dist/cjs/services/llm/anthropic.d.ts +3 -0
  34. package/dist/cjs/services/llm/anthropic.d.ts.map +1 -0
  35. package/dist/cjs/services/llm/anthropic.js +118 -0
  36. package/dist/cjs/services/llm/anthropic.js.map +1 -0
  37. package/dist/cjs/services/llm/config.d.ts +5 -0
  38. package/dist/cjs/services/llm/config.d.ts.map +1 -0
  39. package/dist/cjs/services/llm/config.js +181 -0
  40. package/dist/cjs/services/llm/config.js.map +1 -0
  41. package/dist/cjs/services/llm/index.d.ts +6 -0
  42. package/dist/cjs/services/llm/index.d.ts.map +1 -0
  43. package/dist/cjs/services/llm/index.js +398 -0
  44. package/dist/cjs/services/llm/index.js.map +1 -0
  45. package/dist/cjs/services/llm/models.d.ts +34 -0
  46. package/dist/cjs/services/llm/models.d.ts.map +1 -0
  47. package/dist/cjs/services/llm/models.js +65 -0
  48. package/dist/cjs/services/llm/models.js.map +1 -0
  49. package/dist/cjs/services/llm/openai.d.ts +3 -0
  50. package/dist/cjs/services/llm/openai.d.ts.map +1 -0
  51. package/dist/cjs/services/llm/openai.js +111 -0
  52. package/dist/cjs/services/llm/openai.js.map +1 -0
  53. package/dist/cjs/services/llm/types.d.ts +71 -0
  54. package/dist/cjs/services/llm/types.d.ts.map +1 -0
  55. package/dist/cjs/store/defaultPromptConfigs.d.ts +33 -0
  56. package/dist/cjs/store/defaultPromptConfigs.d.ts.map +1 -0
  57. package/dist/cjs/store/defaultPromptConfigs.js +39 -0
  58. package/dist/cjs/store/defaultPromptConfigs.js.map +1 -0
  59. package/dist/cjs/store/prompts.d.ts +6 -0
  60. package/dist/cjs/store/prompts.d.ts.map +1 -0
  61. package/dist/cjs/store/prompts.js +40 -0
  62. package/dist/cjs/store/prompts.js.map +1 -0
  63. package/dist/cjs/store/rules.d.ts +7 -0
  64. package/dist/cjs/store/rules.d.ts.map +1 -0
  65. package/dist/cjs/types.d.ts +3 -0
  66. package/dist/cjs/types.d.ts.map +1 -0
  67. package/dist/cjs/utils/case-function.d.ts +9 -0
  68. package/dist/cjs/utils/case-function.d.ts.map +1 -0
  69. package/dist/cjs/utils/full-stop-function.d.ts +9 -0
  70. package/dist/cjs/utils/full-stop-function.d.ts.map +1 -0
  71. package/dist/cjs/utils/leading-blank-function.d.ts +8 -0
  72. package/dist/cjs/utils/leading-blank-function.d.ts.map +1 -0
  73. package/dist/cjs/utils/rules.d.ts +26 -0
  74. package/dist/cjs/utils/rules.d.ts.map +1 -0
  75. package/dist/esm/ManualProcess.d.ts +6 -0
  76. package/dist/esm/ManualProcess.d.ts.map +1 -0
  77. package/dist/esm/ManualProcess.js +107 -0
  78. package/dist/esm/ManualProcess.js.map +1 -0
  79. package/dist/esm/Process.d.ts +6 -0
  80. package/dist/esm/Process.d.ts.map +1 -0
  81. package/dist/esm/Process.js +161 -0
  82. package/dist/esm/Process.js.map +1 -0
  83. package/dist/esm/Question.d.ts +46 -0
  84. package/dist/esm/Question.d.ts.map +1 -0
  85. package/dist/esm/SectionBody.d.ts +4 -0
  86. package/dist/esm/SectionBody.d.ts.map +1 -0
  87. package/dist/esm/SectionFooter.d.ts +13 -0
  88. package/dist/esm/SectionFooter.d.ts.map +1 -0
  89. package/dist/esm/SectionHeader.d.ts +15 -0
  90. package/dist/esm/SectionHeader.d.ts.map +1 -0
  91. package/dist/esm/index.d.ts +14 -0
  92. package/dist/esm/index.d.ts.map +1 -0
  93. package/dist/esm/index.js +67 -0
  94. package/dist/esm/index.js.map +1 -0
  95. package/dist/esm/services/commitlintConfig.d.ts +4 -0
  96. package/dist/esm/services/commitlintConfig.d.ts.map +1 -0
  97. package/dist/esm/services/commitlintConfig.js +196 -0
  98. package/dist/esm/services/commitlintConfig.js.map +1 -0
  99. package/dist/esm/services/commitlintValidator.d.ts +20 -0
  100. package/dist/esm/services/commitlintValidator.d.ts.map +1 -0
  101. package/dist/esm/services/commitlintValidator.js +142 -0
  102. package/dist/esm/services/commitlintValidator.js.map +1 -0
  103. package/dist/esm/services/getRuleQuestionConfig.d.ts +4 -0
  104. package/dist/esm/services/getRuleQuestionConfig.d.ts.map +1 -0
  105. package/dist/esm/services/llm/anthropic.d.ts +3 -0
  106. package/dist/esm/services/llm/anthropic.d.ts.map +1 -0
  107. package/dist/esm/services/llm/anthropic.js +116 -0
  108. package/dist/esm/services/llm/anthropic.js.map +1 -0
  109. package/dist/esm/services/llm/config.d.ts +5 -0
  110. package/dist/esm/services/llm/config.d.ts.map +1 -0
  111. package/dist/esm/services/llm/config.js +178 -0
  112. package/dist/esm/services/llm/config.js.map +1 -0
  113. package/dist/esm/services/llm/index.d.ts +6 -0
  114. package/dist/esm/services/llm/index.d.ts.map +1 -0
  115. package/dist/esm/services/llm/index.js +393 -0
  116. package/dist/esm/services/llm/index.js.map +1 -0
  117. package/dist/esm/services/llm/models.d.ts +34 -0
  118. package/dist/esm/services/llm/models.d.ts.map +1 -0
  119. package/dist/esm/services/llm/models.js +60 -0
  120. package/dist/esm/services/llm/models.js.map +1 -0
  121. package/dist/esm/services/llm/openai.d.ts +3 -0
  122. package/dist/esm/services/llm/openai.d.ts.map +1 -0
  123. package/dist/esm/services/llm/openai.js +109 -0
  124. package/dist/esm/services/llm/openai.js.map +1 -0
  125. package/dist/esm/services/llm/types.d.ts +71 -0
  126. package/dist/esm/services/llm/types.d.ts.map +1 -0
  127. package/dist/esm/store/defaultPromptConfigs.d.ts +33 -0
  128. package/dist/esm/store/defaultPromptConfigs.d.ts.map +1 -0
  129. package/dist/esm/store/defaultPromptConfigs.js +35 -0
  130. package/dist/esm/store/defaultPromptConfigs.js.map +1 -0
  131. package/dist/esm/store/prompts.d.ts +6 -0
  132. package/dist/esm/store/prompts.d.ts.map +1 -0
  133. package/dist/esm/store/prompts.js +38 -0
  134. package/dist/esm/store/prompts.js.map +1 -0
  135. package/dist/esm/store/rules.d.ts +7 -0
  136. package/dist/esm/store/rules.d.ts.map +1 -0
  137. package/dist/esm/types.d.ts +3 -0
  138. package/dist/esm/types.d.ts.map +1 -0
  139. package/dist/esm/utils/case-function.d.ts +9 -0
  140. package/dist/esm/utils/case-function.d.ts.map +1 -0
  141. package/dist/esm/utils/full-stop-function.d.ts +9 -0
  142. package/dist/esm/utils/full-stop-function.d.ts.map +1 -0
  143. package/dist/esm/utils/leading-blank-function.d.ts +8 -0
  144. package/dist/esm/utils/leading-blank-function.d.ts.map +1 -0
  145. package/dist/esm/utils/rules.d.ts +26 -0
  146. package/dist/esm/utils/rules.d.ts.map +1 -0
  147. package/dist/tsconfig.tsbuildinfo +1 -0
  148. package/index.cjs +6 -0
  149. 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,4 @@
1
+ import type { Answers, DistinctQuestion } from "inquirer";
2
+ export declare function combineCommitMessage(answers: Answers): string;
3
+ export declare function getQuestions(): Array<DistinctQuestion>;
4
+ //# sourceMappingURL=SectionBody.d.ts.map
@@ -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"}