@dommaker/harness 0.13.3 → 0.14.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 (133) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/bin/harness-knowledge-check.js +38 -23
  3. package/bin/harness-knowledge-track.js +30 -4
  4. package/bin/harness.js +24 -1
  5. package/dist/cli/commands/diagnose.d.ts +16 -0
  6. package/dist/cli/commands/diagnose.d.ts.map +1 -0
  7. package/dist/cli/commands/diagnose.js +195 -0
  8. package/dist/cli/commands/diagnose.js.map +1 -0
  9. package/dist/cli/commands/index.d.ts +1 -1
  10. package/dist/cli/commands/index.d.ts.map +1 -1
  11. package/dist/cli/commands/index.js +4 -1
  12. package/dist/cli/commands/index.js.map +1 -1
  13. package/dist/cli/commands/knowledge.d.ts +21 -0
  14. package/dist/cli/commands/knowledge.d.ts.map +1 -1
  15. package/dist/cli/commands/knowledge.js +155 -4
  16. package/dist/cli/commands/knowledge.js.map +1 -1
  17. package/dist/cli/commands/propose.d.ts +18 -0
  18. package/dist/cli/commands/propose.d.ts.map +1 -0
  19. package/dist/cli/commands/propose.js +331 -0
  20. package/dist/cli/commands/propose.js.map +1 -0
  21. package/dist/cli/commands/traces.d.ts +15 -0
  22. package/dist/cli/commands/traces.d.ts.map +1 -0
  23. package/dist/cli/commands/traces.js +167 -0
  24. package/dist/cli/commands/traces.js.map +1 -0
  25. package/dist/constraints/definitions.d.ts +39 -0
  26. package/dist/constraints/definitions.d.ts.map +1 -0
  27. package/dist/constraints/definitions.js +71 -0
  28. package/dist/constraints/definitions.js.map +1 -0
  29. package/dist/constraints/quality.d.ts +11 -0
  30. package/dist/constraints/quality.d.ts.map +1 -0
  31. package/dist/constraints/quality.js +257 -0
  32. package/dist/constraints/quality.js.map +1 -0
  33. package/dist/constraints/safety.d.ts +13 -0
  34. package/dist/constraints/safety.d.ts.map +1 -0
  35. package/dist/constraints/safety.js +103 -0
  36. package/dist/constraints/safety.js.map +1 -0
  37. package/dist/core/constraints/definitions.d.ts.map +1 -1
  38. package/dist/core/constraints/definitions.js +4 -2
  39. package/dist/core/constraints/definitions.js.map +1 -1
  40. package/dist/extensions/long-running/constraints.d.ts +38 -0
  41. package/dist/extensions/long-running/constraints.d.ts.map +1 -0
  42. package/dist/extensions/long-running/constraints.js +153 -0
  43. package/dist/extensions/long-running/constraints.js.map +1 -0
  44. package/dist/extensions/long-running/index.d.ts +30 -0
  45. package/dist/extensions/long-running/index.d.ts.map +1 -0
  46. package/dist/extensions/long-running/index.js +50 -0
  47. package/dist/extensions/long-running/index.js.map +1 -0
  48. package/dist/extensions/long-running/types.d.ts +154 -0
  49. package/dist/extensions/long-running/types.d.ts.map +1 -0
  50. package/dist/extensions/long-running/types.js +9 -0
  51. package/dist/extensions/long-running/types.js.map +1 -0
  52. package/dist/index.d.ts +3 -1
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +6 -2
  55. package/dist/index.js.map +1 -1
  56. package/dist/knowledge/audit.d.ts +76 -0
  57. package/dist/knowledge/audit.d.ts.map +1 -0
  58. package/dist/knowledge/audit.js +566 -0
  59. package/dist/knowledge/audit.js.map +1 -0
  60. package/dist/knowledge/import.d.ts.map +1 -1
  61. package/dist/knowledge/import.js +3 -0
  62. package/dist/knowledge/import.js.map +1 -1
  63. package/dist/knowledge/index.d.ts +5 -1
  64. package/dist/knowledge/index.d.ts.map +1 -1
  65. package/dist/knowledge/index.js +6 -1
  66. package/dist/knowledge/index.js.map +1 -1
  67. package/dist/knowledge/ingest.d.ts +27 -0
  68. package/dist/knowledge/ingest.d.ts.map +1 -1
  69. package/dist/knowledge/ingest.js +150 -5
  70. package/dist/knowledge/ingest.js.map +1 -1
  71. package/dist/knowledge/lifecycle-hooks.d.ts.map +1 -1
  72. package/dist/knowledge/lifecycle-hooks.js +3 -0
  73. package/dist/knowledge/lifecycle-hooks.js.map +1 -1
  74. package/dist/knowledge/lifecycle.d.ts +59 -7
  75. package/dist/knowledge/lifecycle.d.ts.map +1 -1
  76. package/dist/knowledge/lifecycle.js +213 -52
  77. package/dist/knowledge/lifecycle.js.map +1 -1
  78. package/dist/knowledge/lint.d.ts.map +1 -1
  79. package/dist/knowledge/lint.js +43 -2
  80. package/dist/knowledge/lint.js.map +1 -1
  81. package/dist/knowledge/migration.d.ts +25 -0
  82. package/dist/knowledge/migration.d.ts.map +1 -0
  83. package/dist/knowledge/migration.js +96 -0
  84. package/dist/knowledge/migration.js.map +1 -0
  85. package/dist/knowledge/query.d.ts +29 -1
  86. package/dist/knowledge/query.d.ts.map +1 -1
  87. package/dist/knowledge/query.js +58 -0
  88. package/dist/knowledge/query.js.map +1 -1
  89. package/dist/knowledge/store.d.ts +21 -1
  90. package/dist/knowledge/store.d.ts.map +1 -1
  91. package/dist/knowledge/store.js +103 -6
  92. package/dist/knowledge/store.js.map +1 -1
  93. package/dist/knowledge/types.d.ts +29 -1
  94. package/dist/knowledge/types.d.ts.map +1 -1
  95. package/dist/knowledge/types.js +1 -0
  96. package/dist/knowledge/types.js.map +1 -1
  97. package/dist/presets/long-running.d.ts +33 -0
  98. package/dist/presets/long-running.d.ts.map +1 -0
  99. package/dist/presets/long-running.js +52 -0
  100. package/dist/presets/long-running.js.map +1 -0
  101. package/package.json +1 -1
  102. package/src/cli/commands/__tests__/knowledge.test.ts +167 -0
  103. package/src/cli/commands/index.ts +1 -1
  104. package/src/cli/commands/knowledge.ts +175 -4
  105. package/src/context/__tests__/knowledge-injector.test.ts +3 -0
  106. package/src/core/constraints/definitions.ts +4 -2
  107. package/src/dashboard/__tests__/data.test.ts +3 -0
  108. package/src/dashboard/__tests__/stats.test.ts +3 -0
  109. package/src/index.ts +3 -1
  110. package/src/knowledge/CONTEXT.md +29 -7
  111. package/src/knowledge/__tests__/audit.test.ts +598 -0
  112. package/src/knowledge/__tests__/doctor.test.ts +27 -0
  113. package/src/knowledge/__tests__/ingest.test.ts +319 -0
  114. package/src/knowledge/__tests__/lifecycle-hooks.test.ts +3 -0
  115. package/src/knowledge/__tests__/lifecycle.test.ts +655 -2
  116. package/src/knowledge/__tests__/lint.test.ts +51 -0
  117. package/src/knowledge/__tests__/migration.test.ts +115 -0
  118. package/src/knowledge/__tests__/query.test.ts +86 -0
  119. package/src/knowledge/__tests__/reference-tracker.test.ts +3 -0
  120. package/src/knowledge/__tests__/store.test.ts +207 -0
  121. package/src/knowledge/audit.ts +640 -0
  122. package/src/knowledge/import.ts +3 -0
  123. package/src/knowledge/index.ts +5 -1
  124. package/src/knowledge/ingest.ts +169 -5
  125. package/src/knowledge/lifecycle-hooks.ts +3 -0
  126. package/src/knowledge/lifecycle.ts +218 -49
  127. package/src/knowledge/lint.ts +43 -2
  128. package/src/knowledge/migration.ts +73 -0
  129. package/src/knowledge/query.ts +71 -0
  130. package/src/knowledge/store.ts +100 -6
  131. package/src/knowledge/types.ts +33 -1
  132. package/src/monitoring/__tests__/knowledge-doctor.test.ts +3 -0
  133. package/src/monitoring/__tests__/knowledge-evolver.test.ts +3 -0
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Trace CLI 命令
3
+ *
4
+ * 查看和分析 Execution Traces
5
+ */
6
+ /**
7
+ * trace 命令
8
+ */
9
+ export declare function tracesCommand(subcommand: string, options: {
10
+ hours?: number;
11
+ constraintId?: string;
12
+ format?: 'json' | 'text';
13
+ maxAgeDays?: number;
14
+ }): Promise<void>;
15
+ //# sourceMappingURL=traces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traces.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/traces.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;GAEG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,IAAI,CAAC,CAqCf"}
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ /**
3
+ * Trace CLI 命令
4
+ *
5
+ * 查看和分析 Execution Traces
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.tracesCommand = tracesCommand;
9
+ const traces_1 = require("../../monitoring/traces");
10
+ const trace_analyzer_1 = require("../../monitoring/trace-analyzer");
11
+ /**
12
+ * trace 命令
13
+ */
14
+ async function tracesCommand(subcommand, options) {
15
+ switch (subcommand) {
16
+ case 'stats':
17
+ await showStats(options);
18
+ break;
19
+ case 'summary':
20
+ await showSummary(options);
21
+ break;
22
+ case 'anomalies':
23
+ await showAnomalies(options);
24
+ break;
25
+ case 'report':
26
+ await generateReport(options);
27
+ break;
28
+ case 'clean':
29
+ await cleanTraces(options);
30
+ break;
31
+ default:
32
+ console.log('Usage: harness traces <subcommand>');
33
+ console.log('');
34
+ console.log('Subcommands:');
35
+ console.log(' stats Show trace file statistics');
36
+ console.log(' summary Show constraint summaries');
37
+ console.log(' anomalies Show detected anomalies');
38
+ console.log(' report Generate full report');
39
+ console.log(' clean Clean old trace files');
40
+ console.log('');
41
+ console.log('Options:');
42
+ console.log(' --hours <n> Analyze last N hours (default: 1)');
43
+ console.log(' --constraint <id> Filter by constraint ID');
44
+ console.log(' --format <format> Output format: json or text (default: text)');
45
+ }
46
+ }
47
+ /**
48
+ * 显示 trace 文件统计
49
+ */
50
+ async function showStats(options) {
51
+ const collector = (0, traces_1.getTraceCollector)();
52
+ const stats = collector.getStats();
53
+ if (options.format === 'json') {
54
+ console.log(JSON.stringify(stats, null, 2));
55
+ }
56
+ else {
57
+ console.log('📊 Trace File Statistics');
58
+ console.log('');
59
+ console.log(`File: ${collector.getStats().fileExists ? '✅ exists' : '❌ not found'}`);
60
+ if (stats.fileExists) {
61
+ console.log(`Size: ${(stats.fileSize / 1024).toFixed(2)} KB`);
62
+ console.log(`Lines: ${stats.totalLines}`);
63
+ if (stats.oldestTrace) {
64
+ console.log(`Oldest: ${new Date(stats.oldestTrace).toISOString()}`);
65
+ }
66
+ if (stats.newestTrace) {
67
+ console.log(`Newest: ${new Date(stats.newestTrace).toISOString()}`);
68
+ }
69
+ }
70
+ }
71
+ }
72
+ /**
73
+ * 显示约束汇总
74
+ */
75
+ async function showSummary(options) {
76
+ const hours = options.hours || 1;
77
+ const analyzer = (0, trace_analyzer_1.createAnalyzer)();
78
+ let summaries;
79
+ if (options.constraintId) {
80
+ summaries = analyzer.analyzeConstraint(options.constraintId);
81
+ }
82
+ else {
83
+ summaries = analyzer.analyzeRecent(hours);
84
+ }
85
+ if (options.format === 'json') {
86
+ console.log(JSON.stringify(summaries, null, 2));
87
+ }
88
+ else {
89
+ console.log(`📈 Constraint Summaries (last ${hours}h)`);
90
+ console.log('');
91
+ if (summaries.length === 0) {
92
+ console.log('No traces found.');
93
+ return;
94
+ }
95
+ for (const summary of summaries) {
96
+ const levelEmoji = {
97
+ iron_law: '🔴',
98
+ guideline: '🟡',
99
+ tip: '🔵',
100
+ }[summary.level];
101
+ const trendEmoji = {
102
+ rising: '📈',
103
+ falling: '📉',
104
+ stable: '➡️',
105
+ }[summary.recentTrend];
106
+ console.log(`${levelEmoji} ${summary.constraintId}`);
107
+ console.log(` Checks: ${summary.totalChecks}`);
108
+ console.log(` Pass: ${Math.round(summary.passRate * 100)}%`);
109
+ console.log(` Fail: ${Math.round(summary.failRate * 100)}%`);
110
+ console.log(` Bypass: ${Math.round(summary.bypassRate * 100)}%`);
111
+ console.log(` Trend: ${trendEmoji} ${summary.recentTrend}`);
112
+ console.log('');
113
+ }
114
+ }
115
+ }
116
+ /**
117
+ * 显示异常检测结果
118
+ */
119
+ async function showAnomalies(options) {
120
+ const hours = options.hours || 24;
121
+ const analyzer = (0, trace_analyzer_1.createAnalyzer)();
122
+ const anomalies = analyzer.runDailyAnomalyCheck();
123
+ if (options.format === 'json') {
124
+ console.log(JSON.stringify(anomalies, null, 2));
125
+ }
126
+ else {
127
+ console.log(`⚠️ Anomalies Detected (last ${hours}h)`);
128
+ console.log('');
129
+ if (anomalies.length === 0) {
130
+ console.log('✅ No anomalies detected.');
131
+ return;
132
+ }
133
+ for (const anomaly of anomalies) {
134
+ console.log(`⚠️ ${anomaly.type}: ${anomaly.constraintId}`);
135
+ console.log(` ${anomaly.message}`);
136
+ console.log(` Suggested: ${anomaly.suggestedAction}`);
137
+ console.log('');
138
+ }
139
+ console.log(`Total: ${anomalies.length} anomalies`);
140
+ }
141
+ }
142
+ /**
143
+ * 生成完整报告
144
+ */
145
+ async function generateReport(options) {
146
+ const hours = options.hours || 24;
147
+ const analyzer = (0, trace_analyzer_1.createAnalyzer)();
148
+ const summaries = analyzer.analyzeRecent(hours);
149
+ const anomalies = analyzer.detectAnomalies(summaries);
150
+ if (options.format === 'json') {
151
+ console.log(JSON.stringify({ summaries, anomalies }, null, 2));
152
+ }
153
+ else {
154
+ const report = analyzer.generateReport(summaries, anomalies);
155
+ console.log(report);
156
+ }
157
+ }
158
+ /**
159
+ * 清理旧 trace 文件
160
+ */
161
+ async function cleanTraces(options) {
162
+ const maxAgeDays = options.maxAgeDays || 30;
163
+ const collector = (0, traces_1.getTraceCollector)();
164
+ const deletedCount = collector.cleanupOldFiles(maxAgeDays);
165
+ console.log(`🧹 Cleaned ${deletedCount} old trace files (older than ${maxAgeDays} days)`);
166
+ }
167
+ //# sourceMappingURL=traces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traces.js","sourceRoot":"","sources":["../../../src/cli/commands/traces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 约束兼容入口
3
+ *
4
+ * 向后兼容旧 API,内部委托给 ConstraintRegistry
5
+ */
6
+ import { SAFETY_CONSTRAINTS } from './safety';
7
+ import { QUALITY_CONSTRAINTS } from './quality';
8
+ import type { Constraint, ConstraintTrigger } from '../types/constraint';
9
+ import type { LayeredConstraint } from './types';
10
+ /**
11
+ * 获取所有约束(兼容旧 API)
12
+ */
13
+ export declare function getAllConstraints(): Constraint[];
14
+ /**
15
+ * 按触发条件查找约束(兼容旧 API)
16
+ */
17
+ export declare function findConstraintsByTrigger(trigger: ConstraintTrigger): Constraint[];
18
+ /**
19
+ * 根据 ID 获取约束(兼容旧 API)
20
+ */
21
+ export declare function getConstraint(id: string): Constraint | undefined;
22
+ /**
23
+ * 获取带分层信息的约束
24
+ */
25
+ export declare function getLayeredConstraint(id: string): LayeredConstraint | undefined;
26
+ /**
27
+ * 获取安全层约束
28
+ */
29
+ export declare function getSafetyConstraints(): LayeredConstraint[];
30
+ /**
31
+ * 获取质量层约束
32
+ */
33
+ export declare function getQualityConstraints(): LayeredConstraint[];
34
+ export { getAllConstraints as getAllLaws };
35
+ export { findConstraintsByTrigger as findLawsByTrigger };
36
+ export { getConstraint as getLaw };
37
+ export { SAFETY_CONSTRAINTS as IRON_LAWS };
38
+ export { QUALITY_CONSTRAINTS as GUIDELINES };
39
+ //# sourceMappingURL=definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/constraints/definitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAKjD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,EAAE,CAEhD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,EAAE,CAYjF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAE9E;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,EAAE,CAE1D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,iBAAiB,EAAE,CAE3D;AAGD,OAAO,EAAE,iBAAiB,IAAI,UAAU,EAAE,CAAC;AAC3C,OAAO,EAAE,wBAAwB,IAAI,iBAAiB,EAAE,CAAC;AACzD,OAAO,EAAE,aAAa,IAAI,MAAM,EAAE,CAAC;AAGnC,OAAO,EAAE,kBAAkB,IAAI,SAAS,EAAE,CAAC;AAC3C,OAAO,EAAE,mBAAmB,IAAI,UAAU,EAAE,CAAC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ /**
3
+ * 约束兼容入口
4
+ *
5
+ * 向后兼容旧 API,内部委托给 ConstraintRegistry
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.GUIDELINES = exports.IRON_LAWS = void 0;
9
+ exports.getAllConstraints = getAllConstraints;
10
+ exports.getAllLaws = getAllConstraints;
11
+ exports.findConstraintsByTrigger = findConstraintsByTrigger;
12
+ exports.findLawsByTrigger = findConstraintsByTrigger;
13
+ exports.getConstraint = getConstraint;
14
+ exports.getLaw = getConstraint;
15
+ exports.getLayeredConstraint = getLayeredConstraint;
16
+ exports.getSafetyConstraints = getSafetyConstraints;
17
+ exports.getQualityConstraints = getQualityConstraints;
18
+ const registry_1 = require("./registry");
19
+ const safety_1 = require("./safety");
20
+ Object.defineProperty(exports, "IRON_LAWS", { enumerable: true, get: function () { return safety_1.SAFETY_CONSTRAINTS; } });
21
+ const quality_1 = require("./quality");
22
+ Object.defineProperty(exports, "GUIDELINES", { enumerable: true, get: function () { return quality_1.QUALITY_CONSTRAINTS; } });
23
+ // 全局注册表实例
24
+ const registry = new registry_1.ConstraintRegistry();
25
+ /**
26
+ * 获取所有约束(兼容旧 API)
27
+ */
28
+ function getAllConstraints() {
29
+ return registry.toLegacyConstraints();
30
+ }
31
+ /**
32
+ * 按触发条件查找约束(兼容旧 API)
33
+ */
34
+ function findConstraintsByTrigger(trigger) {
35
+ return registry.getByTrigger(trigger).map(c => ({
36
+ id: c.id,
37
+ rule: c.rule,
38
+ message: c.message,
39
+ level: c.level,
40
+ trigger: c.trigger,
41
+ enforcement: c.enforcement,
42
+ description: c.description,
43
+ enabled: c.enabled,
44
+ exceptions: c.exceptions,
45
+ }));
46
+ }
47
+ /**
48
+ * 根据 ID 获取约束(兼容旧 API)
49
+ */
50
+ function getConstraint(id) {
51
+ return registry.get(id);
52
+ }
53
+ /**
54
+ * 获取带分层信息的约束
55
+ */
56
+ function getLayeredConstraint(id) {
57
+ return registry.get(id);
58
+ }
59
+ /**
60
+ * 获取安全层约束
61
+ */
62
+ function getSafetyConstraints() {
63
+ return registry.getByLayer('safety');
64
+ }
65
+ /**
66
+ * 获取质量层约束
67
+ */
68
+ function getQualityConstraints() {
69
+ return registry.getByLayer('quality');
70
+ }
71
+ //# sourceMappingURL=definitions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/constraints/definitions.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAcH,8CAEC;AAgD6B,uCAAU;AA3CxC,4DAYC;AAgCoC,qDAAiB;AA3BtD,sCAEC;AA0ByB,+BAAM;AArBhC,oDAEC;AAKD,oDAEC;AAKD,sDAEC;AA3DD,yCAAgD;AAChD,qCAA8C;AAkEf,0FAlEtB,2BAAkB,OAkEa;AAjExC,uCAAgD;AAkEhB,2FAlEvB,6BAAmB,OAkEc;AA9D1C,UAAU;AACV,MAAM,QAAQ,GAAG,IAAI,6BAAkB,EAAE,CAAC;AAE1C;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,QAAQ,CAAC,mBAAmB,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,wBAAwB,CAAC,OAA0B;IACjE,OAAO,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9C,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,EAAU;IACtC,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,EAAU;IAC7C,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB;IAClC,OAAO,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB;IACnC,OAAO,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 质量层约束(可退化)
3
+ *
4
+ * 这些约束会随模型能力提升逐步退化:
5
+ * - Iron Law → Guideline → Tip → 移除
6
+ * - 退化由拦截率数据驱动
7
+ */
8
+ import type { LayeredConstraint } from './types';
9
+ export declare const QUALITY_CONSTRAINTS: Record<string, LayeredConstraint>;
10
+ export declare function getQualityConstraints(): LayeredConstraint[];
11
+ //# sourceMappingURL=quality.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality.d.ts","sourceRoot":"","sources":["../../src/constraints/quality.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAgQjE,CAAC;AAEF,wBAAgB,qBAAqB,IAAI,iBAAiB,EAAE,CAE3D"}
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ /**
3
+ * 质量层约束(可退化)
4
+ *
5
+ * 这些约束会随模型能力提升逐步退化:
6
+ * - Iron Law → Guideline → Tip → 移除
7
+ * - 退化由拦截率数据驱动
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.QUALITY_CONSTRAINTS = void 0;
11
+ exports.getQualityConstraints = getQualityConstraints;
12
+ exports.QUALITY_CONSTRAINTS = {
13
+ no_self_approval: {
14
+ id: 'no_self_approval',
15
+ rule: 'NO SELF APPROVAL WITHOUT TEST EVIDENCE',
16
+ message: '禁止自评通过,必须提供测试证据',
17
+ level: 'iron_law',
18
+ trigger: 'task_completion_claim',
19
+ enforcement: 'passes-gate',
20
+ description: '任务完成声明必须基于真实测试结果。',
21
+ layer: 'quality',
22
+ deprecationStatus: 'active',
23
+ deprecationSchedule: {
24
+ targetLevel: 'guideline',
25
+ interceptRateThreshold: 5,
26
+ reason: '模型自评能力提升,拦截率持续下降',
27
+ rollbackable: true,
28
+ },
29
+ },
30
+ no_test_simplification: {
31
+ id: 'no_test_simplification',
32
+ rule: 'NO SIMPLIFYING TESTS TO AVOID DIFFICULTY',
33
+ message: '禁止简化测试绕过困难',
34
+ level: 'iron_law',
35
+ trigger: 'test_creation',
36
+ enforcement: 'full-test-coverage',
37
+ description: '遇到测试困难时不能简化或跳过测试。',
38
+ layer: 'quality',
39
+ deprecationStatus: 'active',
40
+ deprecationSchedule: {
41
+ targetLevel: 'guideline',
42
+ interceptRateThreshold: 5,
43
+ reason: '模型测试编写能力提升',
44
+ rollbackable: true,
45
+ },
46
+ },
47
+ incremental_progress: {
48
+ id: 'incremental_progress',
49
+ rule: 'ONE TASK PER SESSION',
50
+ message: '禁止一次做多个任务',
51
+ level: 'iron_law',
52
+ trigger: 'feature_completion_claim',
53
+ enforcement: 'single-task-check',
54
+ description: '一个 session 只处理一个任务,避免 one-shotting。',
55
+ layer: 'quality',
56
+ deprecationStatus: 'active',
57
+ deprecationSchedule: {
58
+ targetLevel: 'guideline',
59
+ interceptRateThreshold: 10,
60
+ reason: '模型长上下文能力提升,可处理更大任务',
61
+ rollbackable: true,
62
+ },
63
+ },
64
+ no_any_type: {
65
+ id: 'no_any_type',
66
+ rule: 'AVOID ANY TYPE, USE UNKNOWN OR SPECIFIC TYPES',
67
+ message: '避免 any 类型',
68
+ level: 'guideline',
69
+ trigger: 'code_implementation',
70
+ enforcement: 'type-safe',
71
+ description: 'TypeScript 代码中应避免使用 any 类型。',
72
+ layer: 'quality',
73
+ deprecationStatus: 'active',
74
+ deprecationSchedule: {
75
+ targetLevel: 'tip',
76
+ interceptRateThreshold: 8,
77
+ reason: '模型类型推断能力持续改善',
78
+ rollbackable: true,
79
+ },
80
+ },
81
+ simplest_solution_first: {
82
+ id: 'simplest_solution_first',
83
+ rule: 'CHECK LOCAL/SIMPLE OPTIONS BEFORE REMOTE/COMPLEX',
84
+ message: '先检查本地/简单方案',
85
+ level: 'guideline',
86
+ trigger: ['feature_development', 'module_extension', 'code_implementation'],
87
+ enforcement: 'check-local-first',
88
+ description: '实现功能时必须按顺序检查简单方案。',
89
+ layer: 'quality',
90
+ deprecationStatus: 'active',
91
+ deprecationSchedule: {
92
+ targetLevel: 'tip',
93
+ interceptRateThreshold: 8,
94
+ reason: '模型架构选择能力提升',
95
+ rollbackable: true,
96
+ },
97
+ },
98
+ no_code_without_test: {
99
+ id: 'no_code_without_test',
100
+ rule: 'PRODUCTION LOGIC CODE MUST HAVE TESTS FIRST',
101
+ message: '业务逻辑代码必须先写测试',
102
+ level: 'guideline',
103
+ trigger: 'code_implementation',
104
+ enforcement: 'tdd-cycle',
105
+ description: '业务逻辑代码必须先写测试。',
106
+ layer: 'quality',
107
+ deprecationStatus: 'active',
108
+ deprecationSchedule: {
109
+ targetLevel: 'tip',
110
+ reason: '模型自发编写测试的能力提升',
111
+ rollbackable: false,
112
+ },
113
+ },
114
+ no_creation_without_reuse_check: {
115
+ id: 'no_creation_without_reuse_check',
116
+ rule: 'NO NEW CAPABILITIES WITHOUT REUSE CHECK FIRST',
117
+ message: '创建新能力前必须检查复用',
118
+ level: 'guideline',
119
+ trigger: [
120
+ 'step_creation', 'tool_creation', 'workflow_creation',
121
+ 'module_creation', 'module_extension', 'feature_development',
122
+ ],
123
+ enforcement: 'reuse-first',
124
+ description: '创建新能力前必须先执行复用检查。',
125
+ layer: 'quality',
126
+ deprecationStatus: 'active',
127
+ deprecationSchedule: {
128
+ targetLevel: 'guideline',
129
+ interceptRateThreshold: 5,
130
+ reason: '转型为知识复用检查',
131
+ rollbackable: true,
132
+ },
133
+ },
134
+ no_fix_without_root_cause: {
135
+ id: 'no_fix_without_root_cause',
136
+ rule: 'NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST',
137
+ message: '复杂 bug 必须先调查根本原因',
138
+ level: 'guideline',
139
+ trigger: 'bug_fix_attempt',
140
+ enforcement: 'debug-systematic',
141
+ description: '在尝试修复 bug 之前,按复杂度区分调查要求。',
142
+ layer: 'quality',
143
+ deprecationStatus: 'active',
144
+ deprecationSchedule: {
145
+ targetLevel: 'guideline',
146
+ reason: '转型为知识约束(因果链要求)',
147
+ rollbackable: true,
148
+ },
149
+ },
150
+ capability_sync: {
151
+ id: 'capability_sync',
152
+ rule: 'CODE CHANGES MUST UPDATE CAPABILITIES.MD',
153
+ message: '核心模块变更必须同步功能清单',
154
+ level: 'guideline',
155
+ trigger: ['module_creation', 'module_modification', 'module_deletion', 'module_extension'],
156
+ enforcement: 'update-capabilities',
157
+ description: '核心模块变更必须同步功能清单。',
158
+ layer: 'quality',
159
+ deprecationStatus: 'active',
160
+ deprecationSchedule: {
161
+ targetLevel: 'guideline',
162
+ reason: '转型为知识同步检查',
163
+ rollbackable: true,
164
+ },
165
+ },
166
+ no_simplification_without_approval: {
167
+ id: 'no_simplification_without_approval',
168
+ rule: 'NO SIMPLIFYING LOGIC WITHOUT USER APPROVAL',
169
+ message: '禁止砍功能,合理重构除外',
170
+ level: 'guideline',
171
+ trigger: 'code_implementation',
172
+ enforcement: 'preserve-complexity',
173
+ description: '不能为了赶进度砍掉必要功能。',
174
+ layer: 'quality',
175
+ deprecationStatus: 'active',
176
+ deprecationSchedule: {
177
+ targetLevel: 'tip',
178
+ reason: '模型对需求完整性的理解提升',
179
+ rollbackable: true,
180
+ },
181
+ },
182
+ design_decision_requires_discussion: {
183
+ id: 'design_decision_requires_discussion',
184
+ rule: 'DESIGN DECISIONS MUST BE DISCUSSED BEFORE IMPLEMENTATION',
185
+ message: '设计决策类任务需先讨论方案再实现',
186
+ level: 'guideline',
187
+ trigger: ['design_request', 'architecture_change', 'feature_development'],
188
+ enforcement: 'require-discussion',
189
+ description: '架构决策必须沉淀为 decision 类型知识。',
190
+ layer: 'quality',
191
+ deprecationStatus: 'active',
192
+ deprecationSchedule: {
193
+ targetLevel: 'guideline',
194
+ reason: '转型为知识沉淀要求',
195
+ rollbackable: true,
196
+ },
197
+ },
198
+ no_skill_without_test: {
199
+ id: 'no_skill_without_test',
200
+ rule: 'NO SKILL WITHOUT A FAILING TEST FIRST',
201
+ message: '创建技能前必须先定义测试场景',
202
+ level: 'guideline',
203
+ trigger: 'skill_creation',
204
+ enforcement: 'skill-test-scenario',
205
+ description: '创建新的 agent 技能之前,必须先定义测试场景。',
206
+ layer: 'quality',
207
+ deprecationStatus: 'active',
208
+ },
209
+ test_coverage_required: {
210
+ id: 'test_coverage_required',
211
+ rule: 'TEST COVERAGE MUST MEET REQUIREMENTS',
212
+ message: '测试覆盖率必须达到要求',
213
+ level: 'guideline',
214
+ trigger: 'task_completion_claim',
215
+ enforcement: 'check-coverage',
216
+ description: '提交代码前,测试覆盖率必须达到项目要求。',
217
+ layer: 'quality',
218
+ deprecationStatus: 'active',
219
+ },
220
+ no_coverage_decrease: {
221
+ id: 'no_coverage_decrease',
222
+ rule: 'COVERAGE MUST NOT DECREASE ON NEW COMMITS',
223
+ message: '新提交不能降低测试覆盖率',
224
+ level: 'guideline',
225
+ trigger: 'commit',
226
+ enforcement: 'coverage-gate',
227
+ description: '每次提交代码时,测试覆盖率不能低于上一次提交。',
228
+ layer: 'quality',
229
+ deprecationStatus: 'active',
230
+ },
231
+ readme_required: {
232
+ id: 'readme_required',
233
+ rule: 'NEW MODULES SHOULD HAVE README',
234
+ message: '建议为新模块创建 README',
235
+ level: 'tip',
236
+ trigger: 'module_creation',
237
+ enforcement: 'create-readme',
238
+ description: '创建新模块时建议同时创建 README.md。',
239
+ layer: 'quality',
240
+ deprecationStatus: 'active',
241
+ },
242
+ doc_required_for_public_api: {
243
+ id: 'doc_required_for_public_api',
244
+ rule: 'PUBLIC API SHOULD HAVE DOCUMENTATION',
245
+ message: '建议为公共 API 添加文档注释',
246
+ level: 'tip',
247
+ trigger: 'export_change',
248
+ enforcement: 'add-docs',
249
+ description: '所有导出的函数、类、接口建议添加 JSDoc 注释。',
250
+ layer: 'quality',
251
+ deprecationStatus: 'active',
252
+ },
253
+ };
254
+ function getQualityConstraints() {
255
+ return Object.values(exports.QUALITY_CONSTRAINTS);
256
+ }
257
+ //# sourceMappingURL=quality.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality.js","sourceRoot":"","sources":["../../src/constraints/quality.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAsQH,sDAEC;AApQY,QAAA,mBAAmB,GAAsC;IACpE,gBAAgB,EAAE;QAChB,EAAE,EAAE,kBAAkB;QACtB,IAAI,EAAE,wCAAwC;QAC9C,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,uBAAuB;QAChC,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;QAC3B,mBAAmB,EAAE;YACnB,WAAW,EAAE,WAAW;YACxB,sBAAsB,EAAE,CAAC;YACzB,MAAM,EAAE,kBAAkB;YAC1B,YAAY,EAAE,IAAI;SACnB;KACF;IAED,sBAAsB,EAAE;QACtB,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;QAC3B,mBAAmB,EAAE;YACnB,WAAW,EAAE,WAAW;YACxB,sBAAsB,EAAE,CAAC;YACzB,MAAM,EAAE,YAAY;YACpB,YAAY,EAAE,IAAI;SACnB;KACF;IAED,oBAAoB,EAAE;QACpB,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,UAAU;QACjB,OAAO,EAAE,0BAA0B;QACnC,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,qCAAqC;QAClD,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;QAC3B,mBAAmB,EAAE;YACnB,WAAW,EAAE,WAAW;YACxB,sBAAsB,EAAE,EAAE;YAC1B,MAAM,EAAE,oBAAoB;YAC5B,YAAY,EAAE,IAAI;SACnB;KACF;IAED,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,+CAA+C;QACrD,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE,6BAA6B;QAC1C,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;QAC3B,mBAAmB,EAAE;YACnB,WAAW,EAAE,KAAK;YAClB,sBAAsB,EAAE,CAAC;YACzB,MAAM,EAAE,cAAc;YACtB,YAAY,EAAE,IAAI;SACnB;KACF;IAED,uBAAuB,EAAE;QACvB,EAAE,EAAE,yBAAyB;QAC7B,IAAI,EAAE,kDAAkD;QACxD,OAAO,EAAE,YAAY;QACrB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,qBAAqB,CAAC;QAC3E,WAAW,EAAE,mBAAmB;QAChC,WAAW,EAAE,mBAAmB;QAChC,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;QAC3B,mBAAmB,EAAE;YACnB,WAAW,EAAE,KAAK;YAClB,sBAAsB,EAAE,CAAC;YACzB,MAAM,EAAE,YAAY;YACpB,YAAY,EAAE,IAAI;SACnB;KACF;IAED,oBAAoB,EAAE;QACpB,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,6CAA6C;QACnD,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,WAAW;QACxB,WAAW,EAAE,eAAe;QAC5B,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;QAC3B,mBAAmB,EAAE;YACnB,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,eAAe;YACvB,YAAY,EAAE,KAAK;SACpB;KACF;IAED,+BAA+B,EAAE;QAC/B,EAAE,EAAE,iCAAiC;QACrC,IAAI,EAAE,+CAA+C;QACrD,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE;YACP,eAAe,EAAE,eAAe,EAAE,mBAAmB;YACrD,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB;SAC7D;QACD,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,kBAAkB;QAC/B,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;QAC3B,mBAAmB,EAAE;YACnB,WAAW,EAAE,WAAW;YACxB,sBAAsB,EAAE,CAAC;YACzB,MAAM,EAAE,WAAW;YACnB,YAAY,EAAE,IAAI;SACnB;KACF;IAED,yBAAyB,EAAE;QACzB,EAAE,EAAE,2BAA2B;QAC/B,IAAI,EAAE,iDAAiD;QACvD,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,kBAAkB;QAC/B,WAAW,EAAE,0BAA0B;QACvC,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;QAC3B,mBAAmB,EAAE;YACnB,WAAW,EAAE,WAAW;YACxB,MAAM,EAAE,gBAAgB;YACxB,YAAY,EAAE,IAAI;SACnB;KACF;IAED,eAAe,EAAE;QACf,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,0CAA0C;QAChD,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC;QAC1F,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE,iBAAiB;QAC9B,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;QAC3B,mBAAmB,EAAE;YACnB,WAAW,EAAE,WAAW;YACxB,MAAM,EAAE,WAAW;YACnB,YAAY,EAAE,IAAI;SACnB;KACF;IAED,kCAAkC,EAAE;QAClC,EAAE,EAAE,oCAAoC;QACxC,IAAI,EAAE,4CAA4C;QAClD,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,qBAAqB;QAC9B,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE,gBAAgB;QAC7B,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;QAC3B,mBAAmB,EAAE;YACnB,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,eAAe;YACvB,YAAY,EAAE,IAAI;SACnB;KACF;IAED,mCAAmC,EAAE;QACnC,EAAE,EAAE,qCAAqC;QACzC,IAAI,EAAE,0DAA0D;QAChE,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,qBAAqB,CAAC;QACzE,WAAW,EAAE,oBAAoB;QACjC,WAAW,EAAE,0BAA0B;QACvC,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;QAC3B,mBAAmB,EAAE;YACnB,WAAW,EAAE,WAAW;YACxB,MAAM,EAAE,WAAW;YACnB,YAAY,EAAE,IAAI;SACnB;KACF;IAED,qBAAqB,EAAE;QACrB,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,uCAAuC;QAC7C,OAAO,EAAE,gBAAgB;QACzB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,qBAAqB;QAClC,WAAW,EAAE,4BAA4B;QACzC,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;KAC5B;IAED,sBAAsB,EAAE;QACtB,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,sCAAsC;QAC5C,OAAO,EAAE,aAAa;QACtB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,uBAAuB;QAChC,WAAW,EAAE,gBAAgB;QAC7B,WAAW,EAAE,sBAAsB;QACnC,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;KAC5B;IAED,oBAAoB,EAAE;QACpB,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,2CAA2C;QACjD,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,WAAW;QAClB,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,yBAAyB;QACtC,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;KAC5B;IAED,eAAe,EAAE;QACf,EAAE,EAAE,iBAAiB;QACrB,IAAI,EAAE,gCAAgC;QACtC,OAAO,EAAE,iBAAiB;QAC1B,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,yBAAyB;QACtC,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;KAC5B;IAED,2BAA2B,EAAE;QAC3B,EAAE,EAAE,6BAA6B;QACjC,IAAI,EAAE,sCAAsC;QAC5C,OAAO,EAAE,kBAAkB;QAC3B,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,4BAA4B;QACzC,KAAK,EAAE,SAAS;QAChB,iBAAiB,EAAE,QAAQ;KAC5B;CACF,CAAC;AAEF,SAAgB,qBAAqB;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,2BAAmB,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 安全层约束(永久保留)
3
+ *
4
+ * 这些约束是模型无关的安全底线,不随模型能力提升而退化:
5
+ * - CommandGate:命令黑名单
6
+ * - SecurityGate:敏感文件审计
7
+ * - 跨项目接口一致性
8
+ * - 架构规则引擎
9
+ */
10
+ import type { LayeredConstraint } from './types';
11
+ export declare const SAFETY_CONSTRAINTS: Record<string, LayeredConstraint>;
12
+ export declare function getSafetyConstraints(): LayeredConstraint[];
13
+ //# sourceMappingURL=safety.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../src/constraints/safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CA2FhE,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,iBAAiB,EAAE,CAE1D"}