@dommaker/harness 0.12.1 → 0.12.5

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 (49) hide show
  1. package/README.md +1 -1
  2. package/dist/cli/commands/diagnose.d.ts +16 -0
  3. package/dist/cli/commands/diagnose.d.ts.map +1 -0
  4. package/dist/cli/commands/diagnose.js +195 -0
  5. package/dist/cli/commands/diagnose.js.map +1 -0
  6. package/dist/cli/commands/propose.d.ts +18 -0
  7. package/dist/cli/commands/propose.d.ts.map +1 -0
  8. package/dist/cli/commands/propose.js +331 -0
  9. package/dist/cli/commands/propose.js.map +1 -0
  10. package/dist/cli/commands/traces.d.ts +15 -0
  11. package/dist/cli/commands/traces.d.ts.map +1 -0
  12. package/dist/cli/commands/traces.js +167 -0
  13. package/dist/cli/commands/traces.js.map +1 -0
  14. package/dist/constraints/definitions.d.ts +39 -0
  15. package/dist/constraints/definitions.d.ts.map +1 -0
  16. package/dist/constraints/definitions.js +71 -0
  17. package/dist/constraints/definitions.js.map +1 -0
  18. package/dist/constraints/quality.d.ts +11 -0
  19. package/dist/constraints/quality.d.ts.map +1 -0
  20. package/dist/constraints/quality.js +257 -0
  21. package/dist/constraints/quality.js.map +1 -0
  22. package/dist/constraints/safety.d.ts +13 -0
  23. package/dist/constraints/safety.d.ts.map +1 -0
  24. package/dist/constraints/safety.js +103 -0
  25. package/dist/constraints/safety.js.map +1 -0
  26. package/dist/core/constraints/checker.d.ts +5 -0
  27. package/dist/core/constraints/checker.d.ts.map +1 -1
  28. package/dist/core/constraints/checker.js +46 -11
  29. package/dist/core/constraints/checker.js.map +1 -1
  30. package/dist/core/constraints/definitions.d.ts.map +1 -1
  31. package/dist/core/constraints/definitions.js +45 -2
  32. package/dist/core/constraints/definitions.js.map +1 -1
  33. package/dist/extensions/long-running/constraints.d.ts +38 -0
  34. package/dist/extensions/long-running/constraints.d.ts.map +1 -0
  35. package/dist/extensions/long-running/constraints.js +153 -0
  36. package/dist/extensions/long-running/constraints.js.map +1 -0
  37. package/dist/extensions/long-running/index.d.ts +30 -0
  38. package/dist/extensions/long-running/index.d.ts.map +1 -0
  39. package/dist/extensions/long-running/index.js +50 -0
  40. package/dist/extensions/long-running/index.js.map +1 -0
  41. package/dist/extensions/long-running/types.d.ts +154 -0
  42. package/dist/extensions/long-running/types.d.ts.map +1 -0
  43. package/dist/extensions/long-running/types.js +9 -0
  44. package/dist/extensions/long-running/types.js.map +1 -0
  45. package/dist/presets/long-running.d.ts +33 -0
  46. package/dist/presets/long-running.d.ts.map +1 -0
  47. package/dist/presets/long-running.js +52 -0
  48. package/dist/presets/long-running.js.map +1 -0
  49. package/package.json +6 -1
package/README.md CHANGED
@@ -53,7 +53,7 @@ const constraints = buildConstraintPrompt({
53
53
  | 层级 | 严重性 | 数量 | 行为 |
54
54
  |------|:--:|:--:|------|
55
55
  | **Iron Law** | error | 13 | 阻断执行。拦截率 <5% 时自动降为 guideline |
56
- | **Guideline** | warning | 13 | 注入 Agent context。拦截率 <30% 时降为 tip |
56
+ | **Guideline** | warning | 14 | 注入 Agent context。拦截率 <30% 时降为 tip |
57
57
  | **Tip** | info | 2 | 信息性提示。拦截率 <10% 时标记废弃 |
58
58
 
59
59
  完整约束列表见 [CAPABILITIES.md](CAPABILITIES.md)。
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Diagnose CLI 命令
3
+ *
4
+ * 运行诊断分析异常
5
+ */
6
+ /**
7
+ * diagnose 命令
8
+ */
9
+ export declare function diagnoseCommand(subcommand: string, options: {
10
+ hours?: number;
11
+ constraintId?: string;
12
+ anomalyId?: string;
13
+ format?: 'json' | 'text';
14
+ save?: boolean;
15
+ }): Promise<void>;
16
+ //# sourceMappingURL=diagnose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnose.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/diagnose.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH;;GAEG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ /**
3
+ * Diagnose CLI 命令
4
+ *
5
+ * 运行诊断分析异常
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.diagnoseCommand = diagnoseCommand;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const traces_1 = require("../../monitoring/traces");
45
+ const trace_analyzer_1 = require("../../monitoring/trace-analyzer");
46
+ const constraint_doctor_1 = require("../../monitoring/constraint-doctor");
47
+ /**
48
+ * diagnose 命令
49
+ */
50
+ async function diagnoseCommand(subcommand, options) {
51
+ switch (subcommand) {
52
+ case 'run':
53
+ await runDiagnose(options);
54
+ break;
55
+ case 'show':
56
+ await showDiagnose(options);
57
+ break;
58
+ case 'list':
59
+ await listDiagnoses(options);
60
+ break;
61
+ default:
62
+ console.log('Usage: harness diagnose <subcommand>');
63
+ console.log('');
64
+ console.log('Subcommands:');
65
+ console.log(' run Run diagnosis on detected anomalies');
66
+ console.log(' show Show a specific diagnosis result');
67
+ console.log(' list List all diagnosis results');
68
+ console.log('');
69
+ console.log('Options:');
70
+ console.log(' --hours <n> Analyze last N hours (default: 24)');
71
+ console.log(' --constraint <id> Filter by constraint ID');
72
+ console.log(' --anomaly <id> Show specific anomaly diagnosis');
73
+ console.log(' --format <format> Output format: json or text (default: text)');
74
+ console.log(' --save Save diagnosis to file');
75
+ }
76
+ }
77
+ /**
78
+ * 运行诊断
79
+ */
80
+ async function runDiagnose(options) {
81
+ const hours = options.hours || 24;
82
+ const analyzer = (0, trace_analyzer_1.createAnalyzer)();
83
+ const doctor = (0, constraint_doctor_1.createDoctor)();
84
+ // 1. 检测异常
85
+ const anomalies = analyzer.runDailyAnomalyCheck();
86
+ // 过滤特定约束
87
+ let filteredAnomalies = anomalies;
88
+ if (options.constraintId) {
89
+ filteredAnomalies = anomalies.filter(a => a.constraintId === options.constraintId);
90
+ }
91
+ if (filteredAnomalies.length === 0) {
92
+ console.log('✅ No anomalies detected. No diagnosis needed.');
93
+ return;
94
+ }
95
+ console.log(`🔍 Detected ${filteredAnomalies.length} anomalies, running diagnosis...`);
96
+ console.log('');
97
+ // 2. 获取 traces
98
+ const collector = (0, traces_1.getTraceCollector)();
99
+ const traces = collector.readRecent(hours);
100
+ // 3. 运行诊断
101
+ const diagnoses = [];
102
+ for (const anomaly of filteredAnomalies) {
103
+ doctor.setData(traces.filter(t => t.constraintId === anomaly.constraintId));
104
+ const diagnosis = await doctor.diagnose(anomaly);
105
+ diagnoses.push(diagnosis);
106
+ // 保存诊断
107
+ if (options.save) {
108
+ const outputPath = `.harness/diagnoses/${diagnosis.anomalyId}.json`;
109
+ doctor.saveDiagnosis(diagnosis, outputPath);
110
+ }
111
+ }
112
+ // 4. 输出结果
113
+ if (options.format === 'json') {
114
+ console.log(JSON.stringify(diagnoses, null, 2));
115
+ }
116
+ else {
117
+ for (const diagnosis of diagnoses) {
118
+ console.log(doctor.generateReport(diagnosis));
119
+ console.log('---');
120
+ }
121
+ }
122
+ // 5. 统计
123
+ const needsChange = diagnoses.filter(d => d.needsChange).length;
124
+ console.log('');
125
+ console.log(`📊 Summary: ${needsChange} diagnoses need constraint changes`);
126
+ }
127
+ /**
128
+ * 显示特定诊断
129
+ */
130
+ async function showDiagnose(options) {
131
+ if (!options.anomalyId) {
132
+ console.log('❌ Please specify --anomaly <id>');
133
+ return;
134
+ }
135
+ const doctor = (0, constraint_doctor_1.createDoctor)();
136
+ const diagnosisPath = `.harness/diagnoses/${options.anomalyId}.json`;
137
+ if (!fs.existsSync(diagnosisPath)) {
138
+ console.log(`❌ Diagnosis not found: ${options.anomalyId}`);
139
+ return;
140
+ }
141
+ const diagnosis = doctor.loadDiagnosis(diagnosisPath);
142
+ if (options.format === 'json') {
143
+ console.log(JSON.stringify(diagnosis, null, 2));
144
+ }
145
+ else {
146
+ console.log(doctor.generateReport(diagnosis));
147
+ }
148
+ }
149
+ /**
150
+ * 列出所有诊断
151
+ */
152
+ async function listDiagnoses(options) {
153
+ const diagnosesDir = '.harness/diagnoses';
154
+ if (!fs.existsSync(diagnosesDir)) {
155
+ console.log('❌ No diagnoses found. Run `harness diagnose run` first.');
156
+ return;
157
+ }
158
+ const files = fs.readdirSync(diagnosesDir)
159
+ .filter(f => f.endsWith('.json'));
160
+ if (files.length === 0) {
161
+ console.log('❌ No diagnoses found.');
162
+ return;
163
+ }
164
+ const doctor = (0, constraint_doctor_1.createDoctor)();
165
+ const diagnoses = files.map(f => {
166
+ const content = fs.readFileSync(path.join(diagnosesDir, f), 'utf-8');
167
+ return JSON.parse(content);
168
+ });
169
+ if (options.format === 'json') {
170
+ console.log(JSON.stringify(diagnoses.map(d => ({
171
+ anomalyId: d.anomalyId,
172
+ constraintId: d.constraintId,
173
+ needsChange: d.needsChange,
174
+ urgency: d.urgency,
175
+ })), null, 2));
176
+ }
177
+ else {
178
+ console.log('📋 Diagnosis List');
179
+ console.log('');
180
+ for (const diagnosis of diagnoses) {
181
+ const urgencyEmoji = {
182
+ low: '🟢',
183
+ medium: '🟡',
184
+ high: '🔴',
185
+ }[diagnosis.urgency] || '⚪';
186
+ console.log(`${urgencyEmoji} ${diagnosis.anomalyId}`);
187
+ console.log(` Constraint: ${diagnosis.constraintId}`);
188
+ console.log(` Needs Change: ${diagnosis.needsChange ? 'Yes' : 'No'}`);
189
+ console.log(` Urgency: ${diagnosis.urgency}`);
190
+ console.log('');
191
+ }
192
+ console.log(`Total: ${diagnoses.length} diagnoses`);
193
+ }
194
+ }
195
+ //# sourceMappingURL=diagnose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../../src/cli/commands/diagnose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Propose CLI 命令
3
+ *
4
+ * 根据诊断生成约束提案
5
+ */
6
+ /**
7
+ * propose 命令
8
+ */
9
+ export declare function proposeCommand(subcommand: string, options: {
10
+ diagnosisId?: string;
11
+ format?: 'json' | 'text';
12
+ save?: boolean;
13
+ status?: 'proposed' | 'accepted' | 'rejected';
14
+ accept?: boolean;
15
+ reject?: boolean;
16
+ comment?: string;
17
+ }): Promise<void>;
18
+ //# sourceMappingURL=propose.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propose.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/propose.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IACP,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAC9C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,IAAI,CAAC,CAyCf"}
@@ -0,0 +1,331 @@
1
+ "use strict";
2
+ /**
3
+ * Propose CLI 命令
4
+ *
5
+ * 根据诊断生成约束提案
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.proposeCommand = proposeCommand;
42
+ const fs = __importStar(require("fs"));
43
+ const path = __importStar(require("path"));
44
+ const constraint_evolver_1 = require("../../monitoring/constraint-evolver");
45
+ const constraint_doctor_1 = require("../../monitoring/constraint-doctor");
46
+ /**
47
+ * propose 命令
48
+ */
49
+ async function proposeCommand(subcommand, options) {
50
+ switch (subcommand) {
51
+ case 'generate':
52
+ await generateProposal(options);
53
+ break;
54
+ case 'list':
55
+ await listProposals(options);
56
+ break;
57
+ case 'show':
58
+ await showProposal(options);
59
+ break;
60
+ case 'review':
61
+ await reviewProposal(options);
62
+ break;
63
+ case 'implement':
64
+ await implementProposal(options);
65
+ break;
66
+ default:
67
+ console.log('Usage: harness propose <subcommand>');
68
+ console.log('');
69
+ console.log('Subcommands:');
70
+ console.log(' generate Generate proposals from diagnoses');
71
+ console.log(' list List all proposals');
72
+ console.log(' show Show a specific proposal');
73
+ console.log(' review Review a proposal (accept/reject)');
74
+ console.log(' implement Show implementation instructions');
75
+ console.log('');
76
+ console.log('Options:');
77
+ console.log(' --diagnosis <id> Generate from specific diagnosis');
78
+ console.log(' --status <status> Filter by status');
79
+ console.log(' --accept Accept proposal (for review)');
80
+ console.log(' --reject Reject proposal (for review)');
81
+ console.log(' --comment <text> Review comment');
82
+ console.log(' --format <format> Output format');
83
+ console.log(' --save Save to file');
84
+ }
85
+ }
86
+ /**
87
+ * 生成提案
88
+ */
89
+ async function generateProposal(options) {
90
+ const evolver = (0, constraint_evolver_1.createEvolver)();
91
+ const doctor = (0, constraint_doctor_1.createDoctor)();
92
+ // 加载诊断
93
+ let diagnoses = [];
94
+ if (options.diagnosisId) {
95
+ const diagnosisPath = `.harness/diagnoses/${options.diagnosisId}.json`;
96
+ if (!fs.existsSync(diagnosisPath)) {
97
+ console.log(`❌ Diagnosis not found: ${options.diagnosisId}`);
98
+ return;
99
+ }
100
+ diagnoses = [doctor.loadDiagnosis(diagnosisPath)];
101
+ }
102
+ else {
103
+ // 加载所有诊断
104
+ const diagnosesDir = '.harness/diagnoses';
105
+ if (fs.existsSync(diagnosesDir)) {
106
+ const files = fs.readdirSync(diagnosesDir).filter(f => f.endsWith('.json'));
107
+ diagnoses = files.map(f => {
108
+ const content = fs.readFileSync(path.join(diagnosesDir, f), 'utf-8');
109
+ return JSON.parse(content);
110
+ });
111
+ }
112
+ }
113
+ // 过滤需要变更的诊断
114
+ const needsChangeDiagnoses = diagnoses.filter(d => d.needsChange);
115
+ if (needsChangeDiagnoses.length === 0) {
116
+ console.log('✅ No diagnoses need constraint changes. No proposals to generate.');
117
+ return;
118
+ }
119
+ console.log(`💡 Generating proposals from ${needsChangeDiagnoses.length} diagnoses...`);
120
+ console.log('');
121
+ // 生成提案
122
+ const proposals = await evolver.proposeBatch(needsChangeDiagnoses);
123
+ if (options.format === 'json') {
124
+ console.log(JSON.stringify(proposals, null, 2));
125
+ }
126
+ else {
127
+ for (const proposal of proposals) {
128
+ printProposalSummary(proposal);
129
+ console.log('---');
130
+ }
131
+ }
132
+ // 保存
133
+ if (options.save) {
134
+ for (const proposal of proposals) {
135
+ evolver.saveProposal(proposal);
136
+ }
137
+ console.log('');
138
+ console.log(`💾 Saved ${proposals.length} proposals to .harness/proposals/`);
139
+ }
140
+ }
141
+ /**
142
+ * 列出提案
143
+ */
144
+ async function listProposals(options) {
145
+ const evolver = (0, constraint_evolver_1.createEvolver)();
146
+ const proposals = evolver.listProposals(options.status);
147
+ if (proposals.length === 0) {
148
+ console.log('❌ No proposals found.');
149
+ return;
150
+ }
151
+ if (options.format === 'json') {
152
+ console.log(JSON.stringify(proposals.map(p => ({
153
+ id: p.id,
154
+ constraintId: p.constraintId,
155
+ type: p.type,
156
+ status: p.status,
157
+ risk: p.risk.level,
158
+ })), null, 2));
159
+ }
160
+ else {
161
+ console.log('📋 Proposal List');
162
+ console.log('');
163
+ for (const proposal of proposals) {
164
+ const statusEmoji = {
165
+ proposed: '💡',
166
+ reviewing: '🔍',
167
+ accepted: '✅',
168
+ rejected: '❌',
169
+ implemented: '🎉',
170
+ }[proposal.status];
171
+ const riskEmoji = {
172
+ low: '🟢',
173
+ medium: '🟡',
174
+ high: '🔴',
175
+ }[proposal.risk.level];
176
+ console.log(`${statusEmoji} ${proposal.id}`);
177
+ console.log(` Constraint: ${proposal.constraintId}`);
178
+ console.log(` Type: ${proposal.type}`);
179
+ console.log(` Risk: ${riskEmoji} ${proposal.risk.level}`);
180
+ console.log('');
181
+ }
182
+ console.log(`Total: ${proposals.length} proposals`);
183
+ }
184
+ }
185
+ /**
186
+ * 显示提案详情
187
+ */
188
+ async function showProposal(options) {
189
+ if (!options.diagnosisId) {
190
+ console.log('❌ Please specify --diagnosis <id>');
191
+ return;
192
+ }
193
+ // 尝试通过诊断 ID 找到提案
194
+ const evolver = (0, constraint_evolver_1.createEvolver)();
195
+ const proposals = evolver.listProposals();
196
+ const proposal = proposals.find(p => p.diagnosisId === options.diagnosisId);
197
+ if (!proposal) {
198
+ console.log(`❌ Proposal not found for diagnosis: ${options.diagnosisId}`);
199
+ return;
200
+ }
201
+ if (options.format === 'json') {
202
+ console.log(JSON.stringify(proposal, null, 2));
203
+ }
204
+ else {
205
+ printProposalDetail(proposal);
206
+ }
207
+ }
208
+ /**
209
+ * 审核提案
210
+ */
211
+ async function reviewProposal(options) {
212
+ if (!options.diagnosisId) {
213
+ console.log('❌ Please specify --diagnosis <id>');
214
+ return;
215
+ }
216
+ if (!options.accept && !options.reject) {
217
+ console.log('❌ Please specify --accept or --reject');
218
+ return;
219
+ }
220
+ const evolver = (0, constraint_evolver_1.createEvolver)();
221
+ const proposals = evolver.listProposals();
222
+ const proposal = proposals.find(p => p.diagnosisId === options.diagnosisId);
223
+ if (!proposal) {
224
+ console.log(`❌ Proposal not found for diagnosis: ${options.diagnosisId}`);
225
+ return;
226
+ }
227
+ // 更新状态
228
+ const status = options.accept ? 'accepted' : 'rejected';
229
+ evolver.updateProposalStatus(proposal.id, status, options.comment);
230
+ console.log(`${options.accept ? '✅ Accepted' : '❌ Rejected'} proposal ${proposal.id}`);
231
+ if (options.comment) {
232
+ console.log(`Comment: ${options.comment}`);
233
+ }
234
+ }
235
+ /**
236
+ * 显示实施指导
237
+ */
238
+ async function implementProposal(options) {
239
+ if (!options.diagnosisId) {
240
+ console.log('❌ Please specify --diagnosis <id>');
241
+ return;
242
+ }
243
+ const evolver = (0, constraint_evolver_1.createEvolver)();
244
+ const proposals = evolver.listProposals('accepted');
245
+ const proposal = proposals.find(p => p.diagnosisId === options.diagnosisId);
246
+ if (!proposal) {
247
+ console.log(`❌ No accepted proposal found for diagnosis: ${options.diagnosisId}`);
248
+ return;
249
+ }
250
+ const implementation = evolver.implement(proposal);
251
+ console.log('🔧 Implementation Instructions');
252
+ console.log('');
253
+ console.log(`Proposal: ${proposal.id}`);
254
+ console.log(`Constraint: ${proposal.constraintId}`);
255
+ console.log(`Type: ${proposal.type}`);
256
+ console.log('');
257
+ console.log('**Steps**:');
258
+ for (const instruction of implementation.instructions) {
259
+ console.log(`- ${instruction}`);
260
+ }
261
+ console.log('');
262
+ console.log('**Files to Modify**:');
263
+ for (const file of implementation.filesToModify) {
264
+ console.log(`- ${file}`);
265
+ }
266
+ console.log('');
267
+ console.log('**Tests to Run**:');
268
+ for (const test of implementation.testsToRun) {
269
+ console.log(`- ${test}`);
270
+ }
271
+ }
272
+ /**
273
+ * 打印提案摘要
274
+ */
275
+ function printProposalSummary(proposal) {
276
+ const statusEmoji = {
277
+ proposed: '💡',
278
+ reviewing: '🔍',
279
+ accepted: '✅',
280
+ rejected: '❌',
281
+ implemented: '🎉',
282
+ }[proposal.status] || '❓';
283
+ console.log(`${statusEmoji} Proposal: ${proposal.id}`);
284
+ console.log(`Constraint: ${proposal.constraintId}`);
285
+ console.log(`Type: ${proposal.type}`);
286
+ console.log(`Description: ${proposal.content.description}`);
287
+ console.log(`Risk: ${proposal.risk.level}`);
288
+ console.log(`Expected: ${proposal.expectedOutcome}`);
289
+ }
290
+ /**
291
+ * 打印提案详情
292
+ */
293
+ function printProposalDetail(proposal) {
294
+ console.log(`# Proposal: ${proposal.id}`);
295
+ console.log('');
296
+ console.log(`- **Constraint**: ${proposal.constraintId}`);
297
+ console.log(`- **Type**: ${proposal.type}`);
298
+ console.log(`- **Status**: ${proposal.status}`);
299
+ console.log(`- **Proposed**: ${new Date(proposal.proposedAt).toISOString()}`);
300
+ console.log('');
301
+ console.log(`## Content`);
302
+ console.log('');
303
+ console.log(`**Description**: ${proposal.content.description}`);
304
+ if (proposal.content.current) {
305
+ console.log(`**Current**: ${JSON.stringify(proposal.content.current)}`);
306
+ }
307
+ console.log(`**Proposed**: ${JSON.stringify(proposal.content.proposed)}`);
308
+ console.log('');
309
+ console.log(`## Reasoning`);
310
+ console.log('');
311
+ console.log(proposal.reasoning);
312
+ console.log('');
313
+ console.log(`## Expected Outcome`);
314
+ console.log('');
315
+ console.log(proposal.expectedOutcome);
316
+ console.log('');
317
+ console.log(`## Risk Assessment`);
318
+ console.log('');
319
+ console.log(`- **Level**: ${proposal.risk.level}`);
320
+ console.log(`- **Description**: ${proposal.risk.description}`);
321
+ if (proposal.risk.rollbackPlan) {
322
+ console.log(`- **Rollback**: ${proposal.risk.rollbackPlan}`);
323
+ }
324
+ if (proposal.reviewComment) {
325
+ console.log('');
326
+ console.log(`## Review Comment`);
327
+ console.log('');
328
+ console.log(proposal.reviewComment);
329
+ }
330
+ }
331
+ //# sourceMappingURL=propose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"propose.js","sourceRoot":"","sources":["../../../src/cli/commands/propose.ts"],"names":[],"mappings":"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"}
@@ -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"}