yuangs 5.40.0 → 5.41.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 (38) hide show
  1. package/dist/commands/git/plan.js +64 -10
  2. package/dist/commands/git/plan.js.map +1 -1
  3. package/dist/commands/git/review.js +95 -2
  4. package/dist/commands/git/review.js.map +1 -1
  5. package/dist/core/capability/CapabilityLevel.d.ts +125 -0
  6. package/dist/core/capability/CapabilityLevel.js +184 -0
  7. package/dist/core/capability/CapabilityLevel.js.map +1 -0
  8. package/dist/core/capability/CostProfile.d.ts +34 -0
  9. package/dist/core/capability/CostProfile.js +138 -0
  10. package/dist/core/capability/CostProfile.js.map +1 -0
  11. package/dist/core/capability/DegradationPolicy.d.ts +26 -0
  12. package/dist/core/capability/DegradationPolicy.js +65 -0
  13. package/dist/core/capability/DegradationPolicy.js.map +1 -0
  14. package/dist/core/capability/index.d.ts +3 -0
  15. package/dist/core/capability/index.js +20 -0
  16. package/dist/core/capability/index.js.map +1 -0
  17. package/dist/core/context/ContextMeta.d.ts +30 -0
  18. package/dist/core/context/ContextMeta.js +108 -0
  19. package/dist/core/context/ContextMeta.js.map +1 -0
  20. package/dist/core/context/index.d.ts +1 -0
  21. package/dist/core/context/index.js +18 -0
  22. package/dist/core/context/index.js.map +1 -0
  23. package/dist/core/git/CodeReviewer.d.ts +11 -0
  24. package/dist/core/git/CodeReviewer.js +76 -8
  25. package/dist/core/git/CodeReviewer.js.map +1 -1
  26. package/dist/core/git/ContextGatherer.d.ts +6 -0
  27. package/dist/core/git/ContextGatherer.js +38 -3
  28. package/dist/core/git/ContextGatherer.js.map +1 -1
  29. package/dist/core/git/GitService.d.ts +13 -0
  30. package/dist/core/git/GitService.js +50 -0
  31. package/dist/core/git/GitService.js.map +1 -1
  32. package/dist/core/security/SecurityScanner.d.ts +39 -0
  33. package/dist/core/security/SecurityScanner.js +136 -0
  34. package/dist/core/security/SecurityScanner.js.map +1 -0
  35. package/dist/core/security/index.d.ts +1 -0
  36. package/dist/core/security/index.js +18 -0
  37. package/dist/core/security/index.js.map +1 -0
  38. package/package.json +2 -1
@@ -0,0 +1,34 @@
1
+ import { CapabilityLevel } from './CapabilityLevel';
2
+ export interface LanguageWeight {
3
+ extensions: string[];
4
+ weight: number;
5
+ complexity: number;
6
+ }
7
+ export interface CostProfile {
8
+ estimatedTime: number;
9
+ estimatedMemory: number;
10
+ estimatedTokens: number;
11
+ requiredCapability: CapabilityLevel;
12
+ }
13
+ export interface CostProfileOptions {
14
+ languageWeights?: LanguageWeight[];
15
+ baseTimeMultiplier?: number;
16
+ baseMemoryMultiplier?: number;
17
+ baseTokenMultiplier?: number;
18
+ }
19
+ export declare class CostProfileCalculator {
20
+ private languageWeights;
21
+ private baseTimeMultiplier;
22
+ private baseMemoryMultiplier;
23
+ private baseTokenMultiplier;
24
+ constructor(options?: CostProfileOptions);
25
+ getLanguageComplexity(filePath: string): number;
26
+ getLanguageWeight(filePath: string): number;
27
+ getFileExtension(filePath: string): string;
28
+ calculate(filePaths: string[], totalLines: number): CostProfile;
29
+ private calculateTime;
30
+ private calculateMemory;
31
+ private calculateTokens;
32
+ private determineCapabilityLevel;
33
+ }
34
+ export declare const defaultCostProfileCalculator: CostProfileCalculator;
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultCostProfileCalculator = exports.CostProfileCalculator = void 0;
4
+ const CapabilityLevel_1 = require("./CapabilityLevel");
5
+ const DEFAULT_LANGUAGE_WEIGHTS = [
6
+ // C/C++ (C++ 头文件优先,C 仅包含 .c)
7
+ { extensions: ['.cpp', '.cc', '.cxx', '.hpp', '.h', '.hxx'], weight: 1.5, complexity: 1.5 },
8
+ { extensions: ['.c'], weight: 1.3, complexity: 1.3 },
9
+ // Go
10
+ { extensions: ['.go', '.golang'], weight: 1.3, complexity: 1.3 },
11
+ // TypeScript/JavaScript
12
+ { extensions: ['.ts', '.tsx', '.mts', '.cts'], weight: 1.2, complexity: 1.2 },
13
+ { extensions: ['.js', '.jsx', '.mjs', '.cjs'], weight: 1.0, complexity: 1.0 },
14
+ // Python
15
+ { extensions: ['.py'], weight: 1.1, complexity: 1.1 },
16
+ // Java
17
+ { extensions: ['.java'], weight: 1.4, complexity: 1.4 },
18
+ // Rust
19
+ { extensions: ['.rs'], weight: 1.4, complexity: 1.4 },
20
+ // Ruby
21
+ { extensions: ['.rb', '.ruby'], weight: 1.0, complexity: 1.0 },
22
+ // PHP
23
+ { extensions: ['.php'], weight: 1.0, complexity: 1.0 },
24
+ // C#
25
+ { extensions: ['.cs'], weight: 1.3, complexity: 1.3 },
26
+ // Swift
27
+ { extensions: ['.swift'], weight: 1.2, complexity: 1.2 },
28
+ // Kotlin
29
+ { extensions: ['.kt', '.kts'], weight: 1.2, complexity: 1.2 },
30
+ // Dart
31
+ { extensions: ['.dart'], weight: 1.1, complexity: 1.1 },
32
+ // Scala
33
+ { extensions: ['.scala'], weight: 1.4, complexity: 1.4 },
34
+ // Lua
35
+ { extensions: ['.lua'], weight: 0.9, complexity: 0.9 },
36
+ // Elixir
37
+ { extensions: ['.ex', '.exs'], weight: 1.1, complexity: 1.1 },
38
+ // OCaml/ReasonML
39
+ { extensions: ['.ml', '.mli', '.re', '.rei'], weight: 1.3, complexity: 1.3 },
40
+ // Clojure
41
+ { extensions: ['.clj', '.cljs'], weight: 1.2, complexity: 1.2 },
42
+ // Haskell
43
+ { extensions: ['.hs'], weight: 1.4, complexity: 1.4 },
44
+ // Shell scripts
45
+ { extensions: ['.sh', '.bash', '.zsh'], weight: 0.8, complexity: 0.8 },
46
+ // PowerShell
47
+ { extensions: ['.ps1', '.psm1'], weight: 0.9, complexity: 0.9 },
48
+ // SQL
49
+ { extensions: ['.sql'], weight: 0.8, complexity: 0.8 },
50
+ ];
51
+ class CostProfileCalculator {
52
+ languageWeights;
53
+ baseTimeMultiplier;
54
+ baseMemoryMultiplier;
55
+ baseTokenMultiplier;
56
+ constructor(options = {}) {
57
+ this.languageWeights = options.languageWeights ?? DEFAULT_LANGUAGE_WEIGHTS;
58
+ this.baseTimeMultiplier = options.baseTimeMultiplier ?? 1.0;
59
+ this.baseMemoryMultiplier = options.baseMemoryMultiplier ?? 1.0;
60
+ this.baseTokenMultiplier = options.baseTokenMultiplier ?? 1.0;
61
+ }
62
+ getLanguageComplexity(filePath) {
63
+ const ext = this.getFileExtension(filePath);
64
+ const lang = this.languageWeights.find(l => l.extensions.includes(ext));
65
+ return lang?.complexity ?? 1.0;
66
+ }
67
+ getLanguageWeight(filePath) {
68
+ const ext = this.getFileExtension(filePath);
69
+ const lang = this.languageWeights.find(l => l.extensions.includes(ext));
70
+ return lang?.weight ?? 1.0;
71
+ }
72
+ getFileExtension(filePath) {
73
+ const idx = filePath.lastIndexOf('.');
74
+ return idx === -1 ? '' : filePath.substring(idx).toLowerCase();
75
+ }
76
+ calculate(filePaths, totalLines) {
77
+ if (filePaths.length === 0) {
78
+ return {
79
+ estimatedTime: 0,
80
+ estimatedMemory: 0,
81
+ estimatedTokens: 0,
82
+ requiredCapability: CapabilityLevel_1.CapabilityLevel.NONE,
83
+ };
84
+ }
85
+ let totalComplexity = 0;
86
+ let totalWeight = 0;
87
+ for (const filePath of filePaths) {
88
+ const complexity = this.getLanguageComplexity(filePath);
89
+ const weight = this.getLanguageWeight(filePath);
90
+ totalComplexity += complexity;
91
+ totalWeight += weight;
92
+ }
93
+ const avgComplexity = totalComplexity / filePaths.length;
94
+ const avgWeight = totalWeight / filePaths.length;
95
+ const estimatedTime = this.calculateTime(totalLines, avgComplexity, avgWeight);
96
+ const estimatedMemory = this.calculateMemory(totalLines, avgComplexity);
97
+ const estimatedTokens = this.calculateTokens(totalLines, avgComplexity);
98
+ const requiredCapability = this.determineCapabilityLevel(avgComplexity, totalLines);
99
+ return {
100
+ estimatedTime,
101
+ estimatedMemory,
102
+ estimatedTokens,
103
+ requiredCapability,
104
+ };
105
+ }
106
+ calculateTime(lines, complexity, weight) {
107
+ const baseTime = (lines / 100) * 1000;
108
+ return Math.ceil(baseTime * complexity * weight * this.baseTimeMultiplier);
109
+ }
110
+ calculateMemory(lines, complexity) {
111
+ const baseMemory = lines * 100;
112
+ return Math.ceil(baseMemory * complexity * this.baseMemoryMultiplier);
113
+ }
114
+ calculateTokens(lines, complexity) {
115
+ const baseTokens = lines * 10;
116
+ return Math.ceil(baseTokens * complexity * this.baseTokenMultiplier);
117
+ }
118
+ determineCapabilityLevel(complexity, lines) {
119
+ if (lines > 5000 || complexity > 1.4) {
120
+ return CapabilityLevel_1.CapabilityLevel.SEMANTIC;
121
+ }
122
+ else if (lines > 1000 || complexity > 1.2) {
123
+ return CapabilityLevel_1.CapabilityLevel.STRUCTURAL;
124
+ }
125
+ else if (lines > 100 || complexity > 1.0) {
126
+ return CapabilityLevel_1.CapabilityLevel.LINE;
127
+ }
128
+ else if (lines > 10) {
129
+ return CapabilityLevel_1.CapabilityLevel.TEXT;
130
+ }
131
+ else {
132
+ return CapabilityLevel_1.CapabilityLevel.NONE;
133
+ }
134
+ }
135
+ }
136
+ exports.CostProfileCalculator = CostProfileCalculator;
137
+ exports.defaultCostProfileCalculator = new CostProfileCalculator();
138
+ //# sourceMappingURL=CostProfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CostProfile.js","sourceRoot":"","sources":["../../../src/core/capability/CostProfile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { CapabilityLevel, MinCapability } from './CapabilityLevel';
2
+ export interface DecisionInput {
3
+ timeElapsed: number;
4
+ memoryUsed?: number;
5
+ confidence: number;
6
+ }
7
+ export interface DegradationDecision {
8
+ shouldDegrade: boolean;
9
+ targetLevel: CapabilityLevel;
10
+ reason: string;
11
+ }
12
+ export interface DegradationPolicy {
13
+ decide(input: DecisionInput, minCapability: MinCapability): DegradationDecision;
14
+ }
15
+ export declare class ThresholdDegradationPolicy implements DegradationPolicy {
16
+ private timeLimit;
17
+ private confidenceThreshold;
18
+ constructor(options?: {
19
+ timeLimit?: number;
20
+ confidenceThreshold?: number;
21
+ });
22
+ decide(input: DecisionInput, minCapability: MinCapability): DegradationDecision;
23
+ }
24
+ export declare class NoOpDegradationPolicy implements DegradationPolicy {
25
+ decide(input: DecisionInput, minCapability: MinCapability): DegradationDecision;
26
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NoOpDegradationPolicy = exports.ThresholdDegradationPolicy = void 0;
4
+ const CapabilityLevel_1 = require("./CapabilityLevel");
5
+ class ThresholdDegradationPolicy {
6
+ timeLimit;
7
+ confidenceThreshold;
8
+ constructor(options = {}) {
9
+ this.timeLimit = options.timeLimit ?? 30000;
10
+ this.confidenceThreshold = options.confidenceThreshold ?? 0.7;
11
+ }
12
+ decide(input, minCapability) {
13
+ const reasons = [];
14
+ if (input.timeElapsed > this.timeLimit) {
15
+ reasons.push(`Time elapsed (${input.timeElapsed}ms) exceeds limit (${this.timeLimit}ms)`);
16
+ }
17
+ if (input.confidence < this.confidenceThreshold) {
18
+ reasons.push(`Confidence (${input.confidence.toFixed(2)}) below threshold (${this.confidenceThreshold})`);
19
+ }
20
+ if (reasons.length === 0) {
21
+ return {
22
+ shouldDegrade: false,
23
+ targetLevel: minCapability.minCapability,
24
+ reason: 'All conditions met, no degradation needed',
25
+ };
26
+ }
27
+ const fallbackChain = [minCapability.minCapability, ...minCapability.fallbackChain];
28
+ for (let i = 0; i < fallbackChain.length; i++) {
29
+ const targetLevel = fallbackChain[i];
30
+ if (i === fallbackChain.length - 1) {
31
+ return {
32
+ shouldDegrade: true,
33
+ targetLevel,
34
+ reason: reasons.join('; ') + `, falling back to final level: ${targetLevel}`,
35
+ };
36
+ }
37
+ const nextLevel = fallbackChain[i + 1];
38
+ const levelDrop = targetLevel - nextLevel;
39
+ if (levelDrop >= 2 || reasons.length >= 2) {
40
+ return {
41
+ shouldDegrade: true,
42
+ targetLevel: nextLevel,
43
+ reason: reasons.join('; ') + `, degrading from ${targetLevel} to ${nextLevel}`,
44
+ };
45
+ }
46
+ }
47
+ return {
48
+ shouldDegrade: true,
49
+ targetLevel: CapabilityLevel_1.CapabilityLevel.NONE,
50
+ reason: reasons.join('; ') + ', falling back to NONE',
51
+ };
52
+ }
53
+ }
54
+ exports.ThresholdDegradationPolicy = ThresholdDegradationPolicy;
55
+ class NoOpDegradationPolicy {
56
+ decide(input, minCapability) {
57
+ return {
58
+ shouldDegrade: false,
59
+ targetLevel: minCapability.minCapability,
60
+ reason: 'No-op policy: never degrades',
61
+ };
62
+ }
63
+ }
64
+ exports.NoOpDegradationPolicy = NoOpDegradationPolicy;
65
+ //# sourceMappingURL=DegradationPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DegradationPolicy.js","sourceRoot":"","sources":["../../../src/core/capability/DegradationPolicy.ts"],"names":[],"mappings":";;;AAAA,uDAA0F;AAkB1F,MAAa,0BAA0B;IAC3B,SAAS,CAAS;IAClB,mBAAmB,CAAS;IAEpC,YAAY,UAGR,EAAE;QACF,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAC5C,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,GAAG,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,KAAoB,EAAE,aAA4B;QACrD,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,WAAW,sBAAsB,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC;QAC9F,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC9G,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACH,aAAa,EAAE,KAAK;gBACpB,WAAW,EAAE,aAAa,CAAC,aAAa;gBACxC,MAAM,EAAE,2CAA2C;aACtD,CAAC;QACN,CAAC;QAED,MAAM,aAAa,GAAG,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;QAEpF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,OAAO;oBACH,aAAa,EAAE,IAAI;oBACnB,WAAW;oBACX,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,kCAAkC,WAAW,EAAE;iBAC/E,CAAC;YACN,CAAC;YAED,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;YAE1C,IAAI,SAAS,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACxC,OAAO;oBACH,aAAa,EAAE,IAAI;oBACnB,WAAW,EAAE,SAAS;oBACtB,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,oBAAoB,WAAW,OAAO,SAAS,EAAE;iBACjF,CAAC;YACN,CAAC;QACL,CAAC;QAED,OAAO;YACH,aAAa,EAAE,IAAI;YACnB,WAAW,EAAE,iCAAe,CAAC,IAAI;YACjC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,wBAAwB;SACxD,CAAC;IACN,CAAC;CACJ;AA7DD,gEA6DC;AAED,MAAa,qBAAqB;IAC9B,MAAM,CAAC,KAAoB,EAAE,aAA4B;QACrD,OAAO;YACH,aAAa,EAAE,KAAK;YACpB,WAAW,EAAE,aAAa,CAAC,aAAa;YACxC,MAAM,EAAE,8BAA8B;SACzC,CAAC;IACN,CAAC;CACJ;AARD,sDAQC"}
@@ -0,0 +1,3 @@
1
+ export * from './CapabilityLevel';
2
+ export * from './DegradationPolicy';
3
+ export * from './CostProfile';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./CapabilityLevel"), exports);
18
+ __exportStar(require("./DegradationPolicy"), exports);
19
+ __exportStar(require("./CostProfile"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/capability/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,sDAAoC;AACpC,gDAA8B"}
@@ -0,0 +1,30 @@
1
+ export interface ContextProvenance {
2
+ source: string;
3
+ ref?: string;
4
+ timeRange?: {
5
+ start: string;
6
+ end: string;
7
+ };
8
+ }
9
+ export interface ClippedInfo {
10
+ reason: string;
11
+ droppedItems: string[];
12
+ }
13
+ export interface ContextMeta {
14
+ confidence: number;
15
+ confidenceReason: string;
16
+ provenance: ContextProvenance;
17
+ clipped?: ClippedInfo;
18
+ timestamp: string;
19
+ version: string;
20
+ }
21
+ export declare class ContextMetaBuilder {
22
+ private meta;
23
+ setConfidence(value: number, reason: string): ContextMetaBuilder;
24
+ setProvenance(source: string, ref?: string, timeRange?: ContextProvenance['timeRange']): ContextMetaBuilder;
25
+ setClipped(reason: string, droppedItems: string[]): ContextMetaBuilder;
26
+ build(): ContextMeta;
27
+ static fromPartial(partial: Partial<ContextMeta>): ContextMeta;
28
+ }
29
+ export declare function toAuditLog(meta: ContextMeta): string;
30
+ export declare function mergeMetas(metas: ContextMeta[]): ContextMeta;
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContextMetaBuilder = void 0;
4
+ exports.toAuditLog = toAuditLog;
5
+ exports.mergeMetas = mergeMetas;
6
+ class ContextMetaBuilder {
7
+ meta = {
8
+ timestamp: new Date().toISOString(),
9
+ version: '1.0.0',
10
+ };
11
+ setConfidence(value, reason) {
12
+ this.meta.confidence = Math.max(0, Math.min(1, value));
13
+ this.meta.confidenceReason = reason;
14
+ return this;
15
+ }
16
+ setProvenance(source, ref, timeRange) {
17
+ this.meta.provenance = {
18
+ source,
19
+ ref,
20
+ timeRange,
21
+ };
22
+ return this;
23
+ }
24
+ setClipped(reason, droppedItems) {
25
+ this.meta.clipped = {
26
+ reason,
27
+ droppedItems,
28
+ };
29
+ return this;
30
+ }
31
+ build() {
32
+ if (this.meta.confidence === undefined) {
33
+ this.meta.confidence = 0.5;
34
+ this.meta.confidenceReason = 'No explicit confidence set, using default';
35
+ }
36
+ if (this.meta.provenance === undefined) {
37
+ this.meta.provenance = {
38
+ source: 'unknown',
39
+ };
40
+ }
41
+ return this.meta;
42
+ }
43
+ static fromPartial(partial) {
44
+ const builder = new ContextMetaBuilder();
45
+ if (partial.confidence !== undefined) {
46
+ builder.setConfidence(partial.confidence, partial.confidenceReason || 'Inferred');
47
+ }
48
+ if (partial.provenance) {
49
+ builder.setProvenance(partial.provenance.source, partial.provenance.ref, partial.provenance.timeRange);
50
+ }
51
+ if (partial.clipped) {
52
+ builder.setClipped(partial.clipped.reason, partial.clipped.droppedItems);
53
+ }
54
+ return builder.build();
55
+ }
56
+ }
57
+ exports.ContextMetaBuilder = ContextMetaBuilder;
58
+ function toAuditLog(meta) {
59
+ const log = [];
60
+ log.push(`Context Audit Log`);
61
+ log.push(`================`);
62
+ log.push(`Timestamp: ${meta.timestamp}`);
63
+ log.push(`Version: ${meta.version}`);
64
+ log.push(`Confidence: ${(meta.confidence * 100).toFixed(1)}%`);
65
+ log.push(`Confidence Reason: ${meta.confidenceReason}`);
66
+ log.push(`Source: ${meta.provenance.source}`);
67
+ if (meta.provenance.ref) {
68
+ log.push(`Reference: ${meta.provenance.ref}`);
69
+ }
70
+ if (meta.provenance.timeRange) {
71
+ log.push(`Time Range: ${meta.provenance.timeRange.start} to ${meta.provenance.timeRange.end}`);
72
+ }
73
+ if (meta.clipped) {
74
+ log.push(`Clipped: Yes (${meta.clipped.reason})`);
75
+ log.push(`Dropped Items (${meta.clipped.droppedItems.length}):`);
76
+ for (const item of meta.clipped.droppedItems) {
77
+ log.push(` - ${item}`);
78
+ }
79
+ }
80
+ else {
81
+ log.push(`Clipped: No`);
82
+ }
83
+ return log.join('\n');
84
+ }
85
+ function mergeMetas(metas) {
86
+ if (metas.length === 0) {
87
+ return new ContextMetaBuilder().build();
88
+ }
89
+ if (metas.length === 1) {
90
+ return metas[0];
91
+ }
92
+ const avgConfidence = metas.reduce((sum, m) => sum + m.confidence, 0) / metas.length;
93
+ const sources = metas.map(m => m.provenance.source).filter((v, i, a) => a.indexOf(v) === i);
94
+ const allDroppedItems = metas.filter(m => m.clipped).flatMap(m => m.clipped.droppedItems);
95
+ let clippedInfo;
96
+ if (allDroppedItems.length > 0) {
97
+ clippedInfo = {
98
+ reason: 'Merged from multiple contexts with clipped items',
99
+ droppedItems: allDroppedItems,
100
+ };
101
+ }
102
+ return new ContextMetaBuilder()
103
+ .setConfidence(avgConfidence, `Average confidence from ${metas.length} sources`)
104
+ .setProvenance(`merged(${sources.join(',')})`)
105
+ .setClipped('Merged contexts had clipped items', allDroppedItems)
106
+ .build();
107
+ }
108
+ //# sourceMappingURL=ContextMeta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextMeta.js","sourceRoot":"","sources":["../../../src/core/context/ContextMeta.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './ContextMeta';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ContextMeta"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/context/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B"}
@@ -1,5 +1,6 @@
1
1
  import { GitService } from './GitService';
2
2
  import { ModelRouter } from '../modelRouter/ModelRouter';
3
+ import { CapabilityLevel } from '../capability/CapabilityLevel';
3
4
  /**
4
5
  * 代码审查级别
5
6
  */
@@ -53,6 +54,15 @@ export interface ReviewResult {
53
54
  recommendations: string[];
54
55
  /** 审查的文件数 */
55
56
  filesReviewed: number;
57
+ /** 置信度 (0-1) */
58
+ confidence: number;
59
+ /** 降级决策 */
60
+ degradation?: {
61
+ applied: boolean;
62
+ originalLevel: CapabilityLevel;
63
+ targetLevel: CapabilityLevel;
64
+ reason: string;
65
+ };
56
66
  }
57
67
  /**
58
68
  * AI 代码审查器
@@ -61,6 +71,7 @@ export declare class CodeReviewer {
61
71
  private gitService;
62
72
  private router?;
63
73
  static readonly VERSION = "v1.0";
74
+ private degradationPolicy;
64
75
  constructor(gitService: GitService, router?: ModelRouter | undefined);
65
76
  /**
66
77
  * 构建审查提示词