smart-commit-copilot-cli 0.1.7 → 0.1.8

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 (94) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/README.md +39 -15
  3. package/docs/configuration.md +82 -22
  4. package/docs/contracts.md +67 -6
  5. package/docs/getting-started.md +4 -1
  6. package/docs/publish.md +1 -1
  7. package/docs/releases/0.1.7-draft.md +8 -8
  8. package/docs/releases/0.1.8-draft.md +80 -0
  9. package/docs/verification.md +1 -0
  10. package/examples/config/smart-commit.json +28 -8
  11. package/out/cliApp.js +51 -12
  12. package/out/cliApp.js.map +1 -1
  13. package/out/commands/bridge.js +117 -46
  14. package/out/commands/bridge.js.map +1 -1
  15. package/out/commands/pullRequest.js +176 -0
  16. package/out/commands/pullRequest.js.map +1 -0
  17. package/out/commitMessage/protocol.js +6 -1
  18. package/out/commitMessage/protocol.js.map +1 -1
  19. package/out/config/cliArgs.js +103 -10
  20. package/out/config/cliArgs.js.map +1 -1
  21. package/out/config/constants.js +2 -1
  22. package/out/config/constants.js.map +1 -1
  23. package/out/config/env.js +79 -10
  24. package/out/config/env.js.map +1 -1
  25. package/out/config/file.js +98 -11
  26. package/out/config/file.js.map +1 -1
  27. package/out/config/legacySmartCommit.js +104 -21
  28. package/out/config/legacySmartCommit.js.map +1 -1
  29. package/out/config/merge.js +17 -3
  30. package/out/config/merge.js.map +1 -1
  31. package/out/config/schema.js +65 -10
  32. package/out/config/schema.js.map +1 -1
  33. package/out/contracts.js +152 -11
  34. package/out/contracts.js.map +1 -1
  35. package/out/git.js +108 -2
  36. package/out/git.js.map +1 -1
  37. package/out/output.js +4 -0
  38. package/out/output.js.map +1 -1
  39. package/out/pullRequest/api.js +528 -0
  40. package/out/pullRequest/api.js.map +1 -0
  41. package/out/pullRequest/client.js +17 -0
  42. package/out/pullRequest/client.js.map +1 -0
  43. package/out/pullRequest/config.js +18 -0
  44. package/out/pullRequest/config.js.map +1 -0
  45. package/out/pullRequest/contentPrompt.js +116 -0
  46. package/out/pullRequest/contentPrompt.js.map +1 -0
  47. package/out/pullRequest/contentService.js +77 -0
  48. package/out/pullRequest/contentService.js.map +1 -0
  49. package/out/pullRequest/index.js +25 -0
  50. package/out/pullRequest/index.js.map +1 -0
  51. package/out/pullRequest/platform.js +101 -0
  52. package/out/pullRequest/platform.js.map +1 -0
  53. package/out/pullRequest/redact.js +15 -0
  54. package/out/pullRequest/redact.js.map +1 -0
  55. package/out/pullRequest/workflow.js +153 -0
  56. package/out/pullRequest/workflow.js.map +1 -0
  57. package/out/renderOutput.js +29 -4
  58. package/out/renderOutput.js.map +1 -1
  59. package/out/reporting/aggregate.js +1 -1
  60. package/out/reporting/aggregate.js.map +1 -1
  61. package/out/reporting/mockProvider.js +5 -1
  62. package/out/reporting/mockProvider.js.map +1 -1
  63. package/out/reporting/openaiProvider.js +5 -1
  64. package/out/reporting/openaiProvider.js.map +1 -1
  65. package/out/reporting/prompt.js +145 -20
  66. package/out/reporting/prompt.js.map +1 -1
  67. package/out/reporting/render.js +24 -22
  68. package/out/reporting/render.js.map +1 -1
  69. package/out/reporting/timeWindow.js +101 -36
  70. package/out/reporting/timeWindow.js.map +1 -1
  71. package/out/reporting/types.js +3 -0
  72. package/out/reporting/types.js.map +1 -1
  73. package/out/review/mockProvider.js +25 -1
  74. package/out/review/mockProvider.js.map +1 -1
  75. package/out/{pullRequestSummary → stagedChangeSummary}/index.js +10 -10
  76. package/out/stagedChangeSummary/index.js.map +1 -0
  77. package/out/{pullRequestSummary → stagedChangeSummary}/mockProvider.js +5 -5
  78. package/out/stagedChangeSummary/mockProvider.js.map +1 -0
  79. package/out/stagedChangeSummary/openaiProvider.js +19 -0
  80. package/out/stagedChangeSummary/openaiProvider.js.map +1 -0
  81. package/out/{pullRequestSummary → stagedChangeSummary}/prompt.js +28 -12
  82. package/out/stagedChangeSummary/prompt.js.map +1 -0
  83. package/out/stagedChangeSummary/provider.js.map +1 -0
  84. package/out/{pullRequestSummary → stagedChangeSummary}/render.js +12 -12
  85. package/out/stagedChangeSummary/render.js.map +1 -0
  86. package/package.json +1 -1
  87. package/out/pullRequestSummary/index.js.map +0 -1
  88. package/out/pullRequestSummary/mockProvider.js.map +0 -1
  89. package/out/pullRequestSummary/openaiProvider.js +0 -19
  90. package/out/pullRequestSummary/openaiProvider.js.map +0 -1
  91. package/out/pullRequestSummary/prompt.js.map +0 -1
  92. package/out/pullRequestSummary/provider.js.map +0 -1
  93. package/out/pullRequestSummary/render.js.map +0 -1
  94. /package/out/{pullRequestSummary → stagedChangeSummary}/provider.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/reporting/aggregate.ts"],"names":[],"mappings":"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"}
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" ? "# AI 增强工作报告" : "# AI Enhanced Work Report";
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,4DAsBC;AAtBD,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,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,2BAA2B,CAAC;YACvF,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"}
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)(input),
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,oFAYC;AAhBD,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,KAAK,CAAC;gBACpC,WAAW,EAAE,GAAG;gBAChB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
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"}
@@ -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 are generating a polished work report in Markdown.",
11
- "Use the provided report facts as the source of truth.",
12
- "Do not invent repositories, commits, scores, or events.",
13
- `The required report period is ${input.facts.period.label}.`,
14
- `The required display range is ${input.facts.period.displayRangeLabel}.`,
15
- `The internal filtering time window is [${formatWindowTimestamp(input.facts.period.startedAtMs)}, ${formatWindowTimestamp(input.facts.period.endedAtMs)}).`,
16
- "You must not rename it to another period or shift the date range.",
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("\n")
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":";;AAGA,kDA+BC;AAlCD,gDAAsD;AAGtD,SAAgB,mBAAmB,CAAC,KAA4B;IAC9D,OAAO;QACL;YACE,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,wDAAwD;gBACxD,uDAAuD;gBACvD,yDAAyD;gBACzD,iCAAiC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG;gBAC5D,iCAAiC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,GAAG;gBACxE,0CAA0C,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI;gBAC3J,mEAAmE;gBACnE,mFAAmF;gBACnF,uBAAuB;aACxB,CAAC,IAAI,CAAC,IAAI,CAAC;SACb;QACD;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,aAAa,KAAK,CAAC,QAAQ,EAAE;gBAC7B,kBAAkB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE;gBACxD,uBAAuB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE;gBACxD,iCAAiC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE;gBACzE,2CAA2C,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;gBAClG,yCAAyC,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBAC9F,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,oBAAoB;gBAChG,oBAAoB;gBACpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACrC,CAAC,IAAI,CAAC,MAAM,CAAC;SACf;KACF,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,WAAmB;IAChD,OAAO,IAAA,kCAAoB,EAAC,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/reporting/prompt.ts"],"names":[],"mappings":"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"}
@@ -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(zh ? "# 工作报告" : "# Work Report");
78
+ lines.push(chinese ? "# 工作报告" : "# Work Report");
77
79
  lines.push("");
78
- lines.push(zh ? `- 周期: ${result.facts.period.displayRangeLabel}` : `- Period: ${result.facts.period.displayRangeLabel}`);
79
- lines.push(zh ? `- 记录数: ${result.facts.recordCount}` : `- Records: ${result.facts.recordCount}`);
80
- lines.push(zh
81
- ? `- 仓库: ${result.facts.repositoryNames.length > 0 ? result.facts.repositoryNames.join(", ") : "无"}`
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(zh ? "## 关注点" : "## Requested Focus");
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(zh ? "## 汇总" : "## Summary");
92
+ lines.push(chinese ? (zht ? "## 彙總" : "## 汇总") : "## Summary");
91
93
  lines.push("");
92
- lines.push(zh
93
- ? `- 通过评审: ${result.facts.totals.reviewPassed}`
94
+ lines.push(chinese
95
+ ? `- ${zht ? "通過審查" : "通过评审"}: ${result.facts.totals.reviewPassed}`
94
96
  : `- Review passed: ${result.facts.totals.reviewPassed}`);
95
- lines.push(zh
97
+ lines.push(chinese
96
98
  ? `- 完成 commit: ${result.facts.totals.commitCompleted}`
97
99
  : `- Commit completed: ${result.facts.totals.commitCompleted}`);
98
- lines.push(zh
100
+ lines.push(chinese
99
101
  ? `- 完成 commit + push: ${result.facts.totals.commitPushCompleted}`
100
102
  : `- Commit + push completed: ${result.facts.totals.commitPushCompleted}`);
101
- lines.push(zh
102
- ? `- 平均分: ${result.facts.totals.averageScore ?? "N/A"}`
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(zh
105
- ? `- Diff 总字符数: ${result.facts.totals.fullDiffCharsTotal}`
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(zh ? "## 亮点记录" : "## Highlights");
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(zh ? "## 常见主题" : "## Common Themes");
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(zh ? "## 风险提醒" : "## Risks");
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, zh ? "分支分布" : "Branches", result.facts.branches);
135
- appendCountSection(lines, zh ? "提交消息来源" : "Commit Message Sources", result.facts.commitMessageSources);
136
- appendCountSection(lines, zh ? "模型分布" : "Models", result.facts.models);
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":"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"}
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 passHistory_1 = require("../passHistory");
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 isRecordInReportTimeWindow(timestampMs, window) {
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 currentDay = now.getDay();
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 buildMonthlyWindow(now) {
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 buildYearlyWindow(now) {
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, passHistory_1.formatLocalTimestamp)(value).slice(0, 10);
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 buildDisplayRangeLabel(label, startedAt, displayEnd) {
74
- if (label === "Monthly") {
75
- return `${startedAt.getFullYear()}-${String(startedAt.getMonth() + 1).padStart(2, "0")} (${formatDisplayDate(startedAt)} to ${formatDisplayDate(displayEnd)})`;
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 `${startedAt.getFullYear()} Q${quarter} (${formatDisplayDate(startedAt)} to ${formatDisplayDate(displayEnd)})`;
144
+ return `Q${quarter} ${startedAt.getFullYear()} (${range})`;
80
145
  }
81
146
  if (label === "Yearly") {
82
- return `${startedAt.getFullYear()} (${formatDisplayDate(startedAt)} to ${formatDisplayDate(displayEnd)})`;
147
+ return `${startedAt.getFullYear()} (${range})`;
83
148
  }
84
- return `${label} (${formatDisplayDate(startedAt)} to ${formatDisplayDate(displayEnd)})`;
149
+ return `${label} (${range})`;
85
150
  }
86
151
  //# sourceMappingURL=timeWindow.js.map