smart-commit-copilot-cli 0.1.5 → 0.1.7
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/CHANGELOG.md +37 -0
- package/README.md +55 -7
- package/docs/configuration.md +55 -2
- package/docs/contracts.md +15 -2
- package/docs/getting-started.md +18 -4
- package/docs/publish.md +1 -1
- package/docs/releases/0.1.6-draft.md +72 -0
- package/docs/releases/0.1.7-draft.md +55 -0
- package/docs/roadmap.md +1 -1
- package/docs/verification.md +15 -0
- package/examples/config/smart-commit.json +10 -1
- package/out/cliApp.js +11 -1
- package/out/cliApp.js.map +1 -1
- package/out/commands/bridge.js +160 -17
- package/out/commands/bridge.js.map +1 -1
- package/out/commitMessage/index.js +30 -9
- package/out/commitMessage/index.js.map +1 -1
- package/out/commitMessage/prompt.js +60 -10
- package/out/commitMessage/prompt.js.map +1 -1
- package/out/commitMessage/protocol.js +283 -22
- package/out/commitMessage/protocol.js.map +1 -1
- package/out/config/cliArgs.js +33 -0
- package/out/config/cliArgs.js.map +1 -1
- package/out/config/constants.js +9 -0
- package/out/config/constants.js.map +1 -1
- package/out/config/env.js +30 -0
- package/out/config/env.js.map +1 -1
- package/out/config/file.js +36 -0
- package/out/config/file.js.map +1 -1
- package/out/config/legacySmartCommit.js +41 -1
- package/out/config/legacySmartCommit.js.map +1 -1
- package/out/config/merge.js +4 -0
- package/out/config/merge.js.map +1 -1
- package/out/config/schema.js +35 -1
- package/out/config/schema.js.map +1 -1
- package/out/contracts.js +44 -9
- package/out/contracts.js.map +1 -1
- package/out/llm/responseCorrection.js +32 -0
- package/out/llm/responseCorrection.js.map +1 -0
- package/out/passHistory/index.js +51 -22
- package/out/passHistory/index.js.map +1 -1
- package/out/passHistory/store.js +29 -1
- package/out/passHistory/store.js.map +1 -1
- package/out/passHistory/types.js +23 -1
- package/out/passHistory/types.js.map +1 -1
- package/out/promptContext.js +19 -3
- package/out/promptContext.js.map +1 -1
- package/out/pullRequestSummary/index.js +53 -0
- package/out/pullRequestSummary/index.js.map +1 -0
- package/out/pullRequestSummary/mockProvider.js +24 -0
- package/out/pullRequestSummary/mockProvider.js.map +1 -0
- package/out/pullRequestSummary/openaiProvider.js +19 -0
- package/out/pullRequestSummary/openaiProvider.js.map +1 -0
- package/out/pullRequestSummary/prompt.js +122 -0
- package/out/pullRequestSummary/prompt.js.map +1 -0
- package/out/pullRequestSummary/provider.js +3 -0
- package/out/pullRequestSummary/provider.js.map +1 -0
- package/out/pullRequestSummary/render.js +74 -0
- package/out/pullRequestSummary/render.js.map +1 -0
- package/out/renderOutput.js +8 -1
- package/out/renderOutput.js.map +1 -1
- package/out/reporting/prompt.js +13 -1
- package/out/reporting/prompt.js.map +1 -1
- package/out/reporting/timeWindow.js +7 -0
- package/out/reporting/timeWindow.js.map +1 -1
- package/out/reporting/types.js +1 -0
- package/out/reporting/types.js.map +1 -1
- package/out/review/diffClassifier.js +535 -0
- package/out/review/diffClassifier.js.map +1 -0
- package/out/review/index.js +27 -11
- package/out/review/index.js.map +1 -1
- package/out/review/mockProvider.js +157 -8
- package/out/review/mockProvider.js.map +1 -1
- package/out/review/openaiProvider.js +10 -4
- package/out/review/openaiProvider.js.map +1 -1
- package/out/review/parser.js +13 -0
- package/out/review/parser.js.map +1 -1
- package/out/review/prompt.js +76 -4
- package/out/review/prompt.js.map +1 -1
- package/out/skills/types.js +3 -0
- package/out/skills/types.js.map +1 -0
- package/package.json +2 -1
- package/src/code-review-skills/c-code-review/SKILL.md +165 -0
- package/src/code-review-skills/c-code-review/references/build-and-tooling.md +16 -0
- package/src/code-review-skills/c-code-review/references/concurrency-and-signals.md +16 -0
- package/src/code-review-skills/c-code-review/references/error-handling-and-cleanup.md +16 -0
- package/src/code-review-skills/c-code-review/references/macros-headers-and-build-boundaries.md +16 -0
- package/src/code-review-skills/c-code-review/references/performance-and-data-movement.md +16 -0
- package/src/code-review-skills/c-code-review/references/pointers-memory-and-resource-lifecycle.md +18 -0
- package/src/code-review-skills/c-code-review/references/scoring-guide.md +40 -0
- package/src/code-review-skills/c-code-review/references/undefined-behavior-and-safety.md +17 -0
- package/src/code-review-skills/code-review/SKILL.md +150 -0
- package/src/code-review-skills/code-review/references/code-quality-checklist.md +53 -0
- package/src/code-review-skills/code-review/references/removal-plan.md +45 -0
- package/src/code-review-skills/code-review/references/scoring-guide.md +38 -0
- package/src/code-review-skills/code-review/references/security-checklist.md +53 -0
- package/src/code-review-skills/code-review/references/solid-checklist.md +55 -0
- package/src/code-review-skills/cpp-code-review/SKILL.md +165 -0
- package/src/code-review-skills/cpp-code-review/references/build-and-tooling.md +12 -0
- package/src/code-review-skills/cpp-code-review/references/concurrency-and-atomics.md +14 -0
- package/src/code-review-skills/cpp-code-review/references/exceptions-and-error-model.md +16 -0
- package/src/code-review-skills/cpp-code-review/references/memory-raii-and-lifetimes.md +19 -0
- package/src/code-review-skills/cpp-code-review/references/performance-and-hot-paths.md +16 -0
- package/src/code-review-skills/cpp-code-review/references/scoring-guide.md +41 -0
- package/src/code-review-skills/cpp-code-review/references/templates-api-and-abi.md +13 -0
- package/src/code-review-skills/cpp-code-review/references/undefined-behavior-and-safety.md +18 -0
- package/src/code-review-skills/csharp-code-review/SKILL.md +159 -0
- package/src/code-review-skills/csharp-code-review/references/async-and-cancellation.md +16 -0
- package/src/code-review-skills/csharp-code-review/references/concurrency.md +15 -0
- package/src/code-review-skills/csharp-code-review/references/exceptions-and-api-contracts.md +16 -0
- package/src/code-review-skills/csharp-code-review/references/memory-resources-and-interop.md +16 -0
- package/src/code-review-skills/csharp-code-review/references/nullable-types-and-patterns.md +15 -0
- package/src/code-review-skills/csharp-code-review/references/scoring-guide.md +41 -0
- package/src/code-review-skills/csharp-code-review/references/web-data-and-security.md +15 -0
- package/src/code-review-skills/frontend-code-review/SKILL.md +143 -0
- package/src/code-review-skills/frontend-code-review/references/accessibility-and-semantic-ux.md +33 -0
- package/src/code-review-skills/frontend-code-review/references/interaction-and-state-lifecycle.md +39 -0
- package/src/code-review-skills/frontend-code-review/references/rendering-performance-and-resource-loading.md +34 -0
- package/src/code-review-skills/frontend-code-review/references/scoring-guide.md +38 -0
- package/src/code-review-skills/frontend-code-review/references/security-and-data-boundary.md +34 -0
- package/src/code-review-skills/golang-code-review/SKILL.md +153 -0
- package/src/code-review-skills/golang-code-review/references/api-contract-and-maintainability.md +25 -0
- package/src/code-review-skills/golang-code-review/references/concurrency-and-lifecycle.md +25 -0
- package/src/code-review-skills/golang-code-review/references/error-handling-and-reliability.md +24 -0
- package/src/code-review-skills/golang-code-review/references/performance-and-allocation.md +25 -0
- package/src/code-review-skills/golang-code-review/references/scoring-guide.md +40 -0
- package/src/code-review-skills/golang-code-review/references/security-and-trust-boundary.md +20 -0
- package/src/code-review-skills/java-code-review/SKILL.md +153 -0
- package/src/code-review-skills/java-code-review/references/api-contract-and-maintainability.md +22 -0
- package/src/code-review-skills/java-code-review/references/concurrency-and-lifecycle.md +27 -0
- package/src/code-review-skills/java-code-review/references/error-handling-and-reliability.md +25 -0
- package/src/code-review-skills/java-code-review/references/performance-and-resource-usage.md +23 -0
- package/src/code-review-skills/java-code-review/references/scoring-guide.md +40 -0
- package/src/code-review-skills/java-code-review/references/security-and-trust-boundary.md +20 -0
- package/src/code-review-skills/mobile-code-review/SKILL.md +171 -0
- package/src/code-review-skills/mobile-code-review/references/async-state-and-side-effects.md +19 -0
- package/src/code-review-skills/mobile-code-review/references/lifecycle-and-navigation.md +19 -0
- package/src/code-review-skills/mobile-code-review/references/performance-and-resource-management.md +19 -0
- package/src/code-review-skills/mobile-code-review/references/resilience-and-device-conditions.md +19 -0
- package/src/code-review-skills/mobile-code-review/references/scoring-guide.md +38 -0
- package/src/code-review-skills/mobile-code-review/references/storage-permissions-and-security.md +19 -0
- package/src/code-review-skills/mobile-code-review/references/testing-and-regression-coverage.md +21 -0
- package/src/code-review-skills/php-code-review/SKILL.md +159 -0
- package/src/code-review-skills/php-code-review/references/inclusion-superglobals-and-scope.md +21 -0
- package/src/code-review-skills/php-code-review/references/language-types-and-autoload.md +19 -0
- package/src/code-review-skills/php-code-review/references/oop-magic-and-errors.md +17 -0
- package/src/code-review-skills/php-code-review/references/performance-data-access-and-testing.md +16 -0
- package/src/code-review-skills/php-code-review/references/request-lifecycle-and-runtime.md +15 -0
- package/src/code-review-skills/php-code-review/references/scoring-guide.md +39 -0
- package/src/code-review-skills/php-code-review/references/security-and-io-boundary.md +24 -0
- package/src/code-review-skills/python-code-review/SKILL.md +147 -0
- package/src/code-review-skills/python-code-review/references/exception-and-lifecycle.md +15 -0
- package/src/code-review-skills/python-code-review/references/input-and-data-security.md +20 -0
- package/src/code-review-skills/python-code-review/references/maintainability-and-testing.md +21 -0
- package/src/code-review-skills/python-code-review/references/performance-and-resource-usage.md +21 -0
- package/src/code-review-skills/python-code-review/references/scoring-guide.md +38 -0
- package/src/code-review-skills/rust-code-review/SKILL.md +165 -0
- package/src/code-review-skills/rust-code-review/references/api-traits-and-evolution.md +16 -0
- package/src/code-review-skills/rust-code-review/references/cargo-features-and-test-coverage.md +16 -0
- package/src/code-review-skills/rust-code-review/references/concurrency-async-and-sync.md +17 -0
- package/src/code-review-skills/rust-code-review/references/error-handling-and-reliability.md +17 -0
- package/src/code-review-skills/rust-code-review/references/macros-ffi-and-embedded.md +19 -0
- package/src/code-review-skills/rust-code-review/references/ownership-borrowing-and-unsafe.md +20 -0
- package/src/code-review-skills/rust-code-review/references/performance-and-allocations.md +18 -0
- package/src/code-review-skills/rust-code-review/references/scoring-guide.md +41 -0
- package/src/git-commit-message-skills/conventional/SKILL.md +3 -3
- package/src/git-commit-message-skills/gitmoji/SKILL.md +3 -3
- package/src/git-commit-message-skills/semantic/SKILL.md +3 -3
|
@@ -4,11 +4,13 @@ exports.buildCommitMessageMessages = buildCommitMessageMessages;
|
|
|
4
4
|
exports.buildCommitMessageRepairMessages = buildCommitMessageRepairMessages;
|
|
5
5
|
function buildCommitMessageMessages(input, options = {}) {
|
|
6
6
|
const protocolLabel = formatCommitMessageProtocolLabel(input.protocol);
|
|
7
|
+
const structure = input.structure ?? "subjectOnly";
|
|
7
8
|
return [
|
|
8
9
|
{
|
|
9
10
|
role: "system",
|
|
10
11
|
content: [
|
|
11
|
-
|
|
12
|
+
buildCommitMessageSystemIntro(structure),
|
|
13
|
+
"You must obey the requested commit message language.",
|
|
12
14
|
protocolLabel === null
|
|
13
15
|
? "No built-in commit-message protocol is enforced."
|
|
14
16
|
: `You must follow the configured commit-message protocol: ${protocolLabel}.`,
|
|
@@ -23,8 +25,9 @@ function buildCommitMessageMessages(input, options = {}) {
|
|
|
23
25
|
`Repository: ${input.repositoryPath}`,
|
|
24
26
|
`Branch: ${input.branchName ?? "(unknown)"}`,
|
|
25
27
|
`Language: ${input.language}`,
|
|
28
|
+
`Commit message structure: ${structure}`,
|
|
26
29
|
`Commit message protocol: ${protocolLabel ?? "none"}`,
|
|
27
|
-
...(buildCommitMessageOutputRules(input.protocol)),
|
|
30
|
+
...(buildCommitMessageOutputRules(input.protocol, structure)),
|
|
28
31
|
`Changed files (${input.changedFiles.length}):`,
|
|
29
32
|
...input.changedFiles.map((file) => `- ${file}`),
|
|
30
33
|
"",
|
|
@@ -43,14 +46,16 @@ function buildCommitMessageMessages(input, options = {}) {
|
|
|
43
46
|
}
|
|
44
47
|
function buildCommitMessageRepairMessages(input, options = {}) {
|
|
45
48
|
const protocolLabel = formatCommitMessageProtocolLabel(input.generationInput.protocol);
|
|
49
|
+
const structure = input.generationInput.structure ?? "subjectOnly";
|
|
46
50
|
return [
|
|
47
51
|
{
|
|
48
52
|
role: "system",
|
|
49
53
|
content: [
|
|
50
|
-
|
|
54
|
+
buildCommitMessageRepairSystemIntro(structure),
|
|
55
|
+
"You must obey the requested commit message language.",
|
|
51
56
|
protocolLabel === null
|
|
52
57
|
? "No built-in commit-message protocol is enforced."
|
|
53
|
-
: `You must repair
|
|
58
|
+
: `You must repair the subject into valid ${protocolLabel} format.`,
|
|
54
59
|
"Return plain text only.",
|
|
55
60
|
"Do not return explanations or JSON.",
|
|
56
61
|
...(options.promptAugmentation?.length ? ["", ...options.promptAugmentation] : [])
|
|
@@ -62,8 +67,9 @@ function buildCommitMessageRepairMessages(input, options = {}) {
|
|
|
62
67
|
`Repository: ${input.generationInput.repositoryPath}`,
|
|
63
68
|
`Branch: ${input.generationInput.branchName ?? "(unknown)"}`,
|
|
64
69
|
`Language: ${input.generationInput.language}`,
|
|
70
|
+
`Commit message structure: ${structure}`,
|
|
65
71
|
`Commit message protocol: ${protocolLabel ?? "none"}`,
|
|
66
|
-
...(buildCommitMessageOutputRules(input.generationInput.protocol)),
|
|
72
|
+
...(buildCommitMessageOutputRules(input.generationInput.protocol, structure)),
|
|
67
73
|
"",
|
|
68
74
|
"Invalid previous response:",
|
|
69
75
|
input.invalidResponse,
|
|
@@ -74,17 +80,18 @@ function buildCommitMessageRepairMessages(input, options = {}) {
|
|
|
74
80
|
}
|
|
75
81
|
];
|
|
76
82
|
}
|
|
77
|
-
function buildCommitMessageOutputRules(protocol) {
|
|
83
|
+
function buildCommitMessageOutputRules(protocol, structure) {
|
|
84
|
+
const structureRules = buildCommitMessageStructureRules(structure);
|
|
78
85
|
if (protocol === "gitmoji") {
|
|
79
|
-
return ["
|
|
86
|
+
return [...structureRules, "Protocol rule: the subject must be a single-line Gitmoji subject."];
|
|
80
87
|
}
|
|
81
88
|
if (protocol === "semantic") {
|
|
82
|
-
return ["
|
|
89
|
+
return [...structureRules, "Protocol rule: the subject must be a single-line Semantic Commits subject."];
|
|
83
90
|
}
|
|
84
91
|
if (protocol === "conventional") {
|
|
85
|
-
return ["
|
|
92
|
+
return [...structureRules, "Protocol rule: the subject must be a single-line Conventional Commits subject."];
|
|
86
93
|
}
|
|
87
|
-
return ["
|
|
94
|
+
return [...structureRules, "Protocol rule: no built-in subject protocol is enforced."];
|
|
88
95
|
}
|
|
89
96
|
function formatCommitMessageProtocolLabel(protocol) {
|
|
90
97
|
if (protocol === "gitmoji") {
|
|
@@ -98,4 +105,47 @@ function formatCommitMessageProtocolLabel(protocol) {
|
|
|
98
105
|
}
|
|
99
106
|
return null;
|
|
100
107
|
}
|
|
108
|
+
function buildCommitMessageSystemIntro(structure) {
|
|
109
|
+
if (structure === "subjectOnly") {
|
|
110
|
+
return "You generate a single-line git commit message.";
|
|
111
|
+
}
|
|
112
|
+
if (structure === "subjectBody") {
|
|
113
|
+
return "You generate a git commit message with a subject and optional body.";
|
|
114
|
+
}
|
|
115
|
+
return "You generate a git commit message with a subject, optional body, and optional footer.";
|
|
116
|
+
}
|
|
117
|
+
function buildCommitMessageRepairSystemIntro(structure) {
|
|
118
|
+
if (structure === "subjectOnly") {
|
|
119
|
+
return "You are repairing an invalid single-line git commit message.";
|
|
120
|
+
}
|
|
121
|
+
if (structure === "subjectBody") {
|
|
122
|
+
return "You are repairing an invalid git commit message with a subject and optional body.";
|
|
123
|
+
}
|
|
124
|
+
return "You are repairing an invalid git commit message with a subject, optional body, and optional footer.";
|
|
125
|
+
}
|
|
126
|
+
function buildCommitMessageStructureRules(structure) {
|
|
127
|
+
if (structure === "subjectOnly") {
|
|
128
|
+
return [
|
|
129
|
+
"Output rule: return exactly one git commit subject line only.",
|
|
130
|
+
"If the staged diff is ambiguous, choose the single best subject and return only that one line."
|
|
131
|
+
];
|
|
132
|
+
}
|
|
133
|
+
if (structure === "subjectBody") {
|
|
134
|
+
return [
|
|
135
|
+
"Output rule: return a git commit message with this maximum structure: subject plus optional body.",
|
|
136
|
+
"The subject must be the first line.",
|
|
137
|
+
"Body is optional; if the staged diff is simple, return only the subject.",
|
|
138
|
+
"If you include a body, separate it from the subject with one blank line.",
|
|
139
|
+
"Do not include footer or trailer lines."
|
|
140
|
+
];
|
|
141
|
+
}
|
|
142
|
+
return [
|
|
143
|
+
"Output rule: return a git commit message with this maximum structure: subject plus optional body plus optional footer.",
|
|
144
|
+
"The subject must be the first line.",
|
|
145
|
+
"Body and footer are optional; if the staged diff is simple, return only the subject.",
|
|
146
|
+
"If you include body or footer content, separate each section with one blank line.",
|
|
147
|
+
"Include footer/trailer lines only when there is explicit evidence for them, such as breaking changes, issue references, co-authors, or sign-offs.",
|
|
148
|
+
"Footer/trailer lines must use Git trailer or Conventional Commits footer style, such as `Refs: #123`, `Signed-off-by: Name <email>`, or `BREAKING CHANGE: description`."
|
|
149
|
+
];
|
|
150
|
+
}
|
|
101
151
|
//# sourceMappingURL=prompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/commitMessage/prompt.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/commitMessage/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.CommitMessageFlowError = void 0;
|
|
4
4
|
exports.normalizeCommitMessage = normalizeCommitMessage;
|
|
5
|
+
exports.normalizeCommitMessageForStructure = normalizeCommitMessageForStructure;
|
|
5
6
|
exports.ensureTicketIdFromBranchIfMissing = ensureTicketIdFromBranchIfMissing;
|
|
6
7
|
exports.validateAndFinalizeCommitMessage = validateAndFinalizeCommitMessage;
|
|
8
|
+
exports.validateLanguageText = validateLanguageText;
|
|
7
9
|
exports.extractTicketLikeIdFromBranch = extractTicketLikeIdFromBranch;
|
|
8
10
|
exports.containsTicketLikeId = containsTicketLikeId;
|
|
9
11
|
const conventionalTypes = new Set([
|
|
@@ -21,12 +23,81 @@ const conventionalTypes = new Set([
|
|
|
21
23
|
]);
|
|
22
24
|
const typedCommitSubjectPattern = /^([a-z]+)(\([^)]+\))?(!)?: (.+)$/;
|
|
23
25
|
const gitmojiSubjectPattern = /^\S+\s+(.+)$/u;
|
|
26
|
+
const footerLinePattern = /^(?:BREAKING CHANGE|[A-Za-z0-9-]+):\s+\S.*$/;
|
|
27
|
+
const cjkPattern = /[\u3400-\u9fff]/;
|
|
28
|
+
const japaneseKanaPattern = /[\u3040-\u30FF\u31F0-\u31FF\uFF66-\uFF9D]/;
|
|
29
|
+
const japanesePattern = /[\u3040-\u30FF\u31F0-\u31FF\u3400-\u9fff\uFF66-\uFF9D]/;
|
|
30
|
+
const devanagariPattern = /[\u0900-\u097F\uA8E0-\uA8FF]/;
|
|
31
|
+
const cyrillicPattern = /[\u0400-\u04FF]/;
|
|
32
|
+
const hangulPattern = /[\u1100-\u11FF\u3130-\u318F\uAC00-\uD7AF]/;
|
|
33
|
+
const englishLetterPattern = /[A-Za-z]/;
|
|
34
|
+
const latinLetterPattern = /\p{Script=Latin}/u;
|
|
35
|
+
const inlineCodePattern = /`[^`]*`/g;
|
|
24
36
|
const ticketLikeIdPatterns = [
|
|
25
37
|
/\b[A-Z][A-Z0-9]+-\d+\b/i,
|
|
26
38
|
/(^|[^\w])#\d+\b/,
|
|
27
39
|
/\b(?:task|bugfix|bug|issue|story|feature|hotfix|ticket)-\d+\b/i
|
|
28
40
|
];
|
|
41
|
+
const leadingTicketLikeIdPattern = /^(?:[A-Z][A-Z0-9]+-\d+|#\d+|(?:task|bugfix|bug|issue|story|feature|hotfix|ticket)-\d+)\s+/i;
|
|
29
42
|
const branchTicketLikeIdPattern = /[A-Za-z][A-Za-z0-9]+-\d+/g;
|
|
43
|
+
const outputLanguageDefinitions = {
|
|
44
|
+
zh: {
|
|
45
|
+
validationMode: "script",
|
|
46
|
+
requiredPattern: cjkPattern,
|
|
47
|
+
requiredDescription: "Chinese text"
|
|
48
|
+
},
|
|
49
|
+
en: {
|
|
50
|
+
validationMode: "english"
|
|
51
|
+
},
|
|
52
|
+
de: {
|
|
53
|
+
validationMode: "latin"
|
|
54
|
+
},
|
|
55
|
+
fr: {
|
|
56
|
+
validationMode: "latin"
|
|
57
|
+
},
|
|
58
|
+
es: {
|
|
59
|
+
validationMode: "latin"
|
|
60
|
+
},
|
|
61
|
+
it: {
|
|
62
|
+
validationMode: "latin"
|
|
63
|
+
},
|
|
64
|
+
pt: {
|
|
65
|
+
validationMode: "latin"
|
|
66
|
+
},
|
|
67
|
+
tr: {
|
|
68
|
+
validationMode: "latin"
|
|
69
|
+
},
|
|
70
|
+
id: {
|
|
71
|
+
validationMode: "latin"
|
|
72
|
+
},
|
|
73
|
+
hi: {
|
|
74
|
+
validationMode: "script",
|
|
75
|
+
requiredPattern: devanagariPattern,
|
|
76
|
+
requiredDescription: "Devanagari script"
|
|
77
|
+
},
|
|
78
|
+
ru: {
|
|
79
|
+
validationMode: "script",
|
|
80
|
+
requiredPattern: cyrillicPattern,
|
|
81
|
+
requiredDescription: "Cyrillic script"
|
|
82
|
+
},
|
|
83
|
+
ko: {
|
|
84
|
+
validationMode: "script",
|
|
85
|
+
requiredPattern: hangulPattern,
|
|
86
|
+
requiredDescription: "Hangul script"
|
|
87
|
+
},
|
|
88
|
+
ja: {
|
|
89
|
+
validationMode: "script",
|
|
90
|
+
requiredPattern: japanesePattern,
|
|
91
|
+
requiredDescription: "Japanese text (Hiragana, Katakana, or Kanji)"
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
const disallowedNonLatinScripts = [
|
|
95
|
+
{ pattern: cjkPattern, description: "Chinese characters" },
|
|
96
|
+
{ pattern: japaneseKanaPattern, description: "Japanese kana" },
|
|
97
|
+
{ pattern: devanagariPattern, description: "Devanagari script" },
|
|
98
|
+
{ pattern: cyrillicPattern, description: "Cyrillic script" },
|
|
99
|
+
{ pattern: hangulPattern, description: "Hangul script" }
|
|
100
|
+
];
|
|
30
101
|
class CommitMessageFlowError extends Error {
|
|
31
102
|
code;
|
|
32
103
|
constructor(code, message) {
|
|
@@ -42,36 +113,54 @@ function normalizeCommitMessage(raw) {
|
|
|
42
113
|
.split("\n")[0]
|
|
43
114
|
.trim();
|
|
44
115
|
}
|
|
116
|
+
function normalizeCommitMessageForStructure(raw, structure) {
|
|
117
|
+
const sections = parseCommitMessageSections(raw);
|
|
118
|
+
return structure === "subjectOnly" ? sections.subject : sections.normalized;
|
|
119
|
+
}
|
|
45
120
|
function ensureTicketIdFromBranchIfMissing(commitMessage, branchName) {
|
|
46
121
|
const subject = normalizeCommitMessage(commitMessage);
|
|
47
122
|
if (!subject || !branchName?.trim()) {
|
|
48
|
-
return
|
|
123
|
+
return normalizeCommitMessageForStructure(commitMessage, "subjectBodyFooter");
|
|
49
124
|
}
|
|
50
125
|
if (containsTicketLikeId(subject)) {
|
|
51
|
-
return
|
|
126
|
+
return normalizeCommitMessageForStructure(commitMessage, "subjectBodyFooter");
|
|
52
127
|
}
|
|
53
128
|
const ticket = extractTicketLikeIdFromBranch(branchName);
|
|
54
129
|
if (!ticket) {
|
|
55
|
-
return
|
|
130
|
+
return normalizeCommitMessageForStructure(commitMessage, "subjectBodyFooter");
|
|
56
131
|
}
|
|
132
|
+
let updatedSubject;
|
|
57
133
|
const typedMatch = subject.match(typedCommitSubjectPattern);
|
|
58
134
|
if (typedMatch) {
|
|
59
135
|
const type = typedMatch[1] ?? "";
|
|
60
136
|
const scope = typedMatch[2] ?? "";
|
|
61
137
|
const breaking = typedMatch[3] ?? "";
|
|
62
138
|
const summary = (typedMatch[4] ?? "").trim();
|
|
63
|
-
|
|
139
|
+
updatedSubject = `${type}${scope}${breaking}: ${ticket} ${summary}`;
|
|
64
140
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
141
|
+
else {
|
|
142
|
+
const gitmojiMatch = subject.match(gitmojiSubjectPattern);
|
|
143
|
+
if (gitmojiMatch) {
|
|
144
|
+
const emoji = subject.split(/\s+/u)[0] ?? "";
|
|
145
|
+
const summary = gitmojiMatch[1]?.trim() ?? "";
|
|
146
|
+
updatedSubject = `${emoji} ${ticket} ${summary}`.trim();
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
updatedSubject = `${ticket} ${subject}`;
|
|
150
|
+
}
|
|
70
151
|
}
|
|
71
|
-
return
|
|
152
|
+
return replaceCommitMessageSubject(commitMessage, updatedSubject);
|
|
72
153
|
}
|
|
73
154
|
function validateAndFinalizeCommitMessage(input) {
|
|
74
|
-
|
|
155
|
+
const structure = input.config.commitMessage.structure;
|
|
156
|
+
const structureIssues = validateCommitMessageStructure(input.rawCommitMessage, structure);
|
|
157
|
+
if (structureIssues.length > 0) {
|
|
158
|
+
if (structureIssues.includes("response must not be empty")) {
|
|
159
|
+
throw new CommitMessageFlowError("COMMIT_MESSAGE_REQUIRED", "Commit message must not be empty.");
|
|
160
|
+
}
|
|
161
|
+
throw new CommitMessageFlowError("COMMIT_MESSAGE_INVALID", `Commit message validation failed: ${structureIssues.join("; ")}`);
|
|
162
|
+
}
|
|
163
|
+
let commitMessage = normalizeCommitMessageForStructure(input.rawCommitMessage, structure);
|
|
75
164
|
if (!commitMessage) {
|
|
76
165
|
throw new CommitMessageFlowError("COMMIT_MESSAGE_REQUIRED", "Commit message must not be empty.");
|
|
77
166
|
}
|
|
@@ -80,16 +169,17 @@ function validateAndFinalizeCommitMessage(input) {
|
|
|
80
169
|
}
|
|
81
170
|
const issues = [];
|
|
82
171
|
const protocol = input.config.commitMessage.validation.protocol;
|
|
172
|
+
const subject = normalizeCommitMessage(commitMessage);
|
|
83
173
|
if (protocol !== "none") {
|
|
84
|
-
issues.push(...validateCommitMessageProtocol(commitMessage, protocol));
|
|
174
|
+
issues.push(...validateCommitMessageProtocol(subject, input.config.commitMessage.language, protocol));
|
|
85
175
|
}
|
|
86
|
-
if (input.config.commitMessage.validation.requireTicketIdInMessage && !containsTicketLikeId(
|
|
176
|
+
if (input.config.commitMessage.validation.requireTicketIdInMessage && !containsTicketLikeId(subject)) {
|
|
87
177
|
issues.push("commit message must contain a ticket-like ID");
|
|
88
178
|
}
|
|
89
179
|
if (input.config.commitMessage.validation.pattern) {
|
|
90
180
|
const regex = new RegExp(input.config.commitMessage.validation.pattern);
|
|
91
|
-
if (!regex.test(
|
|
92
|
-
issues.push("commit message does not match the configured validation pattern");
|
|
181
|
+
if (!regex.test(subject)) {
|
|
182
|
+
issues.push("commit message subject does not match the configured validation pattern");
|
|
93
183
|
}
|
|
94
184
|
}
|
|
95
185
|
if (issues.length > 0) {
|
|
@@ -97,6 +187,28 @@ function validateAndFinalizeCommitMessage(input) {
|
|
|
97
187
|
}
|
|
98
188
|
return commitMessage;
|
|
99
189
|
}
|
|
190
|
+
function validateLanguageText(raw, language, label, options = {}) {
|
|
191
|
+
const candidate = options.allowChineseInBackticks ? raw.replace(inlineCodePattern, " ") : raw;
|
|
192
|
+
const definition = outputLanguageDefinitions[language];
|
|
193
|
+
if (definition.validationMode === "script") {
|
|
194
|
+
return definition.requiredPattern?.test(candidate)
|
|
195
|
+
? []
|
|
196
|
+
: [`${label} must contain ${definition.requiredDescription} when language is ${language}`];
|
|
197
|
+
}
|
|
198
|
+
const issues = [];
|
|
199
|
+
if (definition.validationMode === "english" && !englishLetterPattern.test(candidate)) {
|
|
200
|
+
issues.push(`${label} must contain English letters when language is en`);
|
|
201
|
+
}
|
|
202
|
+
if (definition.validationMode === "latin" && !latinLetterPattern.test(candidate)) {
|
|
203
|
+
issues.push(`${label} must contain Latin letters when language is ${language}`);
|
|
204
|
+
}
|
|
205
|
+
for (const disallowedScript of disallowedNonLatinScripts) {
|
|
206
|
+
if (disallowedScript.pattern.test(candidate)) {
|
|
207
|
+
issues.push(`${label} must not contain ${disallowedScript.description} when language is ${language}`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return issues;
|
|
211
|
+
}
|
|
100
212
|
function extractTicketLikeIdFromBranch(branchName) {
|
|
101
213
|
const matches = [...branchName.matchAll(branchTicketLikeIdPattern)].map((match) => match[0]);
|
|
102
214
|
return matches.length > 0 ? matches[matches.length - 1] : undefined;
|
|
@@ -105,22 +217,171 @@ function containsTicketLikeId(raw) {
|
|
|
105
217
|
const subject = normalizeCommitMessage(raw);
|
|
106
218
|
return subject.length > 0 && ticketLikeIdPatterns.some((pattern) => pattern.test(subject));
|
|
107
219
|
}
|
|
108
|
-
function
|
|
220
|
+
function validateCommitMessageStructure(raw, structure) {
|
|
221
|
+
const issues = [];
|
|
222
|
+
const trimmed = raw.trim();
|
|
223
|
+
if (!trimmed) {
|
|
224
|
+
return ["response must not be empty"];
|
|
225
|
+
}
|
|
226
|
+
if (trimmed.includes("```")) {
|
|
227
|
+
issues.push("response must not use markdown code fences");
|
|
228
|
+
}
|
|
229
|
+
const sections = parseCommitMessageSections(raw);
|
|
230
|
+
issues.push(...sections.issues);
|
|
231
|
+
if (!sections.subject) {
|
|
232
|
+
issues.push("response must contain a non-empty subject after normalization");
|
|
233
|
+
}
|
|
234
|
+
if (structure === "subjectOnly") {
|
|
235
|
+
const nonEmptyLines = trimmed
|
|
236
|
+
.split(/\r?\n/)
|
|
237
|
+
.map((line) => line.trim())
|
|
238
|
+
.filter((line) => line.length > 0);
|
|
239
|
+
if (nonEmptyLines.length !== 1) {
|
|
240
|
+
issues.push("response must contain exactly one non-empty line");
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
if (structure === "subjectBody" && sections.hasFooter) {
|
|
244
|
+
issues.push("response must not include a footer when commitMessage.structure is subjectBody");
|
|
245
|
+
}
|
|
246
|
+
return issues;
|
|
247
|
+
}
|
|
248
|
+
function validateCommitMessageProtocol(commitMessage, language, protocol) {
|
|
109
249
|
if (protocol === "gitmoji") {
|
|
110
|
-
return
|
|
250
|
+
return validateGitmojiSubject(commitMessage, language);
|
|
111
251
|
}
|
|
112
|
-
|
|
252
|
+
return validateTypedCommitSubject(commitMessage, language, protocol === "semantic" ? "Semantic Commits" : "Conventional Commits");
|
|
253
|
+
}
|
|
254
|
+
function validateTypedCommitSubject(subject, language, protocolDisplayName) {
|
|
255
|
+
const typedMatch = subject.match(typedCommitSubjectPattern);
|
|
113
256
|
if (!typedMatch) {
|
|
114
257
|
return [
|
|
115
|
-
|
|
258
|
+
protocolDisplayName === "Semantic Commits"
|
|
116
259
|
? "subject must match Semantic Commits format"
|
|
117
260
|
: "subject must match Conventional Commits format"
|
|
118
261
|
];
|
|
119
262
|
}
|
|
120
263
|
const type = typedMatch[1] ?? "";
|
|
121
|
-
|
|
122
|
-
|
|
264
|
+
const summary = (typedMatch[4] ?? "").trim();
|
|
265
|
+
const issues = [];
|
|
266
|
+
if (protocolDisplayName === "Conventional Commits" && !conventionalTypes.has(type)) {
|
|
267
|
+
issues.push(`unknown Conventional Commits type: ${type}`);
|
|
268
|
+
}
|
|
269
|
+
if (!summary) {
|
|
270
|
+
issues.push("summary must not be empty");
|
|
271
|
+
return issues;
|
|
272
|
+
}
|
|
273
|
+
const summaryWithoutLeadingTicket = summary.replace(leadingTicketLikeIdPattern, "").trim() || summary;
|
|
274
|
+
issues.push(...validateLanguageText(summaryWithoutLeadingTicket, language, "summary"));
|
|
275
|
+
return issues;
|
|
276
|
+
}
|
|
277
|
+
function validateGitmojiSubject(subject, language) {
|
|
278
|
+
const gitmojiMatch = subject.match(gitmojiSubjectPattern);
|
|
279
|
+
if (!gitmojiMatch) {
|
|
280
|
+
return ["subject must match Gitmoji format"];
|
|
281
|
+
}
|
|
282
|
+
const summary = (gitmojiMatch[1] ?? "").trim();
|
|
283
|
+
if (!summary) {
|
|
284
|
+
return ["summary must not be empty"];
|
|
285
|
+
}
|
|
286
|
+
const summaryWithoutLeadingTicket = summary.replace(leadingTicketLikeIdPattern, "").trim() || summary;
|
|
287
|
+
return validateLanguageText(summaryWithoutLeadingTicket, language, "summary");
|
|
288
|
+
}
|
|
289
|
+
function parseCommitMessageSections(raw) {
|
|
290
|
+
const trimmed = raw.trim();
|
|
291
|
+
if (!trimmed) {
|
|
292
|
+
return {
|
|
293
|
+
subject: "",
|
|
294
|
+
body: "",
|
|
295
|
+
footer: "",
|
|
296
|
+
hasFooter: false,
|
|
297
|
+
normalized: "",
|
|
298
|
+
issues: []
|
|
299
|
+
};
|
|
300
|
+
}
|
|
301
|
+
const lines = trimmed.split(/\r?\n/).map((line) => line.trimEnd());
|
|
302
|
+
const subjectIndex = lines.findIndex((line) => line.trim().length > 0);
|
|
303
|
+
if (subjectIndex === -1) {
|
|
304
|
+
return {
|
|
305
|
+
subject: "",
|
|
306
|
+
body: "",
|
|
307
|
+
footer: "",
|
|
308
|
+
hasFooter: false,
|
|
309
|
+
normalized: "",
|
|
310
|
+
issues: []
|
|
311
|
+
};
|
|
123
312
|
}
|
|
124
|
-
|
|
313
|
+
const subject = normalizeCommitMessage(lines[subjectIndex] ?? "");
|
|
314
|
+
const linesAfterSubject = lines.slice(subjectIndex + 1);
|
|
315
|
+
const hasContentAfterSubject = linesAfterSubject.some((line) => line.trim().length > 0);
|
|
316
|
+
const issues = [];
|
|
317
|
+
if (!hasContentAfterSubject) {
|
|
318
|
+
return {
|
|
319
|
+
subject,
|
|
320
|
+
body: "",
|
|
321
|
+
footer: "",
|
|
322
|
+
hasFooter: false,
|
|
323
|
+
normalized: subject,
|
|
324
|
+
issues
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
if ((linesAfterSubject[0] ?? "").trim().length > 0) {
|
|
328
|
+
issues.push("body or footer must be separated from the subject by a blank line");
|
|
329
|
+
}
|
|
330
|
+
const contentLines = trimBlankLines(linesAfterSubject);
|
|
331
|
+
const paragraphs = splitParagraphs(contentLines);
|
|
332
|
+
const footerParagraph = paragraphs.length > 0 && isFooterParagraph(paragraphs[paragraphs.length - 1] ?? [])
|
|
333
|
+
? paragraphs[paragraphs.length - 1]
|
|
334
|
+
: undefined;
|
|
335
|
+
const bodyParagraphs = footerParagraph ? paragraphs.slice(0, -1) : paragraphs;
|
|
336
|
+
const body = bodyParagraphs
|
|
337
|
+
.map((paragraph) => paragraph.join("\n").trim())
|
|
338
|
+
.filter(Boolean)
|
|
339
|
+
.join("\n\n");
|
|
340
|
+
const footer = footerParagraph ? footerParagraph.join("\n").trim() : "";
|
|
341
|
+
const normalized = [subject, body, footer].filter((section) => section.length > 0).join("\n\n");
|
|
342
|
+
return {
|
|
343
|
+
subject,
|
|
344
|
+
body,
|
|
345
|
+
footer,
|
|
346
|
+
hasFooter: footer.length > 0,
|
|
347
|
+
normalized,
|
|
348
|
+
issues
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
function replaceCommitMessageSubject(raw, subject) {
|
|
352
|
+
const sections = parseCommitMessageSections(raw);
|
|
353
|
+
return [subject, sections.body, sections.footer].filter((section) => section.length > 0).join("\n\n");
|
|
354
|
+
}
|
|
355
|
+
function trimBlankLines(lines) {
|
|
356
|
+
let start = 0;
|
|
357
|
+
let end = lines.length;
|
|
358
|
+
while (start < end && lines[start]?.trim().length === 0) {
|
|
359
|
+
start += 1;
|
|
360
|
+
}
|
|
361
|
+
while (end > start && lines[end - 1]?.trim().length === 0) {
|
|
362
|
+
end -= 1;
|
|
363
|
+
}
|
|
364
|
+
return lines.slice(start, end);
|
|
365
|
+
}
|
|
366
|
+
function splitParagraphs(lines) {
|
|
367
|
+
const paragraphs = [];
|
|
368
|
+
let current = [];
|
|
369
|
+
for (const line of lines) {
|
|
370
|
+
if (line.trim().length === 0) {
|
|
371
|
+
if (current.length > 0) {
|
|
372
|
+
paragraphs.push(current);
|
|
373
|
+
current = [];
|
|
374
|
+
}
|
|
375
|
+
continue;
|
|
376
|
+
}
|
|
377
|
+
current.push(line);
|
|
378
|
+
}
|
|
379
|
+
if (current.length > 0) {
|
|
380
|
+
paragraphs.push(current);
|
|
381
|
+
}
|
|
382
|
+
return paragraphs;
|
|
383
|
+
}
|
|
384
|
+
function isFooterParagraph(lines) {
|
|
385
|
+
return lines.length > 0 && lines.every((line) => footerLinePattern.test(line.trim()));
|
|
125
386
|
}
|
|
126
387
|
//# sourceMappingURL=protocol.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/commitMessage/protocol.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/commitMessage/protocol.ts"],"names":[],"mappings":"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"}
|
package/out/config/cliArgs.js
CHANGED
|
@@ -51,6 +51,12 @@ function parseCliArgs(argv) {
|
|
|
51
51
|
language: (0, schema_1.parseOutputLanguage)(requireFlagValue(name, value), "--commit-language")
|
|
52
52
|
};
|
|
53
53
|
break;
|
|
54
|
+
case "commit-message-structure":
|
|
55
|
+
config.commitMessage = {
|
|
56
|
+
...config.commitMessage,
|
|
57
|
+
structure: (0, schema_1.parseCommitMessageStructure)(requireFlagValue(name, value), "--commit-message-structure")
|
|
58
|
+
};
|
|
59
|
+
break;
|
|
54
60
|
case "commit-message":
|
|
55
61
|
config.commitMessage = { ...config.commitMessage, input: requireFlagValue(name, value) };
|
|
56
62
|
break;
|
|
@@ -117,6 +123,12 @@ function parseCliArgs(argv) {
|
|
|
117
123
|
case "request-timeout-ms":
|
|
118
124
|
config.connection = { ...config.connection, requestTimeoutMs: parseNumberFlag(name, value) };
|
|
119
125
|
break;
|
|
126
|
+
case "llm-response-correction-retry-count":
|
|
127
|
+
config.connection = {
|
|
128
|
+
...config.connection,
|
|
129
|
+
llmResponseCorrectionRetryCount: parseNumberFlag(name, value)
|
|
130
|
+
};
|
|
131
|
+
break;
|
|
120
132
|
case "push-timeout-ms":
|
|
121
133
|
config.git = { ...config.git, pushTimeoutMs: parseNumberFlag(name, value) };
|
|
122
134
|
break;
|
|
@@ -153,6 +165,12 @@ function parseCliArgs(argv) {
|
|
|
153
165
|
case "enable-pass-history":
|
|
154
166
|
config.passHistory = { ...config.passHistory, enabled: parseBooleanFlag(name, value) };
|
|
155
167
|
break;
|
|
168
|
+
case "pass-history-write-stage":
|
|
169
|
+
config.passHistory = {
|
|
170
|
+
...config.passHistory,
|
|
171
|
+
writeStage: (0, schema_1.parsePassHistoryWriteStage)(requireFlagValue(name, value), "--pass-history-write-stage")
|
|
172
|
+
};
|
|
173
|
+
break;
|
|
156
174
|
case "pass-history-dir":
|
|
157
175
|
config.passHistory = { ...config.passHistory, dirPath: requireFlagValue(name, value) };
|
|
158
176
|
break;
|
|
@@ -189,6 +207,21 @@ function parseCliArgs(argv) {
|
|
|
189
207
|
ai: { ...config.reporting?.ai, enabled: false }
|
|
190
208
|
};
|
|
191
209
|
break;
|
|
210
|
+
case "enable-pull-request-summary":
|
|
211
|
+
config.pullRequestSummary = { ...config.pullRequestSummary, enabled: parseBooleanFlag(name, value) };
|
|
212
|
+
break;
|
|
213
|
+
case "pull-request-summary-language":
|
|
214
|
+
config.pullRequestSummary = {
|
|
215
|
+
...config.pullRequestSummary,
|
|
216
|
+
language: (0, schema_1.parseOutputLanguage)(requireFlagValue(name, value), "--pull-request-summary-language")
|
|
217
|
+
};
|
|
218
|
+
break;
|
|
219
|
+
case "pull-request-summary-output-dir":
|
|
220
|
+
config.pullRequestSummary = { ...config.pullRequestSummary, outputDirPath: requireFlagValue(name, value) };
|
|
221
|
+
break;
|
|
222
|
+
case "pull-request-summary-prompt":
|
|
223
|
+
config.pullRequestSummary = { ...config.pullRequestSummary, prompt: requireFlagValue(name, value) };
|
|
224
|
+
break;
|
|
192
225
|
default:
|
|
193
226
|
throw new Error(`Unknown CLI flag: --${name}`);
|
|
194
227
|
}
|