oh-my-knowledge 0.27.0 → 0.28.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 (122) hide show
  1. package/README.md +31 -34
  2. package/README.zh.md +31 -34
  3. package/dist/src/analysis/report-diagnostics.d.ts +2 -2
  4. package/dist/src/analysis/report-diagnostics.js +2 -2
  5. package/dist/src/analysis/sample-diagnostics.d.ts +3 -3
  6. package/dist/src/analysis/sample-diagnostics.js +3 -3
  7. package/dist/src/authoring/generator.js +1 -1
  8. package/dist/src/authoring/generator.js.map +1 -1
  9. package/dist/src/cli/commands/doctor.d.ts.map +1 -1
  10. package/dist/src/cli/commands/doctor.js +39 -2
  11. package/dist/src/cli/commands/doctor.js.map +1 -1
  12. package/dist/src/cli/commands/eval.d.ts.map +1 -1
  13. package/dist/src/cli/commands/eval.js +0 -5
  14. package/dist/src/cli/commands/eval.js.map +1 -1
  15. package/dist/src/cli/commands/{export.d.ts → evolve.d.ts} +1 -1
  16. package/dist/src/cli/commands/evolve.d.ts.map +1 -0
  17. package/dist/src/cli/commands/{improve-skill.js → evolve.js} +3 -3
  18. package/dist/src/cli/commands/evolve.js.map +1 -0
  19. package/dist/src/cli/commands/registry.d.ts.map +1 -1
  20. package/dist/src/cli/commands/registry.js +4 -22
  21. package/dist/src/cli/commands/registry.js.map +1 -1
  22. package/dist/src/cli/commands/{improve.d.ts → sample.d.ts} +1 -1
  23. package/dist/src/cli/commands/sample.d.ts.map +1 -0
  24. package/dist/src/cli/commands/{improve-samples.js → sample.js} +5 -4
  25. package/dist/src/cli/commands/sample.js.map +1 -0
  26. package/dist/src/cli/i18n-dict.d.ts +2 -4
  27. package/dist/src/cli/i18n-dict.d.ts.map +1 -1
  28. package/dist/src/cli/i18n-dict.js +165 -373
  29. package/dist/src/cli/i18n-dict.js.map +1 -1
  30. package/dist/src/cli/parse-run-config.d.ts +1 -1
  31. package/dist/src/cli/parse-run-config.js +1 -1
  32. package/dist/src/doctor/health/builtin-dimensions.d.ts +11 -0
  33. package/dist/src/doctor/health/builtin-dimensions.d.ts.map +1 -0
  34. package/dist/src/doctor/health/builtin-dimensions.js +94 -0
  35. package/dist/src/doctor/health/builtin-dimensions.js.map +1 -0
  36. package/dist/src/doctor/health/composer.d.ts +19 -0
  37. package/dist/src/doctor/health/composer.d.ts.map +1 -0
  38. package/dist/src/doctor/health/composer.js +289 -0
  39. package/dist/src/doctor/health/composer.js.map +1 -0
  40. package/dist/src/doctor/health/dimension-registry.d.ts +13 -0
  41. package/dist/src/doctor/health/dimension-registry.d.ts.map +1 -0
  42. package/dist/src/doctor/health/dimension-registry.js +28 -0
  43. package/dist/src/doctor/health/dimension-registry.js.map +1 -0
  44. package/dist/src/doctor/health/dimension-spec.d.ts +46 -0
  45. package/dist/src/doctor/health/dimension-spec.d.ts.map +1 -0
  46. package/dist/src/doctor/health/dimension-spec.js +12 -0
  47. package/dist/src/doctor/health/dimension-spec.js.map +1 -0
  48. package/dist/src/doctor/health/parser.d.ts +27 -0
  49. package/dist/src/doctor/health/parser.d.ts.map +1 -0
  50. package/dist/src/doctor/health/parser.js +190 -0
  51. package/dist/src/doctor/health/parser.js.map +1 -0
  52. package/dist/src/doctor/health/prompt-builder.d.ts +22 -0
  53. package/dist/src/doctor/health/prompt-builder.d.ts.map +1 -0
  54. package/dist/src/doctor/health/prompt-builder.js +162 -0
  55. package/dist/src/doctor/health/prompt-builder.js.map +1 -0
  56. package/dist/src/doctor/health/register.d.ts +13 -0
  57. package/dist/src/doctor/health/register.d.ts.map +1 -0
  58. package/dist/src/doctor/health/register.js +20 -0
  59. package/dist/src/doctor/health/register.js.map +1 -0
  60. package/dist/src/doctor/html-renderer.d.ts +20 -0
  61. package/dist/src/doctor/html-renderer.d.ts.map +1 -0
  62. package/dist/src/doctor/html-renderer.js +366 -0
  63. package/dist/src/doctor/html-renderer.js.map +1 -0
  64. package/dist/src/doctor/index.d.ts.map +1 -1
  65. package/dist/src/doctor/index.js +55 -6
  66. package/dist/src/doctor/index.js.map +1 -1
  67. package/dist/src/doctor/renderer.d.ts +4 -0
  68. package/dist/src/doctor/renderer.d.ts.map +1 -1
  69. package/dist/src/doctor/renderer.js +72 -18
  70. package/dist/src/doctor/renderer.js.map +1 -1
  71. package/dist/src/doctor/rules.d.ts +6 -5
  72. package/dist/src/doctor/rules.d.ts.map +1 -1
  73. package/dist/src/doctor/rules.js +4 -3
  74. package/dist/src/doctor/rules.js.map +1 -1
  75. package/dist/src/types/doctor.d.ts +41 -3
  76. package/dist/src/types/doctor.d.ts.map +1 -1
  77. package/dist/src/types/doctor.js +3 -0
  78. package/dist/src/types/doctor.js.map +1 -1
  79. package/dist/src/types/eval.d.ts +1 -1
  80. package/dist/src/types/report.d.ts +2 -2
  81. package/dist/src/types/report.d.ts.map +1 -1
  82. package/package.json +1 -1
  83. package/dist/src/cli/commands/eval-debias.d.ts +0 -2
  84. package/dist/src/cli/commands/eval-debias.d.ts.map +0 -1
  85. package/dist/src/cli/commands/eval-debias.js +0 -88
  86. package/dist/src/cli/commands/eval-debias.js.map +0 -1
  87. package/dist/src/cli/commands/export-diff.d.ts +0 -2
  88. package/dist/src/cli/commands/export-diff.d.ts.map +0 -1
  89. package/dist/src/cli/commands/export-diff.js +0 -177
  90. package/dist/src/cli/commands/export-diff.js.map +0 -1
  91. package/dist/src/cli/commands/export-saturation.d.ts +0 -2
  92. package/dist/src/cli/commands/export-saturation.d.ts.map +0 -1
  93. package/dist/src/cli/commands/export-saturation.js +0 -59
  94. package/dist/src/cli/commands/export-saturation.js.map +0 -1
  95. package/dist/src/cli/commands/export-verdict.d.ts +0 -2
  96. package/dist/src/cli/commands/export-verdict.d.ts.map +0 -1
  97. package/dist/src/cli/commands/export-verdict.js +0 -45
  98. package/dist/src/cli/commands/export-verdict.js.map +0 -1
  99. package/dist/src/cli/commands/export.d.ts.map +0 -1
  100. package/dist/src/cli/commands/export.js +0 -150
  101. package/dist/src/cli/commands/export.js.map +0 -1
  102. package/dist/src/cli/commands/improve-failures.d.ts +0 -2
  103. package/dist/src/cli/commands/improve-failures.d.ts.map +0 -1
  104. package/dist/src/cli/commands/improve-failures.js +0 -59
  105. package/dist/src/cli/commands/improve-failures.js.map +0 -1
  106. package/dist/src/cli/commands/improve-plan.d.ts +0 -2
  107. package/dist/src/cli/commands/improve-plan.d.ts.map +0 -1
  108. package/dist/src/cli/commands/improve-plan.js +0 -75
  109. package/dist/src/cli/commands/improve-plan.js.map +0 -1
  110. package/dist/src/cli/commands/improve-samples.d.ts +0 -2
  111. package/dist/src/cli/commands/improve-samples.d.ts.map +0 -1
  112. package/dist/src/cli/commands/improve-samples.js.map +0 -1
  113. package/dist/src/cli/commands/improve-skill.d.ts +0 -2
  114. package/dist/src/cli/commands/improve-skill.d.ts.map +0 -1
  115. package/dist/src/cli/commands/improve-skill.js.map +0 -1
  116. package/dist/src/cli/commands/improve.d.ts.map +0 -1
  117. package/dist/src/cli/commands/improve.js +0 -34
  118. package/dist/src/cli/commands/improve.js.map +0 -1
  119. package/dist/src/cli/coverage-renderer.d.ts +0 -15
  120. package/dist/src/cli/coverage-renderer.d.ts.map +0 -1
  121. package/dist/src/cli/coverage-renderer.js +0 -74
  122. package/dist/src/cli/coverage-renderer.js.map +0 -1
@@ -1,177 +0,0 @@
1
- import { resolve } from 'node:path';
2
- import { CliExit } from '../cli-exit.js';
3
- import { langFromArgv } from '../i18n.js';
4
- import { COMMON_OPTIONS, DEFAULT_REPORTS_DIR } from '../parse-run-config.js';
5
- import { parseArgsStrictOrExit } from '../parse-strict.js';
6
- import { requireEvaluationReport } from './_shared.js';
7
- export async function execute(argv) {
8
- const lang = langFromArgv(argv);
9
- const { values, positionals } = parseArgsStrictOrExit({
10
- args: argv,
11
- allowPositionals: true,
12
- options: {
13
- ...COMMON_OPTIONS,
14
- 'reports-dir': { type: 'string', default: DEFAULT_REPORTS_DIR },
15
- 'regressions-only': { type: 'boolean', default: false },
16
- threshold: { type: 'string' },
17
- variant: { type: 'string' },
18
- top: { type: 'string' },
19
- },
20
- });
21
- if (positionals.length === 0) {
22
- console.error(usage(lang));
23
- throw new CliExit(1);
24
- }
25
- const { createFileStore } = await import('../../server/report-store.js');
26
- const store = createFileStore(resolve(values['reports-dir']));
27
- if (positionals.length === 1) {
28
- await runSampleLevelDiff(positionals[0], store, values, lang);
29
- return;
30
- }
31
- if (positionals.length > 2) {
32
- console.error(usage(lang));
33
- throw new CliExit(1);
34
- }
35
- const [id1, id2] = positionals;
36
- const r1 = requireEvaluationReport(await store.get(id1), id1, lang);
37
- const r2 = requireEvaluationReport(await store.get(id2), id2, lang);
38
- console.log(`\n Diff: ${id1} → ${id2}\n`);
39
- const g1 = r1.meta?.gitInfo;
40
- const g2 = r2.meta?.gitInfo;
41
- if (g1 || g2) {
42
- console.log(` Git: ${g1?.commitShort || '?'}${g1?.dirty ? '*' : ''} (${g1?.branch || '?'}) → ${g2?.commitShort || '?'}${g2?.dirty ? '*' : ''} (${g2?.branch || '?'})`);
43
- }
44
- const { crossReportComparabilityWarnings, formatComparabilityWarnings } = await import('../../eval-core/comparability.js');
45
- const comparability = formatComparabilityWarnings(crossReportComparabilityWarnings(r1, r2), lang);
46
- if (comparability)
47
- process.stderr.write(`\n${comparability}\n\n`);
48
- const variants = [...new Set([...(r1.meta?.variants || []), ...(r2.meta?.variants || [])])];
49
- for (const variant of variants) {
50
- const s1 = r1.summary?.[variant];
51
- const s2 = r2.summary?.[variant];
52
- if (!s1 && !s2)
53
- continue;
54
- console.log(`\n [${variant}]`);
55
- const score1 = s1?.avgCompositeScore ?? '-';
56
- const score2 = s2?.avgCompositeScore ?? '-';
57
- const scoreDelta = typeof score1 === 'number' && typeof score2 === 'number'
58
- ? ` (${score2 > score1 ? '+' : ''}${(score2 - score1).toFixed(2)})`
59
- : '';
60
- console.log(` Score: ${score1} → ${score2}${scoreDelta}`);
61
- console.log(` Turns: ${s1?.avgNumTurns ?? '-'} → ${s2?.avgNumTurns ?? '-'}`);
62
- if (s1?.avgToolCalls != null || s2?.avgToolCalls != null) {
63
- console.log(` Tools: ${s1?.avgToolCalls ?? '-'} → ${s2?.avgToolCalls ?? '-'}`);
64
- const sr1 = s1?.toolSuccessRate != null ? `${(s1.toolSuccessRate * 100).toFixed(0)}%` : '-';
65
- const sr2 = s2?.toolSuccessRate != null ? `${(s2.toolSuccessRate * 100).toFixed(0)}%` : '-';
66
- console.log(` ToolOK: ${sr1} → ${sr2}`);
67
- }
68
- const cost1 = s1?.avgCostPerSample ?? 0;
69
- const cost2 = s2?.avgCostPerSample ?? 0;
70
- const reported1 = s1?.execCostReported !== false;
71
- const reported2 = s2?.execCostReported !== false;
72
- const fmtCost = (cost, reported) => reported ? `$${cost.toFixed(4)}` : '—';
73
- const costPct = reported1 && reported2 && cost1 > 0
74
- ? ` (${cost2 > cost1 ? '+' : ''}${(((cost2 - cost1) / cost1) * 100).toFixed(0)}%)`
75
- : '';
76
- console.log(` Cost: ${fmtCost(cost1, reported1)} → ${fmtCost(cost2, reported2)}${costPct}`);
77
- const h1 = r1.meta?.artifactHashes?.[variant];
78
- const h2 = r2.meta?.artifactHashes?.[variant];
79
- if (h1 && h2 && h1 !== h2) {
80
- console.log(` Skill: ${h1.slice(0, 8)} → ${h2.slice(0, 8)} (changed)`);
81
- }
82
- }
83
- console.log('');
84
- }
85
- async function runSampleLevelDiff(reportId, store, flags, lang) {
86
- const report = requireEvaluationReport(await store.get(reportId), reportId, lang);
87
- const { reportComparabilityWarnings, formatComparabilityWarnings } = await import('../../eval-core/comparability.js');
88
- const comparability = formatComparabilityWarnings(reportComparabilityWarnings(report), lang);
89
- if (comparability)
90
- process.stderr.write(`\n${comparability}\n\n`);
91
- const variants = report.meta?.variants ?? [];
92
- if (variants.length < 2) {
93
- console.error('Sample-level diff needs at least 2 variants in the report.');
94
- throw new CliExit(1);
95
- }
96
- const control = variants[0];
97
- const treatment = flags.variant ?? variants[1];
98
- if (!variants.includes(treatment)) {
99
- console.error(`Variant "${treatment}" not in report. Available: ${variants.join(', ')}`);
100
- throw new CliExit(1);
101
- }
102
- const threshold = flags.threshold != null ? Number(flags.threshold) : 0;
103
- const regressionsOnly = Boolean(flags['regressions-only']);
104
- const topN = flags.top != null ? Math.max(1, Number(flags.top) || 0) : undefined;
105
- const rows = [];
106
- for (const entry of report.results ?? []) {
107
- const c = entry.variants?.[control];
108
- const t = entry.variants?.[treatment];
109
- if (!c || !t)
110
- continue;
111
- const cComp = c.compositeScore ?? c.llmScore ?? 0;
112
- const tComp = t.compositeScore ?? t.llmScore ?? 0;
113
- rows.push({
114
- id: entry.sample_id,
115
- cFact: c.layeredScores?.factScore,
116
- tFact: t.layeredScores?.factScore,
117
- cBeh: c.layeredScores?.behaviorScore,
118
- tBeh: t.layeredScores?.behaviorScore,
119
- cJudge: c.layeredScores?.judgeScore,
120
- tJudge: t.layeredScores?.judgeScore,
121
- cComp,
122
- tComp,
123
- delta: Number((tComp - cComp).toFixed(3)),
124
- });
125
- }
126
- rows.sort((a, b) => Math.abs(b.delta) - Math.abs(a.delta));
127
- let filtered = rows;
128
- if (regressionsOnly)
129
- filtered = filtered.filter((r) => r.delta < threshold);
130
- if (topN !== undefined)
131
- filtered = filtered.slice(0, topN);
132
- console.log(`\n Sample-level diff: ${treatment} vs ${control} (report ${reportId})`);
133
- if (regressionsOnly)
134
- console.log(` Filter: regressions only (Δ < ${threshold})`);
135
- console.log('');
136
- console.log(' sample_id Δ composite (c→t) fact (c→t) behavior (c→t) judge (c→t)');
137
- console.log(' ' + '-'.repeat(100));
138
- if (filtered.length === 0) {
139
- console.log(regressionsOnly ? ' (no regressions found)' : ' (no shared samples)');
140
- console.log('');
141
- return;
142
- }
143
- const fmtLayer = (a, b) => {
144
- const av = typeof a === 'number' ? a.toFixed(2) : '—';
145
- const bv = typeof b === 'number' ? b.toFixed(2) : '—';
146
- return `${av} → ${bv}`.padEnd(15);
147
- };
148
- for (const row of filtered) {
149
- const sign = row.delta > 0 ? '+' : '';
150
- console.log(` ${row.id.slice(0, 18).padEnd(20)}`
151
- + `${`${sign}${row.delta.toFixed(2)}`.padEnd(7)}`
152
- + `${`${row.cComp.toFixed(2)} → ${row.tComp.toFixed(2)}`.padEnd(17)}`
153
- + `${fmtLayer(row.cFact, row.tFact)} ${fmtLayer(row.cBeh, row.tBeh)} ${fmtLayer(row.cJudge, row.tJudge)}`);
154
- }
155
- console.log('');
156
- console.log(` Showing ${filtered.length} of ${rows.length} samples · sorted by |Δ|`);
157
- if (regressionsOnly) {
158
- const total = rows.length;
159
- const regressions = rows.filter((r) => r.delta < threshold).length;
160
- console.log(` Regression rate: ${regressions}/${total} samples (${total > 0 ? ((regressions / total) * 100).toFixed(0) : 0}%)`);
161
- }
162
- console.log('');
163
- }
164
- function usage(lang) {
165
- return lang === 'zh'
166
- ? [
167
- '用法:',
168
- ' omk export diff <report-id> [--variant <name>] [--regressions-only] [--top <n>]',
169
- ' omk export diff <report-id-a> <report-id-b>',
170
- ].join('\n')
171
- : [
172
- 'Usage:',
173
- ' omk export diff <report-id> [--variant <name>] [--regressions-only] [--top <n>]',
174
- ' omk export diff <report-id-a> <report-id-b>',
175
- ].join('\n');
176
- }
177
- //# sourceMappingURL=export-diff.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export-diff.js","sourceRoot":"","sources":["../../../../src/cli/commands/export-diff.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function execute(argv: string[]): Promise<void>;
2
- //# sourceMappingURL=export-saturation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export-saturation.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/export-saturation.ts"],"names":[],"mappings":"AAQA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD3D"}
@@ -1,59 +0,0 @@
1
- import { resolve } from 'node:path';
2
- import { CliExit } from '../cli-exit.js';
3
- import { langFromArgv } from '../i18n.js';
4
- import { COMMON_OPTIONS, DEFAULT_REPORTS_DIR } from '../parse-run-config.js';
5
- import { parseArgsStrictOrExit } from '../parse-strict.js';
6
- import { requireEvaluationReport } from './_shared.js';
7
- export async function execute(argv) {
8
- const lang = langFromArgv(argv);
9
- const reportId = argv[0];
10
- if (!reportId) {
11
- console.log(lang === 'zh'
12
- ? '用法:omk export saturation <report-id> [--variant <name>]'
13
- : 'Usage: omk export saturation <report-id> [--variant <name>]');
14
- throw new CliExit(1);
15
- }
16
- const { values } = parseArgsStrictOrExit({
17
- args: argv.slice(1),
18
- options: {
19
- ...COMMON_OPTIONS,
20
- 'reports-dir': { type: 'string', default: DEFAULT_REPORTS_DIR },
21
- variant: { type: 'string' },
22
- },
23
- });
24
- const { createFileStore } = await import('../../server/report-store.js');
25
- const store = createFileStore(resolve(values['reports-dir']));
26
- const report = requireEvaluationReport(await store.get(reportId), reportId, lang);
27
- const saturation = report.variance?.saturation;
28
- if (!saturation) {
29
- console.error(lang === 'zh'
30
- ? '该报告没有 saturation 数据,需要 --repeat ≥ 2 才会记录。'
31
- : 'This report has no saturation data; it requires --repeat ≥ 2.');
32
- throw new CliExit(1);
33
- }
34
- const targetVariants = values.variant ? [values.variant] : (report.meta.variants ?? []);
35
- console.log(lang === 'zh'
36
- ? '\n Saturation 判定(读取报告中已持久化的数据)\n'
37
- : '\n Saturation verdict (from persisted report data)\n');
38
- for (const variant of targetVariants) {
39
- const trace = saturation.perVariant[variant];
40
- if (!trace || trace.length === 0) {
41
- console.log(` ${variant}: no trace data`);
42
- continue;
43
- }
44
- console.log(` ${variant}:`);
45
- console.log(` checkpoints: ${trace.length} (N=${trace.map((p) => p.n).join(', ')})`);
46
- const last = trace[trace.length - 1];
47
- console.log(` last point mean=${last.mean.toFixed(3)}, CI=[${last.ciLow.toFixed(3)}, ${last.ciHigh.toFixed(3)}]`);
48
- const persisted = saturation.verdicts?.[variant];
49
- if (persisted) {
50
- const result = persisted.saturated ? `saturated@N=${persisted.atN ?? '?'}` : 'not saturated';
51
- console.log(` verdict (${persisted.method}): ${result} - ${persisted.reason}`);
52
- }
53
- else if (trace.length < 5) {
54
- console.log(` verdict: only ${trace.length} data points (< 5), skipping`);
55
- }
56
- }
57
- console.log('');
58
- }
59
- //# sourceMappingURL=export-saturation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export-saturation.js","sourceRoot":"","sources":["../../../../src/cli/commands/export-saturation.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function execute(argv: string[]): Promise<void>;
2
- //# sourceMappingURL=export-verdict.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export-verdict.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/export-verdict.ts"],"names":[],"mappings":"AAQA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsC3D"}
@@ -1,45 +0,0 @@
1
- import { resolve } from 'node:path';
2
- import { CliExit } from '../cli-exit.js';
3
- import { langFromArgv } from '../i18n.js';
4
- import { COMMON_OPTIONS, DEFAULT_REPORTS_DIR } from '../parse-run-config.js';
5
- import { parseArgsStrictOrExit } from '../parse-strict.js';
6
- import { requireEvaluationReport } from './_shared.js';
7
- export async function execute(argv) {
8
- const lang = langFromArgv(argv);
9
- const reportId = argv[0];
10
- if (!reportId) {
11
- console.log(lang === 'zh'
12
- ? '用法:omk export verdict <report-id> [--threshold <n>] [--trivial-diff <n>]'
13
- : 'Usage: omk export verdict <report-id> [--threshold <n>] [--trivial-diff <n>]');
14
- throw new CliExit(1);
15
- }
16
- const { values } = parseArgsStrictOrExit({
17
- args: argv.slice(1),
18
- options: {
19
- ...COMMON_OPTIONS,
20
- 'reports-dir': { type: 'string', default: DEFAULT_REPORTS_DIR },
21
- threshold: { type: 'string' },
22
- 'trivial-diff': { type: 'string' },
23
- verbose: { type: 'boolean', default: false },
24
- },
25
- });
26
- const { createFileStore } = await import('../../server/report-store.js');
27
- const store = createFileStore(resolve(values['reports-dir']));
28
- const report = requireEvaluationReport(await store.get(reportId), reportId, lang);
29
- const { computeVerdict, formatVerdictText } = await import('../../eval-core/verdict.js');
30
- const { reportComparabilityWarnings, formatComparabilityWarnings } = await import('../../eval-core/comparability.js');
31
- const comparability = formatComparabilityWarnings(reportComparabilityWarnings(report), lang);
32
- if (comparability)
33
- process.stderr.write(`${comparability}\n`);
34
- const result = computeVerdict(report, {
35
- gateThreshold: values.threshold != null ? Number(values.threshold) : undefined,
36
- triviallySmallDiff: values['trivial-diff'] != null ? Number(values['trivial-diff']) : undefined,
37
- });
38
- console.log(formatVerdictText(result, { verbose: Boolean(values.verbose) }));
39
- if (result.level === 'PROGRESS')
40
- throw new CliExit(0);
41
- if (result.level === 'SOLO' && result.headline.includes('PASS'))
42
- throw new CliExit(0);
43
- throw new CliExit(1);
44
- }
45
- //# sourceMappingURL=export-verdict.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export-verdict.js","sourceRoot":"","sources":["../../../../src/cli/commands/export-verdict.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/export.ts"],"names":[],"mappings":"AAaA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmE3D"}
@@ -1,150 +0,0 @@
1
- import { writeFileSync } from 'node:fs';
2
- import { resolve } from 'node:path';
3
- import { CliExit } from '../cli-exit.js';
4
- import { tCli, langFromArgv } from '../i18n.js';
5
- import { COMMON_OPTIONS, DEFAULT_REPORTS_DIR } from '../parse-run-config.js';
6
- import { parseArgsStrictOrExit } from '../parse-strict.js';
7
- import { execute as diff } from './export-diff.js';
8
- import { execute as saturation } from './export-saturation.js';
9
- import { execute as verdictCommand } from './export-verdict.js';
10
- export async function execute(argv) {
11
- const lang = langFromArgv(argv);
12
- const [sub, ...rest] = argv;
13
- if (sub === 'diff') {
14
- await diff(rest);
15
- return;
16
- }
17
- if (sub === 'verdict') {
18
- await verdictCommand(rest);
19
- return;
20
- }
21
- if (sub === 'saturation') {
22
- await saturation(rest);
23
- return;
24
- }
25
- const { values, positionals } = parseArgsStrictOrExit({
26
- args: argv,
27
- allowPositionals: true,
28
- options: {
29
- ...COMMON_OPTIONS,
30
- format: { type: 'string', default: 'html' },
31
- out: { type: 'string' },
32
- 'reports-dir': { type: 'string', default: DEFAULT_REPORTS_DIR },
33
- },
34
- });
35
- const id = positionals[0];
36
- if (!id) {
37
- console.log(tCli('cli.help.export', lang).trim());
38
- throw new CliExit(1);
39
- }
40
- const format = String(values.format);
41
- if (!['html', 'markdown', 'github-summary'].includes(format)) {
42
- console.error(tCli('cli.export.unsupported_format', lang, { format: String(values.format) }));
43
- throw new CliExit(2);
44
- }
45
- const { createFileStore } = await import('../../server/report-store.js');
46
- const store = createFileStore(resolve(values['reports-dir']));
47
- const report = await store.get(id);
48
- if (!report) {
49
- console.error(tCli('cli.common.report_not_found', lang, { id }));
50
- throw new CliExit(1);
51
- }
52
- if (format === 'html') {
53
- const { renderReportDocumentDetail } = await import('../../renderer/html-renderer.js');
54
- const outPath = resolve(values.out ?? `${id}.html`);
55
- writeFileSync(outPath, renderReportDocumentDetail(report));
56
- console.log(tCli('cli.export.html_done', lang, { path: outPath }));
57
- return;
58
- }
59
- const verdict = report.kind === 'evaluation' ? await renderVerdict(report) : 'n/a';
60
- const body = format === 'github-summary'
61
- ? renderGithubSummary(report, lang, verdict)
62
- : renderMarkdown(report, lang, verdict);
63
- const out = values.out;
64
- if (out) {
65
- const outPath = resolve(out);
66
- writeFileSync(outPath, body);
67
- console.log(tCli('cli.export.done', lang, { path: outPath }));
68
- return;
69
- }
70
- console.log(body);
71
- }
72
- async function renderVerdict(report) {
73
- const { computeVerdict } = await import('../../eval-core/verdict.js');
74
- return computeVerdict(report).headline;
75
- }
76
- function renderGithubSummary(report, lang, verdict) {
77
- if (report.kind !== 'evaluation') {
78
- return renderBatchMarkdown(report, lang);
79
- }
80
- const lines = [
81
- lang === 'zh' ? '## omk 评测摘要' : '## omk Evaluation Summary',
82
- '',
83
- `- ${lang === 'zh' ? '报告' : 'Report'}:\`${report.id}\``,
84
- `- ${lang === 'zh' ? '结论' : 'Verdict'}:${verdict}`,
85
- `- ${lang === 'zh' ? '样本数' : 'Samples'}:${report.meta.sampleCount}`,
86
- `- ${lang === 'zh' ? '模型' : 'Model'}:${report.meta.executor}:${report.meta.model}`,
87
- `- ${lang === 'zh' ? '版本' : 'Variants'}:${report.meta.variants.join(' / ')}`,
88
- '',
89
- renderVariantTable(report, lang),
90
- '',
91
- renderAuditBlock(report, lang),
92
- ];
93
- return lines.join('\n').trim();
94
- }
95
- function renderMarkdown(report, lang, verdict) {
96
- if (report.kind !== 'evaluation') {
97
- return renderBatchMarkdown(report, lang);
98
- }
99
- const lines = [
100
- `# ${lang === 'zh' ? 'omk 评测报告' : 'omk Evaluation Report'}:${report.id}`,
101
- '',
102
- `- ${lang === 'zh' ? '结论' : 'Verdict'}:${verdict}`,
103
- `- ${lang === 'zh' ? '时间' : 'Timestamp'}:${report.meta.timestamp}`,
104
- `- ${lang === 'zh' ? '样本数' : 'Samples'}:${report.meta.sampleCount}`,
105
- `- ${lang === 'zh' ? '执行器' : 'Executor'}:${report.meta.executor}`,
106
- `- ${lang === 'zh' ? '模型' : 'Model'}:${report.meta.model}`,
107
- '',
108
- `## ${lang === 'zh' ? '版本摘要' : 'Variant Summary'}`,
109
- '',
110
- renderVariantTable(report, lang),
111
- '',
112
- `## ${lang === 'zh' ? '审计信息' : 'Audit Evidence'}`,
113
- '',
114
- renderAuditBlock(report, lang),
115
- ];
116
- return lines.join('\n').trim();
117
- }
118
- function renderBatchMarkdown(report, lang) {
119
- return [
120
- `# ${lang === 'zh' ? 'omk 批量评测报告' : 'omk Batch Evaluation Report'}:${report.id}`,
121
- '',
122
- `- ${lang === 'zh' ? '类型' : 'Kind'}:${report.kind}`,
123
- `- ${lang === 'zh' ? '时间' : 'Timestamp'}:${report.meta?.timestamp ?? 'n/a'}`,
124
- ].join('\n');
125
- }
126
- function renderVariantTable(report, lang) {
127
- const header = lang === 'zh'
128
- ? '| 版本 | 样本 | 成功 | 综合分 | 成本 |\n|---|---:|---:|---:|---:|'
129
- : '| Variant | Samples | Success | Score | Cost |\n|---|---:|---:|---:|---:|';
130
- const rows = Object.entries(report.summary ?? {}).map(([variant, s]) => {
131
- const summary = s;
132
- const score = summary.avgCompositeScore != null ? summary.avgCompositeScore.toFixed(2) : '-';
133
- const cost = summary.totalCostUSD != null ? `$${summary.totalCostUSD.toFixed(4)}` : '-';
134
- return `| ${variant} | ${summary.totalSamples} | ${summary.successCount} | ${score} | ${cost} |`;
135
- });
136
- return [header, ...rows].join('\n');
137
- }
138
- function renderAuditBlock(report, lang) {
139
- const hashes = Object.entries(report.meta.artifactHashes ?? {})
140
- .map(([name, hash]) => ` - ${name}: \`${hash}\``)
141
- .join('\n') || (lang === 'zh' ? ' - 未记录' : ' - not recorded');
142
- return [
143
- `- ${lang === 'zh' ? 'CLI 版本' : 'CLI version'}:${report.meta.cliVersion}`,
144
- `- ${lang === 'zh' ? 'Node 版本' : 'Node version'}:${report.meta.nodeVersion}`,
145
- `- ${lang === 'zh' ? '评委提示词指纹' : 'Judge prompt hash'}:${report.meta.judgePromptHash ?? 'n/a'}`,
146
- `- ${lang === 'zh' ? '样本指纹数量' : 'Sample fingerprints'}:${Object.keys(report.meta.sampleHashes ?? {}).length}`,
147
- `- ${lang === 'zh' ? 'artifact 指纹' : 'Artifact fingerprints'}:\n${hashes}`,
148
- ].join('\n');
149
- }
150
- //# sourceMappingURL=export.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../src/cli/commands/export.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function execute(argv: string[]): Promise<void>;
2
- //# sourceMappingURL=improve-failures.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"improve-failures.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/improve-failures.ts"],"names":[],"mappings":"AAQA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyD3D"}
@@ -1,59 +0,0 @@
1
- import { CliExit } from '../cli-exit.js';
2
- import { resolve } from 'node:path';
3
- import { tCli, langFromArgv } from '../i18n.js';
4
- import { COMMON_OPTIONS, DEFAULT_REPORTS_DIR } from '../parse-run-config.js';
5
- import { parseArgsStrictOrExit } from '../parse-strict.js';
6
- import { requireEvaluationReport } from './_shared.js';
7
- export async function execute(argv) {
8
- const lang = langFromArgv(argv);
9
- const reportId = argv[0];
10
- if (!reportId) {
11
- console.log(tCli('cli.help.improve_failures', lang));
12
- throw new CliExit(1);
13
- }
14
- const { values } = parseArgsStrictOrExit({
15
- args: argv.slice(1),
16
- options: {
17
- ...COMMON_OPTIONS,
18
- 'reports-dir': { type: 'string', default: DEFAULT_REPORTS_DIR },
19
- 'judge-models': { type: 'string' },
20
- 'max-clusters': { type: 'string', default: '5' },
21
- threshold: { type: 'string', default: '3' },
22
- 'max-feed': { type: 'string', default: '50' },
23
- },
24
- });
25
- // Parse --judge-models 在 load report 之前 fail-fast。
26
- const { parseJudgeModelsArgOrExit: parseJudgesB } = await import('../parse-run-config.js');
27
- const cliJudgeModelsB = values['judge-models'] !== undefined
28
- ? parseJudgesB(values['judge-models'])
29
- : undefined;
30
- if (cliJudgeModelsB && cliJudgeModelsB.length > 1) {
31
- console.error(tCli('cli.common.judge_models_single_only', lang, { cmd: 'failures' }));
32
- throw new CliExit(2);
33
- }
34
- const { createFileStore } = await import('../../server/report-store.js');
35
- const store = createFileStore(resolve(values['reports-dir']));
36
- const report = requireEvaluationReport(await store.get(reportId), reportId, lang);
37
- const failuresJudges = cliJudgeModelsB
38
- ?? (report.meta?.judgeModels?.[0]
39
- ? [{ executor: report.meta.judgeModels[0].executor, model: report.meta.judgeModels[0].model }]
40
- : []);
41
- if (failuresJudges.length === 0) {
42
- console.error(tCli('cli.common.no_judge_model', lang));
43
- throw new CliExit(1);
44
- }
45
- const { createExecutor } = await import('../../executors/index.js');
46
- const executor = createExecutor(failuresJudges[0].executor);
47
- const judgeModel = failuresJudges[0].model;
48
- const { clusterFailures, formatFailureClusterReport } = await import('../../analysis/failure-clusterer.js');
49
- const out = await clusterFailures({
50
- report,
51
- executor,
52
- judgeModel,
53
- maxClusters: Number(values['max-clusters']) || 5,
54
- failureThreshold: Number(values.threshold) || 3,
55
- maxFailuresFed: Number(values['max-feed']) || 50,
56
- });
57
- console.log(formatFailureClusterReport(out));
58
- }
59
- //# sourceMappingURL=improve-failures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"improve-failures.js","sourceRoot":"","sources":["../../../../src/cli/commands/improve-failures.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function execute(argv: string[]): Promise<void>;
2
- //# sourceMappingURL=improve-plan.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"improve-plan.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/improve-plan.ts"],"names":[],"mappings":"AAUA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsE3D"}