speccore 8.3.21 → 8.3.26
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 +7 -4
- package/dist/cli.js +19 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +24 -8
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/config.d.ts +3 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +206 -90
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/context-output.d.ts.map +1 -1
- package/dist/commands/context-output.js +0 -10
- package/dist/commands/context-output.js.map +1 -1
- package/dist/commands/dev.js +6 -7
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +140 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/done.js +51 -20
- package/dist/commands/done.js.map +1 -1
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +147 -45
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/help.js +5 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init.d.ts +0 -2
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +9 -51
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/iteration/split.js +29 -17
- package/dist/commands/iteration/split.js.map +1 -1
- package/dist/commands/status-panel.d.ts.map +1 -1
- package/dist/commands/status-panel.js +13 -48
- package/dist/commands/status-panel.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +32 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +206 -8
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/verdict.d.ts +16 -0
- package/dist/commands/verdict.d.ts.map +1 -0
- package/dist/commands/verdict.js +189 -0
- package/dist/commands/verdict.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +3 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/core/analyze-engine.d.ts.map +1 -1
- package/dist/core/analyze-engine.js +3 -4
- package/dist/core/analyze-engine.js.map +1 -1
- package/dist/core/arbitration/arbitration-engine.d.ts +36 -0
- package/dist/core/arbitration/arbitration-engine.d.ts.map +1 -0
- package/dist/core/arbitration/arbitration-engine.js +142 -0
- package/dist/core/arbitration/arbitration-engine.js.map +1 -0
- package/dist/core/arbitration/conflict-detector.d.ts +15 -0
- package/dist/core/arbitration/conflict-detector.d.ts.map +1 -0
- package/dist/core/arbitration/conflict-detector.js +78 -0
- package/dist/core/arbitration/conflict-detector.js.map +1 -0
- package/dist/core/arbitration/conflict-types.d.ts +34 -0
- package/dist/core/arbitration/conflict-types.d.ts.map +1 -0
- package/dist/core/arbitration/conflict-types.js +8 -0
- package/dist/core/arbitration/conflict-types.js.map +1 -0
- package/dist/core/arbitration/contract-registry.d.ts +15 -0
- package/dist/core/arbitration/contract-registry.d.ts.map +1 -0
- package/dist/core/arbitration/contract-registry.js +185 -0
- package/dist/core/arbitration/contract-registry.js.map +1 -0
- package/dist/core/arbitration/contract-types.d.ts +33 -0
- package/dist/core/arbitration/contract-types.d.ts.map +1 -0
- package/dist/core/arbitration/contract-types.js +8 -0
- package/dist/core/arbitration/contract-types.js.map +1 -0
- package/dist/core/arbitration/index.d.ts +16 -0
- package/dist/core/arbitration/index.d.ts.map +1 -0
- package/dist/core/arbitration/index.js +32 -0
- package/dist/core/arbitration/index.js.map +1 -0
- package/dist/core/arbitration/l1-auto-arbiter.d.ts +19 -0
- package/dist/core/arbitration/l1-auto-arbiter.d.ts.map +1 -0
- package/dist/core/arbitration/l1-auto-arbiter.js +41 -0
- package/dist/core/arbitration/l1-auto-arbiter.js.map +1 -0
- package/dist/core/arbitration/l2-ai-arbiter.d.ts +19 -0
- package/dist/core/arbitration/l2-ai-arbiter.d.ts.map +1 -0
- package/dist/core/arbitration/l2-ai-arbiter.js +57 -0
- package/dist/core/arbitration/l2-ai-arbiter.js.map +1 -0
- package/dist/core/arbitration/l3-human-arbiter.d.ts +24 -0
- package/dist/core/arbitration/l3-human-arbiter.d.ts.map +1 -0
- package/dist/core/arbitration/l3-human-arbiter.js +65 -0
- package/dist/core/arbitration/l3-human-arbiter.js.map +1 -0
- package/dist/core/arbitration/verdict-generator.d.ts +16 -0
- package/dist/core/arbitration/verdict-generator.d.ts.map +1 -0
- package/dist/core/arbitration/verdict-generator.js +166 -0
- package/dist/core/arbitration/verdict-generator.js.map +1 -0
- package/dist/core/arbitration/verdict-types.d.ts +49 -0
- package/dist/core/arbitration/verdict-types.d.ts.map +1 -0
- package/dist/core/arbitration/verdict-types.js +8 -0
- package/dist/core/arbitration/verdict-types.js.map +1 -0
- package/dist/core/ask-config.d.ts +4 -3
- package/dist/core/ask-config.d.ts.map +1 -1
- package/dist/core/ask-config.js +79 -1
- package/dist/core/ask-config.js.map +1 -1
- package/dist/core/ask-engine.d.ts.map +1 -1
- package/dist/core/ask-engine.js +7 -0
- package/dist/core/ask-engine.js.map +1 -1
- package/dist/core/intent-recognition.d.ts +1 -1
- package/dist/core/intent-recognition.d.ts.map +1 -1
- package/dist/core/intent-recognition.js +10 -0
- package/dist/core/intent-recognition.js.map +1 -1
- package/dist/core/pattern-detector.d.ts +24 -0
- package/dist/core/pattern-detector.d.ts.map +1 -1
- package/dist/core/pattern-detector.js +172 -3
- package/dist/core/pattern-detector.js.map +1 -1
- package/dist/core/quality-audit.d.ts.map +1 -1
- package/dist/core/quality-audit.js +23 -15
- package/dist/core/quality-audit.js.map +1 -1
- package/dist/core/spec-skeleton.d.ts.map +1 -1
- package/dist/core/spec-skeleton.js +35 -12
- package/dist/core/spec-skeleton.js.map +1 -1
- package/dist/core/unified-config.d.ts +161 -27
- package/dist/core/unified-config.d.ts.map +1 -1
- package/dist/core/unified-config.js +856 -82
- package/dist/core/unified-config.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arbitration-engine.d.ts","sourceRoot":"","sources":["../../../src/core/arbitration/arbitration-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,QAAQ,EAA2B,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,eAAe,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAYvE;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,eAAe,CAAA;CAAE,GACjG,OAAO,CAAC,uBAAuB,CAAC,CAwElC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* arbitration-engine.ts — 裁决引擎主入口
|
|
4
|
+
*
|
|
5
|
+
* v8.3.24+: 契约冲突裁决模型核心引擎
|
|
6
|
+
* 按层级路由冲突到对应的裁决器
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.getArbitrationConfig = getArbitrationConfig;
|
|
43
|
+
exports.runArbitration = runArbitration;
|
|
44
|
+
const conflict_detector_1 = require("./conflict-detector");
|
|
45
|
+
const l1_auto_arbiter_1 = require("./l1-auto-arbiter");
|
|
46
|
+
const l2_ai_arbiter_1 = require("./l2-ai-arbiter");
|
|
47
|
+
const l3_human_arbiter_1 = require("./l3-human-arbiter");
|
|
48
|
+
const verdict_generator_1 = require("./verdict-generator");
|
|
49
|
+
/**
|
|
50
|
+
* 读取 arbitration 配置(从 .speccore.yml)
|
|
51
|
+
* 默认: enabled=true, mode='full'
|
|
52
|
+
*/
|
|
53
|
+
async function getArbitrationConfig() {
|
|
54
|
+
try {
|
|
55
|
+
const { loadConfig } = await Promise.resolve().then(() => __importStar(require('../unified-config')));
|
|
56
|
+
const config = await loadConfig();
|
|
57
|
+
return {
|
|
58
|
+
enabled: config.arbitration?.enabled ?? true,
|
|
59
|
+
mode: ['full', 'l1-only', 'report-only'].includes(config.arbitration?.mode)
|
|
60
|
+
? config.arbitration.mode
|
|
61
|
+
: 'full',
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
catch { /* 静默失败 */ }
|
|
65
|
+
return { enabled: true, mode: 'full' };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 运行完整的契约冲突裁决流程
|
|
69
|
+
*/
|
|
70
|
+
async function runArbitration(taskId, codePath, taskDir, options) {
|
|
71
|
+
const mode = options?.mode || 'full';
|
|
72
|
+
// 1. 检测冲突
|
|
73
|
+
const detection = await (0, conflict_detector_1.detectConflicts)(taskId, codePath, taskDir, options);
|
|
74
|
+
// 2. 按层级分组裁决(根据 mode 调整行为)
|
|
75
|
+
const verdicts = [];
|
|
76
|
+
const resolvedConflicts = [];
|
|
77
|
+
const pendingL2 = [];
|
|
78
|
+
const pendingL3 = [];
|
|
79
|
+
for (const conflict of detection.conflicts) {
|
|
80
|
+
if (conflict.contractId.startsWith('L1-')) {
|
|
81
|
+
// L1 始终裁决(即使是 report-only,也至少标记状态)
|
|
82
|
+
const result = await (0, l1_auto_arbiter_1.arbitrateL1)(conflict);
|
|
83
|
+
verdicts.push(result.verdict);
|
|
84
|
+
resolvedConflicts.push(result.conflict);
|
|
85
|
+
}
|
|
86
|
+
else if (conflict.contractId.startsWith('L2-')) {
|
|
87
|
+
if (mode === 'report-only') {
|
|
88
|
+
// report-only: 不裁决,只保留在报告中
|
|
89
|
+
resolvedConflicts.push(conflict);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
const result = await (0, l2_ai_arbiter_1.arbitrateL2)(conflict);
|
|
93
|
+
resolvedConflicts.push(result.conflict);
|
|
94
|
+
if (result.needsHumanConfirm && mode !== 'l1-only') {
|
|
95
|
+
pendingL2.push(result.conflict);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else if (conflict.contractId.startsWith('L3-')) {
|
|
100
|
+
if (mode === 'report-only') {
|
|
101
|
+
// report-only: 不裁决,只保留在报告中
|
|
102
|
+
resolvedConflicts.push(conflict);
|
|
103
|
+
}
|
|
104
|
+
else if (mode === 'l1-only') {
|
|
105
|
+
// l1-only: 只标记为报告,不进入 pending-review
|
|
106
|
+
resolvedConflicts.push(conflict);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
const result = await (0, l3_human_arbiter_1.initiateL3Arbitration)(conflict);
|
|
110
|
+
verdicts.push(result.verdict);
|
|
111
|
+
resolvedConflicts.push(result.conflict);
|
|
112
|
+
pendingL3.push(result.conflict);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// 3. 生成裁决书
|
|
117
|
+
const report = (0, verdict_generator_1.generateArbitrationReport)(taskId, detection, resolvedConflicts, verdicts);
|
|
118
|
+
// 4. 判断是否可以继续(根据 mode 调整)
|
|
119
|
+
// full: L1 fatal 阻断 + L3 pending 阻断 + L2 pending 阻断
|
|
120
|
+
// l1-only: 仅 L1 fatal 阻断,L2/L3 不阻塞
|
|
121
|
+
// report-only: 永不阻断,只出报告
|
|
122
|
+
const l1Fatal = detection.summary.fatal > 0;
|
|
123
|
+
const allPassed = mode === 'report-only'
|
|
124
|
+
? true
|
|
125
|
+
: mode === 'l1-only'
|
|
126
|
+
? !l1Fatal
|
|
127
|
+
: !l1Fatal && pendingL3.length === 0 && pendingL2.length === 0;
|
|
128
|
+
const canProceed = mode === 'report-only'
|
|
129
|
+
? true
|
|
130
|
+
: mode === 'l1-only'
|
|
131
|
+
? !l1Fatal
|
|
132
|
+
: !l1Fatal && pendingL3.length === 0;
|
|
133
|
+
return {
|
|
134
|
+
report,
|
|
135
|
+
allPassed,
|
|
136
|
+
canProceed,
|
|
137
|
+
pendingL2,
|
|
138
|
+
pendingL3,
|
|
139
|
+
verdicts,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=arbitration-engine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arbitration-engine.js","sourceRoot":"","sources":["../../../src/core/arbitration/arbitration-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* conflict-detector.ts — 冲突检测引擎
|
|
3
|
+
*
|
|
4
|
+
* v8.3.24+: 包装现有 verify-engine,将 CheckResult 转换为 Conflict
|
|
5
|
+
*/
|
|
6
|
+
import type { ConflictDetectionResult } from './conflict-types';
|
|
7
|
+
/**
|
|
8
|
+
* 运行质量门禁并转换为冲突检测 result
|
|
9
|
+
*/
|
|
10
|
+
export declare function detectConflicts(taskId: string, codePath: string, taskDir: string, options?: {
|
|
11
|
+
timeout?: number;
|
|
12
|
+
withAgents?: boolean;
|
|
13
|
+
projectRoot?: string;
|
|
14
|
+
}): Promise<ConflictDetectionResult>;
|
|
15
|
+
//# sourceMappingURL=conflict-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-detector.d.ts","sourceRoot":"","sources":["../../../src/core/arbitration/conflict-detector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAY,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE1E;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACzE,OAAO,CAAC,uBAAuB,CAAC,CA+DlC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* conflict-detector.ts — 冲突检测引擎
|
|
4
|
+
*
|
|
5
|
+
* v8.3.24+: 包装现有 verify-engine,将 CheckResult 转换为 Conflict
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.detectConflicts = detectConflicts;
|
|
9
|
+
const verify_engine_1 = require("../verify-engine");
|
|
10
|
+
const contract_registry_1 = require("./contract-registry");
|
|
11
|
+
/**
|
|
12
|
+
* 运行质量门禁并转换为冲突检测 result
|
|
13
|
+
*/
|
|
14
|
+
async function detectConflicts(taskId, codePath, taskDir, options) {
|
|
15
|
+
const gateResult = await (0, verify_engine_1.runQualityGate)(taskId, codePath, taskDir, options);
|
|
16
|
+
const conflicts = [];
|
|
17
|
+
let L1 = 0, L2 = 0, L3 = 0;
|
|
18
|
+
let fatal = 0, critical = 0, warning = 0, info = 0;
|
|
19
|
+
for (const check of gateResult.report.checks) {
|
|
20
|
+
// pass / skip 不生成冲突
|
|
21
|
+
if (check.status === 'pass' || check.status === 'skip')
|
|
22
|
+
continue;
|
|
23
|
+
const contractId = (0, contract_registry_1.mapCheckNameToContractId)(check.name);
|
|
24
|
+
if (!contractId)
|
|
25
|
+
continue; // 未映射的检查项跳过
|
|
26
|
+
const contract = (0, contract_registry_1.getContractById)(contractId);
|
|
27
|
+
if (!contract)
|
|
28
|
+
continue;
|
|
29
|
+
const severity = check.status === 'fail' && check.blocking
|
|
30
|
+
? 'fatal'
|
|
31
|
+
: check.status === 'fail'
|
|
32
|
+
? 'critical'
|
|
33
|
+
: 'warning';
|
|
34
|
+
const conflict = {
|
|
35
|
+
id: `${contract.level}-${contractId.split('-')[1]}-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`,
|
|
36
|
+
taskId,
|
|
37
|
+
contractId,
|
|
38
|
+
violation: {
|
|
39
|
+
contractId,
|
|
40
|
+
severity,
|
|
41
|
+
message: check.details,
|
|
42
|
+
evidence: check.output || check.details,
|
|
43
|
+
suggestedFix: undefined,
|
|
44
|
+
},
|
|
45
|
+
status: 'detected',
|
|
46
|
+
detectedAt: gateResult.report.timestamp,
|
|
47
|
+
};
|
|
48
|
+
conflicts.push(conflict);
|
|
49
|
+
if (contract.level === 'L1')
|
|
50
|
+
L1++;
|
|
51
|
+
else if (contract.level === 'L2')
|
|
52
|
+
L2++;
|
|
53
|
+
else if (contract.level === 'L3')
|
|
54
|
+
L3++;
|
|
55
|
+
if (severity === 'fatal')
|
|
56
|
+
fatal++;
|
|
57
|
+
else if (severity === 'critical')
|
|
58
|
+
critical++;
|
|
59
|
+
else if (severity === 'warning')
|
|
60
|
+
warning++;
|
|
61
|
+
else
|
|
62
|
+
info++;
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
conflicts,
|
|
66
|
+
summary: {
|
|
67
|
+
total: conflicts.length,
|
|
68
|
+
L1,
|
|
69
|
+
L2,
|
|
70
|
+
L3,
|
|
71
|
+
fatal,
|
|
72
|
+
critical,
|
|
73
|
+
warning,
|
|
74
|
+
info,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=conflict-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-detector.js","sourceRoot":"","sources":["../../../src/core/arbitration/conflict-detector.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AASH,0CAoEC;AA3ED,oDAA0E;AAC1E,2DAAgF;AAGhF;;GAEG;AACI,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,QAAgB,EAChB,OAAe,EACf,OAA0E;IAE1E,MAAM,UAAU,GAAG,MAAM,IAAA,8BAAc,EAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAE5E,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC3B,IAAI,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;IAEnD,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7C,oBAAoB;QACpB,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;YAAE,SAAS;QAEjE,MAAM,UAAU,GAAG,IAAA,4CAAwB,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU;YAAE,SAAS,CAAC,YAAY;QAEvC,MAAM,QAAQ,GAAG,IAAA,mCAAe,EAAC,UAAU,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ;YACxD,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM;gBACvB,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,QAAQ,GAAa;YACzB,EAAE,EAAE,GAAG,QAAQ,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YAC3G,MAAM;YACN,UAAU;YACV,SAAS,EAAE;gBACT,UAAU;gBACV,QAAQ;gBACR,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,QAAQ,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO;gBACvC,YAAY,EAAE,SAAS;aACxB;YACD,MAAM,EAAE,UAAU;YAClB,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS;SACxC,CAAC;QAEF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzB,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI;YAAE,EAAE,EAAE,CAAC;aAC7B,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI;YAAE,EAAE,EAAE,CAAC;aAClC,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI;YAAE,EAAE,EAAE,CAAC;QAEvC,IAAI,QAAQ,KAAK,OAAO;YAAE,KAAK,EAAE,CAAC;aAC7B,IAAI,QAAQ,KAAK,UAAU;YAAE,QAAQ,EAAE,CAAC;aACxC,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;;YACtC,IAAI,EAAE,CAAC;IACd,CAAC;IAED,OAAO;QACL,SAAS;QACT,OAAO,EAAE;YACP,KAAK,EAAE,SAAS,CAAC,MAAM;YACvB,EAAE;YACF,EAAE;YACF,EAAE;YACF,KAAK;YACL,QAAQ;YACR,OAAO;YACP,IAAI;SACL;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* conflict-types.ts — 冲突类型定义
|
|
3
|
+
*
|
|
4
|
+
* v8.3.24+: 契约冲突裁决模型核心类型
|
|
5
|
+
*/
|
|
6
|
+
import type { ContractViolation } from './contract-types';
|
|
7
|
+
export type ConflictStatus = 'detected' | 'auto-fixing' | 'pending-fix' | 'pending-review' | 'resolved' | 'overridden' | 'escalated';
|
|
8
|
+
export interface Conflict {
|
|
9
|
+
id: string;
|
|
10
|
+
taskId: string;
|
|
11
|
+
contractId: string;
|
|
12
|
+
violation: ContractViolation;
|
|
13
|
+
status: ConflictStatus;
|
|
14
|
+
detectedAt: string;
|
|
15
|
+
resolvedAt?: string;
|
|
16
|
+
resolvedBy?: 'machine' | 'ai' | 'human';
|
|
17
|
+
resolution?: string;
|
|
18
|
+
arbiter?: string;
|
|
19
|
+
parentConflictId?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ConflictDetectionResult {
|
|
22
|
+
conflicts: Conflict[];
|
|
23
|
+
summary: {
|
|
24
|
+
total: number;
|
|
25
|
+
L1: number;
|
|
26
|
+
L2: number;
|
|
27
|
+
L3: number;
|
|
28
|
+
fatal: number;
|
|
29
|
+
critical: number;
|
|
30
|
+
warning: number;
|
|
31
|
+
info: number;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=conflict-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-types.d.ts","sourceRoot":"","sources":["../../../src/core/arbitration/conflict-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,MAAM,cAAc,GACtB,UAAU,GACV,aAAa,GACb,aAAa,GACb,gBAAgB,GAChB,UAAU,GACV,YAAY,GACZ,WAAW,CAAC;AAEhB,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conflict-types.js","sourceRoot":"","sources":["../../../src/core/arbitration/conflict-types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* contract-registry.ts — 契约注册表
|
|
3
|
+
*
|
|
4
|
+
* v8.3.24+: 定义所有 L1/L2/L3 契约规则,映射到现有检查项
|
|
5
|
+
*/
|
|
6
|
+
import type { Contract } from './contract-types';
|
|
7
|
+
/** 按 ID 查找契约 */
|
|
8
|
+
export declare function getContractById(id: string): Contract | undefined;
|
|
9
|
+
/** 按层级获取契约列表 */
|
|
10
|
+
export declare function getContractsByLevel(level: 'L1' | 'L2' | 'L3'): Contract[];
|
|
11
|
+
/** 获取所有活跃契约 */
|
|
12
|
+
export declare function getAllActiveContracts(): Contract[];
|
|
13
|
+
/** CheckResult.name → Contract.id 映射 */
|
|
14
|
+
export declare function mapCheckNameToContractId(checkName: string): string | undefined;
|
|
15
|
+
//# sourceMappingURL=contract-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-registry.d.ts","sourceRoot":"","sources":["../../../src/core/arbitration/contract-registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAgJjD,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEhE;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,QAAQ,EAAE,CAEzE;AAED,eAAe;AACf,wBAAgB,qBAAqB,IAAI,QAAQ,EAAE,CAElD;AAED,wCAAwC;AACxC,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAoB9E"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* contract-registry.ts — 契约注册表
|
|
4
|
+
*
|
|
5
|
+
* v8.3.24+: 定义所有 L1/L2/L3 契约规则,映射到现有检查项
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.getContractById = getContractById;
|
|
9
|
+
exports.getContractsByLevel = getContractsByLevel;
|
|
10
|
+
exports.getAllActiveContracts = getAllActiveContracts;
|
|
11
|
+
exports.mapCheckNameToContractId = mapCheckNameToContractId;
|
|
12
|
+
const CONTRACTS = [
|
|
13
|
+
// ═══════════════════════════════════════════════════════════
|
|
14
|
+
// L1 机器契约
|
|
15
|
+
// ═══════════════════════════════════════════════════════════
|
|
16
|
+
{
|
|
17
|
+
id: 'L1-compile',
|
|
18
|
+
name: '编译通过',
|
|
19
|
+
level: 'L1',
|
|
20
|
+
description: '代码必须能通过编译,零错误',
|
|
21
|
+
priority: 100,
|
|
22
|
+
status: 'active',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 'L1-test',
|
|
26
|
+
name: '单元测试通过',
|
|
27
|
+
level: 'L1',
|
|
28
|
+
description: '所有单元测试必须通过',
|
|
29
|
+
priority: 90,
|
|
30
|
+
status: 'active',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'L1-code-exist',
|
|
34
|
+
name: '代码文件存在',
|
|
35
|
+
level: 'L1',
|
|
36
|
+
description: 'src/ 目录下必须有实际代码文件',
|
|
37
|
+
priority: 80,
|
|
38
|
+
status: 'active',
|
|
39
|
+
},
|
|
40
|
+
// ═══════════════════════════════════════════════════════════
|
|
41
|
+
// L2 规范契约
|
|
42
|
+
// ═══════════════════════════════════════════════════════════
|
|
43
|
+
{
|
|
44
|
+
id: 'L2-lint',
|
|
45
|
+
name: 'Lint 合规',
|
|
46
|
+
level: 'L2',
|
|
47
|
+
description: '代码必须符合项目 Lint 规范',
|
|
48
|
+
priority: 70,
|
|
49
|
+
status: 'active',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'L2-spec-consistency',
|
|
53
|
+
name: 'Spec 一致性',
|
|
54
|
+
level: 'L2',
|
|
55
|
+
description: '代码实现必须与 REQ.md 中的验收标准一致',
|
|
56
|
+
priority: 85,
|
|
57
|
+
status: 'active',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: 'L2-api-contract',
|
|
61
|
+
name: 'API 契约合规',
|
|
62
|
+
level: 'L2',
|
|
63
|
+
description: '接口实现必须与 API_CONTRACT.yaml 一致',
|
|
64
|
+
priority: 80,
|
|
65
|
+
status: 'active',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: 'L2-schema',
|
|
69
|
+
name: 'Schema 一致性',
|
|
70
|
+
level: 'L2',
|
|
71
|
+
description: '实体字段必须与 SCHEMA.md 一致',
|
|
72
|
+
priority: 75,
|
|
73
|
+
status: 'active',
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
id: 'L2-dev-guide',
|
|
77
|
+
name: 'DEV_GUIDE 合规',
|
|
78
|
+
level: 'L2',
|
|
79
|
+
description: '改造范围必须符合 DEV_GUIDE 要求',
|
|
80
|
+
priority: 70,
|
|
81
|
+
status: 'active',
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: 'L2-test-coverage',
|
|
85
|
+
name: '测试用例覆盖',
|
|
86
|
+
level: 'L2',
|
|
87
|
+
description: '必须有对应测试用例覆盖',
|
|
88
|
+
priority: 65,
|
|
89
|
+
status: 'active',
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: 'L2-review',
|
|
93
|
+
name: '评审项合规',
|
|
94
|
+
level: 'L2',
|
|
95
|
+
description: '必须满足 REVIEW.md 中的评审项',
|
|
96
|
+
priority: 60,
|
|
97
|
+
status: 'active',
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
id: 'L2-error-code',
|
|
101
|
+
name: '错误码一致性',
|
|
102
|
+
level: 'L2',
|
|
103
|
+
description: '错误码必须与 ERROR_CODES.md 一致',
|
|
104
|
+
priority: 55,
|
|
105
|
+
status: 'active',
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
id: 'L2-spec-doc-quality',
|
|
109
|
+
name: '规格文档质量',
|
|
110
|
+
level: 'L2',
|
|
111
|
+
description: 'REQ.md/TECH.md 必须有实质内容',
|
|
112
|
+
priority: 50,
|
|
113
|
+
status: 'active',
|
|
114
|
+
},
|
|
115
|
+
// ═══════════════════════════════════════════════════════════
|
|
116
|
+
// L3 架构契约
|
|
117
|
+
// ═══════════════════════════════════════════════════════════
|
|
118
|
+
{
|
|
119
|
+
id: 'L3-security',
|
|
120
|
+
name: '安全合规',
|
|
121
|
+
level: 'L3',
|
|
122
|
+
description: '代码不得存在安全漏洞(SQL注入、XSS等)',
|
|
123
|
+
priority: 95,
|
|
124
|
+
status: 'active',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
id: 'L3-dependency',
|
|
128
|
+
name: '依赖完整性',
|
|
129
|
+
level: 'L3',
|
|
130
|
+
description: '依赖必须完整,无循环依赖',
|
|
131
|
+
priority: 70,
|
|
132
|
+
status: 'active',
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
id: 'L3-dep-graph',
|
|
136
|
+
name: '知识图谱依赖一致性',
|
|
137
|
+
level: 'L3',
|
|
138
|
+
description: '上游依赖接口必须已可用',
|
|
139
|
+
priority: 65,
|
|
140
|
+
status: 'active',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
id: 'L3-deploy',
|
|
144
|
+
name: '部署清单检查',
|
|
145
|
+
level: 'L3',
|
|
146
|
+
description: '必须满足 DEPLOY.md 中的部署项',
|
|
147
|
+
priority: 50,
|
|
148
|
+
status: 'active',
|
|
149
|
+
},
|
|
150
|
+
];
|
|
151
|
+
/** 按 ID 查找契约 */
|
|
152
|
+
function getContractById(id) {
|
|
153
|
+
return CONTRACTS.find((c) => c.id === id);
|
|
154
|
+
}
|
|
155
|
+
/** 按层级获取契约列表 */
|
|
156
|
+
function getContractsByLevel(level) {
|
|
157
|
+
return CONTRACTS.filter((c) => c.level === level && c.status === 'active');
|
|
158
|
+
}
|
|
159
|
+
/** 获取所有活跃契约 */
|
|
160
|
+
function getAllActiveContracts() {
|
|
161
|
+
return CONTRACTS.filter((c) => c.status === 'active');
|
|
162
|
+
}
|
|
163
|
+
/** CheckResult.name → Contract.id 映射 */
|
|
164
|
+
function mapCheckNameToContractId(checkName) {
|
|
165
|
+
const mapping = {
|
|
166
|
+
'编译检查': 'L1-compile',
|
|
167
|
+
'单元测试': 'L1-test',
|
|
168
|
+
'代码文件检查': 'L1-code-exist',
|
|
169
|
+
'Lint 检查': 'L2-lint',
|
|
170
|
+
'Spec 一致性': 'L2-spec-consistency',
|
|
171
|
+
'API 契约合规': 'L2-api-contract',
|
|
172
|
+
'Schema 一致性': 'L2-schema',
|
|
173
|
+
'DEV_GUIDE 合规': 'L2-dev-guide',
|
|
174
|
+
'测试用例覆盖': 'L2-test-coverage',
|
|
175
|
+
'评审项合规': 'L2-review',
|
|
176
|
+
'错误码一致性': 'L2-error-code',
|
|
177
|
+
'规格文档质量': 'L2-spec-doc-quality',
|
|
178
|
+
'安全扫描': 'L3-security',
|
|
179
|
+
'依赖检查': 'L3-dependency',
|
|
180
|
+
'依赖一致性': 'L3-dep-graph',
|
|
181
|
+
'部署项检查': 'L3-deploy',
|
|
182
|
+
};
|
|
183
|
+
return mapping[checkName];
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=contract-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-registry.js","sourceRoot":"","sources":["../../../src/core/arbitration/contract-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* contract-types.ts — 契约类型定义
|
|
3
|
+
*
|
|
4
|
+
* v8.3.24+: 契约冲突裁决模型核心类型
|
|
5
|
+
*/
|
|
6
|
+
export type ContractLevel = 'L1' | 'L2' | 'L3';
|
|
7
|
+
export type ContractStatus = 'active' | 'disabled' | 'experimental';
|
|
8
|
+
export interface Contract {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
level: ContractLevel;
|
|
12
|
+
description: string;
|
|
13
|
+
priority: number;
|
|
14
|
+
status: ContractStatus;
|
|
15
|
+
}
|
|
16
|
+
export interface ContractViolation {
|
|
17
|
+
contractId: string;
|
|
18
|
+
severity: 'fatal' | 'critical' | 'warning' | 'info';
|
|
19
|
+
message: string;
|
|
20
|
+
location?: {
|
|
21
|
+
file: string;
|
|
22
|
+
line?: number;
|
|
23
|
+
};
|
|
24
|
+
evidence: string;
|
|
25
|
+
suggestedFix?: string;
|
|
26
|
+
}
|
|
27
|
+
export type CheckFunction = (codePath: string, taskDir: string, taskId: string) => Promise<ContractViolation[]>;
|
|
28
|
+
export type AutoFixFunction = (violation: ContractViolation, codePath: string) => Promise<{
|
|
29
|
+
success: boolean;
|
|
30
|
+
appliedChanges?: string[];
|
|
31
|
+
error?: string;
|
|
32
|
+
}>;
|
|
33
|
+
//# sourceMappingURL=contract-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-types.d.ts","sourceRoot":"","sources":["../../../src/core/arbitration/contract-types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,CAAC;AAEpE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAElC,MAAM,MAAM,eAAe,GAAG,CAC5B,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract-types.js","sourceRoot":"","sources":["../../../src/core/arbitration/contract-types.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* arbitration/index.ts — 契约冲突裁决模块统一导出
|
|
3
|
+
*
|
|
4
|
+
* v8.3.24+: Barrel export for arbitration engine
|
|
5
|
+
*/
|
|
6
|
+
export * from './contract-types';
|
|
7
|
+
export * from './conflict-types';
|
|
8
|
+
export * from './verdict-types';
|
|
9
|
+
export * from './contract-registry';
|
|
10
|
+
export * from './conflict-detector';
|
|
11
|
+
export * from './l1-auto-arbiter';
|
|
12
|
+
export * from './l2-ai-arbiter';
|
|
13
|
+
export * from './l3-human-arbiter';
|
|
14
|
+
export * from './verdict-generator';
|
|
15
|
+
export * from './arbitration-engine';
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/arbitration/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* arbitration/index.ts — 契约冲突裁决模块统一导出
|
|
4
|
+
*
|
|
5
|
+
* v8.3.24+: Barrel export for arbitration engine
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
+
};
|
|
21
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
+
__exportStar(require("./contract-types"), exports);
|
|
23
|
+
__exportStar(require("./conflict-types"), exports);
|
|
24
|
+
__exportStar(require("./verdict-types"), exports);
|
|
25
|
+
__exportStar(require("./contract-registry"), exports);
|
|
26
|
+
__exportStar(require("./conflict-detector"), exports);
|
|
27
|
+
__exportStar(require("./l1-auto-arbiter"), exports);
|
|
28
|
+
__exportStar(require("./l2-ai-arbiter"), exports);
|
|
29
|
+
__exportStar(require("./l3-human-arbiter"), exports);
|
|
30
|
+
__exportStar(require("./verdict-generator"), exports);
|
|
31
|
+
__exportStar(require("./arbitration-engine"), exports);
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/arbitration/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;AAEH,mDAAiC;AACjC,mDAAiC;AACjC,kDAAgC;AAChC,sDAAoC;AACpC,sDAAoC;AACpC,oDAAkC;AAClC,kDAAgC;AAChC,qDAAmC;AACnC,sDAAoC;AACpC,uDAAqC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* l1-auto-arbiter.ts — L1 机器契约自动裁决器
|
|
3
|
+
*
|
|
4
|
+
* v8.3.24+: 全自动裁决,无需人工参与
|
|
5
|
+
*/
|
|
6
|
+
import type { Conflict } from './conflict-types';
|
|
7
|
+
import type { Verdict } from './verdict-types';
|
|
8
|
+
export interface L1ArbitrationResult {
|
|
9
|
+
verdict: Verdict;
|
|
10
|
+
conflict: Conflict;
|
|
11
|
+
passed: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* L1 裁决:机器自动裁决
|
|
15
|
+
* 当前实现:L1 冲突(编译失败等)直接裁决为 reject,因为编译器已尝试修复
|
|
16
|
+
* 未来可扩展:集成 AI 自动修复循环
|
|
17
|
+
*/
|
|
18
|
+
export declare function arbitrateL1(conflict: Conflict): Promise<L1ArbitrationResult>;
|
|
19
|
+
//# sourceMappingURL=l1-auto-arbiter.d.ts.map
|