soloforge 1.0.0 → 1.1.1
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/README.md +4 -1
- package/dist/adapters/claude_code/claude_md.d.ts +1 -2
- package/dist/adapters/claude_code/claude_md.d.ts.map +1 -1
- package/dist/adapters/claude_code/claude_md.js +2 -76
- package/dist/adapters/claude_code/claude_md.js.map +1 -1
- package/dist/adapters/claude_code/server.d.ts +16 -0
- package/dist/adapters/claude_code/server.d.ts.map +1 -1
- package/dist/adapters/claude_code/server.js +17 -1
- package/dist/adapters/claude_code/server.js.map +1 -1
- package/dist/adapters/claude_code/tools.d.ts +32 -1
- package/dist/adapters/claude_code/tools.d.ts.map +1 -1
- package/dist/adapters/claude_code/tools.js +65 -30
- package/dist/adapters/claude_code/tools.js.map +1 -1
- package/dist/adapters/codex/codex_config.d.ts +3 -0
- package/dist/adapters/codex/codex_config.d.ts.map +1 -0
- package/dist/adapters/codex/codex_config.js +51 -0
- package/dist/adapters/codex/codex_config.js.map +1 -0
- package/dist/adapters/codex/codex_rules.d.ts +2 -0
- package/dist/adapters/codex/codex_rules.d.ts.map +1 -0
- package/dist/adapters/codex/codex_rules.js +5 -0
- package/dist/adapters/codex/codex_rules.js.map +1 -0
- package/dist/adapters/shared/workflow_template.d.ts +3 -0
- package/dist/adapters/shared/workflow_template.d.ts.map +1 -0
- package/dist/adapters/shared/workflow_template.js +78 -0
- package/dist/adapters/shared/workflow_template.js.map +1 -0
- package/dist/adapters/trae/trae_rules.d.ts +1 -2
- package/dist/adapters/trae/trae_rules.d.ts.map +1 -1
- package/dist/adapters/trae/trae_rules.js +2 -75
- package/dist/adapters/trae/trae_rules.js.map +1 -1
- package/dist/bin/soloforge.js +171 -22
- package/dist/bin/soloforge.js.map +1 -1
- package/dist/engine/change_coordinator.d.ts +20 -5
- package/dist/engine/change_coordinator.d.ts.map +1 -1
- package/dist/engine/change_coordinator.js +36 -22
- package/dist/engine/change_coordinator.js.map +1 -1
- package/dist/engine/classifier.d.ts +7 -0
- package/dist/engine/classifier.d.ts.map +1 -1
- package/dist/engine/classifier.js +75 -3
- package/dist/engine/classifier.js.map +1 -1
- package/dist/engine/code_reviewer.d.ts +37 -1
- package/dist/engine/code_reviewer.d.ts.map +1 -1
- package/dist/engine/code_reviewer.js +126 -24
- package/dist/engine/code_reviewer.js.map +1 -1
- package/dist/engine/confidence_scorer.d.ts +21 -0
- package/dist/engine/confidence_scorer.d.ts.map +1 -1
- package/dist/engine/confidence_scorer.js +19 -6
- package/dist/engine/confidence_scorer.js.map +1 -1
- package/dist/engine/contract_guard.d.ts +23 -0
- package/dist/engine/contract_guard.d.ts.map +1 -1
- package/dist/engine/contract_guard.js +152 -43
- package/dist/engine/contract_guard.js.map +1 -1
- package/dist/engine/convention_detector.d.ts +20 -0
- package/dist/engine/convention_detector.d.ts.map +1 -1
- package/dist/engine/convention_detector.js +19 -1
- package/dist/engine/convention_detector.js.map +1 -1
- package/dist/engine/debt_reporter.d.ts +5 -0
- package/dist/engine/debt_reporter.d.ts.map +1 -1
- package/dist/engine/debt_reporter.js +30 -6
- package/dist/engine/debt_reporter.js.map +1 -1
- package/dist/engine/debt_tracker.d.ts +52 -0
- package/dist/engine/debt_tracker.d.ts.map +1 -1
- package/dist/engine/debt_tracker.js +66 -1
- package/dist/engine/debt_tracker.js.map +1 -1
- package/dist/engine/debugger.d.ts +9 -0
- package/dist/engine/debugger.d.ts.map +1 -1
- package/dist/engine/debugger.js +112 -20
- package/dist/engine/debugger.js.map +1 -1
- package/dist/engine/delivery.d.ts +27 -0
- package/dist/engine/delivery.d.ts.map +1 -1
- package/dist/engine/delivery.js +67 -13
- package/dist/engine/delivery.js.map +1 -1
- package/dist/engine/dependency_scanner.d.ts +5 -8
- package/dist/engine/dependency_scanner.d.ts.map +1 -1
- package/dist/engine/dependency_scanner.js +46 -29
- package/dist/engine/dependency_scanner.js.map +1 -1
- package/dist/engine/evolver.d.ts +54 -0
- package/dist/engine/evolver.d.ts.map +1 -1
- package/dist/engine/evolver.js +159 -6
- package/dist/engine/evolver.js.map +1 -1
- package/dist/engine/exploration.d.ts +114 -0
- package/dist/engine/exploration.d.ts.map +1 -0
- package/dist/engine/exploration.js +414 -0
- package/dist/engine/exploration.js.map +1 -0
- package/dist/engine/failure_classifier.d.ts +28 -0
- package/dist/engine/failure_classifier.d.ts.map +1 -1
- package/dist/engine/failure_classifier.js +51 -5
- package/dist/engine/failure_classifier.js.map +1 -1
- package/dist/engine/git_deps.d.ts +29 -0
- package/dist/engine/git_deps.d.ts.map +1 -1
- package/dist/engine/git_deps.js +1 -0
- package/dist/engine/git_deps.js.map +1 -1
- package/dist/engine/impact_analyzer.d.ts +17 -0
- package/dist/engine/impact_analyzer.d.ts.map +1 -1
- package/dist/engine/impact_analyzer.js +76 -4
- package/dist/engine/impact_analyzer.js.map +1 -1
- package/dist/engine/intent_expander.d.ts +58 -0
- package/dist/engine/intent_expander.d.ts.map +1 -1
- package/dist/engine/intent_expander.js +173 -1
- package/dist/engine/intent_expander.js.map +1 -1
- package/dist/engine/migration_guard.d.ts +6 -0
- package/dist/engine/migration_guard.d.ts.map +1 -1
- package/dist/engine/migration_guard.js +26 -7
- package/dist/engine/migration_guard.js.map +1 -1
- package/dist/engine/observability.d.ts +31 -7
- package/dist/engine/observability.d.ts.map +1 -1
- package/dist/engine/observability.js +88 -28
- package/dist/engine/observability.js.map +1 -1
- package/dist/engine/onboarding.d.ts +41 -1
- package/dist/engine/onboarding.d.ts.map +1 -1
- package/dist/engine/onboarding.js +83 -8
- package/dist/engine/onboarding.js.map +1 -1
- package/dist/engine/scaffolder.d.ts +10 -0
- package/dist/engine/scaffolder.d.ts.map +1 -1
- package/dist/engine/scaffolder.js +55 -10
- package/dist/engine/scaffolder.js.map +1 -1
- package/dist/engine/scope_controller.d.ts +13 -0
- package/dist/engine/scope_controller.d.ts.map +1 -1
- package/dist/engine/scope_controller.js +76 -12
- package/dist/engine/scope_controller.js.map +1 -1
- package/dist/engine/task_context.d.ts +124 -0
- package/dist/engine/task_context.d.ts.map +1 -1
- package/dist/engine/task_context.js +155 -7
- package/dist/engine/task_context.js.map +1 -1
- package/dist/engine/task_planner.d.ts +17 -0
- package/dist/engine/task_planner.d.ts.map +1 -1
- package/dist/engine/task_planner.js +51 -4
- package/dist/engine/task_planner.js.map +1 -1
- package/dist/engine/team_awareness.d.ts +17 -0
- package/dist/engine/team_awareness.d.ts.map +1 -1
- package/dist/engine/team_awareness.js +29 -11
- package/dist/engine/team_awareness.js.map +1 -1
- package/dist/engine/test_generator.d.ts +5 -4
- package/dist/engine/test_generator.d.ts.map +1 -1
- package/dist/engine/test_generator.js +22 -5
- package/dist/engine/test_generator.js.map +1 -1
- package/dist/engine/test_quality.d.ts +11 -4
- package/dist/engine/test_quality.d.ts.map +1 -1
- package/dist/engine/test_quality.js +171 -14
- package/dist/engine/test_quality.js.map +1 -1
- package/dist/engine/verifier.d.ts +41 -0
- package/dist/engine/verifier.d.ts.map +1 -1
- package/dist/engine/verifier.js +110 -1
- package/dist/engine/verifier.js.map +1 -1
- package/dist/git/operations.d.ts +1 -0
- package/dist/git/operations.d.ts.map +1 -1
- package/dist/git/operations.js +3 -0
- package/dist/git/operations.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/knowledge/index_manager.d.ts +7 -1
- package/dist/knowledge/index_manager.d.ts.map +1 -1
- package/dist/knowledge/index_manager.js +112 -37
- package/dist/knowledge/index_manager.js.map +1 -1
- package/dist/knowledge/loader.d.ts +31 -0
- package/dist/knowledge/loader.d.ts.map +1 -1
- package/dist/knowledge/loader.js +102 -8
- package/dist/knowledge/loader.js.map +1 -1
- package/dist/types.d.ts +608 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/templates/knowledge/acceptance_templates//346/212/200/346/234/257/351/200/211/345/236/213/351/252/214/346/224/266/346/270/205/345/215/225.md +19 -0
- package/templates/knowledge/acceptance_templates//351/200/232/347/224/250/350/264/250/351/207/217/351/252/214/346/224/266/346/270/205/345/215/225.md +4 -0
- package/templates/knowledge/procedures//345/212/237/350/203/275/345/274/200/345/217/221/346/265/201/347/250/213.md +4 -1
- package/templates/knowledge/procedures//350/207/252/344/270/273/351/200/211/345/236/213/346/265/201/347/250/213.md +34 -0
- package/templates/knowledge/review_rules//344/272/244/344/273/230/345/256/214/345/244/207/346/200/247/345/256/241/346/237/245/350/247/204/345/210/231.md +66 -0
- package/templates/scaffolds/react/Form.tsx.hbs +9 -1
- package/templates/scaffolds/react/List.tsx.hbs +10 -1
- package/templates/scaffolds/react/Page.tsx.hbs +4 -1
- package/templates/scaffolds/react/service.ts.hbs +29 -0
- package/templates/scaffolds/react/types.ts.hbs +7 -1
- package/templates/scaffolds/react/use{{ModuleName}}.ts.hbs +34 -2
- package/templates/scaffolds/spring-boot/Controller.java.hbs +27 -0
- package/templates/scaffolds/spring-boot/DTO.java.hbs +7 -1
- package/templates/scaffolds/spring-boot/Entity.java.hbs +11 -1
- package/templates/scaffolds/spring-boot/ErrorCode.java.hbs +13 -1
- package/templates/scaffolds/spring-boot/Mapper.java.hbs +4 -1
- package/templates/scaffolds/spring-boot/PageResponse.java.hbs +24 -1
- package/templates/scaffolds/spring-boot/Service.java.hbs +32 -0
- package/templates/scaffolds/spring-boot/ServiceImpl.java.hbs +23 -5
- package/templates/scaffolds/spring-boot/ServiceTest.java.hbs +7 -1
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import type { FailureType } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* 置信度评分器 — 基于多维加权模型评估任务执行结果的置信度。
|
|
4
|
+
*
|
|
5
|
+
* 评分维度(四维加权):
|
|
6
|
+
* 1. 执行结果(权重 0.2):首次成功 > 重试成功 > 失败
|
|
7
|
+
* 2. 可追溯性(权重 0.3):是否有明确的根因
|
|
8
|
+
* 3. 可复用性(权重 0.2):匹配到的已知模式数量(越多越好,上限 3 个)
|
|
9
|
+
* 4. 新颖性(权重 0.3):是否匹配到已有模式(匹配到则置信度更高)
|
|
10
|
+
*
|
|
11
|
+
* 特殊规则:降级模式下,最终得分乘以 0.5 的惩罚系数。
|
|
12
|
+
*/
|
|
13
|
+
/** 置信度评分输入参数 */
|
|
2
14
|
export interface ConfidenceInput {
|
|
3
15
|
result: "success" | "failure";
|
|
4
16
|
retryCount: number;
|
|
@@ -7,5 +19,14 @@ export interface ConfidenceInput {
|
|
|
7
19
|
hasClearRootCause: boolean;
|
|
8
20
|
isDegraded: boolean;
|
|
9
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* 计算任务执行结果的置信度得分。
|
|
24
|
+
*
|
|
25
|
+
* 加权模型:执行结果(0.2) + 可追溯性(0.3) + 可复用性(0.2) + 新颖性(0.3)
|
|
26
|
+
* 最终得分范围 [0, 1],保留两位小数。降级模式下得分减半。
|
|
27
|
+
*
|
|
28
|
+
* @param input - 置信度评分输入参数
|
|
29
|
+
* @returns 置信度得分(0 到 1 之间的浮点数)
|
|
30
|
+
*/
|
|
10
31
|
export declare function scoreConfidence(input: ConfidenceInput): number;
|
|
11
32
|
//# sourceMappingURL=confidence_scorer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confidence_scorer.d.ts","sourceRoot":"","sources":["../../src/engine/confidence_scorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"confidence_scorer.d.ts","sourceRoot":"","sources":["../../src/engine/confidence_scorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;GAUG;AAEH,gBAAgB;AAChB,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAsC9D"}
|
|
@@ -1,27 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 计算任务执行结果的置信度得分。
|
|
3
|
+
*
|
|
4
|
+
* 加权模型:执行结果(0.2) + 可追溯性(0.3) + 可复用性(0.2) + 新颖性(0.3)
|
|
5
|
+
* 最终得分范围 [0, 1],保留两位小数。降级模式下得分减半。
|
|
6
|
+
*
|
|
7
|
+
* @param input - 置信度评分输入参数
|
|
8
|
+
* @returns 置信度得分(0 到 1 之间的浮点数)
|
|
9
|
+
*/
|
|
1
10
|
export function scoreConfidence(input) {
|
|
2
11
|
let score = 0;
|
|
3
12
|
// 维度 1: 执行结果(权重 0.2)
|
|
13
|
+
// 首次成功得分最高(1.0),每次重试递减,失败最低(0.1)
|
|
4
14
|
const resultScore = {
|
|
5
|
-
success_first_try: 1.0,
|
|
6
|
-
success_retry1: 0.7,
|
|
7
|
-
success_retry2: 0.4,
|
|
8
|
-
failure: 0.1,
|
|
15
|
+
success_first_try: 1.0, // 首次即成功
|
|
16
|
+
success_retry1: 0.7, // 第 1 次重试后成功
|
|
17
|
+
success_retry2: 0.4, // 第 2 次重试后成功
|
|
18
|
+
failure: 0.1, // 最终失败
|
|
9
19
|
};
|
|
10
20
|
const resultKey = input.result === "success"
|
|
11
21
|
? (input.retryCount === 0 ? "success_first_try" : input.retryCount === 1 ? "success_retry1" : "success_retry2")
|
|
12
22
|
: "failure";
|
|
13
23
|
score += resultScore[resultKey] * 0.2;
|
|
14
24
|
// 维度 2: 可追溯性(权重 0.3)
|
|
25
|
+
// 有明确根因 → 高分(1.0);无根因 → 低分(0.3)
|
|
15
26
|
const traceScore = input.hasClearRootCause ? 1.0 : 0.3;
|
|
16
27
|
score += traceScore * 0.3;
|
|
17
28
|
// 维度 3: 可复用性(权重 0.2)
|
|
29
|
+
// 已匹配的模式越多 → 可复用性越高,上限 3 个模式即为满分
|
|
18
30
|
const reuseScore = Math.min(input.matchedPatternsCount / 3, 1.0);
|
|
19
31
|
score += reuseScore * 0.2;
|
|
20
32
|
// 维度 4: 新颖性(权重 0.3)
|
|
21
|
-
//
|
|
33
|
+
// 匹配到已有模式 → 新颖性低 → 强化已有知识 → 高分(0.8)
|
|
34
|
+
// 无模式匹配 → 新问题 → 知识不确定性高 → 低分(0.4)
|
|
22
35
|
const noveltyScore = input.matchedPatternsCount > 0 ? 0.8 : 0.4;
|
|
23
36
|
score += noveltyScore * 0.3;
|
|
24
|
-
//
|
|
37
|
+
// 降级模式惩罚:在受限条件下完成,结果可靠性降低
|
|
25
38
|
if (input.isDegraded) {
|
|
26
39
|
score *= 0.5;
|
|
27
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confidence_scorer.js","sourceRoot":"","sources":["../../src/engine/confidence_scorer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"confidence_scorer.js","sourceRoot":"","sources":["../../src/engine/confidence_scorer.ts"],"names":[],"mappings":"AAwBA;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAsB;IACpD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,qBAAqB;IACrB,iCAAiC;IACjC,MAAM,WAAW,GAA2B;QAC1C,iBAAiB,EAAE,GAAG,EAAI,QAAQ;QAClC,cAAc,EAAE,GAAG,EAAO,aAAa;QACvC,cAAc,EAAE,GAAG,EAAO,aAAa;QACvC,OAAO,EAAE,GAAG,EAAc,OAAO;KAClC,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,KAAK,SAAS;QAC1C,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAC/G,CAAC,CAAC,SAAS,CAAC;IACd,KAAK,IAAI,WAAW,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;IAEtC,qBAAqB;IACrB,gCAAgC;IAChC,MAAM,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,KAAK,IAAI,UAAU,GAAG,GAAG,CAAC;IAE1B,qBAAqB;IACrB,iCAAiC;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IACjE,KAAK,IAAI,UAAU,GAAG,GAAG,CAAC;IAE1B,oBAAoB;IACpB,oCAAoC;IACpC,kCAAkC;IAClC,MAAM,YAAY,GAAG,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAChE,KAAK,IAAI,YAAY,GAAG,GAAG,CAAC;IAE5B,0BAA0B;IAC1B,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,KAAK,IAAI,GAAG,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACvC,CAAC"}
|
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
import type { ProjectConfig, ContractCheckResult } from "../types.js";
|
|
2
2
|
import type { GitOperations } from "./git_deps.js";
|
|
3
|
+
/**
|
|
4
|
+
* 契约守卫 — 检测代码变更中的 API 契约破坏性变更。
|
|
5
|
+
*
|
|
6
|
+
* 通过解析 Git diff,识别以下类型的契约变更:
|
|
7
|
+
* - API 端点的新增/删除(Spring MVC 注解、Express 路由)
|
|
8
|
+
* - HTTP 方法的变更(同一路径上方法改变)
|
|
9
|
+
* - DTO/Entity 字段的新增/删除/类型变更(Java 和 TypeScript)
|
|
10
|
+
* - 跨服务影响分析(多仓库场景下评估对前端的冲击)
|
|
11
|
+
*/
|
|
12
|
+
/** 契约守卫输入参数 */
|
|
3
13
|
export interface ContractGuardInput {
|
|
4
14
|
changedFiles: string[];
|
|
5
15
|
projectPath: string;
|
|
6
16
|
config: ProjectConfig;
|
|
7
17
|
gitOps: GitOperations;
|
|
8
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* 检测变更文件中的 API 契约变更。
|
|
21
|
+
*
|
|
22
|
+
* 处理流程:
|
|
23
|
+
* 1. 筛选出与 API 契约相关的文件
|
|
24
|
+
* 2. 获取每个文件的 Git diff
|
|
25
|
+
* 3. 解析 diff 中的端点变更和字段变更
|
|
26
|
+
* 4. 后处理:将同一路径的删除+新增配对为方法变更
|
|
27
|
+
* 5. 评估跨服务影响并生成摘要
|
|
28
|
+
*
|
|
29
|
+
* @param input - 契约检查输入,包含变更文件列表、项目路径、配置和 Git 操作接口
|
|
30
|
+
* @returns 契约检查结果,包含变更列表、破坏性/兼容性变更计数和跨服务影响
|
|
31
|
+
*/
|
|
9
32
|
export declare function checkContractChanges(input: ContractGuardInput): Promise<ContractCheckResult>;
|
|
10
33
|
//# sourceMappingURL=contract_guard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_guard.d.ts","sourceRoot":"","sources":["../../src/engine/contract_guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"contract_guard.d.ts","sourceRoot":"","sources":["../../src/engine/contract_guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAEb,mBAAmB,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD;;;;;;;;GAQG;AAEH,eAAe;AACf,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,aAAa,CAAC;CACvB;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,mBAAmB,CAAC,CA6D9B"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* API 契约文件路径关键词。
|
|
3
|
+
* 文件路径(小写)包含这些关键词的,被视为 API 契约相关文件,需要进行 diff 解析。
|
|
4
|
+
*/
|
|
2
5
|
const API_PATH_KEYWORDS = [
|
|
3
6
|
"controller",
|
|
4
7
|
"route",
|
|
@@ -10,16 +13,28 @@ const API_PATH_KEYWORDS = [
|
|
|
10
13
|
"entity",
|
|
11
14
|
"schema",
|
|
12
15
|
];
|
|
13
|
-
|
|
16
|
+
/**
|
|
17
|
+
* 检测变更文件中的 API 契约变更。
|
|
18
|
+
*
|
|
19
|
+
* 处理流程:
|
|
20
|
+
* 1. 筛选出与 API 契约相关的文件
|
|
21
|
+
* 2. 获取每个文件的 Git diff
|
|
22
|
+
* 3. 解析 diff 中的端点变更和字段变更
|
|
23
|
+
* 4. 后处理:将同一路径的删除+新增配对为方法变更
|
|
24
|
+
* 5. 评估跨服务影响并生成摘要
|
|
25
|
+
*
|
|
26
|
+
* @param input - 契约检查输入,包含变更文件列表、项目路径、配置和 Git 操作接口
|
|
27
|
+
* @returns 契约检查结果,包含变更列表、破坏性/兼容性变更计数和跨服务影响
|
|
28
|
+
*/
|
|
14
29
|
export async function checkContractChanges(input) {
|
|
15
30
|
const { changedFiles, projectPath, config, gitOps } = input;
|
|
16
31
|
const changes = [];
|
|
17
|
-
//
|
|
32
|
+
// 筛选出 API 契约相关文件(controller、dto、route 等)
|
|
18
33
|
const contractFiles = changedFiles.filter((f) => isApiContractFile(f));
|
|
19
34
|
if (contractFiles.length === 0) {
|
|
20
35
|
return emptyResult("No API contract files changed.");
|
|
21
36
|
}
|
|
22
|
-
//
|
|
37
|
+
// 收集每个契约文件的 diff 内容(仅暂存区的变更)
|
|
23
38
|
const diffs = [];
|
|
24
39
|
for (const file of contractFiles) {
|
|
25
40
|
try {
|
|
@@ -37,15 +52,15 @@ export async function checkContractChanges(input) {
|
|
|
37
52
|
if (diffs.length === 0) {
|
|
38
53
|
return emptyResult("No diff content found in API contract files.");
|
|
39
54
|
}
|
|
40
|
-
//
|
|
55
|
+
// 解析每个 diff 中的契约变更(端点变更、字段变更等)
|
|
41
56
|
for (const { file, diff } of diffs) {
|
|
42
57
|
const parsed = parseDiffForContractChanges(file, diff);
|
|
43
58
|
changes.push(...parsed);
|
|
44
59
|
}
|
|
45
|
-
//
|
|
60
|
+
// 统计破坏性变更和兼容性变更
|
|
46
61
|
const breaking = changes.filter((c) => c.severity === "breaking");
|
|
47
62
|
const compatible = changes.filter((c) => c.severity === "compatible");
|
|
48
|
-
//
|
|
63
|
+
// 跨服务影响分析(仅在多仓库场景下有意义)
|
|
49
64
|
const crossServiceImpact = analyzeCrossServiceImpact(breaking, config);
|
|
50
65
|
const summary = buildSummary(changes.length, breaking.length, compatible.length, crossServiceImpact);
|
|
51
66
|
return {
|
|
@@ -57,39 +72,58 @@ export async function checkContractChanges(input) {
|
|
|
57
72
|
summary,
|
|
58
73
|
};
|
|
59
74
|
}
|
|
60
|
-
|
|
75
|
+
/**
|
|
76
|
+
* 判断文件是否为 API 契约相关文件。
|
|
77
|
+
* 通过路径关键词匹配,覆盖 controller、route、dto、schema 等类型。
|
|
78
|
+
* @param filePath - 文件路径
|
|
79
|
+
* @returns true 表示该文件属于 API 契约文件
|
|
80
|
+
*/
|
|
61
81
|
function isApiContractFile(filePath) {
|
|
62
82
|
const lower = filePath.toLowerCase();
|
|
63
83
|
return API_PATH_KEYWORDS.some((kw) => lower.includes(kw));
|
|
64
84
|
}
|
|
65
|
-
|
|
85
|
+
/**
|
|
86
|
+
* 解析 Git diff 内容,识别其中的 API 契约变更。
|
|
87
|
+
*
|
|
88
|
+
* 解析策略(按优先级):
|
|
89
|
+
* 1. Spring MVC 注解变更(@GetMapping、@PostMapping 等)
|
|
90
|
+
* 2. Express 路由变更(router.get()、router.post() 等)
|
|
91
|
+
* 3. DTO/Entity 字段变更(Java 和 TypeScript 字段定义)
|
|
92
|
+
*
|
|
93
|
+
* 后处理步骤:将同一路径的 path_removed + path_added 配对为 method_changed。
|
|
94
|
+
*
|
|
95
|
+
* @param file - 文件路径
|
|
96
|
+
* @param diff - Git diff 文本
|
|
97
|
+
* @returns 契约变更列表
|
|
98
|
+
*/
|
|
66
99
|
function parseDiffForContractChanges(file, diff) {
|
|
67
100
|
const changes = [];
|
|
68
101
|
const lines = diff.split("\n");
|
|
102
|
+
// 已消费的行索引集合,防止同一行被多个规则重复匹配
|
|
69
103
|
const consumedIndices = new Set();
|
|
70
104
|
for (let i = 0; i < lines.length; i++) {
|
|
71
105
|
if (consumedIndices.has(i))
|
|
72
106
|
continue;
|
|
73
107
|
const line = lines[i];
|
|
74
|
-
//
|
|
108
|
+
// 仅处理新增行(+)和删除行(-),跳过 diff 元数据行(+++、---)
|
|
75
109
|
const isAdded = line.startsWith("+") && !line.startsWith("+++");
|
|
76
110
|
const isRemoved = line.startsWith("-") && !line.startsWith("---");
|
|
77
111
|
if (!isAdded && !isRemoved)
|
|
78
112
|
continue;
|
|
79
|
-
const content = line.slice(1); //
|
|
80
|
-
// Spring MVC
|
|
113
|
+
const content = line.slice(1); // 去掉行首的 +/- 和空格,获取实际内容
|
|
114
|
+
// 检测 1: Spring MVC 注解变更
|
|
81
115
|
const springChange = detectSpringAnnotationChange(content, isAdded, isRemoved, file);
|
|
82
116
|
if (springChange) {
|
|
83
117
|
changes.push(springChange);
|
|
84
118
|
continue;
|
|
85
119
|
}
|
|
86
|
-
// Express
|
|
120
|
+
// 检测 2: Express 路由变更
|
|
87
121
|
const expressChange = detectExpressRouteChange(content, isAdded, isRemoved, file);
|
|
88
122
|
if (expressChange) {
|
|
89
123
|
changes.push(expressChange);
|
|
90
124
|
continue;
|
|
91
125
|
}
|
|
92
|
-
// DTO/Entity
|
|
126
|
+
// 检测 3: DTO/Entity 字段变更
|
|
93
127
|
const fieldChange = detectFieldChange(content, isAdded, isRemoved, file, lines, i, consumedIndices);
|
|
94
128
|
if (fieldChange) {
|
|
95
129
|
changes.push(fieldChange);
|
|
@@ -99,17 +133,23 @@ function parseDiffForContractChanges(file, diff) {
|
|
|
99
133
|
}
|
|
100
134
|
}
|
|
101
135
|
}
|
|
102
|
-
//
|
|
103
|
-
//
|
|
136
|
+
// 后处理:检测同一路径上的 HTTP 方法变更
|
|
137
|
+
// 将 path_removed + path_added 中 URL 路径相同的配对为 method_changed(破坏性变更)
|
|
104
138
|
const methodChanged = detectMethodChanges(changes);
|
|
105
139
|
return methodChanged;
|
|
106
140
|
}
|
|
107
|
-
|
|
141
|
+
/**
|
|
142
|
+
* 检测 HTTP 方法变更。
|
|
143
|
+
* 将同一路径的 path_removed 和 path_added 配对,
|
|
144
|
+
* 如果 HTTP 方法不同则合并为一个 method_changed 变更。
|
|
145
|
+
* @param changes - 原始契约变更列表
|
|
146
|
+
* @returns 合并后的契约变更列表(method_changed + 未消费的原始变更)
|
|
147
|
+
*/
|
|
108
148
|
function detectMethodChanges(changes) {
|
|
109
149
|
const removed = new Map();
|
|
110
150
|
const added = new Map();
|
|
111
151
|
const consumed = new Set();
|
|
112
|
-
//
|
|
152
|
+
// 按 URL 路径建立索引,用于快速配对删除和新增的端点
|
|
113
153
|
for (let i = 0; i < changes.length; i++) {
|
|
114
154
|
const change = changes[i];
|
|
115
155
|
if (change.change_type === "path_removed") {
|
|
@@ -123,7 +163,7 @@ function detectMethodChanges(changes) {
|
|
|
123
163
|
added.set(pathStr, change);
|
|
124
164
|
}
|
|
125
165
|
}
|
|
126
|
-
//
|
|
166
|
+
// 查找匹配对:同一 URL 路径但不同 HTTP 方法的删除+新增
|
|
127
167
|
const result = [];
|
|
128
168
|
for (const [urlPath, removedChange] of removed) {
|
|
129
169
|
const addedChange = added.get(urlPath);
|
|
@@ -153,29 +193,50 @@ function detectMethodChanges(changes) {
|
|
|
153
193
|
}
|
|
154
194
|
return result;
|
|
155
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* 从端点描述字符串中提取 URL 路径。
|
|
198
|
+
* 支持格式如 "GetMapping /api/v1/users" 或 "GET /api/v1/users"。
|
|
199
|
+
* @param endpointStr - 端点描述字符串
|
|
200
|
+
* @returns 提取到的 URL 路径,匹配失败返回 null
|
|
201
|
+
*/
|
|
156
202
|
function extractPath(endpointStr) {
|
|
157
|
-
//
|
|
203
|
+
// 匹配以 / 开头的路径,支持字母、数字、连字符、花括号(路径参数)、点和斜杠
|
|
158
204
|
const match = endpointStr.match(/\/[\w\-{}./]+/);
|
|
159
205
|
return match ? match[0] : null;
|
|
160
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* 从端点描述字符串中提取 HTTP 方法。
|
|
209
|
+
* 支持 Spring 注解风格(GetMapping)和标准 HTTP 方法风格(GET)。
|
|
210
|
+
* @param endpointStr - 端点描述字符串
|
|
211
|
+
* @returns HTTP 方法字符串,匹配失败返回 null
|
|
212
|
+
*/
|
|
161
213
|
function extractHttpMethod(endpointStr) {
|
|
162
|
-
//
|
|
214
|
+
// 匹配 Spring 注解风格的方法名(如 GetMapping、PostMapping)
|
|
163
215
|
const match = endpointStr.match(/^(Get|Post|Put|Delete|Patch|Mapping)\w*\s/i);
|
|
164
216
|
if (match) {
|
|
165
217
|
const raw = match[1].toUpperCase();
|
|
166
|
-
//
|
|
218
|
+
// 将 Spring 注解名映射为标准 HTTP 方法
|
|
167
219
|
const methodMap = {
|
|
168
220
|
GET: "GET", POST: "POST", PUT: "PUT", DELETE: "DELETE", PATCH: "PATCH",
|
|
169
|
-
REQUESTMAPPING: "REQUEST",
|
|
221
|
+
REQUESTMAPPING: "REQUEST", // 通用映射,不区分方法
|
|
170
222
|
};
|
|
171
223
|
return methodMap[raw] ?? raw;
|
|
172
224
|
}
|
|
173
|
-
//
|
|
225
|
+
// 回退:匹配标准大写 HTTP 方法(如 GET、POST)
|
|
174
226
|
const httpMatch = endpointStr.match(/^(GET|POST|PUT|DELETE|PATCH)\s/);
|
|
175
227
|
return httpMatch ? httpMatch[1] : null;
|
|
176
228
|
}
|
|
177
|
-
|
|
229
|
+
/**
|
|
230
|
+
* 检测 Spring MVC 注解变更。
|
|
231
|
+
* 匹配 @GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@RequestMapping。
|
|
232
|
+
* @param content - diff 行内容(已去除 +/- 前缀)
|
|
233
|
+
* @param isAdded - 是否为新增行
|
|
234
|
+
* @param isRemoved - 是否为删除行
|
|
235
|
+
* @param file - 文件路径
|
|
236
|
+
* @returns 契约变更对象,未匹配返回 null
|
|
237
|
+
*/
|
|
178
238
|
function detectSpringAnnotationChange(content, isAdded, isRemoved, file) {
|
|
239
|
+
// Spring MVC 注解正则:匹配 @XxxMapping(value="/path") 或 @XxxMapping("/path") 形式
|
|
179
240
|
const springAnnotationRe = /^\s*@(?<method>RequestMapping|GetMapping|PostMapping|PutMapping|DeleteMapping)\s*\(?\s*(?:value\s*=\s*)?["'`](?<path>\/[^"'`]*)["'`]/;
|
|
180
241
|
const match = content.match(springAnnotationRe);
|
|
181
242
|
if (!match)
|
|
@@ -202,8 +263,17 @@ function detectSpringAnnotationChange(content, isAdded, isRemoved, file) {
|
|
|
202
263
|
}
|
|
203
264
|
return null;
|
|
204
265
|
}
|
|
205
|
-
|
|
266
|
+
/**
|
|
267
|
+
* 检测 Express 路由变更。
|
|
268
|
+
* 匹配 router.get()、router.post()、router.put()、router.delete()、router.patch() 形式。
|
|
269
|
+
* @param content - diff 行内容(已去除 +/- 前缀)
|
|
270
|
+
* @param isAdded - 是否为新增行
|
|
271
|
+
* @param isRemoved - 是否为删除行
|
|
272
|
+
* @param file - 文件路径
|
|
273
|
+
* @returns 契约变更对象,未匹配返回 null
|
|
274
|
+
*/
|
|
206
275
|
function detectExpressRouteChange(content, isAdded, isRemoved, file) {
|
|
276
|
+
// Express 路由正则:匹配 router.method('/path') 形式
|
|
207
277
|
const expressRouteRe = /router\.(?<method>get|post|put|delete|patch)\s*\(\s*['"`](?<path>\/[^'"`]*)['"`]/;
|
|
208
278
|
const match = content.match(expressRouteRe);
|
|
209
279
|
if (!match)
|
|
@@ -230,11 +300,23 @@ function detectExpressRouteChange(content, isAdded, isRemoved, file) {
|
|
|
230
300
|
}
|
|
231
301
|
return null;
|
|
232
302
|
}
|
|
233
|
-
|
|
303
|
+
/**
|
|
304
|
+
* 检测 DTO/Entity 字段变更。
|
|
305
|
+
* 支持 Java 字段声明(private Type name)和 TypeScript 字段声明(name: Type)。
|
|
306
|
+
* 当同一字段名出现删除和新增时,会尝试识别为类型变更。
|
|
307
|
+
* @param content - diff 行内容(已去除 +/- 前缀)
|
|
308
|
+
* @param isAdded - 是否为新增行
|
|
309
|
+
* @param isRemoved - 是否为删除行
|
|
310
|
+
* @param file - 文件路径
|
|
311
|
+
* @param lines - diff 全部行(用于向前/向后查找关联行)
|
|
312
|
+
* @param currentIndex - 当前行索引
|
|
313
|
+
* @param consumedIndices - 已消费行索引集合(用于避免重复匹配)
|
|
314
|
+
* @returns 契约变更对象,未匹配返回 null
|
|
315
|
+
*/
|
|
234
316
|
function detectFieldChange(content, isAdded, isRemoved, file, lines, currentIndex, consumedIndices) {
|
|
235
|
-
// Java
|
|
317
|
+
// Java 字段正则:匹配 private/protected/public Type fieldName 形式
|
|
236
318
|
const javaFieldRe = /^\s*(private|protected|public)\s+(?<type>[\w<>[\]]+)\s+(?<name>\w+)/;
|
|
237
|
-
// TypeScript
|
|
319
|
+
// TypeScript 字段正则:匹配 fieldName: Type 或 fieldName?: Type 形式
|
|
238
320
|
const tsFieldRe = /^\s*(?<name>\w+)\s*(?<optional>\??):\s*(?<type>[\w<>[\]|.]+)\s*[;=]?/;
|
|
239
321
|
const javaMatch = content.match(javaFieldRe);
|
|
240
322
|
const tsMatch = !javaMatch ? content.match(tsFieldRe) : null;
|
|
@@ -242,7 +324,7 @@ function detectFieldChange(content, isAdded, isRemoved, file, lines, currentInde
|
|
|
242
324
|
const { type, name } = javaMatch.groups;
|
|
243
325
|
const fieldName = `${name}: ${type}`;
|
|
244
326
|
if (isAdded) {
|
|
245
|
-
//
|
|
327
|
+
// 尝试在同一字段名下查找关联的删除行,检测类型变更
|
|
246
328
|
const typeChange = detectTypeChangeForField(name, lines, currentIndex, consumedIndices);
|
|
247
329
|
if (typeChange) {
|
|
248
330
|
return {
|
|
@@ -263,7 +345,7 @@ function detectFieldChange(content, isAdded, isRemoved, file, lines, currentInde
|
|
|
263
345
|
};
|
|
264
346
|
}
|
|
265
347
|
if (isRemoved) {
|
|
266
|
-
//
|
|
348
|
+
// 尝试在同一字段名下查找关联的新增行,检测类型变更
|
|
267
349
|
const typeChange = detectTypeChangeForField(name, lines, currentIndex, consumedIndices);
|
|
268
350
|
if (typeChange) {
|
|
269
351
|
return {
|
|
@@ -289,7 +371,7 @@ function detectFieldChange(content, isAdded, isRemoved, file, lines, currentInde
|
|
|
289
371
|
const optional = tsMatch.groups.optional === "?";
|
|
290
372
|
const fieldName = `${name}${optional ? "?" : ""}: ${type}`;
|
|
291
373
|
if (isAdded) {
|
|
292
|
-
//
|
|
374
|
+
// 尝试在同一字段名下查找关联的删除行,检测类型变更
|
|
293
375
|
const typeChange = detectTypeChangeForField(name, lines, currentIndex, consumedIndices);
|
|
294
376
|
if (typeChange) {
|
|
295
377
|
return {
|
|
@@ -332,7 +414,16 @@ function detectFieldChange(content, isAdded, isRemoved, file, lines, currentInde
|
|
|
332
414
|
}
|
|
333
415
|
return null;
|
|
334
416
|
}
|
|
335
|
-
|
|
417
|
+
/**
|
|
418
|
+
* 检测字段的类型变更。
|
|
419
|
+
* 在 diff 的相邻行中查找同名字段但类型不同的删除/新增行对。
|
|
420
|
+
* 搜索范围限制为前后各 5 行,避免误匹配距离太远的无关行。
|
|
421
|
+
* @param fieldName - 字段名称
|
|
422
|
+
* @param lines - diff 全部行
|
|
423
|
+
* @param currentIndex - 当前行索引
|
|
424
|
+
* @param consumedIndices - 已消费行索引集合
|
|
425
|
+
* @returns 类型变更信息(变更前后的类型字符串),未检测到返回 null
|
|
426
|
+
*/
|
|
336
427
|
function detectTypeChangeForField(fieldName, lines, currentIndex, consumedIndices) {
|
|
337
428
|
const javaRe = /^\s*(private|protected|public)\s+(?<type>[\w<>[\]]+)\s+(?<name>\w+)/;
|
|
338
429
|
const tsRe = /^\s*(?<name>\w+)\s*(?<optional>\??):\s*(?<type>[\w<>[\]|.]+)\s*[;=]?/;
|
|
@@ -357,9 +448,9 @@ function detectTypeChangeForField(fieldName, lines, currentIndex, consumedIndice
|
|
|
357
448
|
function getCurrentTypeInfo() {
|
|
358
449
|
return extractTypeInfo(currentIndex);
|
|
359
450
|
}
|
|
360
|
-
const maxLook = 5;
|
|
451
|
+
const maxLook = 5; // 最大向前/向后查找行数
|
|
361
452
|
if (isRemoved) {
|
|
362
|
-
//
|
|
453
|
+
// 删除行:向前查找同名字段的新增行(- 行后面紧跟 + 行)
|
|
363
454
|
for (let j = currentIndex + 1; j < Math.min(currentIndex + maxLook, lines.length); j++) {
|
|
364
455
|
if (consumedIndices.has(j))
|
|
365
456
|
continue;
|
|
@@ -372,7 +463,7 @@ function detectTypeChangeForField(fieldName, lines, currentIndex, consumedIndice
|
|
|
372
463
|
}
|
|
373
464
|
}
|
|
374
465
|
}
|
|
375
|
-
//
|
|
466
|
+
// 也在后方查找(diff 中 - 行出现在 + 行之后的情况)
|
|
376
467
|
for (let j = currentIndex - 1; j >= Math.max(0, currentIndex - maxLook); j--) {
|
|
377
468
|
if (consumedIndices.has(j))
|
|
378
469
|
continue;
|
|
@@ -387,7 +478,7 @@ function detectTypeChangeForField(fieldName, lines, currentIndex, consumedIndice
|
|
|
387
478
|
}
|
|
388
479
|
}
|
|
389
480
|
if (isAdded) {
|
|
390
|
-
//
|
|
481
|
+
// 新增行:向后查找同名字段的删除行(+ 行前面是 - 行)
|
|
391
482
|
for (let j = currentIndex - 1; j >= Math.max(0, currentIndex - maxLook); j--) {
|
|
392
483
|
if (consumedIndices.has(j))
|
|
393
484
|
continue;
|
|
@@ -400,7 +491,7 @@ function detectTypeChangeForField(fieldName, lines, currentIndex, consumedIndice
|
|
|
400
491
|
}
|
|
401
492
|
}
|
|
402
493
|
}
|
|
403
|
-
//
|
|
494
|
+
// 也在前方查找(diff 中 + 行出现在 - 行之前的情况)
|
|
404
495
|
for (let j = currentIndex + 1; j < Math.min(currentIndex + maxLook, lines.length); j++) {
|
|
405
496
|
if (consumedIndices.has(j))
|
|
406
497
|
continue;
|
|
@@ -416,13 +507,20 @@ function detectTypeChangeForField(fieldName, lines, currentIndex, consumedIndice
|
|
|
416
507
|
}
|
|
417
508
|
return null;
|
|
418
509
|
}
|
|
419
|
-
|
|
510
|
+
/**
|
|
511
|
+
* 分析破坏性变更的跨服务影响。
|
|
512
|
+
* 仅在多仓库(多服务)场景下有效。当前版本将所有破坏性端点
|
|
513
|
+
* 归类为对前端的潜在影响。
|
|
514
|
+
* @param breakingChanges - 破坏性变更列表
|
|
515
|
+
* @param config - 项目配置
|
|
516
|
+
* @returns 受影响的服务列表及其关联端点
|
|
517
|
+
*/
|
|
420
518
|
function analyzeCrossServiceImpact(breakingChanges, config) {
|
|
421
519
|
const impact = [];
|
|
422
|
-
//
|
|
520
|
+
// 仅在多仓库(微服务)场景下进行跨服务影响分析
|
|
423
521
|
if (config.repos.length < 2)
|
|
424
522
|
return impact;
|
|
425
|
-
//
|
|
523
|
+
// 从破坏性变更中提取受影响的端点路径
|
|
426
524
|
const affectedEndpoints = [];
|
|
427
525
|
for (const change of breakingChanges) {
|
|
428
526
|
if (change.change_type === "path_removed" ||
|
|
@@ -441,7 +539,14 @@ function analyzeCrossServiceImpact(breakingChanges, config) {
|
|
|
441
539
|
}
|
|
442
540
|
return impact;
|
|
443
541
|
}
|
|
444
|
-
|
|
542
|
+
/**
|
|
543
|
+
* 构建契约检查的人类可读摘要。
|
|
544
|
+
* @param total - 变更总数
|
|
545
|
+
* @param breaking - 破坏性变更数
|
|
546
|
+
* @param compatible - 兼容性变更数
|
|
547
|
+
* @param crossService - 跨服务影响列表
|
|
548
|
+
* @returns 摘要文本
|
|
549
|
+
*/
|
|
445
550
|
function buildSummary(total, breaking, compatible, crossService) {
|
|
446
551
|
const parts = [];
|
|
447
552
|
if (total === 0) {
|
|
@@ -457,7 +562,11 @@ function buildSummary(total, breaking, compatible, crossService) {
|
|
|
457
562
|
}
|
|
458
563
|
return parts.join(" ");
|
|
459
564
|
}
|
|
460
|
-
|
|
565
|
+
/**
|
|
566
|
+
* 创建空的契约检查结果。
|
|
567
|
+
* @param summary - 摘要说明(通常描述为何无变更)
|
|
568
|
+
* @returns 所有计数为零的空契约检查结果
|
|
569
|
+
*/
|
|
461
570
|
function emptyResult(summary) {
|
|
462
571
|
return {
|
|
463
572
|
changes: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract_guard.js","sourceRoot":"","sources":["../../src/engine/contract_guard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"contract_guard.js","sourceRoot":"","sources":["../../src/engine/contract_guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 代码惯例检测模块。
|
|
3
|
+
* @description 通过分析源代码文件内容和项目惯例配置文件,自动识别项目的编码规范和模式。
|
|
4
|
+
* 支持 Spring/Java 和 React/TypeScript 两种技术栈的惯例检测。
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 检测到的代码惯例条目。
|
|
8
|
+
*/
|
|
1
9
|
export interface Convention {
|
|
10
|
+
/** 文件匹配模式(glob 或具体文件路径) */
|
|
2
11
|
file_pattern: string;
|
|
12
|
+
/** 惯例描述文本 */
|
|
3
13
|
convention: string;
|
|
14
|
+
/** 惯例示例代码(可选) */
|
|
4
15
|
example?: string;
|
|
5
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* 检测项目代码惯例。
|
|
19
|
+
* @description 优先加载项目中配置的惯例文件(支持 YAML front-matter 格式),
|
|
20
|
+
* 然后逐个分析源文件,识别特定的编码模式。最多返回 10 条惯例。
|
|
21
|
+
* @param filePaths - 待分析的文件路径列表
|
|
22
|
+
* @param projectPath - 项目根目录路径(用于解析相对路径)
|
|
23
|
+
* @param conventionsFile - 惯例配置文件路径(可选)
|
|
24
|
+
* @returns 检测到的惯例列表
|
|
25
|
+
*/
|
|
6
26
|
export declare function detectConventions(filePaths: string[], projectPath: string, conventionsFile?: string): Promise<Convention[]>;
|
|
7
27
|
//# sourceMappingURL=convention_detector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convention_detector.d.ts","sourceRoot":"","sources":["../../src/engine/convention_detector.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC,CA0CvB"}
|
|
1
|
+
{"version":3,"file":"convention_detector.d.ts","sourceRoot":"","sources":["../../src/engine/convention_detector.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EAAE,EACnB,WAAW,EAAE,MAAM,EACnB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC,CA0CvB"}
|