speccore 8.3.313 → 8.3.332
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/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.js +2 -2
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/doc2spec.d.ts +12 -0
- package/dist/commands/doc2spec.d.ts.map +1 -1
- package/dist/commands/doc2spec.js +64 -17
- package/dist/commands/doc2spec.js.map +1 -1
- package/dist/commands/done.js +4 -1
- package/dist/commands/done.js.map +1 -1
- package/dist/commands/execute.js +22 -19
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/help.js +1 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +299 -113
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/iteration/create.js +9 -6
- package/dist/commands/iteration/create.js.map +1 -1
- package/dist/commands/iteration/taskify.d.ts +8 -0
- package/dist/commands/iteration/taskify.d.ts.map +1 -1
- package/dist/commands/iteration/taskify.js +55 -38
- package/dist/commands/iteration/taskify.js.map +1 -1
- package/dist/commands/review.js +2 -7
- package/dist/commands/review.js.map +1 -1
- package/dist/commands/run.js +11 -2
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/spec2doc.d.ts +7 -0
- package/dist/commands/spec2doc.d.ts.map +1 -1
- package/dist/commands/spec2doc.js +32 -18
- package/dist/commands/spec2doc.js.map +1 -1
- package/dist/commands/unitize.d.ts +2 -0
- package/dist/commands/unitize.d.ts.map +1 -1
- package/dist/commands/unitize.js +79 -0
- package/dist/commands/unitize.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +6 -0
- package/dist/commands/update.js.map +1 -1
- package/dist/core/agents/engine/agent-loader.d.ts +2 -0
- package/dist/core/agents/engine/agent-loader.d.ts.map +1 -1
- package/dist/core/agents/engine/agent-loader.js +8 -2
- package/dist/core/agents/engine/agent-loader.js.map +1 -1
- package/dist/core/analyze-engine.d.ts +11 -0
- package/dist/core/analyze-engine.d.ts.map +1 -1
- package/dist/core/analyze-engine.js +136 -112
- package/dist/core/analyze-engine.js.map +1 -1
- package/dist/core/ask-engine.d.ts.map +1 -1
- package/dist/core/ask-engine.js +22 -2
- package/dist/core/ask-engine.js.map +1 -1
- package/dist/core/asset-stamp.d.ts +40 -0
- package/dist/core/asset-stamp.d.ts.map +1 -0
- package/dist/core/asset-stamp.js +77 -0
- package/dist/core/asset-stamp.js.map +1 -0
- package/dist/core/change-detection.d.ts +1 -1
- package/dist/core/change-detection.d.ts.map +1 -1
- package/dist/core/change-detection.js +28 -1
- package/dist/core/change-detection.js.map +1 -1
- package/dist/core/code-graph/incremental-build.d.ts.map +1 -1
- package/dist/core/code-graph/incremental-build.js +2 -2
- package/dist/core/code-graph/incremental-build.js.map +1 -1
- package/dist/core/code-graph/index.d.ts.map +1 -1
- package/dist/core/code-graph/index.js +3 -2
- package/dist/core/code-graph/index.js.map +1 -1
- package/dist/core/code-graph/requirement-linker.js +2 -2
- package/dist/core/code-graph/requirement-linker.js.map +1 -1
- package/dist/core/code-scanner.d.ts +11 -0
- package/dist/core/code-scanner.d.ts.map +1 -1
- package/dist/core/code-scanner.js +103 -1
- package/dist/core/code-scanner.js.map +1 -1
- package/dist/core/constitution-builder.d.ts +24 -0
- package/dist/core/constitution-builder.d.ts.map +1 -1
- package/dist/core/constitution-builder.js +110 -88
- package/dist/core/constitution-builder.js.map +1 -1
- package/dist/core/doc-validator.d.ts.map +1 -1
- package/dist/core/doc-validator.js +14 -4
- package/dist/core/doc-validator.js.map +1 -1
- package/dist/core/git-integration.d.ts +13 -8
- package/dist/core/git-integration.d.ts.map +1 -1
- package/dist/core/git-integration.js +191 -89
- package/dist/core/git-integration.js.map +1 -1
- package/dist/core/global-knowledge.js +1 -1
- package/dist/core/global-knowledge.js.map +1 -1
- package/dist/core/intent-recognition.d.ts.map +1 -1
- package/dist/core/intent-recognition.js +40 -0
- package/dist/core/intent-recognition.js.map +1 -1
- package/dist/core/platform-registry.d.ts +2 -2
- package/dist/core/platform-registry.d.ts.map +1 -1
- package/dist/core/platform-registry.js +25 -2
- package/dist/core/platform-registry.js.map +1 -1
- package/dist/core/prompt-builder.js +1 -1
- package/dist/core/prompt-builder.js.map +1 -1
- package/dist/core/rag-engine.d.ts +25 -0
- package/dist/core/rag-engine.d.ts.map +1 -1
- package/dist/core/rag-engine.js +88 -3
- package/dist/core/rag-engine.js.map +1 -1
- package/dist/core/refresh-scheduler.js +39 -17
- package/dist/core/refresh-scheduler.js.map +1 -1
- package/dist/core/requirement-clarifier.js +1 -1
- package/dist/core/requirement-clarifier.js.map +1 -1
- package/dist/core/task-paths.d.ts.map +1 -1
- package/dist/core/task-paths.js +4 -1
- package/dist/core/task-paths.js.map +1 -1
- package/dist/core/unified-config.d.ts +8 -0
- package/dist/core/unified-config.d.ts.map +1 -1
- package/dist/core/unified-config.js +3 -0
- package/dist/core/unified-config.js.map +1 -1
- package/dist/core/unit-context-assembler.d.ts.map +1 -1
- package/dist/core/unit-context-assembler.js +21 -45
- package/dist/core/unit-context-assembler.js.map +1 -1
- package/dist/core/unit-staffing.d.ts +28 -1
- package/dist/core/unit-staffing.d.ts.map +1 -1
- package/dist/core/unit-staffing.js +115 -20
- package/dist/core/unit-staffing.js.map +1 -1
- package/dist/utils/markdown-image.d.ts +12 -0
- package/dist/utils/markdown-image.d.ts.map +1 -0
- package/dist/utils/markdown-image.js +34 -0
- package/dist/utils/markdown-image.js.map +1 -0
- package/package.json +2 -1
- package/templates/html/speccore-ask-guide.html +1 -1
- package/templates/html/speccore-ask-pipeline.html +1 -1
- package/templates/html/speccore-ask-result.html +1 -1
- package/templates/html/speccore-help.html +2 -2
|
@@ -216,16 +216,26 @@ async function checkImages(content, outputDir, iterDir, issues) {
|
|
|
216
216
|
while ((match = imgRegex.exec(content)) !== null) {
|
|
217
217
|
images.push({ alt: match[1], path: match[2] });
|
|
218
218
|
}
|
|
219
|
+
// 兼容 HTML <img src="..."> 形态(旧 doc2spec 产物 / 手写文档),v8.3.331+
|
|
220
|
+
content.replace(/<img\b([^>]*)\/?>/g, (_tag, attrs) => {
|
|
221
|
+
const src = /src="([^"]+)"/.exec(attrs)?.[1];
|
|
222
|
+
const alt = /alt="([^"]*)"/.exec(attrs)?.[1] ?? '';
|
|
223
|
+
if (src)
|
|
224
|
+
images.push({ alt, path: src });
|
|
225
|
+
return '';
|
|
226
|
+
});
|
|
219
227
|
let missingCount = 0;
|
|
220
228
|
for (const img of images) {
|
|
221
229
|
// 跳过外部 URL
|
|
222
230
|
if (img.path.startsWith('http://') || img.path.startsWith('https://'))
|
|
223
231
|
continue;
|
|
232
|
+
// Windows 反斜杠归一化(旧产物可能带 \),避免 basename 拆分失效
|
|
233
|
+
const posix = img.path.replace(/\\/g, '/');
|
|
224
234
|
// 尝试在多个可能的位置查找图片
|
|
225
235
|
const possiblePaths = [
|
|
226
|
-
(0, path_1.join)(outputDir,
|
|
227
|
-
(0, path_1.join)(iterDir, '010-requirements', 'assets', 'extracted',
|
|
228
|
-
(0, path_1.join)(iterDir,
|
|
236
|
+
(0, path_1.join)(outputDir, posix),
|
|
237
|
+
(0, path_1.join)(iterDir, '010-requirements', 'assets', 'extracted', posix.replace(/.*\//, '')),
|
|
238
|
+
(0, path_1.join)(iterDir, posix),
|
|
229
239
|
];
|
|
230
240
|
let found = false;
|
|
231
241
|
for (const p of possiblePaths) {
|
|
@@ -239,7 +249,7 @@ async function checkImages(content, outputDir, iterDir, issues) {
|
|
|
239
249
|
issues.push({
|
|
240
250
|
severity: 'error',
|
|
241
251
|
category: 'image',
|
|
242
|
-
description: `图片引用可能失效: ${
|
|
252
|
+
description: `图片引用可能失效: ${posix}`,
|
|
243
253
|
suggestion: '检查 pandoc 是否正确提取了图片,或手动将图片放入 assets/extracted/ 目录',
|
|
244
254
|
fixed: false,
|
|
245
255
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-validator.js","sourceRoot":"","sources":["../../src/core/doc-validator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doc-validator.js","sourceRoot":"","sources":["../../src/core/doc-validator.ts"],"names":[],"mappings":";;AAoCA,0CAgDC;AA8VD,wCA6DC;AA/eD;;;;;GAKG;AACH,uCAAsC;AACtC,+BAAqC;AA0BrC;;GAEG;AACI,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,SAAiB,EACjB,OAAe;IAEf,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,kBAAkB;IAClB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE7B,kBAAkB;IAClB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE/C,mBAAmB;IACnB,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE5D,kBAAkB;IAClB,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAE1E,mBAAmB;IACnB,wBAAwB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAEjD,gBAAgB;IAChB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAEjD,4CAA4C;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,EAAE,GAAG,QAAQ,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAEvF,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAE3F,OAAO;QACL,KAAK;QACL,WAAW,EAAE,MAAM,CAAC,MAAM;QAC1B,MAAM;QACN,QAAQ;QACR,KAAK;QACL,KAAK;QACL,MAAM;QACN,QAAQ;QACR,QAAQ;QACR,UAAU;QACV,UAAU;QACV,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,KAAe,EAAE,MAAyB;IAC/D,mBAAmB;IACnB,MAAM,eAAe,GAAG;QACtB,8BAA8B,EAAG,kBAAkB;QACnD,QAAQ,EAA4B,eAAe;QACnD,OAAO,EAA0B,cAAc;QAC/C,QAAQ,EAA4B,gCAAgC;QACpE,SAAS,EAA0B,SAAS;KAC7C,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,UAAU;oBACpB,IAAI,EAAE,CAAC,GAAG,CAAC;oBACX,WAAW,EAAE,eAAe,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK;oBACtD,UAAU,EAAE,+BAA+B;oBAC3C,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;gBACH,MAAM,CAAC,UAAU;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,YAAY;IACZ,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAChF,MAAM,WAAW,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACjF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,8BAA8B;YAC3C,UAAU,EAAE,gBAAgB;YAC5B,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,KAAe,EACf,MAAyB;IAEzB,MAAM,QAAQ,GAAuD,EAAE,CAAC;IACxE,MAAM,QAAQ,GAA4D,EAAE,CAAC;IAE7E,SAAS;IACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,KAAK,EAAE,CAAC;YACV,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,SAAS;gBACnB,QAAQ,EAAE,WAAW;gBACrB,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtB,WAAW,EAAE,YAAY,QAAQ,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,OAAO,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG;gBAC1H,UAAU,EAAE,YAAY,QAAQ,CAAC,CAAC,GAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,OAAO;gBACtD,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,cAAc;IACd,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACtF,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAEhF,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,WAAW;YACrB,WAAW,EAAE,sBAAsB;YACnC,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;IAED,YAAY;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACnC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAClF,QAAQ,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO;YAC5B,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK;YACxB,SAAS,EAAE,OAAO,GAAG,SAAS,GAAG,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAClB,KAAe,EACf,MAAyB;IAEzB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAE7B,QAAQ;QACR,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC;gBACf,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;gBACvB,UAAU,EAAE,CAAC;YACf,CAAC;YAED,MAAM;YACN,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;gBAC1D,IAAI,CAAC,KAAK,cAAc,GAAG,CAAC,EAAE,CAAC;oBAC7B,aAAa,GAAG,IAAI,CAAC;gBACvB,CAAC;gBAED,eAAe;gBACf,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrC,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC;oBACtC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC5C,QAAQ,EAAE,CAAC;oBACX,mBAAmB;oBACnB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC7C,MAAM,CAAC,IAAI,CAAC;4BACV,QAAQ,EAAE,SAAS;4BACnB,QAAQ,EAAE,WAAW;4BACrB,IAAI,EAAE,CAAC,GAAG,CAAC;4BACX,WAAW,EAAE,iBAAiB;4BAC9B,UAAU,EAAE,oBAAoB;4BAChC,KAAK,EAAE,KAAK;yBACb,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;YAED,SAAS;YACT,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBAAE,SAAS;YAE1C,kBAAkB;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAC9D,IAAI,QAAQ,KAAK,aAAa,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,CAAC,GAAG,CAAC;oBACX,WAAW,EAAE,eAAe,aAAa,UAAU,QAAQ,IAAI;oBAC/D,UAAU,EAAE,6BAA6B;oBACzC,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,KAAK,CAAC;YAChB,aAAa,GAAG,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CACxB,OAAe,EACf,SAAiB,EACjB,OAAe,EACf,MAAyB;IAEzB,MAAM,QAAQ,GAAG,2BAA2B,CAAC;IAC7C,MAAM,MAAM,GAAoC,EAAE,CAAC;IACnD,IAAI,KAAK,CAAC;IAEV,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,6DAA6D;IAC7D,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,KAAa,EAAE,EAAE;QAC5D,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,GAAG;YAAE,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACzB,WAAW;QACX,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAS;QAEhF,4CAA4C;QAC5C,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAE3C,iBAAiB;QACjB,MAAM,aAAa,GAAG;YACpB,IAAA,WAAI,EAAC,SAAS,EAAE,KAAK,CAAC;YACtB,IAAA,WAAI,EAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACnF,IAAA,WAAI,EAAC,OAAO,EAAE,KAAK,CAAC;SACrB,CAAC;QAEF,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,IAAI,MAAM,IAAA,qBAAU,EAAC,CAAC,CAAC,EAAE,CAAC;gBACxB,KAAK,GAAG,IAAI,CAAC;gBACb,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,YAAY,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,QAAQ,EAAE,OAAO;gBACjB,WAAW,EAAE,aAAa,KAAK,EAAE;gBACjC,UAAU,EAAE,mDAAmD;gBAC/D,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAC/B,OAAe,EACf,KAAe,EACf,MAAyB;IAEzB,QAAQ;IACR,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,OAAO;YACjB,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,sBAAsB;YACnC,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,8BAA8B,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,+BAA+B;YAC5C,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;IAED,qBAAqB;IACrB,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACtE,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,MAAM,SAAS,wBAAwB;YACpD,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;IAED,sBAAsB;IACtB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACvB,gBAAgB,EAAE,CAAC;YACnB,IAAI,gBAAgB,GAAG,EAAE,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC;oBACV,QAAQ,EAAE,SAAS;oBACnB,QAAQ,EAAE,SAAS;oBACnB,WAAW,EAAE,4BAA4B;oBACzC,UAAU,EAAE,2BAA2B;oBACvC,KAAK,EAAE,KAAK;iBACb,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;QACH,CAAC;aAAM,CAAC;YACN,gBAAgB,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,KAAa,EACb,MAAyB,EACzB,QAAiE,EACjE,QAAgB,EAChB,UAAkB,EAClB,UAAkB;IAElB,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAE9E,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,OAAO,IAAI,YAAY,KAAK,KAAK,KAAK,SAAS,CAAC;IAChD,OAAO,IAAI,WAAW,QAAQ,CAAC,MAAM,WAAW,UAAU,YAAY,QAAQ,UAAU,UAAU,IAAI,CAAC;IAEvG,MAAM,UAAU,GAAsC,EAAE,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;QACvE,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QACxE,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,OAAO,IAAI,GAAG,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,SAAS,MAAM,QAAQ,MAAM,CAAC;IAChF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,SAAS,GAA2B;IACxC,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,MAAM;IACjB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,OAAO;IAClB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAwB,EAAE,UAAkB;IACzE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,KAAK,MAAM,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC/B,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC;IAChE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACnD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YACnG,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;YAChD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;YAC5G,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;YACnI,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,MAAM,GAAG,MAAM,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC;QACxG,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACrC,CAAC;SAAM,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5B,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
/**
|
|
12
12
|
* Git 配置 — 三级回退:子任务级 > 迭代级 > 全局级 > 默认值
|
|
13
13
|
*
|
|
14
|
-
* 继承链:命令行参数 > 子任务 .meta/git-config > 迭代级 PROJECT_GRAPH.md
|
|
14
|
+
* 继承链:命令行参数 > 子任务 .meta/git-config > 迭代级 PROJECT_GRAPH.md
|
|
15
|
+
* > 全局 PROJECT.yaml git 段(机器事实源,v8.3.322+)> CONSTITUTION.md(AI 契约回退)> 默认值
|
|
15
16
|
*/
|
|
16
17
|
export interface GitConfig {
|
|
17
18
|
/** 默认基础分支(如 main/master) */
|
|
@@ -47,7 +48,7 @@ export declare const STANDARD_BRANCH_TYPES: Set<string>;
|
|
|
47
48
|
* 为任务创建 Git 分支
|
|
48
49
|
*
|
|
49
50
|
* 分支名按子任务级/迭代级/全局配置生成,支持自定义前缀和格式模板
|
|
50
|
-
* 三级回退:子任务 .meta/git-config > 迭代 PROJECT_GRAPH.md > 全局 CONSTITUTION
|
|
51
|
+
* 三级回退:子任务 .meta/git-config > 迭代 PROJECT_GRAPH.md > 全局 PROJECT.yaml > CONSTITUTION 回退
|
|
51
52
|
*
|
|
52
53
|
* v8.3.87+: 增加 cwd 参数,支持 speccore 与工程代码分离的目录结构
|
|
53
54
|
*/
|
|
@@ -79,8 +80,9 @@ export declare function loadSubtaskGitConfig(taskDir: string): Partial<GitConfig
|
|
|
79
80
|
* 配置来源优先级:
|
|
80
81
|
* 1. 子任务级 .meta/git-config 任务自身配置
|
|
81
82
|
* 2. 迭代级 PROJECT_GRAPH.md frontmatter 字段
|
|
82
|
-
* 3. 全局
|
|
83
|
-
* 4.
|
|
83
|
+
* 3. 全局 PROJECT.yaml git 段 机器事实源(v8.3.322+)
|
|
84
|
+
* 4. 全局 CONSTITUTION.md 「Git 分支策略」章节(AI 契约回退)
|
|
85
|
+
* 5. 默认值
|
|
84
86
|
*
|
|
85
87
|
* 每个字段独立回退:子任务只配了 branchPrefix,defaultBranch 仍从迭代/全局继承
|
|
86
88
|
*/
|
|
@@ -121,7 +123,9 @@ export declare function generateCommitMessage(taskId: string, taskName: string,
|
|
|
121
123
|
*/
|
|
122
124
|
export declare function generatePRDescription(taskId: string, taskName: string, cwd?: string): string;
|
|
123
125
|
/**
|
|
124
|
-
*
|
|
126
|
+
* 读取保护分支列表
|
|
127
|
+
* v8.3.323: 严格收敛——PROJECT.yaml 声明了(含显式清空 [])就以其为准;
|
|
128
|
+
* 未声明则回退 CONSTITUTION「保护分支」;两处都无则兜底默认 main/master。
|
|
125
129
|
*/
|
|
126
130
|
export declare function getProtectedBranches(): string[];
|
|
127
131
|
/**
|
|
@@ -131,9 +135,10 @@ export declare function getProtectedBranches(): string[];
|
|
|
131
135
|
*/
|
|
132
136
|
export declare function isProtectedBranch(branchName: string): boolean;
|
|
133
137
|
/**
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
138
|
+
* 获取拦截用保护分支(v8.3.323: 严格收敛,与同步版 getProtectedBranches 同口径)
|
|
139
|
+
* PROJECT.yaml 声明即准(含显式清空);未声明回退 CONSTITUTION;两处都无兜底默认。
|
|
140
|
+
* 此前为「CONSTITUTION + PROJECT.yaml 合并」——PROJECT.yaml 已声明时残留的
|
|
141
|
+
* CONSTITUTION 旧值仍会拦截,用户删改 PROJECT.yaml 无法解除保护,与唯一事实源矛盾。
|
|
137
142
|
*/
|
|
138
143
|
export declare function getProtectedBranchesMerged(): Promise<string[]>;
|
|
139
144
|
/** isProtectedBranch 的异步合并版(含 PROJECT.yaml 全局/端级配置) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-integration.d.ts","sourceRoot":"","sources":["../../src/core/git-integration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmBH
|
|
1
|
+
{"version":3,"file":"git-integration.d.ts","sourceRoot":"","sources":["../../src/core/git-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,39 +9,6 @@
|
|
|
9
9
|
* - Git Hook 安装
|
|
10
10
|
* - 保护分支拦截
|
|
11
11
|
*/
|
|
12
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
15
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
16
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
17
|
-
}
|
|
18
|
-
Object.defineProperty(o, k2, desc);
|
|
19
|
-
}) : (function(o, m, k, k2) {
|
|
20
|
-
if (k2 === undefined) k2 = k;
|
|
21
|
-
o[k2] = m[k];
|
|
22
|
-
}));
|
|
23
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
24
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
25
|
-
}) : function(o, v) {
|
|
26
|
-
o["default"] = v;
|
|
27
|
-
});
|
|
28
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
29
|
-
var ownKeys = function(o) {
|
|
30
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
31
|
-
var ar = [];
|
|
32
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
33
|
-
return ar;
|
|
34
|
-
};
|
|
35
|
-
return ownKeys(o);
|
|
36
|
-
};
|
|
37
|
-
return function (mod) {
|
|
38
|
-
if (mod && mod.__esModule) return mod;
|
|
39
|
-
var result = {};
|
|
40
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
41
|
-
__setModuleDefault(result, mod);
|
|
42
|
-
return result;
|
|
43
|
-
};
|
|
44
|
-
})();
|
|
45
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
13
|
exports.STANDARD_BRANCH_TYPES = exports.TASK_TYPE_TO_BRANCH_TYPE = void 0;
|
|
47
14
|
exports.createTaskBranch = createTaskBranch;
|
|
@@ -92,11 +59,116 @@ const DEFAULT_GIT_CONFIG = {
|
|
|
92
59
|
mergeWhitelist: [],
|
|
93
60
|
mergeBlacklist: [],
|
|
94
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* 同步读取 PROJECT.yaml 的 Git 配置(v8.3.322+)
|
|
64
|
+
*
|
|
65
|
+
* Git 配置单向收敛:PROJECT.yaml 是机器事实源,CONSTITUTION.md 是 AI 阅读契约与兼容回退。
|
|
66
|
+
* 只认用户显式声明的字段(不合并 DEFAULT_PROJECT_CONFIG 默认值),未声明返回 undefined,
|
|
67
|
+
* 由调用方按字段独立回退 CONSTITUTION / 默认值。
|
|
68
|
+
*
|
|
69
|
+
* 与 resolveTaskBaseBranch 的 loadRawProjectConfig 同源同语义,但本函数是同步版——
|
|
70
|
+
* loadGitConfig / getProtectedBranches 是同步接口,不能 await。
|
|
71
|
+
*/
|
|
72
|
+
function loadRawProjectGitSync() {
|
|
73
|
+
try {
|
|
74
|
+
const projectPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'PROJECT.yaml');
|
|
75
|
+
if (!(0, fs_extra_1.existsSync)(projectPath))
|
|
76
|
+
return null;
|
|
77
|
+
const raw = (0, unified_config_1.parseYaml)((0, fs_extra_1.readFileSync)(projectPath, 'utf-8'));
|
|
78
|
+
if (!raw?.git)
|
|
79
|
+
return null;
|
|
80
|
+
const result = {};
|
|
81
|
+
if (typeof raw.git.default_base === 'string' && raw.git.default_base.trim()) {
|
|
82
|
+
result.defaultBase = raw.git.default_base.trim();
|
|
83
|
+
}
|
|
84
|
+
// 全局 + 端级 protected_branches 合并;「声明」= git 段键存在 或 任一端声明
|
|
85
|
+
const declared = raw.git.protected_branches !== undefined && raw.git.protected_branches !== null
|
|
86
|
+
|| (raw.platforms || []).some((p) => p?.protected_branches !== undefined && p?.protected_branches !== null);
|
|
87
|
+
if (declared)
|
|
88
|
+
result.declaredProtected = true;
|
|
89
|
+
const merged = new Set();
|
|
90
|
+
for (const b of raw.git.protected_branches || []) {
|
|
91
|
+
if (b != null)
|
|
92
|
+
merged.add(String(b).trim());
|
|
93
|
+
}
|
|
94
|
+
for (const p of raw.platforms || []) {
|
|
95
|
+
for (const b of p?.protected_branches || []) {
|
|
96
|
+
if (b != null)
|
|
97
|
+
merged.add(String(b).trim());
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (merged.size > 0)
|
|
101
|
+
result.protectedBranches = [...merged];
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Git 源不一致告警标记文件(指纹去重,避免每个任务刷屏) */
|
|
109
|
+
const gitSourceWarnPath = () => (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'local', '.git-source-warn.json');
|
|
110
|
+
/**
|
|
111
|
+
* Git 配置双源不一致告警(v8.3.323)
|
|
112
|
+
*
|
|
113
|
+
* 存量项目升级后,PROJECT.yaml 与 CONSTITUTION 可能残留两份不一致的 Git 配置。
|
|
114
|
+
* 机器已切到「PROJECT.yaml 声明即准」,此处把不一致摆到明面上,按指纹只告警一次:
|
|
115
|
+
* 同一不一致不重复刷屏;用户修平后标记清除,未来再不一致可再次告警。
|
|
116
|
+
*/
|
|
117
|
+
function warnGitSourceMismatch() {
|
|
118
|
+
try {
|
|
119
|
+
const constitutionPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'CONSTITUTION.md');
|
|
120
|
+
if (!(0, fs_extra_1.existsSync)(constitutionPath))
|
|
121
|
+
return;
|
|
122
|
+
const content = (0, fs_extra_1.readFileSync)(constitutionPath, 'utf-8');
|
|
123
|
+
const cnDefault = content.match(/^[-•]\s*\**默认分支\**\s*[::]\s*([A-Za-z0-9._\/-]+)/m)?.[1] ?? null;
|
|
124
|
+
const cnProtectRaw = content.match(/^[-•]\s*\**保护分支\**\s*[::]\s*(.+)$/m)?.[1] ?? null;
|
|
125
|
+
const cnProtect = cnProtectRaw ? cnProtectRaw.split(',').map((s) => s.trim()).filter(Boolean) : null;
|
|
126
|
+
const projectGit = loadRawProjectGitSync();
|
|
127
|
+
const mismatches = [];
|
|
128
|
+
if (projectGit?.defaultBase && cnDefault && projectGit.defaultBase !== cnDefault) {
|
|
129
|
+
mismatches.push(`默认分支:PROJECT.yaml=${projectGit.defaultBase},CONSTITUTION=${cnDefault}`);
|
|
130
|
+
}
|
|
131
|
+
if (projectGit?.declaredProtected && cnProtect) {
|
|
132
|
+
const py = [...(projectGit.protectedBranches || [])].sort().join(',');
|
|
133
|
+
const cn = [...cnProtect].sort().join(',');
|
|
134
|
+
if (py !== cn)
|
|
135
|
+
mismatches.push(`保护分支:PROJECT.yaml=[${py}],CONSTITUTION=[${cn}]`);
|
|
136
|
+
}
|
|
137
|
+
const markerPath = gitSourceWarnPath();
|
|
138
|
+
const fingerprint = mismatches.join(' || ');
|
|
139
|
+
let warned = '';
|
|
140
|
+
try {
|
|
141
|
+
warned = (0, fs_extra_1.readFileSync)(markerPath, 'utf-8').trim();
|
|
142
|
+
}
|
|
143
|
+
catch { }
|
|
144
|
+
if (mismatches.length === 0) {
|
|
145
|
+
if (warned) {
|
|
146
|
+
try {
|
|
147
|
+
(0, fs_extra_1.writeFileSync)(markerPath, '');
|
|
148
|
+
}
|
|
149
|
+
catch { }
|
|
150
|
+
} // 已修平,清除标记
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (warned === fingerprint)
|
|
154
|
+
return; // 同一不一致已告警过
|
|
155
|
+
try {
|
|
156
|
+
(0, fs_extra_1.ensureFileSync)(markerPath);
|
|
157
|
+
(0, fs_extra_1.writeFileSync)(markerPath, fingerprint);
|
|
158
|
+
}
|
|
159
|
+
catch { }
|
|
160
|
+
for (const m of mismatches) {
|
|
161
|
+
console.warn(`⚠️ SpecCore: Git 配置两处不一致(机器以 PROJECT.yaml 为准)— ${m}`);
|
|
162
|
+
}
|
|
163
|
+
console.warn(' 请修正 CONSTITUTION.md「Git 分支策略」或 PROJECT.yaml git 段,使两处一致');
|
|
164
|
+
}
|
|
165
|
+
catch { }
|
|
166
|
+
}
|
|
95
167
|
/**
|
|
96
168
|
* 为任务创建 Git 分支
|
|
97
169
|
*
|
|
98
170
|
* 分支名按子任务级/迭代级/全局配置生成,支持自定义前缀和格式模板
|
|
99
|
-
* 三级回退:子任务 .meta/git-config > 迭代 PROJECT_GRAPH.md > 全局 CONSTITUTION
|
|
171
|
+
* 三级回退:子任务 .meta/git-config > 迭代 PROJECT_GRAPH.md > 全局 PROJECT.yaml > CONSTITUTION 回退
|
|
100
172
|
*
|
|
101
173
|
* v8.3.87+: 增加 cwd 参数,支持 speccore 与工程代码分离的目录结构
|
|
102
174
|
*/
|
|
@@ -303,46 +375,68 @@ function loadSubtaskGitConfig(taskDir) {
|
|
|
303
375
|
* 配置来源优先级:
|
|
304
376
|
* 1. 子任务级 .meta/git-config 任务自身配置
|
|
305
377
|
* 2. 迭代级 PROJECT_GRAPH.md frontmatter 字段
|
|
306
|
-
* 3. 全局
|
|
307
|
-
* 4.
|
|
378
|
+
* 3. 全局 PROJECT.yaml git 段 机器事实源(v8.3.322+)
|
|
379
|
+
* 4. 全局 CONSTITUTION.md 「Git 分支策略」章节(AI 契约回退)
|
|
380
|
+
* 5. 默认值
|
|
308
381
|
*
|
|
309
382
|
* 每个字段独立回退:子任务只配了 branchPrefix,defaultBranch 仍从迭代/全局继承
|
|
310
383
|
*/
|
|
311
384
|
function loadGitConfig(iteration, taskDir) {
|
|
312
385
|
const config = {};
|
|
313
|
-
//
|
|
386
|
+
// v8.3.323: 双源不一致告警(指纹去重,仅在 PROJECT.yaml 与 CONSTITUTION 值冲突时提示一次)
|
|
387
|
+
warnGitSourceMismatch();
|
|
388
|
+
// ── 1. 全局层:PROJECT.yaml git 段(机器事实源)> CONSTITUTION.md「Git 分支策略」(AI 契约回退) ──
|
|
389
|
+
// v8.3.322: Git 配置单向收敛——PROJECT.yaml 是唯一机器事实源;CONSTITUTION 保留为
|
|
390
|
+
// AI 阅读契约与兼容回退,同一字段仅在 PROJECT.yaml 未显式声明时才从 CONSTITUTION 取值。
|
|
391
|
+
// 1a. PROJECT.yaml(同步读原始文件;branch_prefix 是旧语义兼容字段,其现代语义
|
|
392
|
+
// 已由 getEffectiveGitConfig 端级路径消费,此处不注入以免与 branchType 双拼)
|
|
393
|
+
const projectGit = loadRawProjectGitSync();
|
|
394
|
+
if (projectGit) {
|
|
395
|
+
if (projectGit.defaultBase)
|
|
396
|
+
config.defaultBranch = projectGit.defaultBase;
|
|
397
|
+
// v8.3.323: 声明即准(含显式清空 [] = 无保护分支)
|
|
398
|
+
if (projectGit.declaredProtected)
|
|
399
|
+
config.protectedBranches = projectGit.protectedBranches || [];
|
|
400
|
+
}
|
|
401
|
+
// 1b. CONSTITUTION.md 回退(每字段独立:仅当上面未取到值)
|
|
314
402
|
try {
|
|
315
403
|
const constitutionPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'CONSTITUTION.md');
|
|
316
404
|
if ((0, fs_extra_1.existsSync)(constitutionPath)) {
|
|
317
405
|
const content = (0, fs_extra_1.readFileSync)(constitutionPath, 'utf-8');
|
|
318
406
|
// 默认分支(v8.3.300: 行首锚定 + 兼容「**默认分支**」双侧加粗格式,避开「> - **默认分支**:如 main...」字段说明行误匹配)
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
407
|
+
if (!config.defaultBranch) {
|
|
408
|
+
const branchMatch = content.match(/^[-•]\s*\**默认分支\**\s*[::]\s*([A-Za-z0-9._\/-]+)/m);
|
|
409
|
+
if (branchMatch)
|
|
410
|
+
config.defaultBranch = branchMatch[1];
|
|
411
|
+
}
|
|
322
412
|
// 任务分支类型段(从"任务分支: feature/{Task-ID}"提取,兼容加粗格式)
|
|
323
413
|
// v8.3.306: 语义矫正——「任务分支」的 X/ 段是分支类型而非前缀;此前误存
|
|
324
414
|
// branchPrefix,与 {type} 段重复拼出 feature/feature-Task-XXX,导致分支名与
|
|
325
415
|
// 子任务 ID 不一致。标准类型名写入 branchType,自定义值(兼容保留)仍入 branchPrefix。
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
if (
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
config.branchPrefix
|
|
416
|
+
if (!config.branchType) {
|
|
417
|
+
const taskBranchMatch = content.match(/^[-•]\s*\**任务分支\**\s*[::]\s*(\S+?)\//m);
|
|
418
|
+
if (taskBranchMatch) {
|
|
419
|
+
const extracted = taskBranchMatch[1];
|
|
420
|
+
// v8.3.293+: 模板变量(如 {type})不是真实值,忽略以免污染分支命名
|
|
421
|
+
if (!extracted.includes('{') && !extracted.includes('}')) {
|
|
422
|
+
if (exports.STANDARD_BRANCH_TYPES.has(extracted)) {
|
|
423
|
+
config.branchType = extracted;
|
|
424
|
+
}
|
|
425
|
+
else if (config.branchPrefix === undefined) {
|
|
426
|
+
config.branchPrefix = extracted;
|
|
427
|
+
}
|
|
336
428
|
}
|
|
337
429
|
}
|
|
338
430
|
}
|
|
339
431
|
// 保护分支(行首锚定,兼容「**保护分支**」双侧加粗格式,避开字段说明行)
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
.
|
|
344
|
-
|
|
345
|
-
|
|
432
|
+
if (!config.protectedBranches) {
|
|
433
|
+
const protectMatch = content.match(/^[-•]\s*\**保护分支\**\s*[::]\s*(.+)$/m);
|
|
434
|
+
if (protectMatch) {
|
|
435
|
+
config.protectedBranches = protectMatch[1]
|
|
436
|
+
.split(',')
|
|
437
|
+
.map((s) => s.trim())
|
|
438
|
+
.filter(Boolean);
|
|
439
|
+
}
|
|
346
440
|
}
|
|
347
441
|
// v8.3.209+: 依赖合并策略(auto/manual/off)+ 黑白名单
|
|
348
442
|
const mergeDepMatch = content.match(/依赖合并策略[::]\s*(\S+)/);
|
|
@@ -595,26 +689,36 @@ function generatePRDescription(taskId, taskName, cwd) {
|
|
|
595
689
|
return lines.join('\n');
|
|
596
690
|
}
|
|
597
691
|
/**
|
|
598
|
-
*
|
|
692
|
+
* 读取保护分支列表
|
|
693
|
+
* v8.3.323: 严格收敛——PROJECT.yaml 声明了(含显式清空 [])就以其为准;
|
|
694
|
+
* 未声明则回退 CONSTITUTION「保护分支」;两处都无则兜底默认 main/master。
|
|
599
695
|
*/
|
|
600
696
|
function getProtectedBranches() {
|
|
697
|
+
const projectGit = loadRawProjectGitSync();
|
|
698
|
+
if (projectGit?.declaredProtected) {
|
|
699
|
+
// 声明即准:显式清空 = 无保护分支,尊重用户意图,不回退 CONSTITUTION
|
|
700
|
+
return projectGit.protectedBranches || [];
|
|
701
|
+
}
|
|
702
|
+
// 2. CONSTITUTION.md「保护分支」(AI 契约回退)
|
|
703
|
+
const merged = new Set();
|
|
601
704
|
try {
|
|
602
705
|
const constitutionPath = (0, path_1.join)((0, task_utils_1.getProjectRoot)(), '.speccore', 'CONSTITUTION.md');
|
|
603
|
-
if (
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
catch {
|
|
616
|
-
return [];
|
|
706
|
+
if ((0, fs_extra_1.existsSync)(constitutionPath)) {
|
|
707
|
+
const content = (0, fs_extra_1.readFileSync)(constitutionPath, 'utf-8');
|
|
708
|
+
// v8.3.300: 行首锚定 + 兼容「**保护分支**」双侧加粗格式(此前匹配不到导致保护分支检查失效)
|
|
709
|
+
const match = content.match(/^[-•]\s*\**保护分支\**\s*[::]\s*(.+)$/m);
|
|
710
|
+
if (match) {
|
|
711
|
+
for (const s of match[1].split(',')) {
|
|
712
|
+
const v = s.trim();
|
|
713
|
+
if (v)
|
|
714
|
+
merged.add(v);
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
}
|
|
617
718
|
}
|
|
719
|
+
catch { }
|
|
720
|
+
const list = [...merged];
|
|
721
|
+
return list.length > 0 ? list : DEFAULT_GIT_CONFIG.protectedBranches;
|
|
618
722
|
}
|
|
619
723
|
/** 单个保护分支规则匹配(精确匹配 + 通配符如 release/*) */
|
|
620
724
|
function matchesProtectedPattern(branchName, pattern) {
|
|
@@ -639,26 +743,14 @@ function isProtectedBranch(branchName) {
|
|
|
639
743
|
return false;
|
|
640
744
|
}
|
|
641
745
|
/**
|
|
642
|
-
*
|
|
643
|
-
*
|
|
644
|
-
*
|
|
746
|
+
* 获取拦截用保护分支(v8.3.323: 严格收敛,与同步版 getProtectedBranches 同口径)
|
|
747
|
+
* PROJECT.yaml 声明即准(含显式清空);未声明回退 CONSTITUTION;两处都无兜底默认。
|
|
748
|
+
* 此前为「CONSTITUTION + PROJECT.yaml 合并」——PROJECT.yaml 已声明时残留的
|
|
749
|
+
* CONSTITUTION 旧值仍会拦截,用户删改 PROJECT.yaml 无法解除保护,与唯一事实源矛盾。
|
|
645
750
|
*/
|
|
646
751
|
async function getProtectedBranchesMerged() {
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
const { loadProjectConfig } = await Promise.resolve().then(() => __importStar(require('../core/unified-config')));
|
|
650
|
-
const pc = await loadProjectConfig();
|
|
651
|
-
for (const b of pc.git?.protected_branches || [])
|
|
652
|
-
merged.add(b);
|
|
653
|
-
for (const p of pc.platforms || []) {
|
|
654
|
-
for (const b of p.protected_branches || [])
|
|
655
|
-
merged.add(b);
|
|
656
|
-
}
|
|
657
|
-
}
|
|
658
|
-
catch {
|
|
659
|
-
// PROJECT.yaml 读取失败时仅用 CONSTITUTION.md 结果
|
|
660
|
-
}
|
|
661
|
-
return [...merged];
|
|
752
|
+
warnGitSourceMismatch();
|
|
753
|
+
return getProtectedBranches();
|
|
662
754
|
}
|
|
663
755
|
/** isProtectedBranch 的异步合并版(含 PROJECT.yaml 全局/端级配置) */
|
|
664
756
|
async function isProtectedBranchAsync(branchName) {
|
|
@@ -688,6 +780,11 @@ function installGitHooks(cwd) {
|
|
|
688
780
|
CURRENT_BRANCH=$(git branch --show-current 2>/dev/null)
|
|
689
781
|
if [ -n "$CURRENT_BRANCH" ] && [ -f ".speccore/CONSTITUTION.md" ]; then
|
|
690
782
|
PROTECTED=$(grep '保护分支' .speccore/CONSTITUTION.md | sed 's/.*[::]\\s*//' | tr ',' '\\n' | sed 's/^[ \\t]*//')
|
|
783
|
+
# v8.3.322: PROJECT.yaml(git 段 + 端级)protected_branches 一并纳入(机器事实源)
|
|
784
|
+
if [ -f ".speccore/PROJECT.yaml" ]; then
|
|
785
|
+
PY_PROTECTED=$(sed -n '/^[[:space:]]*protected_branches:/,/^[[:space:]]*[a-zA-Z_][a-zA-Z0-9_]*:/p' .speccore/PROJECT.yaml | grep '^[[:space:]]*- ' | sed 's/^[[:space:]]*- //; s/[[:space:]]*#.*$//; s/[[:space:]]*$//')
|
|
786
|
+
PROTECTED="$PROTECTED $PY_PROTECTED"
|
|
787
|
+
fi
|
|
691
788
|
for PATTERN in $PROTECTED; do
|
|
692
789
|
# 精确匹配
|
|
693
790
|
if [ "$CURRENT_BRANCH" = "$PATTERN" ]; then
|
|
@@ -722,6 +819,11 @@ git diff --cached --name-only | grep -q "@spec" && echo "✅ Spec annotations fo
|
|
|
722
819
|
CURRENT_BRANCH=$(git branch --show-current 2>/dev/null)
|
|
723
820
|
if [ -n "$CURRENT_BRANCH" ] && [ -f ".speccore/CONSTITUTION.md" ]; then
|
|
724
821
|
PROTECTED=$(grep '保护分支' .speccore/CONSTITUTION.md | sed 's/.*[::]\\s*//' | tr ',' '\\n' | sed 's/^[ \\t]*//')
|
|
822
|
+
# v8.3.322: PROJECT.yaml(git 段 + 端级)protected_branches 一并纳入(机器事实源)
|
|
823
|
+
if [ -f ".speccore/PROJECT.yaml" ]; then
|
|
824
|
+
PY_PROTECTED=$(sed -n '/^[[:space:]]*protected_branches:/,/^[[:space:]]*[a-zA-Z_][a-zA-Z0-9_]*:/p' .speccore/PROJECT.yaml | grep '^[[:space:]]*- ' | sed 's/^[[:space:]]*- //; s/[[:space:]]*#.*$//; s/[[:space:]]*$//')
|
|
825
|
+
PROTECTED="$PROTECTED $PY_PROTECTED"
|
|
826
|
+
fi
|
|
725
827
|
for PATTERN in $PROTECTED; do
|
|
726
828
|
if [ "$CURRENT_BRANCH" = "$PATTERN" ]; then
|
|
727
829
|
echo "❌ SpecCore: 保护分支 '$CURRENT_BRANCH' 禁止 push"
|