@mycodemap/mycodemap 0.4.2 → 0.5.0

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 (120) hide show
  1. package/CHANGELOG.md +92 -3
  2. package/README.md +117 -46
  3. package/dist/ai/claude.d.ts +38 -0
  4. package/dist/ai/claude.d.ts.map +1 -0
  5. package/dist/ai/claude.js +169 -0
  6. package/dist/ai/claude.js.map +1 -0
  7. package/dist/ai/codex.d.ts +38 -0
  8. package/dist/ai/codex.d.ts.map +1 -0
  9. package/dist/ai/codex.js +169 -0
  10. package/dist/ai/codex.js.map +1 -0
  11. package/dist/ai/factory.d.ts +48 -0
  12. package/dist/ai/factory.d.ts.map +1 -0
  13. package/dist/ai/factory.js +95 -0
  14. package/dist/ai/factory.js.map +1 -0
  15. package/dist/ai/index.d.ts +12 -0
  16. package/dist/ai/index.d.ts.map +1 -0
  17. package/dist/ai/index.js +29 -0
  18. package/dist/ai/index.js.map +1 -0
  19. package/dist/ai/provider.d.ts +70 -0
  20. package/dist/ai/provider.d.ts.map +1 -0
  21. package/dist/ai/provider.js +31 -0
  22. package/dist/ai/provider.js.map +1 -0
  23. package/dist/ai/subagent-caller.d.ts +90 -0
  24. package/dist/ai/subagent-caller.d.ts.map +1 -0
  25. package/dist/ai/subagent-caller.js +280 -0
  26. package/dist/ai/subagent-caller.js.map +1 -0
  27. package/dist/ai/types.d.ts +70 -0
  28. package/dist/ai/types.d.ts.map +1 -0
  29. package/dist/ai/types.js +5 -0
  30. package/dist/ai/types.js.map +1 -0
  31. package/dist/cli/commands/design.d.ts +47 -0
  32. package/dist/cli/commands/design.d.ts.map +1 -0
  33. package/dist/cli/commands/design.js +268 -0
  34. package/dist/cli/commands/design.js.map +1 -0
  35. package/dist/cli/commands/server.d.ts +9 -0
  36. package/dist/cli/commands/server.d.ts.map +1 -0
  37. package/dist/cli/commands/server.js +65 -0
  38. package/dist/cli/commands/server.js.map +1 -0
  39. package/dist/cli/commands/ship/pipeline.d.ts.map +1 -1
  40. package/dist/cli/commands/ship/pipeline.js +8 -1
  41. package/dist/cli/commands/ship/pipeline.js.map +1 -1
  42. package/dist/cli/commands/ship/publisher.d.ts +9 -1
  43. package/dist/cli/commands/ship/publisher.d.ts.map +1 -1
  44. package/dist/cli/commands/ship/publisher.js +149 -6
  45. package/dist/cli/commands/ship/publisher.js.map +1 -1
  46. package/dist/cli/design-contract-loader.d.ts +15 -0
  47. package/dist/cli/design-contract-loader.d.ts.map +1 -0
  48. package/dist/cli/design-contract-loader.js +175 -0
  49. package/dist/cli/design-contract-loader.js.map +1 -0
  50. package/dist/cli/design-contract-schema.d.ts +11 -0
  51. package/dist/cli/design-contract-schema.d.ts.map +1 -0
  52. package/dist/cli/design-contract-schema.js +75 -0
  53. package/dist/cli/design-contract-schema.js.map +1 -0
  54. package/dist/cli/design-handoff-builder.d.ts +15 -0
  55. package/dist/cli/design-handoff-builder.d.ts.map +1 -0
  56. package/dist/cli/design-handoff-builder.js +345 -0
  57. package/dist/cli/design-handoff-builder.js.map +1 -0
  58. package/dist/cli/design-scope-resolver.d.ts +8 -0
  59. package/dist/cli/design-scope-resolver.d.ts.map +1 -0
  60. package/dist/cli/design-scope-resolver.js +712 -0
  61. package/dist/cli/design-scope-resolver.js.map +1 -0
  62. package/dist/cli/design-verification-builder.d.ts +8 -0
  63. package/dist/cli/design-verification-builder.d.ts.map +1 -0
  64. package/dist/cli/design-verification-builder.js +369 -0
  65. package/dist/cli/design-verification-builder.js.map +1 -0
  66. package/dist/cli/index.js +2 -0
  67. package/dist/cli/index.js.map +1 -1
  68. package/dist/cli-new/commands/server.d.ts +13 -0
  69. package/dist/cli-new/commands/server.d.ts.map +1 -0
  70. package/dist/cli-new/commands/server.js +90 -0
  71. package/dist/cli-new/commands/server.js.map +1 -0
  72. package/dist/generator/ai-overview.d.ts +51 -0
  73. package/dist/generator/ai-overview.d.ts.map +1 -0
  74. package/dist/generator/ai-overview.js +160 -0
  75. package/dist/generator/ai-overview.js.map +1 -0
  76. package/dist/infrastructure/storage/StorageFactory.d.ts +12 -5
  77. package/dist/infrastructure/storage/StorageFactory.d.ts.map +1 -1
  78. package/dist/infrastructure/storage/StorageFactory.js +55 -14
  79. package/dist/infrastructure/storage/StorageFactory.js.map +1 -1
  80. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts +41 -0
  81. package/dist/infrastructure/storage/adapters/Neo4jStorage.d.ts.map +1 -0
  82. package/dist/infrastructure/storage/adapters/Neo4jStorage.js +162 -0
  83. package/dist/infrastructure/storage/adapters/Neo4jStorage.js.map +1 -0
  84. package/dist/interface/types/design-contract.d.ts +68 -0
  85. package/dist/interface/types/design-contract.d.ts.map +1 -0
  86. package/dist/interface/types/design-contract.js +7 -0
  87. package/dist/interface/types/design-contract.js.map +1 -0
  88. package/dist/interface/types/design-handoff.d.ts +68 -0
  89. package/dist/interface/types/design-handoff.d.ts.map +1 -0
  90. package/dist/interface/types/design-handoff.js +4 -0
  91. package/dist/interface/types/design-handoff.js.map +1 -0
  92. package/dist/interface/types/design-mapping.d.ts +51 -0
  93. package/dist/interface/types/design-mapping.d.ts.map +1 -0
  94. package/dist/interface/types/design-mapping.js +4 -0
  95. package/dist/interface/types/design-mapping.js.map +1 -0
  96. package/dist/interface/types/design-verification.d.ts +49 -0
  97. package/dist/interface/types/design-verification.d.ts.map +1 -0
  98. package/dist/interface/types/design-verification.js +4 -0
  99. package/dist/interface/types/design-verification.js.map +1 -0
  100. package/dist/interface/types/index.d.ts +4 -0
  101. package/dist/interface/types/index.d.ts.map +1 -1
  102. package/dist/orchestrator/ai-feed-generator.d.ts +210 -0
  103. package/dist/orchestrator/ai-feed-generator.d.ts.map +1 -0
  104. package/dist/orchestrator/ai-feed-generator.js +377 -0
  105. package/dist/orchestrator/ai-feed-generator.js.map +1 -0
  106. package/docs/ai-guide/COMMANDS.md +73 -0
  107. package/docs/ai-guide/OUTPUT.md +415 -0
  108. package/docs/ai-guide/PATTERNS.md +14 -4
  109. package/docs/ai-guide/PROMPTS.md +12 -6
  110. package/docs/archive/test-report-symbol-search.md +384 -0
  111. package/docs/archive/test-scenario-4-complexity-analysis.md +460 -0
  112. package/docs/archive/test_report_scenario5.md +615 -0
  113. package/docs/archive/test_scenario_3_impact_analysis_report.md +520 -0
  114. package/docs/product-specs/DESIGN_CONTRACT_TEMPLATE.md +79 -0
  115. package/docs/product-specs/README.md +2 -1
  116. package/docs/rules/engineering-with-codex-openai.md +6 -2
  117. package/docs/rules/validation.md +9 -6
  118. package/package.json +1 -1
  119. package/scripts/experiments/arcadedb-http-smoke.mjs +90 -0
  120. package/scripts/validate-docs.js +247 -0
@@ -0,0 +1,268 @@
1
+ /**
2
+ * [META] since:2026-03-25 | owner:cli-team | stable:false
3
+ * [WHY] Provide a dedicated CLI surface for validating human-authored design contracts
4
+ */
5
+ import { mkdir, writeFile } from 'node:fs/promises';
6
+ import { Command } from 'commander';
7
+ import { hasBlockingDesignContractDiagnostics, loadDesignContract, } from '../design-contract-loader.js';
8
+ import { buildDesignHandoff, renderDesignHandoffMarkdown, } from '../design-handoff-builder.js';
9
+ import { DEFAULT_DESIGN_CONTRACT_PATH } from '../design-contract-schema.js';
10
+ import { resolveDesignScope } from '../design-scope-resolver.js';
11
+ import { buildDesignVerification } from '../design-verification-builder.js';
12
+ function toJsonOutput(result) {
13
+ return {
14
+ ok: result.ok,
15
+ exists: result.exists,
16
+ filePath: result.filePath,
17
+ title: result.contract.metadata.title,
18
+ missingRequiredSections: [...result.contract.missingRequiredSections],
19
+ diagnostics: result.diagnostics,
20
+ sections: result.contract.orderedSections.map((section) => ({
21
+ id: section.id,
22
+ title: section.title,
23
+ line: section.line,
24
+ itemCount: section.content.length,
25
+ })),
26
+ };
27
+ }
28
+ export function renderDesignValidationResult(result) {
29
+ const lines = [
30
+ result.ok ? '✅ Design contract valid' : '❌ Design contract invalid',
31
+ `File: ${result.filePath}`,
32
+ ];
33
+ if (result.contract.metadata.title) {
34
+ lines.push(`Title: ${result.contract.metadata.title}`);
35
+ }
36
+ lines.push(`Sections: ${result.contract.orderedSections.length}`);
37
+ if (result.diagnostics.length === 0) {
38
+ lines.push('Diagnostics: none');
39
+ return lines.join('\n');
40
+ }
41
+ lines.push('Diagnostics:');
42
+ for (const diagnostic of result.diagnostics) {
43
+ const location = diagnostic.line ? ` (line ${diagnostic.line})` : '';
44
+ const heading = diagnostic.heading ? ` [${diagnostic.heading}]` : '';
45
+ lines.push(`- [${diagnostic.severity}] ${diagnostic.code}${location}${heading}: ${diagnostic.message}`);
46
+ }
47
+ return lines.join('\n');
48
+ }
49
+ function renderCandidate(candidate) {
50
+ const lines = [`- [${candidate.kind}] ${candidate.path}`];
51
+ if (candidate.moduleName) {
52
+ lines.push(` Module: ${candidate.moduleName}`);
53
+ }
54
+ if (candidate.symbolName) {
55
+ lines.push(` Symbol: ${candidate.symbolName}`);
56
+ }
57
+ lines.push(' Reasons:');
58
+ for (const reason of candidate.reasons) {
59
+ lines.push(` - [${reason.section}] ${reason.matchedText} (${reason.evidenceType})`);
60
+ }
61
+ lines.push(` Risk: ${candidate.risk}`);
62
+ lines.push(` Confidence: ${candidate.confidence.level} (${candidate.confidence.score})`);
63
+ lines.push(` Dependencies: ${candidate.dependencies.length > 0 ? candidate.dependencies.join(', ') : 'none'}`);
64
+ lines.push(` Test Impact: ${candidate.testImpact.length > 0 ? candidate.testImpact.join(', ') : 'none'}`);
65
+ return lines;
66
+ }
67
+ export function renderDesignMappingResult(result) {
68
+ const lines = [
69
+ result.ok ? '✅ Design mapping ready' : '❌ Design mapping blocked',
70
+ `File: ${result.filePath}`,
71
+ `Summary: ${result.summary.candidateCount} candidates, ${result.summary.unknownCount} unknowns`,
72
+ 'Candidates:',
73
+ ];
74
+ if (result.candidates.length === 0) {
75
+ lines.push('- none');
76
+ }
77
+ else {
78
+ for (const candidate of result.candidates) {
79
+ lines.push(...renderCandidate(candidate));
80
+ }
81
+ }
82
+ lines.push('Unknowns:');
83
+ const unknownLines = result.candidates.flatMap((candidate) => candidate.unknowns.map((unknown) => `- ${candidate.path}: ${unknown}`));
84
+ lines.push(...(unknownLines.length > 0 ? unknownLines : ['- none']));
85
+ lines.push('Diagnostics:');
86
+ if (result.diagnostics.length === 0) {
87
+ lines.push('- none');
88
+ }
89
+ else {
90
+ for (const diagnostic of result.diagnostics) {
91
+ const candidateInfo = diagnostic.candidatePaths?.length
92
+ ? ` [${diagnostic.candidatePaths.join(', ')}]`
93
+ : '';
94
+ lines.push(`- [${diagnostic.severity}] ${diagnostic.code}${candidateInfo}: ${diagnostic.message}`);
95
+ }
96
+ }
97
+ return lines.join('\n');
98
+ }
99
+ export function renderDesignHandoffResult(result) {
100
+ const statusLine = result.ok
101
+ ? result.readyForExecution
102
+ ? '✅ Design handoff ready for execution'
103
+ : '🟡 Design handoff needs human review'
104
+ : '❌ Design handoff blocked';
105
+ const lines = [
106
+ statusLine,
107
+ `File: ${result.filePath}`,
108
+ `Candidates: ${result.summary.candidateCount}`,
109
+ `Approvals: ${result.summary.approvalCount}`,
110
+ `Assumptions: ${result.summary.assumptionCount}`,
111
+ `Open Questions: ${result.summary.openQuestionCount}`,
112
+ ];
113
+ if (result.ok) {
114
+ lines.push(`Artifacts: ${result.artifacts.markdownPath}, ${result.artifacts.jsonPath}`);
115
+ }
116
+ if (result.diagnostics.length > 0) {
117
+ lines.push('Diagnostics:');
118
+ for (const diagnostic of result.diagnostics) {
119
+ lines.push(`- [${diagnostic.severity}] ${diagnostic.code}: ${diagnostic.message}`);
120
+ }
121
+ }
122
+ return lines.join('\n');
123
+ }
124
+ export function renderDesignVerificationResult(result) {
125
+ const statusLine = result.ok
126
+ ? result.readyForExecution
127
+ ? '✅ Design verification ready for execution'
128
+ : '🟡 Design verification needs review'
129
+ : '❌ Design verification blocked';
130
+ const lines = [
131
+ statusLine,
132
+ `File: ${result.filePath}`,
133
+ `Checklist: ${result.summary.satisfiedCount}/${result.summary.checklistCount} satisfied`,
134
+ `Drift: ${result.summary.driftCount}`,
135
+ `Diagnostics: ${result.summary.diagnosticCount}`,
136
+ ];
137
+ lines.push('Checklist Items:');
138
+ if (result.checklist.length === 0) {
139
+ lines.push('- none');
140
+ }
141
+ else {
142
+ for (const item of result.checklist) {
143
+ lines.push(`- [${item.status}] ${item.text}`);
144
+ }
145
+ }
146
+ lines.push('Drift Items:');
147
+ if (result.drift.length === 0) {
148
+ lines.push('- none');
149
+ }
150
+ else {
151
+ for (const item of result.drift) {
152
+ lines.push(`- [${item.severity}] ${item.kind}: ${item.message}`);
153
+ }
154
+ }
155
+ if (!result.ok) {
156
+ lines.push('Next Step: fix blocker diagnostics in design or handoff truth before running verify again.');
157
+ }
158
+ else if (!result.readyForExecution) {
159
+ lines.push('Next Step: resolve review-needed checklist/drift items or persist a reviewed handoff artifact before execution.');
160
+ }
161
+ else {
162
+ lines.push('Next Step: proceed with execution against the reviewed handoff boundary.');
163
+ }
164
+ return lines.join('\n');
165
+ }
166
+ export async function runDesignValidate(filePath, options = {}) {
167
+ const result = await loadDesignContract({ filePath });
168
+ if (options.json) {
169
+ return toJsonOutput(result);
170
+ }
171
+ return result;
172
+ }
173
+ export async function runDesignMap(filePath, _options = {}) {
174
+ return resolveDesignScope({ filePath });
175
+ }
176
+ export async function runDesignHandoff(filePath, options = {}) {
177
+ return buildDesignHandoff({
178
+ filePath,
179
+ outputDir: options.output,
180
+ });
181
+ }
182
+ export async function runDesignVerify(filePath, _options = {}) {
183
+ return buildDesignVerification({ filePath });
184
+ }
185
+ async function handleDesignValidate(filePath, options) {
186
+ const result = await loadDesignContract({ filePath });
187
+ if (options.json) {
188
+ console.log(JSON.stringify(toJsonOutput(result), null, 2));
189
+ }
190
+ else {
191
+ console.log(renderDesignValidationResult(result));
192
+ }
193
+ if (hasBlockingDesignContractDiagnostics(result.diagnostics)) {
194
+ process.exitCode = 1;
195
+ }
196
+ }
197
+ async function handleDesignMap(filePath, options) {
198
+ const result = await resolveDesignScope({ filePath });
199
+ if (options.json) {
200
+ console.log(JSON.stringify(result, null, 2));
201
+ }
202
+ else {
203
+ console.log(renderDesignMappingResult(result));
204
+ }
205
+ if (result.diagnostics.some((diagnostic) => diagnostic.blocker)) {
206
+ process.exitCode = 1;
207
+ }
208
+ }
209
+ async function writeDesignHandoffArtifacts(result) {
210
+ await mkdir(result.artifacts.outputDir, { recursive: true });
211
+ await writeFile(result.artifacts.markdownPath, `${renderDesignHandoffMarkdown(result)}\n`, 'utf8');
212
+ await writeFile(result.artifacts.jsonPath, `${JSON.stringify(result, null, 2)}\n`, 'utf8');
213
+ }
214
+ async function handleDesignHandoff(filePath, options) {
215
+ const result = await runDesignHandoff(filePath, options);
216
+ if (options.json) {
217
+ console.log(JSON.stringify(result, null, 2));
218
+ }
219
+ else {
220
+ if (result.ok) {
221
+ await writeDesignHandoffArtifacts(result);
222
+ }
223
+ console.log(renderDesignHandoffResult(result));
224
+ }
225
+ if (!result.ok || result.diagnostics.some((diagnostic) => diagnostic.blocker)) {
226
+ process.exitCode = 1;
227
+ }
228
+ }
229
+ async function handleDesignVerify(filePath, options) {
230
+ const result = await runDesignVerify(filePath, options);
231
+ if (options.json) {
232
+ console.log(JSON.stringify(result, null, 2));
233
+ }
234
+ else {
235
+ console.log(renderDesignVerificationResult(result));
236
+ }
237
+ if (!result.ok || result.diagnostics.some((diagnostic) => diagnostic.blocker)) {
238
+ process.exitCode = 1;
239
+ }
240
+ }
241
+ export const designCommand = new Command('design');
242
+ designCommand.description('Design contract utilities');
243
+ designCommand
244
+ .command('validate')
245
+ .description(`Validate a design contract file (default: ${DEFAULT_DESIGN_CONTRACT_PATH})`)
246
+ .argument('[file]', 'Design contract path')
247
+ .option('-j, --json', 'JSON 格式输出')
248
+ .action(handleDesignValidate);
249
+ designCommand
250
+ .command('map')
251
+ .description(`Resolve design contract into candidate code scope (default: ${DEFAULT_DESIGN_CONTRACT_PATH})`)
252
+ .argument('[file]', 'Design contract path')
253
+ .option('-j, --json', 'JSON 格式输出')
254
+ .action(handleDesignMap);
255
+ designCommand
256
+ .command('handoff')
257
+ .description(`Generate a design handoff package (default: ${DEFAULT_DESIGN_CONTRACT_PATH})`)
258
+ .argument('[file]', 'Design contract path')
259
+ .option('-j, --json', 'JSON 格式输出')
260
+ .option('-o, --output <dir>', '指定 handoff output 目录')
261
+ .action(handleDesignHandoff);
262
+ designCommand
263
+ .command('verify')
264
+ .description(`Verify design contract against reviewed handoff truth (default: ${DEFAULT_DESIGN_CONTRACT_PATH})`)
265
+ .argument('[file]', 'Design contract path')
266
+ .option('-j, --json', 'JSON 格式输出')
267
+ .action(handleDesignVerify);
268
+ //# sourceMappingURL=design.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design.js","sourceRoot":"","sources":["../../../src/cli/commands/design.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ interface ServerOptions {
2
+ port?: string;
3
+ host?: string;
4
+ cors?: boolean;
5
+ open?: boolean;
6
+ }
7
+ export declare function serverCommand(options: ServerOptions): Promise<void>;
8
+ export {};
9
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/server.ts"],"names":[],"mappings":"AASA,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgEzE"}
@@ -0,0 +1,65 @@
1
+ // [META] since:2026-03 | owner:architecture-team | stable:true
2
+ // [WHY] Server command - starts the CodeMap HTTP API server (MVP3 architecture)
3
+ // ============================================
4
+ import chalk from 'chalk';
5
+ import { CodeGraphBuilder } from '../../domain/services/CodeGraphBuilder.js';
6
+ import { CodeMapServer } from '../../server/CodeMapServer.js';
7
+ import { createConfiguredStorage } from '../storage-runtime.js';
8
+ export async function serverCommand(options) {
9
+ try {
10
+ const port = parseInt(options.port ?? '3000', 10);
11
+ const host = options.host ?? '0.0.0.0';
12
+ console.log(chalk.blue('🔧 初始化 CodeMap 服务器...\n'));
13
+ // 创建存储实例
14
+ const { storage } = await createConfiguredStorage(process.cwd());
15
+ // 创建代码图构建器
16
+ const builder = CodeGraphBuilder.create({
17
+ mode: 'fast',
18
+ rootDir: process.cwd(),
19
+ });
20
+ // 创建并启动服务器
21
+ const server = CodeMapServer.create(storage, builder, {
22
+ port,
23
+ host,
24
+ cors: options.cors ? { origin: '*', credentials: true } : undefined,
25
+ });
26
+ const { url } = await server.start();
27
+ console.log(chalk.green(`\n✅ 服务器已启动!\n`));
28
+ console.log(chalk.white(`📡 API 地址: ${chalk.cyan(`${url}/api/v1`)}`));
29
+ console.log(chalk.white(`🏥 健康检查: ${chalk.cyan(`${url}/api/v1/health`)}`));
30
+ console.log(chalk.white(`📊 项目统计: ${chalk.cyan(`${url}/api/v1/stats`)}`));
31
+ console.log(chalk.white(`🔍 符号搜索: ${chalk.cyan(`${url}/api/v1/search/symbols?q=`)}`));
32
+ console.log();
33
+ // 自动打开浏览器
34
+ if (options.open) {
35
+ try {
36
+ const { exec } = await import('child_process');
37
+ const platform = process.platform;
38
+ const cmd = platform === 'darwin' ? 'open' : platform === 'win32' ? 'start' : 'xdg-open';
39
+ exec(`${cmd} ${url}`);
40
+ }
41
+ catch {
42
+ // 忽略打开浏览器失败
43
+ }
44
+ }
45
+ // 优雅关闭
46
+ process.on('SIGINT', async () => {
47
+ console.log(chalk.yellow('\n\n🛑 正在关闭服务器...'));
48
+ await server.stop();
49
+ await storage.close();
50
+ process.exit(0);
51
+ });
52
+ process.on('SIGTERM', async () => {
53
+ await server.stop();
54
+ await storage.close();
55
+ process.exit(0);
56
+ });
57
+ // 保持进程运行
58
+ await new Promise(() => { });
59
+ }
60
+ catch (error) {
61
+ console.error(chalk.red('\n❌ 服务器启动失败:'), error);
62
+ process.exit(1);
63
+ }
64
+ }
65
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/cli/commands/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ship/pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuC,aAAa,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAyC,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAA2D,WAAW,EAAE,MAAM,cAAc,CAAC;AACpG,OAAO,EAAgC,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAkC,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8DD,wBAAsB,eAAe,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAqMvF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAKlE"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ship/pipeline.ts"],"names":[],"mappings":"AAMA,OAAO,EAAuC,aAAa,EAAE,MAAM,eAAe,CAAC;AACnF,OAAO,EAAyC,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAA2D,WAAW,EAAE,MAAM,cAAc,CAAC;AACpG,OAAO,EAAgC,aAAa,EAA6C,MAAM,gBAAgB,CAAC;AACxH,OAAO,EAAkC,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8DD,wBAAsB,eAAe,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CA6MvF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAKlE"}
@@ -6,7 +6,7 @@ import chalk from 'chalk';
6
6
  import { analyzeCommits, formatAnalyzeOutput } from './analyzer.js';
7
7
  import { calculateVersion, formatVersionOutput } from './versioner.js';
8
8
  import { runQualityChecks, formatCheckOutput, shouldBlockRelease } from './checker.js';
9
- import { publish, formatPublishOutput } from './publisher.js';
9
+ import { publish, formatPublishOutput, isLargeRelease, formatLargeReleaseWarning } from './publisher.js';
10
10
  import { monitorCI, formatMonitorOutput } from './monitor.js';
11
11
  const SEPARATOR = '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━';
12
12
  const CONFIRM_TIMEOUT_MS = 30_000;
@@ -71,6 +71,13 @@ export async function runShipPipeline(ctx) {
71
71
  if (!analyzeStep || !analyzeResult) {
72
72
  return { ...result, blocked: true, blockReason: '变更分析失败' };
73
73
  }
74
+ // 检测大规模发布并显示警告
75
+ if (isLargeRelease(analyzeResult.commits)) {
76
+ const warningLines = formatLargeReleaseWarning(analyzeResult.commits);
77
+ for (const line of warningLines) {
78
+ console.log(line);
79
+ }
80
+ }
74
81
  // Step 2: VERSION
75
82
  const versionStep = await runStep('版本计算', async () => {
76
83
  versionResult = await calculateVersion(analyzeResult);
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../../src/cli/commands/ship/pipeline.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,wBAAwB;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAiB,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAiB,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAe,MAAM,cAAc,CAAC;AACpG,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAiB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAiB,MAAM,cAAc,CAAC;AAmB7E,MAAM,SAAS,GAAG,iCAAiC,CAAC;AACpD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,KAAK,UAAU,OAAO,CACpB,IAAY,EACZ,EAAuB,EACvB,MAAoB;IAEpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC;QACzC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,OAAe,EACf,WAAwB;IAExB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,WAAW,CAAC,UAAU,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO;SAC5C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEf,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAErE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACvD,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAwB;IAC5D,MAAM,MAAM,GAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACzC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,aAAwC,CAAC;IAC7C,IAAI,aAAwC,CAAC;IAC7C,IAAI,WAAoC,CAAC;IAEzC,kBAAkB;IAClB,MAAM,WAAW,GAAG,MAAM,OAAO,CAC/B,MAAM,EACN,KAAK,IAAI,EAAE;QACT,aAAa,GAAG,MAAM,cAAc,EAAE,CAAC;IACzC,CAAC,EACD,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAC3E,CAAC;IAEF,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAC7D,CAAC;IAED,kBAAkB;IAClB,MAAM,WAAW,GAAG,MAAM,OAAO,CAC/B,MAAM,EACN,KAAK,IAAI,EAAE;QACT,aAAa,GAAG,MAAM,gBAAgB,CAAC,aAAc,CAAC,CAAC;IACzD,CAAC,EACD,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAC3E,CAAC;IAEF,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzE,CAAC;IAED,0CAA0C;IAC1C,IAAI,aAAa,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzE,CAAC;IAED,gBAAgB;IAChB,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,MAAM,EACN,KAAK,IAAI,EAAE;QACT,WAAW,GAAG,MAAM,gBAAgB,CAAC,aAAc,EAAE,aAAc,CAAC,CAAC;IACvE,CAAC,EACD,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACrE,CAAC;IAEF,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAC7D,CAAC;IAED,aAAa;IACb,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACzC,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,WAAW,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;iBAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;iBAC5B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,aAAa;YACb,aAAa;YACb,WAAW;YACX,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,SAAS;SACvB,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACtE,MAAM,aAAa,GAAG,MAAM,4BAA4B,CAAC,aAAa,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACtG,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,aAAa;gBACb,aAAa;gBACb,WAAW;gBACX,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,QAAQ;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,aAAwC,CAAC;IAC7C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAEvC,aAAa,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,gBAAgB,EAAE;YAC5D,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,aAAa;SACd,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,aAAa;gBACb,aAAa;gBACb,WAAW;gBACX,aAAa;gBACb,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,MAAM;aACpB,CAAC;QACJ,CAAC;QAED,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC;YACpC,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,WAAW,EAAE,aAAa,CAAC,UAAU;SACtC,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,mBAAmB,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAE9F,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,aAAa;gBACb,aAAa;gBACb,WAAW;gBACX,aAAa;gBACb,aAAa;gBACb,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,aAAa,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB;aACpF,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAEtC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,aAAa;YACb,aAAa;YACb,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,OAAO;IACP,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,gBAAgB,MAAM,CAAC,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,aAAa;QACb,aAAa;QACb,WAAW;QACX,aAAa;QACb,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAsB;IACxD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,UAAU,MAAM,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../../src/cli/commands/ship/pipeline.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,wBAAwB;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAiB,MAAM,eAAe,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAiB,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAe,MAAM,cAAc,CAAC;AACpG,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAiB,cAAc,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACxH,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAiB,MAAM,cAAc,CAAC;AAmB7E,MAAM,SAAS,GAAG,iCAAiC,CAAC;AACpD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,KAAK,UAAU,OAAO,CACpB,IAAY,EACZ,EAAuB,EACvB,MAAoB;IAEpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC;QACzC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,OAAe,EACf,WAAwB;IAExB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,WAAW,CAAC,UAAU,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO;SAC5C,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvF,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEf,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACnC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAErE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACvD,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAwB;IAC5D,MAAM,MAAM,GAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAElD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACzC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,aAAwC,CAAC;IAC7C,IAAI,aAAwC,CAAC;IAC7C,IAAI,WAAoC,CAAC;IAEzC,kBAAkB;IAClB,MAAM,WAAW,GAAG,MAAM,OAAO,CAC/B,MAAM,EACN,KAAK,IAAI,EAAE;QACT,aAAa,GAAG,MAAM,cAAc,EAAE,CAAC;IACzC,CAAC,EACD,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAC3E,CAAC;IAEF,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAC7D,CAAC;IAED,eAAe;IACf,IAAI,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAG,yBAAyB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACtE,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,WAAW,GAAG,MAAM,OAAO,CAC/B,MAAM,EACN,KAAK,IAAI,EAAE;QACT,aAAa,GAAG,MAAM,gBAAgB,CAAC,aAAc,CAAC,CAAC;IACzD,CAAC,EACD,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,mBAAmB,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAC3E,CAAC;IAEF,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzE,CAAC;IAED,0CAA0C;IAC1C,IAAI,aAAa,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzE,CAAC;IAED,gBAAgB;IAChB,MAAM,SAAS,GAAG,MAAM,OAAO,CAC7B,MAAM,EACN,KAAK,IAAI,EAAE;QACT,WAAW,GAAG,MAAM,gBAAgB,CAAC,aAAc,EAAE,aAAc,CAAC,CAAC;IACvE,CAAC,EACD,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,iBAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACrE,CAAC;IAEF,IAAI,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAC7D,CAAC;IAED,aAAa;IACb,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACzC,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,WAAW,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;iBAC7D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;iBAC5B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,aAAa;YACb,aAAa;YACb,WAAW;YACX,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,SAAS;SACvB,CAAC;IACJ,CAAC;IAED,iBAAiB;IACjB,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACtE,MAAM,aAAa,GAAG,MAAM,4BAA4B,CAAC,aAAa,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACtG,IAAI,aAAa,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;YAC5D,CAAC;iBAAM,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,aAAa;gBACb,aAAa;gBACb,WAAW;gBACX,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,QAAQ;aACtB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,aAAwC,CAAC;IAC7C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QAEvC,aAAa,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,gBAAgB,EAAE;YAC5D,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,aAAa;SACd,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YACjC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,aAAa;gBACb,aAAa;gBACb,WAAW;gBACX,aAAa;gBACb,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,MAAM;aACpB,CAAC;QACJ,CAAC;QAED,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC;YACpC,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,WAAW,EAAE,aAAa,CAAC,UAAU;SACtC,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,mBAAmB,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;QAE9F,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC3B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,aAAa;gBACb,aAAa;gBACb,WAAW;gBACX,aAAa;gBACb,aAAa;gBACb,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,aAAa,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,qBAAqB;aACpF,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAE9C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QAEtC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,aAAa;YACb,aAAa;YACb,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,OAAO;IACP,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,gBAAgB,MAAM,CAAC,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,aAAa;QACb,aAAa;QACb,WAAW;QACX,aAAa;QACb,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAsB;IACxD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,UAAU,MAAM,CAAC,WAAW,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,8 +1,16 @@
1
- import { AnalyzeResult } from './analyzer.js';
1
+ import { AnalyzeResult, GitCommit } from './analyzer.js';
2
2
  export interface PublishOptions {
3
3
  dryRun?: boolean;
4
4
  analyzeResult?: AnalyzeResult;
5
5
  }
6
+ /**
7
+ * 检查是否为大规模发布,需要额外注意
8
+ */
9
+ export declare function isLargeRelease(commits: GitCommit[]): boolean;
10
+ /**
11
+ * 生成大规模发布警告
12
+ */
13
+ export declare function formatLargeReleaseWarning(commits: GitCommit[]): string[];
6
14
  export interface PublishResult {
7
15
  success: boolean;
8
16
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ship/publisher.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAa,MAAM,eAAe,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAwND,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CA2EnG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAyBjE"}
1
+ {"version":3,"file":"publisher.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ship/publisher.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAgGD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAE5D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAwBxE;AAkQD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CA2EnG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAyBjE"}
@@ -5,6 +5,104 @@ import { execSync } from 'child_process';
5
5
  import { existsSync, readFileSync, writeFileSync } from 'fs';
6
6
  const CHANGELOG_HEADER = '# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n';
7
7
  const COMMAND_MAX_BUFFER = 20 * 1024 * 1024;
8
+ // Commit 数量警告阈值
9
+ const LARGE_RELEASE_COMMIT_THRESHOLD = 20;
10
+ /**
11
+ * 检测 commit 是否属于 milestone 相关
12
+ * 基于 commit message 中的关键词识别 milestone/phase 变更
13
+ */
14
+ function detectMilestoneKeywords(message) {
15
+ const lowerMsg = message.toLowerCase();
16
+ // Phase 相关
17
+ const phaseMatch = message.match(/phase\s*(\d+)/i);
18
+ const phase = phaseMatch ? `Phase ${phaseMatch[1]}` : undefined;
19
+ // 检测 milestone 生命周期
20
+ if (/\bstart\s+(v?\d+\.\d+|milestone)/i.test(message) || /启动.*milestone/i.test(message)) {
21
+ return { isMilestone: true, phase, type: 'start' };
22
+ }
23
+ if (/\b(close|complete|finish)\s+(v?\d+\.\d+|milestone)/i.test(message) || /完成.*milestone/i.test(message)) {
24
+ return { isMilestone: true, phase, type: 'close' };
25
+ }
26
+ if (/\barchive\b/i.test(message) || /归档/i.test(message)) {
27
+ return { isMilestone: true, phase, type: 'archive' };
28
+ }
29
+ // 检测 planning 文档变更
30
+ if (/planning:/i.test(message) || /\.planning\//i.test(message)) {
31
+ return { isMilestone: true, phase, type: 'progress' };
32
+ }
33
+ return { isMilestone: false };
34
+ }
35
+ /**
36
+ * 从 commits 中提取 milestone 信息
37
+ */
38
+ function extractMilestoneInfo(commits) {
39
+ // 查找 milestone close/start 的 commit
40
+ for (const commit of commits) {
41
+ const milestoneMatch = commit.message.match(/v?(\d+\.\d+)\s*milestone/i);
42
+ if (milestoneMatch) {
43
+ const closeMatch = /\b(close|complete|finish)\b/i.test(commit.message);
44
+ return {
45
+ milestoneName: `v${milestoneMatch[1]}`,
46
+ hasCompleteMilestone: closeMatch
47
+ };
48
+ }
49
+ }
50
+ return { hasCompleteMilestone: false };
51
+ }
52
+ /**
53
+ * 按 milestone/phase 分组 commits
54
+ */
55
+ function groupCommitsByMilestone(commits) {
56
+ const groups = new Map();
57
+ for (const commit of commits) {
58
+ const milestoneInfo = detectMilestoneKeywords(commit.message);
59
+ if (milestoneInfo.isMilestone && milestoneInfo.phase) {
60
+ const key = milestoneInfo.phase;
61
+ const existing = groups.get(key);
62
+ if (existing) {
63
+ existing.commits.push(commit);
64
+ }
65
+ else {
66
+ groups.set(key, {
67
+ name: key,
68
+ description: `${key} Delivery`,
69
+ commits: [commit]
70
+ });
71
+ }
72
+ }
73
+ }
74
+ return groups;
75
+ }
76
+ /**
77
+ * 检查是否为大规模发布,需要额外注意
78
+ */
79
+ export function isLargeRelease(commits) {
80
+ return commits.length > LARGE_RELEASE_COMMIT_THRESHOLD;
81
+ }
82
+ /**
83
+ * 生成大规模发布警告
84
+ */
85
+ export function formatLargeReleaseWarning(commits) {
86
+ const lines = [];
87
+ lines.push('');
88
+ lines.push(chalk.yellow('⚠️ 检测到大规模发布'));
89
+ lines.push(chalk.gray(` 本次发布包含 ${commits.length} 个 commits,超过阈值 ${LARGE_RELEASE_COMMIT_THRESHOLD}`));
90
+ // 分析 milestone 分布
91
+ const milestoneGroups = groupCommitsByMilestone(commits);
92
+ if (milestoneGroups.size > 0) {
93
+ lines.push(chalk.gray(' 发现以下 Phase/Milestone 分组:'));
94
+ for (const [name, group] of milestoneGroups) {
95
+ lines.push(chalk.gray(` - ${name}: ${group.commits.length} commits`));
96
+ }
97
+ }
98
+ const { milestoneName, hasCompleteMilestone } = extractMilestoneInfo(commits);
99
+ if (milestoneName) {
100
+ lines.push(chalk.gray(` Milestone: ${milestoneName} ${hasCompleteMilestone ? '(已完成)' : '(进行中)'}`));
101
+ }
102
+ lines.push(chalk.gray(' 建议: 请仔细 review 生成的 CHANGELOG,确保 milestone 变更已完整记录'));
103
+ lines.push('');
104
+ return lines;
105
+ }
8
106
  function updateFileByRules(rules) {
9
107
  for (const rule of rules) {
10
108
  if (!existsSync(rule.file)) {
@@ -99,14 +197,59 @@ function buildChangelogSections(analyzeResult) {
99
197
  '- Automated release triggered by `codemap ship`'
100
198
  ];
101
199
  }
102
- const groups = new Map();
103
- for (const commit of analyzeResult.commits) {
200
+ const { commits } = analyzeResult;
201
+ const lines = [];
202
+ // 1. 检查是否为大规模发布,添加 milestone 摘要
203
+ const { milestoneName, hasCompleteMilestone } = extractMilestoneInfo(commits);
204
+ if (milestoneName && hasCompleteMilestone) {
205
+ lines.push(`### 🏗️ ${milestoneName} Milestone`);
206
+ lines.push('');
207
+ lines.push(`${milestoneName} milestone 完成。`);
208
+ lines.push('');
209
+ }
210
+ // 2. 按 Phase 分组(如果存在)
211
+ const phaseGroups = groupCommitsByMilestone(commits);
212
+ if (phaseGroups.size > 0) {
213
+ // 按 Phase 编号排序
214
+ const sortedPhases = Array.from(phaseGroups.entries())
215
+ .sort((a, b) => {
216
+ const numA = parseInt(a[0].match(/\d+/)?.[0] || '0', 10);
217
+ const numB = parseInt(b[0].match(/\d+/)?.[0] || '0', 10);
218
+ return numA - numB;
219
+ });
220
+ for (const [phaseName, group] of sortedPhases) {
221
+ lines.push(`#### ${group.description}`);
222
+ lines.push('');
223
+ for (const commit of group.commits.slice(0, 10)) { // 限制每个 phase 显示 10 条
224
+ lines.push(formatCommitLine(commit));
225
+ }
226
+ if (group.commits.length > 10) {
227
+ lines.push(`- ... and ${group.commits.length - 10} more commits`);
228
+ }
229
+ lines.push('');
230
+ }
231
+ }
232
+ // 3. 剩余 commits 按类型分组
233
+ const remainingCommits = commits.filter(c => !detectMilestoneKeywords(c.message).isMilestone);
234
+ const typeGroups = new Map();
235
+ for (const commit of remainingCommits) {
104
236
  const section = classifyCommitSection(commit.type);
105
- const lines = groups.get(section) ?? [];
106
- lines.push(formatCommitLine(commit));
107
- groups.set(section, lines);
237
+ const sectionLines = typeGroups.get(section) ?? [];
238
+ sectionLines.push(formatCommitLine(commit));
239
+ typeGroups.set(section, sectionLines);
240
+ }
241
+ // 4. 按优先级输出类型分组
242
+ const priority = ['### 🚀 New Features', '### 🐛 Bug Fixes', '### 📚 Documentation', '### ♻️ Refactors', '### 🔧 Maintenance'];
243
+ for (const section of priority) {
244
+ const sectionLines = typeGroups.get(section);
245
+ if (sectionLines && sectionLines.length > 0) {
246
+ lines.push(section);
247
+ lines.push('');
248
+ lines.push(...sectionLines);
249
+ lines.push('');
250
+ }
108
251
  }
109
- return Array.from(groups.entries()).flatMap(([section, lines]) => [section, '', ...lines, '']);
252
+ return lines;
110
253
  }
111
254
  function ensureChangelogEntry(version, analyzeResult) {
112
255
  const versionStr = version.replace(/^v/, '');