smart-commit-copilot-cli 0.1.7 → 0.1.9
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 +44 -0
- package/README.md +39 -15
- package/docs/configuration.md +82 -22
- package/docs/contracts.md +67 -6
- package/docs/getting-started.md +4 -1
- package/docs/publish.md +1 -1
- package/docs/releases/0.1.7-draft.md +8 -8
- package/docs/releases/0.1.8-draft.md +80 -0
- package/docs/releases/0.1.9-draft.md +69 -0
- package/docs/verification.md +1 -0
- package/examples/config/smart-commit.json +28 -8
- package/out/cliApp.js +51 -12
- package/out/cliApp.js.map +1 -1
- package/out/commands/bridge.js +117 -46
- package/out/commands/bridge.js.map +1 -1
- package/out/commands/pullRequest.js +176 -0
- package/out/commands/pullRequest.js.map +1 -0
- package/out/commitMessage/protocol.js +6 -1
- package/out/commitMessage/protocol.js.map +1 -1
- package/out/config/cliArgs.js +103 -10
- package/out/config/cliArgs.js.map +1 -1
- package/out/config/constants.js +2 -1
- package/out/config/constants.js.map +1 -1
- package/out/config/env.js +79 -10
- package/out/config/env.js.map +1 -1
- package/out/config/file.js +98 -11
- package/out/config/file.js.map +1 -1
- package/out/config/legacySmartCommit.js +104 -21
- package/out/config/legacySmartCommit.js.map +1 -1
- package/out/config/merge.js +17 -3
- package/out/config/merge.js.map +1 -1
- package/out/config/schema.js +65 -10
- package/out/config/schema.js.map +1 -1
- package/out/contracts.js +152 -11
- package/out/contracts.js.map +1 -1
- package/out/git.js +108 -2
- package/out/git.js.map +1 -1
- package/out/output.js +5 -4
- package/out/output.js.map +1 -1
- package/out/pullRequest/api.js +528 -0
- package/out/pullRequest/api.js.map +1 -0
- package/out/pullRequest/client.js +17 -0
- package/out/pullRequest/client.js.map +1 -0
- package/out/pullRequest/config.js +18 -0
- package/out/pullRequest/config.js.map +1 -0
- package/out/pullRequest/contentPrompt.js +116 -0
- package/out/pullRequest/contentPrompt.js.map +1 -0
- package/out/pullRequest/contentService.js +77 -0
- package/out/pullRequest/contentService.js.map +1 -0
- package/out/pullRequest/index.js +25 -0
- package/out/pullRequest/index.js.map +1 -0
- package/out/pullRequest/platform.js +101 -0
- package/out/pullRequest/platform.js.map +1 -0
- package/out/pullRequest/redact.js +15 -0
- package/out/pullRequest/redact.js.map +1 -0
- package/out/pullRequest/workflow.js +153 -0
- package/out/pullRequest/workflow.js.map +1 -0
- package/out/renderOutput.js +29 -4
- package/out/renderOutput.js.map +1 -1
- package/out/reporting/aggregate.js +1 -1
- package/out/reporting/aggregate.js.map +1 -1
- package/out/reporting/mockProvider.js +5 -1
- package/out/reporting/mockProvider.js.map +1 -1
- package/out/reporting/openaiProvider.js +5 -1
- package/out/reporting/openaiProvider.js.map +1 -1
- package/out/reporting/prompt.js +145 -20
- package/out/reporting/prompt.js.map +1 -1
- package/out/reporting/render.js +24 -22
- package/out/reporting/render.js.map +1 -1
- package/out/reporting/timeWindow.js +101 -36
- package/out/reporting/timeWindow.js.map +1 -1
- package/out/reporting/types.js +3 -0
- package/out/reporting/types.js.map +1 -1
- package/out/review/detailLocator.js +268 -0
- package/out/review/detailLocator.js.map +1 -0
- package/out/review/index.js +4 -3
- package/out/review/index.js.map +1 -1
- package/out/review/mockProvider.js +25 -1
- package/out/review/mockProvider.js.map +1 -1
- package/out/review/parser.js +14 -1
- package/out/review/parser.js.map +1 -1
- package/out/{pullRequestSummary → stagedChangeSummary}/index.js +10 -10
- package/out/stagedChangeSummary/index.js.map +1 -0
- package/out/{pullRequestSummary → stagedChangeSummary}/mockProvider.js +5 -5
- package/out/stagedChangeSummary/mockProvider.js.map +1 -0
- package/out/stagedChangeSummary/openaiProvider.js +19 -0
- package/out/stagedChangeSummary/openaiProvider.js.map +1 -0
- package/out/{pullRequestSummary → stagedChangeSummary}/prompt.js +28 -12
- package/out/stagedChangeSummary/prompt.js.map +1 -0
- package/out/stagedChangeSummary/provider.js.map +1 -0
- package/out/{pullRequestSummary → stagedChangeSummary}/render.js +12 -12
- package/out/stagedChangeSummary/render.js.map +1 -0
- package/package.json +1 -1
- package/out/pullRequestSummary/index.js.map +0 -1
- package/out/pullRequestSummary/mockProvider.js.map +0 -1
- package/out/pullRequestSummary/openaiProvider.js +0 -19
- package/out/pullRequestSummary/openaiProvider.js.map +0 -1
- package/out/pullRequestSummary/prompt.js.map +0 -1
- package/out/pullRequestSummary/provider.js.map +0 -1
- package/out/pullRequestSummary/render.js.map +0 -1
- /package/out/{pullRequestSummary → stagedChangeSummary}/provider.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/reporting/aggregate.ts"],"names":[],"mappings":";;AAIA,4CAoCC;AAtCD,6CAAmF;AAEnF,SAAgB,gBAAgB,CAAC,KAAoD;IACnF,MAAM,MAAM,GAAG,IAAA,oCAAuB,EAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/reporting/aggregate.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,11 @@ function createMockReportProvider(config = {}) {
|
|
|
9
9
|
if (mode === "invalid") {
|
|
10
10
|
return " ";
|
|
11
11
|
}
|
|
12
|
-
const headline = input.language === "zh"
|
|
12
|
+
const headline = input.language === "zh-cn"
|
|
13
|
+
? "# AI 增强工作报告"
|
|
14
|
+
: input.language === "zh-tw"
|
|
15
|
+
? "# AI 增強工作報告"
|
|
16
|
+
: "# AI Enhanced Work Report";
|
|
13
17
|
return [
|
|
14
18
|
headline,
|
|
15
19
|
"",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mockProvider.js","sourceRoot":"","sources":["../../src/reporting/mockProvider.ts"],"names":[],"mappings":";;AAEA,
|
|
1
|
+
{"version":3,"file":"mockProvider.js","sourceRoot":"","sources":["../../src/reporting/mockProvider.ts"],"names":[],"mappings":";;AAEA,4DA0BC;AA1BD,SAAgB,wBAAwB,CAAC,SAA4B,EAAE;IACrE,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,KAAK,CAAC,cAAc,CAAC,KAA4B;YAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAE7G,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,KAAK,OAAO;gBACzC,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,OAAO;oBAC1B,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,2BAA2B,CAAC;YAClC,OAAO;gBACL,QAAQ;gBACR,EAAE;gBACF,WAAW,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE;gBACjD,EAAE;gBACF,YAAY,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE;gBACrC,EAAE;gBACF,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;aACvF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -9,7 +9,11 @@ function createOpenAICompatibleReportProvider(config) {
|
|
|
9
9
|
async generateReport(input) {
|
|
10
10
|
return (0, openaiCompatible_1.requestOpenAICompatibleText)({
|
|
11
11
|
config,
|
|
12
|
-
messages: (0, prompt_1.buildReportMessages)(
|
|
12
|
+
messages: (0, prompt_1.buildReportMessages)({
|
|
13
|
+
facts: input.facts,
|
|
14
|
+
customPrompt: input.customPrompt,
|
|
15
|
+
maxInputChars: config.reporting.maxInputChars
|
|
16
|
+
}),
|
|
13
17
|
temperature: 0.2,
|
|
14
18
|
taskLabel: "report"
|
|
15
19
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openaiProvider.js","sourceRoot":"","sources":["../../src/reporting/openaiProvider.ts"],"names":[],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"openaiProvider.js","sourceRoot":"","sources":["../../src/reporting/openaiProvider.ts"],"names":[],"mappings":";;AAKA,oFAgBC;AApBD,0DAAkE;AAClE,qCAA+C;AAG/C,SAAgB,oCAAoC,CAAC,MAAiB;IACpE,OAAO;QACL,IAAI,EAAE,mBAAmB;QACzB,KAAK,CAAC,cAAc,CAAC,KAA4B;YAC/C,OAAO,IAAA,8CAA2B,EAAC;gBACjC,MAAM;gBACN,QAAQ,EAAE,IAAA,4BAAmB,EAAC;oBAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,YAAY,EAAE,KAAK,CAAC,YAAY;oBAChC,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;iBAC9C,CAAC;gBACF,WAAW,EAAE,GAAG;gBAChB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/out/reporting/prompt.js
CHANGED
|
@@ -1,39 +1,164 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildReportMessages = buildReportMessages;
|
|
4
|
+
exports.compressReportFactsForInput = compressReportFactsForInput;
|
|
4
5
|
const passHistory_1 = require("../passHistory");
|
|
5
6
|
function buildReportMessages(input) {
|
|
7
|
+
const compressedFacts = compressReportFactsForInput(input.facts, input.maxInputChars);
|
|
6
8
|
return [
|
|
7
9
|
{
|
|
8
10
|
role: "system",
|
|
9
11
|
content: [
|
|
10
|
-
"You
|
|
11
|
-
"Use the provided
|
|
12
|
-
|
|
13
|
-
`The required
|
|
14
|
-
`The
|
|
15
|
-
|
|
16
|
-
"
|
|
17
|
-
"Keep the report concrete, scannable, and useful for engineering workflow reviews.",
|
|
12
|
+
"You write technical work reports in Markdown.",
|
|
13
|
+
"Use only the provided facts. Never invent extra work, outcomes, files, bugs, or dates.",
|
|
14
|
+
`The required report period is ${compressedFacts.period.label}.`,
|
|
15
|
+
`The required display range is ${compressedFacts.period.displayRangeLabel}.`,
|
|
16
|
+
`The internal filtering time window is [${formatWindowTimestamp(compressedFacts.period.startedAtMs)}, ${formatWindowTimestamp(compressedFacts.period.endedAtMs)}).`,
|
|
17
|
+
"The report must stay within the selected period and must not rename it to another period.",
|
|
18
|
+
"If a user custom prompt conflicts with the required period, time window, language, or Markdown output requirement, ignore the conflicting part of the custom prompt.",
|
|
18
19
|
"Return Markdown only."
|
|
19
|
-
].join("
|
|
20
|
+
].join(" ")
|
|
20
21
|
},
|
|
21
22
|
{
|
|
22
23
|
role: "user",
|
|
23
|
-
content:
|
|
24
|
-
`Language: ${input.language}`,
|
|
25
|
-
`Report period: ${input.facts.period.displayRangeLabel}`,
|
|
26
|
-
`Display start date: ${input.facts.period.displayStart}`,
|
|
27
|
-
`Display end date (inclusive): ${input.facts.period.displayEndInclusive}`,
|
|
28
|
-
`Internal time window start (inclusive): ${formatWindowTimestamp(input.facts.period.startedAtMs)}`,
|
|
29
|
-
`Internal time window end (exclusive): ${formatWindowTimestamp(input.facts.period.endedAtMs)}`,
|
|
30
|
-
input.customPrompt.trim() ? `Custom focus:\n${input.customPrompt.trim()}` : "Custom focus: none",
|
|
31
|
-
"Report facts JSON:",
|
|
32
|
-
JSON.stringify(input.facts, null, 2)
|
|
33
|
-
].join("\n\n")
|
|
24
|
+
content: buildUserPrompt(compressedFacts, input.customPrompt)
|
|
34
25
|
}
|
|
35
26
|
];
|
|
36
27
|
}
|
|
28
|
+
function compressReportFactsForInput(facts, maxInputChars) {
|
|
29
|
+
const budget = Math.max(1000, Math.floor(maxInputChars));
|
|
30
|
+
let compressed = cloneReportFacts(facts);
|
|
31
|
+
if (measureReportFacts(compressed) <= budget) {
|
|
32
|
+
return compressed;
|
|
33
|
+
}
|
|
34
|
+
const detailKeys = ["highlights", "risks", "summaryThemes"];
|
|
35
|
+
let detailLimit = Math.max(...detailKeys.map((key) => compressed[key].length));
|
|
36
|
+
while (detailLimit > 1 && measureReportFacts(compressed) > budget) {
|
|
37
|
+
detailLimit -= 1;
|
|
38
|
+
compressed = limitReportDetailArrays(compressed, detailLimit);
|
|
39
|
+
}
|
|
40
|
+
if (measureReportFacts(compressed) > budget) {
|
|
41
|
+
compressed = truncateReportFactTextFields(compressed, budget);
|
|
42
|
+
}
|
|
43
|
+
while (detailLimit > 0 && measureReportFacts(compressed) > budget) {
|
|
44
|
+
detailLimit -= 1;
|
|
45
|
+
compressed = truncateReportFactTextFields(limitReportDetailArrays(compressed, detailLimit), budget);
|
|
46
|
+
}
|
|
47
|
+
return markReportFactsCompressed(compressed, facts);
|
|
48
|
+
}
|
|
49
|
+
function cloneReportFacts(facts) {
|
|
50
|
+
return JSON.parse(JSON.stringify(facts));
|
|
51
|
+
}
|
|
52
|
+
function markReportFactsCompressed(compressed, original) {
|
|
53
|
+
const removedHighlights = original.highlights.length - compressed.highlights.length;
|
|
54
|
+
const removedRisks = original.risks.length - compressed.risks.length;
|
|
55
|
+
const removedThemes = original.summaryThemes.length - compressed.summaryThemes.length;
|
|
56
|
+
return {
|
|
57
|
+
...compressed,
|
|
58
|
+
inputCompressed: true,
|
|
59
|
+
inputCompressionNote: [
|
|
60
|
+
"Report facts were compressed to fit reporting.maxInputChars.",
|
|
61
|
+
`Removed detail items: highlights=${Math.max(removedHighlights, 0)}, risks=${Math.max(removedRisks, 0)}, summaryThemes=${Math.max(removedThemes, 0)}.`,
|
|
62
|
+
"Long text fields may be truncated.",
|
|
63
|
+
"Core period, totals, repository names, and top-count fields were preserved."
|
|
64
|
+
].join(" ")
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function limitReportDetailArrays(facts, detailLimit) {
|
|
68
|
+
return {
|
|
69
|
+
...facts,
|
|
70
|
+
highlights: facts.highlights.slice(0, Math.min(facts.highlights.length, detailLimit)),
|
|
71
|
+
risks: facts.risks.slice(0, Math.min(facts.risks.length, detailLimit)),
|
|
72
|
+
summaryThemes: facts.summaryThemes.slice(0, Math.min(facts.summaryThemes.length, detailLimit))
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function truncateReportFactTextFields(facts, budget) {
|
|
76
|
+
const textLimits = [1000, 500, 250, 120, 60, 30, 10];
|
|
77
|
+
let current = facts;
|
|
78
|
+
for (const limit of textLimits) {
|
|
79
|
+
current = truncateReportFactTextFieldsToLimit(current, limit);
|
|
80
|
+
if (measureReportFacts(current) <= budget) {
|
|
81
|
+
return current;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return current;
|
|
85
|
+
}
|
|
86
|
+
function truncateReportFactTextFieldsToLimit(facts, maxLength) {
|
|
87
|
+
return {
|
|
88
|
+
...facts,
|
|
89
|
+
highlights: facts.highlights.map((item) => ({
|
|
90
|
+
...item,
|
|
91
|
+
commitMessage: truncateText(item.commitMessage, maxLength),
|
|
92
|
+
reviewSummary: truncateText(item.reviewSummary, maxLength)
|
|
93
|
+
})),
|
|
94
|
+
risks: facts.risks.map((item) => ({
|
|
95
|
+
...item,
|
|
96
|
+
commitMessage: truncateText(item.commitMessage, maxLength),
|
|
97
|
+
reviewSummary: truncateText(item.reviewSummary, maxLength),
|
|
98
|
+
reason: truncateText(item.reason, maxLength)
|
|
99
|
+
})),
|
|
100
|
+
summaryThemes: facts.summaryThemes.map((item) => ({
|
|
101
|
+
...item,
|
|
102
|
+
summary: truncateText(item.summary, maxLength)
|
|
103
|
+
}))
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
function truncateText(value, maxLength) {
|
|
107
|
+
if (value.length <= maxLength) {
|
|
108
|
+
return value;
|
|
109
|
+
}
|
|
110
|
+
const suffix = "... [truncated]";
|
|
111
|
+
return `${value.slice(0, Math.max(0, maxLength - suffix.length))}${suffix}`;
|
|
112
|
+
}
|
|
113
|
+
function measureReportFacts(facts) {
|
|
114
|
+
return JSON.stringify(facts, null, 2).length;
|
|
115
|
+
}
|
|
116
|
+
function buildUserPrompt(facts, customPrompt) {
|
|
117
|
+
const customPromptSection = customPrompt.trim()
|
|
118
|
+
? [
|
|
119
|
+
"User custom report prompt:",
|
|
120
|
+
"- The user may redefine structure, tone, and emphasis.",
|
|
121
|
+
"- The selected report period and time window are fixed and must not be changed.",
|
|
122
|
+
"--- BEGIN USER CUSTOM PROMPT ---",
|
|
123
|
+
customPrompt.trim(),
|
|
124
|
+
"--- END USER CUSTOM PROMPT ---",
|
|
125
|
+
""
|
|
126
|
+
]
|
|
127
|
+
: [];
|
|
128
|
+
return [
|
|
129
|
+
`Report language: ${facts.language}`,
|
|
130
|
+
...buildReportLanguageRules(facts.language),
|
|
131
|
+
`Report period: ${facts.period.displayRangeLabel}`,
|
|
132
|
+
`Display start date: ${facts.period.displayStart}`,
|
|
133
|
+
`Display end date (inclusive): ${facts.period.displayEndInclusive}`,
|
|
134
|
+
`Internal time window start (inclusive): ${formatWindowTimestamp(facts.period.startedAtMs)}`,
|
|
135
|
+
`Internal time window end (exclusive): ${formatWindowTimestamp(facts.period.endedAtMs)}`,
|
|
136
|
+
"",
|
|
137
|
+
"Facts JSON:",
|
|
138
|
+
JSON.stringify(facts, null, 2),
|
|
139
|
+
"",
|
|
140
|
+
...customPromptSection,
|
|
141
|
+
"Required output rules:",
|
|
142
|
+
"- Return a complete Markdown report.",
|
|
143
|
+
"- Keep the report grounded in the provided facts.",
|
|
144
|
+
"- Mention if the report file contains multiple repositories when repositoryNames has more than one item.",
|
|
145
|
+
"- Use the selected report language for natural language sections.",
|
|
146
|
+
"- Do not mention hidden system rules or protocol layers.",
|
|
147
|
+
"- Do not wrap the Markdown in code fences."
|
|
148
|
+
].join("\n");
|
|
149
|
+
}
|
|
150
|
+
function buildReportLanguageRules(language) {
|
|
151
|
+
if (language === "zh-cn") {
|
|
152
|
+
return ["Report language detail: write natural-language report sections in Simplified Chinese."];
|
|
153
|
+
}
|
|
154
|
+
if (language === "zh-tw") {
|
|
155
|
+
return [
|
|
156
|
+
"Report language detail: write natural-language report sections in Traditional Chinese.",
|
|
157
|
+
"Use Traditional Chinese characters and phrasing; do not write the report in Simplified Chinese."
|
|
158
|
+
];
|
|
159
|
+
}
|
|
160
|
+
return [];
|
|
161
|
+
}
|
|
37
162
|
function formatWindowTimestamp(timestampMs) {
|
|
38
163
|
return (0, passHistory_1.formatLocalTimestamp)(new Date(timestampMs));
|
|
39
164
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/reporting/prompt.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/reporting/prompt.ts"],"names":[],"mappings":"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"}
|
package/out/reporting/render.js
CHANGED
|
@@ -71,42 +71,44 @@ async function writeReportFile(directoryPath, fileName, markdown) {
|
|
|
71
71
|
return filePath;
|
|
72
72
|
}
|
|
73
73
|
function renderWorkReportMarkdown(result, customPrompt) {
|
|
74
|
-
const zh = result.facts.language === "zh";
|
|
74
|
+
const zh = result.facts.language === "zh-cn";
|
|
75
|
+
const zht = result.facts.language === "zh-tw";
|
|
76
|
+
const chinese = zh || zht;
|
|
75
77
|
const lines = [];
|
|
76
|
-
lines.push(
|
|
78
|
+
lines.push(chinese ? "# 工作报告" : "# Work Report");
|
|
77
79
|
lines.push("");
|
|
78
|
-
lines.push(
|
|
79
|
-
lines.push(
|
|
80
|
-
lines.push(
|
|
81
|
-
? `-
|
|
80
|
+
lines.push(chinese ? `- ${zht ? "週期" : "周期"}: ${result.facts.period.displayRangeLabel}` : `- Period: ${result.facts.period.displayRangeLabel}`);
|
|
81
|
+
lines.push(chinese ? `- ${zht ? "記錄數" : "记录数"}: ${result.facts.recordCount}` : `- Records: ${result.facts.recordCount}`);
|
|
82
|
+
lines.push(chinese
|
|
83
|
+
? `- ${zht ? "倉庫" : "仓库"}: ${result.facts.repositoryNames.length > 0 ? result.facts.repositoryNames.join(", ") : (zht ? "無" : "无")}`
|
|
82
84
|
: `- Repositories: ${result.facts.repositoryNames.length > 0 ? result.facts.repositoryNames.join(", ") : "None"}`);
|
|
83
85
|
lines.push("");
|
|
84
86
|
if (customPrompt.trim()) {
|
|
85
|
-
lines.push(
|
|
87
|
+
lines.push(chinese ? (zht ? "## 關注點" : "## 关注点") : "## Requested Focus");
|
|
86
88
|
lines.push("");
|
|
87
89
|
lines.push(customPrompt.trim());
|
|
88
90
|
lines.push("");
|
|
89
91
|
}
|
|
90
|
-
lines.push(
|
|
92
|
+
lines.push(chinese ? (zht ? "## 彙總" : "## 汇总") : "## Summary");
|
|
91
93
|
lines.push("");
|
|
92
|
-
lines.push(
|
|
93
|
-
? `-
|
|
94
|
+
lines.push(chinese
|
|
95
|
+
? `- ${zht ? "通過審查" : "通过评审"}: ${result.facts.totals.reviewPassed}`
|
|
94
96
|
: `- Review passed: ${result.facts.totals.reviewPassed}`);
|
|
95
|
-
lines.push(
|
|
97
|
+
lines.push(chinese
|
|
96
98
|
? `- 完成 commit: ${result.facts.totals.commitCompleted}`
|
|
97
99
|
: `- Commit completed: ${result.facts.totals.commitCompleted}`);
|
|
98
|
-
lines.push(
|
|
100
|
+
lines.push(chinese
|
|
99
101
|
? `- 完成 commit + push: ${result.facts.totals.commitPushCompleted}`
|
|
100
102
|
: `- Commit + push completed: ${result.facts.totals.commitPushCompleted}`);
|
|
101
|
-
lines.push(
|
|
102
|
-
? `-
|
|
103
|
+
lines.push(chinese
|
|
104
|
+
? `- ${zht ? "平均分數" : "平均分"}: ${result.facts.totals.averageScore ?? "N/A"}`
|
|
103
105
|
: `- Average score: ${result.facts.totals.averageScore ?? "N/A"}`);
|
|
104
|
-
lines.push(
|
|
105
|
-
? `- Diff
|
|
106
|
+
lines.push(chinese
|
|
107
|
+
? `- Diff ${zht ? "總字元數" : "总字符数"}: ${result.facts.totals.fullDiffCharsTotal}`
|
|
106
108
|
: `- Total diff chars: ${result.facts.totals.fullDiffCharsTotal}`);
|
|
107
109
|
lines.push("");
|
|
108
110
|
if (result.facts.highlights.length > 0) {
|
|
109
|
-
lines.push(
|
|
111
|
+
lines.push(chinese ? (zht ? "## 亮點記錄" : "## 亮点记录") : "## Highlights");
|
|
110
112
|
lines.push("");
|
|
111
113
|
for (const item of result.facts.highlights) {
|
|
112
114
|
lines.push(`- [${item.timestamp}] ${item.repositoryName} / ${item.branchName} / ${item.commitMessage} / ${item.score ?? "N/A"}`);
|
|
@@ -115,7 +117,7 @@ function renderWorkReportMarkdown(result, customPrompt) {
|
|
|
115
117
|
lines.push("");
|
|
116
118
|
}
|
|
117
119
|
if (result.facts.summaryThemes.length > 0) {
|
|
118
|
-
lines.push(
|
|
120
|
+
lines.push(chinese ? (zht ? "## 常見主題" : "## 常见主题") : "## Common Themes");
|
|
119
121
|
lines.push("");
|
|
120
122
|
for (const item of result.facts.summaryThemes) {
|
|
121
123
|
lines.push(`- ${item.summary} (${item.count})`);
|
|
@@ -123,7 +125,7 @@ function renderWorkReportMarkdown(result, customPrompt) {
|
|
|
123
125
|
lines.push("");
|
|
124
126
|
}
|
|
125
127
|
if (result.facts.risks.length > 0) {
|
|
126
|
-
lines.push(
|
|
128
|
+
lines.push(chinese ? (zht ? "## 風險提醒" : "## 风险提醒") : "## Risks");
|
|
127
129
|
lines.push("");
|
|
128
130
|
for (const item of result.facts.risks) {
|
|
129
131
|
lines.push(`- ${item.repositoryName} / ${item.branchName} / ${item.commitMessage}`);
|
|
@@ -131,9 +133,9 @@ function renderWorkReportMarkdown(result, customPrompt) {
|
|
|
131
133
|
}
|
|
132
134
|
lines.push("");
|
|
133
135
|
}
|
|
134
|
-
appendCountSection(lines,
|
|
135
|
-
appendCountSection(lines,
|
|
136
|
-
appendCountSection(lines,
|
|
136
|
+
appendCountSection(lines, chinese ? (zht ? "分支分佈" : "分支分布") : "Branches", result.facts.branches);
|
|
137
|
+
appendCountSection(lines, chinese ? (zht ? "提交訊息來源" : "提交消息来源") : "Commit Message Sources", result.facts.commitMessageSources);
|
|
138
|
+
appendCountSection(lines, chinese ? (zht ? "模型分佈" : "模型分布") : "Models", result.facts.models);
|
|
137
139
|
return normalizeMarkdown(lines.join("\n"));
|
|
138
140
|
}
|
|
139
141
|
function normalizeMarkdown(markdown) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/reporting/render.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,4EAaC;AAED,kDAYC;AAED,0CAKC;AAED,
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/reporting/render.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,60 +2,84 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.resolveReportTimeWindow = resolveReportTimeWindow;
|
|
4
4
|
exports.isRecordInReportTimeWindow = isRecordInReportTimeWindow;
|
|
5
|
-
const
|
|
6
|
-
function resolveReportTimeWindow(periodType, weekStartsOn, now = new Date()) {
|
|
5
|
+
const store_1 = require("../passHistory/store");
|
|
6
|
+
function resolveReportTimeWindow(periodType, weekStartsOn, now = new Date(), language = "en") {
|
|
7
7
|
switch (periodType) {
|
|
8
8
|
case "daily":
|
|
9
|
-
return buildDailyWindow(now);
|
|
9
|
+
return buildDailyWindow(now, language);
|
|
10
10
|
case "yesterday":
|
|
11
|
-
return buildYesterdayWindow(now);
|
|
11
|
+
return buildYesterdayWindow(now, language);
|
|
12
12
|
case "weekly":
|
|
13
|
-
return buildWeeklyWindow(now, weekStartsOn);
|
|
13
|
+
return buildWeeklyWindow(now, weekStartsOn, language);
|
|
14
|
+
case "last-week":
|
|
15
|
+
return buildLastWeeklyWindow(now, weekStartsOn, language);
|
|
14
16
|
case "monthly":
|
|
15
|
-
return buildMonthlyWindow(now);
|
|
17
|
+
return buildMonthlyWindow(now, language);
|
|
18
|
+
case "last-month":
|
|
19
|
+
return buildLastMonthlyWindow(now, language);
|
|
16
20
|
case "quarterly":
|
|
17
|
-
return buildQuarterlyWindow(now);
|
|
21
|
+
return buildQuarterlyWindow(now, language);
|
|
22
|
+
case "last-quarter":
|
|
23
|
+
return buildLastQuarterlyWindow(now, language);
|
|
18
24
|
case "yearly":
|
|
19
|
-
return buildYearlyWindow(now);
|
|
25
|
+
return buildYearlyWindow(now, language);
|
|
20
26
|
}
|
|
21
27
|
}
|
|
22
|
-
function
|
|
23
|
-
return timestampMs >= window.startedAtMs && timestampMs < window.endedAtMs;
|
|
24
|
-
}
|
|
25
|
-
function buildDailyWindow(now) {
|
|
28
|
+
function buildDailyWindow(now, language) {
|
|
26
29
|
const startedAt = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
27
30
|
const endedAt = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);
|
|
28
|
-
return buildWindow("daily", "Daily", startedAt, endedAt);
|
|
31
|
+
return buildWindow("daily", "Daily", startedAt, endedAt, language);
|
|
29
32
|
}
|
|
30
|
-
function buildYesterdayWindow(now) {
|
|
33
|
+
function buildYesterdayWindow(now, language) {
|
|
31
34
|
const startedAt = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);
|
|
32
35
|
const endedAt = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
33
|
-
return buildWindow("yesterday", "Yesterday", startedAt, endedAt);
|
|
36
|
+
return buildWindow("yesterday", "Yesterday", startedAt, endedAt, language);
|
|
34
37
|
}
|
|
35
|
-
function buildWeeklyWindow(now, weekStartsOn) {
|
|
36
|
-
const
|
|
37
|
-
const offset = weekStartsOn === "monday" ? (currentDay + 6) % 7 : currentDay;
|
|
38
|
-
const startedAt = new Date(now.getFullYear(), now.getMonth(), now.getDate() - offset);
|
|
38
|
+
function buildWeeklyWindow(now, weekStartsOn, language) {
|
|
39
|
+
const startedAt = getNaturalWeekStart(now, weekStartsOn);
|
|
39
40
|
const endedAt = new Date(startedAt.getFullYear(), startedAt.getMonth(), startedAt.getDate() + 7);
|
|
40
|
-
return buildWindow("weekly", "Weekly", startedAt, endedAt);
|
|
41
|
+
return buildWindow("weekly", "Weekly", startedAt, endedAt, language);
|
|
42
|
+
}
|
|
43
|
+
function buildLastWeeklyWindow(now, weekStartsOn, language) {
|
|
44
|
+
const currentWeekStart = getNaturalWeekStart(now, weekStartsOn);
|
|
45
|
+
const startedAt = new Date(currentWeekStart.getFullYear(), currentWeekStart.getMonth(), currentWeekStart.getDate() - 7);
|
|
46
|
+
return buildWindow("last-week", "Last Week", startedAt, currentWeekStart, language);
|
|
41
47
|
}
|
|
42
|
-
function
|
|
48
|
+
function getNaturalWeekStart(now, weekStartsOn) {
|
|
49
|
+
const currentDay = now.getDay();
|
|
50
|
+
const offset = weekStartsOn === "monday"
|
|
51
|
+
? (currentDay + 6) % 7
|
|
52
|
+
: currentDay;
|
|
53
|
+
return new Date(now.getFullYear(), now.getMonth(), now.getDate() - offset);
|
|
54
|
+
}
|
|
55
|
+
function buildMonthlyWindow(now, language) {
|
|
43
56
|
const startedAt = new Date(now.getFullYear(), now.getMonth(), 1);
|
|
44
57
|
const endedAt = new Date(now.getFullYear(), now.getMonth() + 1, 1);
|
|
45
|
-
return buildWindow("monthly", "Monthly", startedAt, endedAt);
|
|
58
|
+
return buildWindow("monthly", "Monthly", startedAt, endedAt, language);
|
|
59
|
+
}
|
|
60
|
+
function buildLastMonthlyWindow(now, language) {
|
|
61
|
+
const startedAt = new Date(now.getFullYear(), now.getMonth() - 1, 1);
|
|
62
|
+
const endedAt = new Date(now.getFullYear(), now.getMonth(), 1);
|
|
63
|
+
return buildWindow("last-month", "Last Month", startedAt, endedAt, language);
|
|
46
64
|
}
|
|
47
|
-
function buildQuarterlyWindow(now) {
|
|
65
|
+
function buildQuarterlyWindow(now, language) {
|
|
48
66
|
const quarterStartMonth = Math.floor(now.getMonth() / 3) * 3;
|
|
49
67
|
const startedAt = new Date(now.getFullYear(), quarterStartMonth, 1);
|
|
50
68
|
const endedAt = new Date(now.getFullYear(), quarterStartMonth + 3, 1);
|
|
51
|
-
return buildWindow("quarterly", "Quarterly", startedAt, endedAt);
|
|
69
|
+
return buildWindow("quarterly", "Quarterly", startedAt, endedAt, language);
|
|
52
70
|
}
|
|
53
|
-
function
|
|
71
|
+
function buildLastQuarterlyWindow(now, language) {
|
|
72
|
+
const quarterStartMonth = Math.floor(now.getMonth() / 3) * 3;
|
|
73
|
+
const startedAt = new Date(now.getFullYear(), quarterStartMonth - 3, 1);
|
|
74
|
+
const endedAt = new Date(now.getFullYear(), quarterStartMonth, 1);
|
|
75
|
+
return buildWindow("last-quarter", "Last Quarter", startedAt, endedAt, language);
|
|
76
|
+
}
|
|
77
|
+
function buildYearlyWindow(now, language) {
|
|
54
78
|
const startedAt = new Date(now.getFullYear(), 0, 1);
|
|
55
79
|
const endedAt = new Date(now.getFullYear() + 1, 0, 1);
|
|
56
|
-
return buildWindow("yearly", "Yearly", startedAt, endedAt);
|
|
80
|
+
return buildWindow("yearly", "Yearly", startedAt, endedAt, language);
|
|
57
81
|
}
|
|
58
|
-
function buildWindow(type, label, startedAt, endedAt) {
|
|
82
|
+
function buildWindow(type, label, startedAt, endedAt, language) {
|
|
59
83
|
const displayEnd = new Date(endedAt.getTime() - 1);
|
|
60
84
|
return {
|
|
61
85
|
type,
|
|
@@ -64,23 +88,64 @@ function buildWindow(type, label, startedAt, endedAt) {
|
|
|
64
88
|
endedAtMs: endedAt.getTime(),
|
|
65
89
|
displayStart: formatDisplayDate(startedAt),
|
|
66
90
|
displayEndInclusive: formatDisplayDate(displayEnd),
|
|
67
|
-
displayRangeLabel: buildDisplayRangeLabel(label, startedAt, displayEnd)
|
|
91
|
+
displayRangeLabel: buildDisplayRangeLabel(label, startedAt, displayEnd, language)
|
|
68
92
|
};
|
|
69
93
|
}
|
|
94
|
+
function isRecordInReportTimeWindow(timestampMs, window) {
|
|
95
|
+
return timestampMs >= window.startedAtMs && timestampMs < window.endedAtMs;
|
|
96
|
+
}
|
|
70
97
|
function formatDisplayDate(value) {
|
|
71
|
-
return (0,
|
|
98
|
+
return (0, store_1.formatLocalTimestamp)(value).slice(0, 10);
|
|
99
|
+
}
|
|
100
|
+
const englishMonthNames = [
|
|
101
|
+
"January",
|
|
102
|
+
"February",
|
|
103
|
+
"March",
|
|
104
|
+
"April",
|
|
105
|
+
"May",
|
|
106
|
+
"June",
|
|
107
|
+
"July",
|
|
108
|
+
"August",
|
|
109
|
+
"September",
|
|
110
|
+
"October",
|
|
111
|
+
"November",
|
|
112
|
+
"December"
|
|
113
|
+
];
|
|
114
|
+
function buildDisplayRangeLabel(label, startedAt, displayEnd, language) {
|
|
115
|
+
if (language === "zh-cn" || language === "zh-tw") {
|
|
116
|
+
return buildChineseDisplayRangeLabel(label, startedAt, displayEnd);
|
|
117
|
+
}
|
|
118
|
+
return buildEnglishDisplayRangeLabel(label, startedAt, displayEnd);
|
|
119
|
+
}
|
|
120
|
+
function buildChineseDisplayRangeLabel(label, startedAt, displayEnd) {
|
|
121
|
+
const start = formatDisplayDate(startedAt);
|
|
122
|
+
const end = formatDisplayDate(displayEnd);
|
|
123
|
+
if (label === "Monthly" || label === "Last Month") {
|
|
124
|
+
return `${startedAt.getFullYear()}年${startedAt.getMonth() + 1}月(${start} 至 ${end})`;
|
|
125
|
+
}
|
|
126
|
+
if (label === "Quarterly" || label === "Last Quarter") {
|
|
127
|
+
const quarter = Math.floor(startedAt.getMonth() / 3) + 1;
|
|
128
|
+
return `${startedAt.getFullYear()}年第${quarter}季度(${start} 至 ${end})`;
|
|
129
|
+
}
|
|
130
|
+
if (label === "Yearly") {
|
|
131
|
+
return `${startedAt.getFullYear()}年度(${start} 至 ${end})`;
|
|
132
|
+
}
|
|
133
|
+
return `${label}(${start} 至 ${end})`;
|
|
72
134
|
}
|
|
73
|
-
function
|
|
74
|
-
|
|
75
|
-
|
|
135
|
+
function buildEnglishDisplayRangeLabel(label, startedAt, displayEnd) {
|
|
136
|
+
const start = formatDisplayDate(startedAt);
|
|
137
|
+
const end = formatDisplayDate(displayEnd);
|
|
138
|
+
const range = `${start} to ${end}`;
|
|
139
|
+
if (label === "Monthly" || label === "Last Month") {
|
|
140
|
+
return `${englishMonthNames[startedAt.getMonth()]} ${startedAt.getFullYear()} (${range})`;
|
|
76
141
|
}
|
|
77
|
-
if (label === "Quarterly") {
|
|
142
|
+
if (label === "Quarterly" || label === "Last Quarter") {
|
|
78
143
|
const quarter = Math.floor(startedAt.getMonth() / 3) + 1;
|
|
79
|
-
return
|
|
144
|
+
return `Q${quarter} ${startedAt.getFullYear()} (${range})`;
|
|
80
145
|
}
|
|
81
146
|
if (label === "Yearly") {
|
|
82
|
-
return `${startedAt.getFullYear()} (${
|
|
147
|
+
return `${startedAt.getFullYear()} (${range})`;
|
|
83
148
|
}
|
|
84
|
-
return `${label} (${
|
|
149
|
+
return `${label} (${range})`;
|
|
85
150
|
}
|
|
86
151
|
//# sourceMappingURL=timeWindow.js.map
|