soturail 0.2.1 → 0.2.2
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 +69 -0
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/bench.d.ts +14 -3
- package/dist/commands/bench.js +237 -180
- package/dist/commands/bench.js.map +1 -1
- package/dist/commands/run.js +20 -1
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/self.d.ts +2 -0
- package/dist/commands/self.js +49 -0
- package/dist/commands/self.js.map +1 -0
- package/dist/commands/stats.d.ts +6 -0
- package/dist/commands/stats.js +28 -0
- package/dist/commands/stats.js.map +1 -1
- package/dist/core/config.d.ts +1 -1
- package/dist/core/config.js +1 -0
- package/dist/core/config.js.map +1 -1
- package/dist/core/file-scanner.js +6 -2
- package/dist/core/file-scanner.js.map +1 -1
- package/dist/core/metrics-store.d.ts +7 -0
- package/dist/core/metrics-store.js.map +1 -1
- package/dist/core/self-dogfood.d.ts +56 -0
- package/dist/core/self-dogfood.js +323 -0
- package/dist/core/self-dogfood.js.map +1 -0
- package/docs/benchmarking.md +4 -2
- package/docs/hooks/claude.md +4 -0
- package/docs/hooks/codex.md +11 -0
- package/docs/hooks/cursor.md +11 -0
- package/docs/hooks/gemini.md +11 -0
- package/docs/hooks.md +11 -0
- package/docs/release-checklist.md +36 -6
- package/docs/release-workflow.md +54 -0
- package/docs/skill-rail.md +28 -0
- package/docs/windows.md +76 -0
- package/docs/workflow-rail.md +26 -0
- package/package.json +7 -2
package/dist/commands/bench.js
CHANGED
|
@@ -6,6 +6,7 @@ import { performance } from "node:perf_hooks";
|
|
|
6
6
|
import { promisify } from "node:util";
|
|
7
7
|
import { reduceAgentResponse } from "../compressors/agent-response-reducer.js";
|
|
8
8
|
import { compressOutputWithEngine } from "../compressors/index.js";
|
|
9
|
+
import { buildCachePayload } from "../core/cache-normalizer.js";
|
|
9
10
|
import { ensureWorkspace, writeJson } from "../core/config.js";
|
|
10
11
|
import { ingestDocument } from "../core/document-ingest.js";
|
|
11
12
|
import { MetricsStore } from "../core/metrics-store.js";
|
|
@@ -30,52 +31,60 @@ async function writeFixture(root, name, content) {
|
|
|
30
31
|
await fs.writeFile(path.resolve(dirs.fixtures, name), content, "utf8");
|
|
31
32
|
}
|
|
32
33
|
export async function prepareBenchmarks(root = process.cwd()) {
|
|
34
|
+
const npmInstall = [
|
|
35
|
+
"npm WARN deprecated left-pad@1.3.0: use String.prototype.padStart()",
|
|
36
|
+
"added 421 packages, and audited 422 packages in 12s",
|
|
37
|
+
...Array.from({ length: 220 }, (_, index) => `npm http fetch GET 200 https://registry.npmjs.org/pkg-${index} 24ms (cache hit)`),
|
|
38
|
+
"5 moderate severity vulnerabilities",
|
|
39
|
+
"Run npm audit for details"
|
|
40
|
+
].join("\n");
|
|
41
|
+
const vitestFailure = [
|
|
42
|
+
"FAIL tests/app.test.ts > app > returns expected value",
|
|
43
|
+
"AssertionError: expected 1 to equal 2",
|
|
44
|
+
"Expected: 2",
|
|
45
|
+
"Received: 1",
|
|
46
|
+
" at tests/app.test.ts:12:10",
|
|
47
|
+
" at src/app.ts:7:3",
|
|
48
|
+
...Array.from({ length: 180 }, () => "PASS tests/noise.test.ts")
|
|
49
|
+
].join("\n");
|
|
50
|
+
const tscError = [
|
|
51
|
+
"src/commands/self.ts:42:7 - error TS2322: Type 'string' is not assignable to type 'number'.",
|
|
52
|
+
"42 const count: number = value;",
|
|
53
|
+
"Found 1 error in src/commands/self.ts:42",
|
|
54
|
+
...Array.from({ length: 120 }, (_, index) => `message TS${index}: incremental build trace`)
|
|
55
|
+
].join("\n");
|
|
33
56
|
const gitDiff = [
|
|
34
|
-
"On branch main",
|
|
35
|
-
"Changes not staged for commit:",
|
|
36
|
-
" modified: src/app.ts",
|
|
37
|
-
" deleted: src/old.ts",
|
|
38
57
|
"diff --git a/src/app.ts b/src/app.ts",
|
|
39
58
|
"index 1111111..2222222 100644",
|
|
40
59
|
"--- a/src/app.ts",
|
|
41
60
|
"+++ b/src/app.ts",
|
|
42
61
|
"@@ -1,3 +1,5 @@",
|
|
43
|
-
" export function app() {",
|
|
44
62
|
"- return 1;",
|
|
45
63
|
"+ return 2;",
|
|
46
|
-
"
|
|
47
|
-
"
|
|
64
|
+
"diff --git a/docs/usage.md b/docs/usage.md",
|
|
65
|
+
"--- a/docs/usage.md",
|
|
66
|
+
"+++ b/docs/usage.md",
|
|
67
|
+
"@@ -10,4 +10,8 @@",
|
|
68
|
+
"+Use soturail self all before release commits.",
|
|
69
|
+
"rename from src/old.ts",
|
|
70
|
+
"rename to src/new.ts",
|
|
48
71
|
...Array.from({ length: 300 }, (_, index) => `+ repeated diff noise ${index}`)
|
|
49
72
|
].join("\n");
|
|
50
|
-
const
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
" File \"tests/test_app.py\", line 7, in test_app",
|
|
58
|
-
"AssertionError: boom",
|
|
59
|
-
...Array.from({ length: 250 }, () => "PASS tests/noise.test.ts")
|
|
73
|
+
const gitStatus = [
|
|
74
|
+
"On branch main",
|
|
75
|
+
"Changes not staged for commit:",
|
|
76
|
+
...Array.from({ length: 120 }, (_, index) => ` modified: src/generated-${index}.ts`),
|
|
77
|
+
" deleted: src/old.ts",
|
|
78
|
+
"Untracked files:",
|
|
79
|
+
" docs/windows.md"
|
|
60
80
|
].join("\n");
|
|
61
|
-
const
|
|
81
|
+
const jsonPayload = JSON.stringify({
|
|
62
82
|
status: "error",
|
|
63
83
|
message: "Permission denied",
|
|
64
84
|
path: "src/app.ts",
|
|
65
|
-
|
|
85
|
+
request_id: "req_123",
|
|
86
|
+
items: Array.from({ length: 160 }, (_, index) => ({ id: index, ok: index !== 77, error: index === 77 ? "timeout" : null }))
|
|
66
87
|
}, null, 2);
|
|
67
|
-
const noisyLog = [
|
|
68
|
-
...Array.from({ length: 150 }, () => "server ok healthcheck passed"),
|
|
69
|
-
"WARN permission refused for src/secret.ts:4",
|
|
70
|
-
"ERROR timeout while reading src/app.ts:22",
|
|
71
|
-
...Array.from({ length: 150 }, () => "server ok healthcheck passed")
|
|
72
|
-
].join("\n");
|
|
73
|
-
const largeCode = [
|
|
74
|
-
...Array.from({ length: 80 }, (_, index) => `export function helper${index}() { return ${index}; }`),
|
|
75
|
-
"export class CriticalService { run() { return 'ok'; } }",
|
|
76
|
-
...Array.from({ length: 80 }, (_, index) => `def py_helper_${index}(): return ${index}`),
|
|
77
|
-
"public class App { public void run() {} }"
|
|
78
|
-
].join("\n");
|
|
79
88
|
const verboseAi = [
|
|
80
89
|
"I think the main issue is probably that tests are failing because src/app.ts:12 returns the wrong value.",
|
|
81
90
|
"Security warning: do not run rm -rf or git push automatically.",
|
|
@@ -85,8 +94,15 @@ export async function prepareBenchmarks(root = process.cwd()) {
|
|
|
85
94
|
" return 2;",
|
|
86
95
|
"}",
|
|
87
96
|
"```",
|
|
88
|
-
...Array.from({ length:
|
|
97
|
+
...Array.from({ length: 48 }, () => "Basically, this is extra explanation that can be shorter.")
|
|
89
98
|
].join("\n");
|
|
99
|
+
const readmeText = [
|
|
100
|
+
"# SotuRail",
|
|
101
|
+
"SotuRail is a local-first Context OS for AI coding agents.",
|
|
102
|
+
"Run npm install -g soturail, then soturail init.",
|
|
103
|
+
"Use soturail run npm test to preserve raw logs.",
|
|
104
|
+
...Array.from({ length: 60 }, () => "This documentation paragraph repeats project goals and usage details for compression testing.")
|
|
105
|
+
].join("\n\n");
|
|
90
106
|
const rulesDoc = [
|
|
91
107
|
"# Runtime",
|
|
92
108
|
"- Project must run on Node.js 20 or newer.",
|
|
@@ -96,126 +112,74 @@ export async function prepareBenchmarks(root = process.cwd()) {
|
|
|
96
112
|
"# Security",
|
|
97
113
|
"- git push must never be run automatically through soturail run."
|
|
98
114
|
].join("\n");
|
|
99
|
-
await writeFixture(root, "
|
|
100
|
-
await writeFixture(root, "
|
|
101
|
-
await writeFixture(root, "
|
|
102
|
-
await writeFixture(root, "
|
|
103
|
-
await writeFixture(root, "
|
|
115
|
+
await writeFixture(root, "npm-install-noisy.txt", npmInstall);
|
|
116
|
+
await writeFixture(root, "vitest-failure-stacktrace.txt", vitestFailure);
|
|
117
|
+
await writeFixture(root, "tsc-error.txt", tscError);
|
|
118
|
+
await writeFixture(root, "git-diff-multiple.txt", gitDiff);
|
|
119
|
+
await writeFixture(root, "git-status-many.txt", gitStatus);
|
|
120
|
+
await writeFixture(root, "json-tool-payload.json", jsonPayload);
|
|
104
121
|
await writeFixture(root, "verbose-ai-answer.md", verboseAi);
|
|
122
|
+
await writeFixture(root, "readme-doc.md", readmeText);
|
|
105
123
|
await writeFixture(root, "rules-doc.md", rulesDoc);
|
|
106
124
|
return "Benchmark fixtures prepared in benchmarks/fixtures.\n";
|
|
107
125
|
}
|
|
108
126
|
async function readFixture(root, name) {
|
|
109
127
|
return fs.readFile(path.resolve(benchDirs(root).fixtures, name), "utf8");
|
|
110
128
|
}
|
|
111
|
-
function
|
|
129
|
+
function reductionPercent(rawTokens, reducedTokens) {
|
|
112
130
|
return rawTokens === 0 ? 0 : Number((((rawTokens - reducedTokens) / rawTokens) * 100).toFixed(2));
|
|
113
131
|
}
|
|
114
|
-
async function terminalResult(root, fixture, command, engine) {
|
|
132
|
+
async function terminalResult(root, caseId, fixture, command, engine) {
|
|
115
133
|
const raw = await readFixture(root, fixture);
|
|
116
134
|
const start = performance.now();
|
|
117
|
-
const reduced = await compressOutputWithEngine(command, raw, `bench-${
|
|
118
|
-
const
|
|
135
|
+
const reduced = await compressOutputWithEngine(command, raw, `bench-${caseId}`, engine, root);
|
|
136
|
+
const runtime = performance.now() - start;
|
|
119
137
|
const text = reduced.summary;
|
|
120
138
|
const rawTokens = estimateTokens(raw);
|
|
121
139
|
const reducedTokens = estimateTokens(text);
|
|
122
|
-
const quality = qualityCheck(
|
|
140
|
+
const quality = qualityCheck(caseId, text);
|
|
123
141
|
if (!quality.ok) {
|
|
124
|
-
throw new Error(`Benchmark quality check failed for ${
|
|
142
|
+
throw new Error(`Benchmark quality check failed for ${caseId}: ${quality.reason}`);
|
|
125
143
|
}
|
|
126
|
-
return {
|
|
127
|
-
|
|
144
|
+
return makeResult({
|
|
145
|
+
case_id: caseId,
|
|
128
146
|
category: "terminal_compression",
|
|
129
147
|
engine: reduced.engine,
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
reduced_sha256: sha256(text),
|
|
141
|
-
quality_passed: true,
|
|
142
|
-
details: { compressor: reduced.compressor }
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
async function jsonResult(root, engine) {
|
|
146
|
-
const raw = await readFixture(root, "noisy-json.json");
|
|
147
|
-
const start = performance.now();
|
|
148
|
-
const reduced = await compressOutputWithEngine("cat output.json", raw, "bench-noisy-json", engine, root);
|
|
149
|
-
const wall = performance.now() - start;
|
|
150
|
-
const text = reduced.summary;
|
|
151
|
-
const rawTokens = estimateTokens(raw);
|
|
152
|
-
const reducedTokens = estimateTokens(text);
|
|
153
|
-
const quality = qualityCheck("noisy-json.json", text);
|
|
154
|
-
if (!quality.ok) {
|
|
155
|
-
throw new Error(`Benchmark quality check failed for noisy-json.json: ${quality.reason}`);
|
|
156
|
-
}
|
|
157
|
-
return {
|
|
158
|
-
name: "noisy-json.json",
|
|
159
|
-
category: "json_tool_payload_compression",
|
|
160
|
-
engine: reduced.engine,
|
|
161
|
-
raw_bytes: Buffer.byteLength(raw),
|
|
162
|
-
reduced_bytes: Buffer.byteLength(text),
|
|
163
|
-
estimated_raw_tokens: rawTokens,
|
|
164
|
-
estimated_reduced_tokens: reducedTokens,
|
|
165
|
-
compression_ratio_percent: compressionPercent(rawTokens, reducedTokens),
|
|
166
|
-
wall_time_ms: Number(wall.toFixed(3)),
|
|
167
|
-
preserved_error_lines_count: (text.match(/\b(error|denied|timeout|permission)\b/gi) ?? []).length,
|
|
168
|
-
preserved_file_paths_count: (text.match(/src[\\/][\w.-]+(?::\d+(?::\d+)?)?/g) ?? []).length,
|
|
169
|
-
raw_id: null,
|
|
170
|
-
raw_sha256: sha256(raw),
|
|
171
|
-
reduced_sha256: sha256(text),
|
|
172
|
-
quality_passed: true,
|
|
173
|
-
details: reduced.details ?? {}
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
function qualityCheck(fixture, text) {
|
|
177
|
-
if (fixture.includes("test") && (!text.includes("AssertionError") || !text.includes("tests/app.test.ts"))) {
|
|
178
|
-
return { ok: false, reason: "test assertion or path missing" };
|
|
179
|
-
}
|
|
180
|
-
if (fixture.includes("git") && (!text.includes("src/app.ts") || !text.includes("@@ -1,3 +1,5 @@"))) {
|
|
181
|
-
return { ok: false, reason: "git path or hunk missing" };
|
|
182
|
-
}
|
|
183
|
-
if (fixture.includes("json") && (!text.includes("Permission denied") || !text.includes("timeout"))) {
|
|
184
|
-
return { ok: false, reason: "JSON error primitives missing" };
|
|
185
|
-
}
|
|
186
|
-
if (fixture.includes("log") && (!text.includes("permission refused") || !text.includes("src/app.ts:22"))) {
|
|
187
|
-
return { ok: false, reason: "log signal missing" };
|
|
188
|
-
}
|
|
189
|
-
return { ok: true };
|
|
148
|
+
raw,
|
|
149
|
+
reduced: text,
|
|
150
|
+
rawTokens,
|
|
151
|
+
reducedTokens,
|
|
152
|
+
reduction: reductionPercent(rawTokens, reducedTokens),
|
|
153
|
+
runtime,
|
|
154
|
+
quality: true,
|
|
155
|
+
notes: quality.note ?? "Terminal output reducer preserved required signals.",
|
|
156
|
+
details: { compressor: reduced.compressor, ...(reduced.details ?? {}) }
|
|
157
|
+
});
|
|
190
158
|
}
|
|
191
|
-
async function responseResult(root, mode) {
|
|
192
|
-
const raw = await readFixture(root,
|
|
159
|
+
async function responseResult(root, fixture, mode) {
|
|
160
|
+
const raw = await readFixture(root, fixture);
|
|
193
161
|
const start = performance.now();
|
|
194
162
|
const reduced = reduceAgentResponse(raw, mode);
|
|
195
|
-
const
|
|
196
|
-
return {
|
|
197
|
-
|
|
163
|
+
const runtime = performance.now() - start;
|
|
164
|
+
return makeResult({
|
|
165
|
+
case_id: `${fixture.replace(/\.[^.]+$/, "")}-${mode}`,
|
|
198
166
|
category: "agent_response_compression",
|
|
199
167
|
engine: "ts",
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
raw_id: null,
|
|
209
|
-
raw_sha256: sha256(raw),
|
|
210
|
-
reduced_sha256: sha256(reduced.output),
|
|
211
|
-
quality_passed: reduced.output.includes("npm test") && reduced.output.includes("Security warning"),
|
|
168
|
+
raw,
|
|
169
|
+
reduced: reduced.output,
|
|
170
|
+
rawTokens: reduced.raw_tokens,
|
|
171
|
+
reducedTokens: reduced.compressed_tokens,
|
|
172
|
+
reduction: reduced.reduction_percent,
|
|
173
|
+
runtime,
|
|
174
|
+
quality: reduced.output.includes("npm test") || reduced.output.includes("soturail run"),
|
|
175
|
+
notes: `Agent response compression mode: ${mode}.`,
|
|
212
176
|
details: {
|
|
213
177
|
mode,
|
|
214
178
|
preserved_commands_count: reduced.preserved_commands_count,
|
|
215
179
|
preserved_code_blocks_count: reduced.preserved_code_blocks_count,
|
|
216
180
|
preserved_security_warnings_count: reduced.preserved_security_warnings_count
|
|
217
181
|
}
|
|
218
|
-
};
|
|
182
|
+
});
|
|
219
183
|
}
|
|
220
184
|
async function rulesResult(root) {
|
|
221
185
|
const raw = await readFixture(root, "rules-doc.md");
|
|
@@ -225,34 +189,123 @@ async function rulesResult(root) {
|
|
|
225
189
|
const rules = extractRules(document);
|
|
226
190
|
const checks = await validateRules(rules, root);
|
|
227
191
|
const output = JSON.stringify({ rules, checks }, null, 2);
|
|
228
|
-
const
|
|
229
|
-
return {
|
|
230
|
-
|
|
192
|
+
const runtime = performance.now() - start;
|
|
193
|
+
return makeResult({
|
|
194
|
+
case_id: "rules-extraction-markdown",
|
|
231
195
|
category: "knowledge_structuring",
|
|
232
196
|
engine: "ts",
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
raw_id: null,
|
|
242
|
-
raw_sha256: sha256(raw),
|
|
243
|
-
reduced_sha256: sha256(output),
|
|
244
|
-
quality_passed: rules.length >= 3,
|
|
197
|
+
raw,
|
|
198
|
+
reduced: output,
|
|
199
|
+
rawTokens: estimateTokens(raw),
|
|
200
|
+
reducedTokens: estimateTokens(output),
|
|
201
|
+
reduction: null,
|
|
202
|
+
runtime,
|
|
203
|
+
quality: rules.length >= 3,
|
|
204
|
+
notes: "Knowledge-to-Rules is reusable structuring, not pure compression.",
|
|
245
205
|
details: {
|
|
246
206
|
extracted_rules_count: rules.length,
|
|
247
|
-
raw_document_tokens: estimateTokens(raw),
|
|
248
|
-
structured_rule_tokens: estimateTokens(output),
|
|
249
|
-
reuse_value_note: "Structured rules may be larger than the seed document but are reusable, citable and validator-friendly.",
|
|
250
207
|
validator_success_count: checks.filter((check) => check.ok).length,
|
|
251
208
|
validator_failure_count: checks.filter((check) => !check.ok).length,
|
|
252
209
|
citations_count: rules.length,
|
|
253
|
-
source_sections_preserved_count: new Set(rules.map((rule) => rule.source_section)).size
|
|
254
|
-
manual_expansion_count: 0
|
|
210
|
+
source_sections_preserved_count: new Set(rules.map((rule) => rule.source_section)).size
|
|
255
211
|
}
|
|
212
|
+
});
|
|
213
|
+
}
|
|
214
|
+
async function cacheStabilityResult(root) {
|
|
215
|
+
const start = performance.now();
|
|
216
|
+
const first = await buildCachePayload(root, "dynamic footer raw_id=one");
|
|
217
|
+
const second = await buildCachePayload(root, "dynamic footer raw_id=two");
|
|
218
|
+
const marker = "<!-- soturail:dynamic:dynamic-footer -->";
|
|
219
|
+
const stablePrefixEqual = first.payload.split(marker)[0] === second.payload.split(marker)[0];
|
|
220
|
+
const runtime = performance.now() - start;
|
|
221
|
+
return makeResult({
|
|
222
|
+
case_id: "cache-stable-prefix",
|
|
223
|
+
category: "cache_stability",
|
|
224
|
+
engine: "ts",
|
|
225
|
+
raw: first.payload,
|
|
226
|
+
reduced: second.payload,
|
|
227
|
+
rawTokens: estimateTokens(first.payload),
|
|
228
|
+
reducedTokens: estimateTokens(second.payload),
|
|
229
|
+
reduction: null,
|
|
230
|
+
runtime,
|
|
231
|
+
quality: stablePrefixEqual,
|
|
232
|
+
notes: "Verifies dynamic footer changes do not move stable cache-friendly prefix blocks.",
|
|
233
|
+
details: { stable_prefix_equal: stablePrefixEqual }
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
async function nativeEngineResult(root) {
|
|
237
|
+
const start = performance.now();
|
|
238
|
+
const native = await detectNativeEngine(root);
|
|
239
|
+
const runtime = performance.now() - start;
|
|
240
|
+
const text = native.available
|
|
241
|
+
? `native available at ${native.path}\nversion: ${native.version ?? "unknown"}`
|
|
242
|
+
: "native engine unavailable; no native benchmark results were fabricated";
|
|
243
|
+
return makeResult({
|
|
244
|
+
case_id: "native-engine-availability",
|
|
245
|
+
category: "native_engine",
|
|
246
|
+
engine: native.available ? "native" : "unavailable",
|
|
247
|
+
raw: text,
|
|
248
|
+
reduced: text,
|
|
249
|
+
rawTokens: estimateTokens(text),
|
|
250
|
+
reducedTokens: estimateTokens(text),
|
|
251
|
+
reduction: null,
|
|
252
|
+
runtime,
|
|
253
|
+
quality: true,
|
|
254
|
+
notes: native.available ? "Native binary detected." : "Native binary unavailable; TypeScript benchmark remains authoritative.",
|
|
255
|
+
details: { available: native.available, path: native.path ?? null, version: native.version ?? null }
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
function qualityCheck(caseId, text) {
|
|
259
|
+
if (caseId.includes("vitest") && (!text.includes("AssertionError") || !text.includes("tests/app.test.ts"))) {
|
|
260
|
+
return { ok: false, reason: "Vitest assertion or path missing" };
|
|
261
|
+
}
|
|
262
|
+
if (caseId.includes("tsc") && (!text.includes("TS2322") || !text.includes("src/commands/self.ts"))) {
|
|
263
|
+
return { ok: false, reason: "TypeScript diagnostic missing" };
|
|
264
|
+
}
|
|
265
|
+
if (caseId.includes("git-diff") && (!text.includes("src/app.ts") || !text.includes("@@ -1,3 +1,5 @@"))) {
|
|
266
|
+
return { ok: false, reason: "git diff path or hunk missing" };
|
|
267
|
+
}
|
|
268
|
+
if (caseId.includes("git-status") && !text.includes("src/generated-")) {
|
|
269
|
+
return { ok: false, reason: "git status changed path missing" };
|
|
270
|
+
}
|
|
271
|
+
if (caseId.includes("json") && (!text.includes("Permission denied") || !text.includes("timeout"))) {
|
|
272
|
+
return { ok: false, reason: "JSON error primitives missing" };
|
|
273
|
+
}
|
|
274
|
+
if (caseId.includes("npm-install") && (!text.includes("moderate severity") || !text.includes("npm audit"))) {
|
|
275
|
+
return { ok: false, reason: "npm warning or command suggestion missing" };
|
|
276
|
+
}
|
|
277
|
+
return { ok: true };
|
|
278
|
+
}
|
|
279
|
+
function makeResult(input) {
|
|
280
|
+
const errors = (input.reduced.match(/\b(error|warn|fail|assertion|timeout|denied|refused|TS\d+)\b/gi) ?? []).length;
|
|
281
|
+
const paths = (input.reduced.match(/(?:src|tests|docs|\.github)[\\/][\w./-]+(?::\d+(?::\d+)?)?/g) ?? []).length;
|
|
282
|
+
const commands = (input.reduced.match(/\b(?:npm|npx|node|soturail|git|tsc|vitest|pytest)\b[^\n]*/g) ?? []).length;
|
|
283
|
+
return {
|
|
284
|
+
case_id: input.case_id,
|
|
285
|
+
name: input.case_id,
|
|
286
|
+
category: input.category,
|
|
287
|
+
engine: input.engine,
|
|
288
|
+
raw_bytes: Buffer.byteLength(input.raw),
|
|
289
|
+
reduced_bytes: Buffer.byteLength(input.reduced),
|
|
290
|
+
raw_tokens: input.rawTokens,
|
|
291
|
+
reduced_tokens: input.reducedTokens,
|
|
292
|
+
reduction_percent: input.reduction,
|
|
293
|
+
estimated_raw_tokens: input.rawTokens,
|
|
294
|
+
estimated_reduced_tokens: input.reducedTokens,
|
|
295
|
+
compression_ratio_percent: input.reduction,
|
|
296
|
+
runtime_ms: Number(input.runtime.toFixed(3)),
|
|
297
|
+
wall_time_ms: Number(input.runtime.toFixed(3)),
|
|
298
|
+
quality_passed: input.quality,
|
|
299
|
+
preserved_errors_count: errors,
|
|
300
|
+
preserved_paths_count: paths,
|
|
301
|
+
preserved_commands_count: commands,
|
|
302
|
+
preserved_error_lines_count: errors,
|
|
303
|
+
preserved_file_paths_count: paths,
|
|
304
|
+
raw_id: null,
|
|
305
|
+
raw_sha256: sha256(input.raw),
|
|
306
|
+
reduced_sha256: sha256(input.reduced),
|
|
307
|
+
notes: input.notes,
|
|
308
|
+
details: input.details
|
|
256
309
|
};
|
|
257
310
|
}
|
|
258
311
|
export async function runBenchmarks(options = {}, root = process.cwd()) {
|
|
@@ -260,38 +313,34 @@ export async function runBenchmarks(options = {}, root = process.cwd()) {
|
|
|
260
313
|
await prepareBenchmarks(root);
|
|
261
314
|
const engine = options.engine ?? "ts";
|
|
262
315
|
if (engine === "native" && !(await detectNativeEngine(root)).available) {
|
|
263
|
-
const
|
|
264
|
-
await
|
|
265
|
-
|
|
266
|
-
const report = [
|
|
267
|
-
"# SotuRail Benchmark Report",
|
|
268
|
-
"",
|
|
269
|
-
"Native engine was requested but `soturail-native` is not available. Build it with `npm run build:native`.",
|
|
270
|
-
""
|
|
271
|
-
].join("\n");
|
|
272
|
-
await writeJson(path.resolve(dirs.results, "latest.json"), { generated_at: new Date().toISOString(), engine, native_available: false, results: [] });
|
|
273
|
-
await fs.writeFile(path.resolve(dirs.reports, "latest.md"), report, "utf8");
|
|
274
|
-
return [];
|
|
316
|
+
const results = [await nativeEngineResult(root)];
|
|
317
|
+
await writeBenchmarkFiles(root, engine, results);
|
|
318
|
+
return results;
|
|
275
319
|
}
|
|
276
320
|
const results = [
|
|
277
|
-
await terminalResult(root, "noisy-
|
|
278
|
-
await terminalResult(root, "
|
|
279
|
-
await terminalResult(root, "
|
|
280
|
-
await
|
|
281
|
-
await
|
|
282
|
-
await
|
|
283
|
-
await responseResult(root, "
|
|
284
|
-
await responseResult(root, "
|
|
285
|
-
await responseResult(root, "docs"),
|
|
286
|
-
await rulesResult(root)
|
|
321
|
+
await terminalResult(root, "npm-install-noisy", "npm-install-noisy.txt", "npm install", engine),
|
|
322
|
+
await terminalResult(root, "vitest-failure-stacktrace", "vitest-failure-stacktrace.txt", "npm test", engine),
|
|
323
|
+
await terminalResult(root, "tsc-error", "tsc-error.txt", "npm run build", engine),
|
|
324
|
+
await terminalResult(root, "git-diff-multiple", "git-diff-multiple.txt", "git diff", engine),
|
|
325
|
+
await terminalResult(root, "git-status-many", "git-status-many.txt", "git status", engine),
|
|
326
|
+
await terminalResult(root, "json-tool-payload", "json-tool-payload.json", "cat tool-output.json", engine),
|
|
327
|
+
await responseResult(root, "verbose-ai-answer.md", "concise"),
|
|
328
|
+
await responseResult(root, "verbose-ai-answer.md", "review"),
|
|
329
|
+
await responseResult(root, "readme-doc.md", "docs"),
|
|
330
|
+
await rulesResult(root),
|
|
331
|
+
await cacheStabilityResult(root),
|
|
332
|
+
await nativeEngineResult(root)
|
|
287
333
|
];
|
|
334
|
+
await writeBenchmarkFiles(root, engine, results);
|
|
335
|
+
await new MetricsStore(root).append({ type: "bench_run", details: { engine, results_count: results.length } });
|
|
336
|
+
return results;
|
|
337
|
+
}
|
|
338
|
+
async function writeBenchmarkFiles(root, engine, results) {
|
|
288
339
|
const dirs = benchDirs(root);
|
|
289
340
|
await fs.mkdir(dirs.results, { recursive: true });
|
|
290
341
|
await fs.mkdir(dirs.reports, { recursive: true });
|
|
291
342
|
await writeJson(path.resolve(dirs.results, "latest.json"), { generated_at: new Date().toISOString(), engine, results });
|
|
292
343
|
await fs.writeFile(path.resolve(dirs.reports, "latest.md"), renderReport(results), "utf8");
|
|
293
|
-
await new MetricsStore(root).append({ type: "bench_run", details: { engine, results_count: results.length } });
|
|
294
|
-
return results;
|
|
295
344
|
}
|
|
296
345
|
export async function compareEngines(root = process.cwd()) {
|
|
297
346
|
const native = await detectNativeEngine(root);
|
|
@@ -301,19 +350,19 @@ export async function compareEngines(root = process.cwd()) {
|
|
|
301
350
|
const tsResults = await runBenchmarks({ engine: "ts" }, root);
|
|
302
351
|
const nativeResults = await runBenchmarks({ engine: "native" }, root);
|
|
303
352
|
const rows = tsResults.map((tsResult) => {
|
|
304
|
-
const nativeResult = nativeResults.find((item) => item.
|
|
353
|
+
const nativeResult = nativeResults.find((item) => item.case_id === tsResult.case_id && item.category === tsResult.category);
|
|
305
354
|
if (!nativeResult) {
|
|
306
|
-
return `| ${tsResult.
|
|
355
|
+
return `| ${tsResult.case_id} | ${tsResult.category} | n/a | n/a | n/a |`;
|
|
307
356
|
}
|
|
308
|
-
const speedup = nativeResult.
|
|
357
|
+
const speedup = nativeResult.runtime_ms === 0
|
|
309
358
|
? 0
|
|
310
|
-
: Number((((tsResult.
|
|
311
|
-
return `| ${tsResult.
|
|
359
|
+
: Number((((tsResult.runtime_ms - nativeResult.runtime_ms) / tsResult.runtime_ms) * 100).toFixed(2));
|
|
360
|
+
return `| ${tsResult.case_id} | ${tsResult.category} | ${tsResult.runtime_ms} | ${nativeResult.runtime_ms} | ${speedup}% |`;
|
|
312
361
|
});
|
|
313
362
|
const report = [
|
|
314
363
|
"# SotuRail Engine Comparison",
|
|
315
364
|
"",
|
|
316
|
-
"| Fixture | Category | TypeScript
|
|
365
|
+
"| Fixture | Category | TypeScript runtime_ms | Native runtime_ms | speedup_percent |",
|
|
317
366
|
"|---|---|---:|---:|---:|",
|
|
318
367
|
...rows,
|
|
319
368
|
""
|
|
@@ -326,24 +375,32 @@ export async function reportBenchmarks(root = process.cwd()) {
|
|
|
326
375
|
const reportPath = path.resolve(benchDirs(root).reports, "latest.md");
|
|
327
376
|
return fs.readFile(reportPath, "utf8").catch(() => "No benchmark report found. Run soturail bench run first.\n");
|
|
328
377
|
}
|
|
378
|
+
export function summarizeBenchmarkResults(results) {
|
|
379
|
+
const grouped = groupByCategory(results);
|
|
380
|
+
const failed = results.filter((result) => !result.quality_passed).length;
|
|
381
|
+
return [
|
|
382
|
+
`cases_count: ${results.length}`,
|
|
383
|
+
`quality_failed_count: ${failed}`,
|
|
384
|
+
...Object.entries(grouped).map(([category, count]) => `${category}: ${count}`)
|
|
385
|
+
].join("\n");
|
|
386
|
+
}
|
|
329
387
|
function renderReport(results) {
|
|
330
388
|
const grouped = groupByCategory(results);
|
|
331
|
-
const rows = results.map((result) => `| ${result.
|
|
389
|
+
const rows = results.map((result) => `| ${result.case_id} | ${result.category} | ${result.engine} | ${result.raw_tokens} | ${result.reduced_tokens} | ${result.reduction_percent === null ? "n/a" : `${result.reduction_percent}%`} | ${result.runtime_ms} | ${result.quality_passed ? "pass" : "fail"} | ${result.notes} |`);
|
|
332
390
|
return [
|
|
333
391
|
"# SotuRail Benchmark Report",
|
|
334
392
|
"",
|
|
335
|
-
"Generated from deterministic local fixtures. No external RTK/Squeez comparison numbers are included unless a user runs optional comparison locally.",
|
|
393
|
+
"Generated from deterministic local fixtures. No external RTK/Squeez/NTK comparison numbers are included unless a user runs optional comparison locally.",
|
|
336
394
|
"",
|
|
337
395
|
"Categories:",
|
|
338
396
|
...Object.entries(grouped).map(([category, count]) => `- ${category}: ${count} case(s)`),
|
|
339
397
|
"",
|
|
340
|
-
"|
|
|
341
|
-
"
|
|
398
|
+
"| case_id | category | engine | raw_tokens | reduced_tokens | reduction_percent | runtime_ms | quality | notes |",
|
|
399
|
+
"|---|---|---:|---:|---:|---:|---:|---|---|",
|
|
342
400
|
...rows,
|
|
343
401
|
"",
|
|
344
|
-
"
|
|
345
|
-
""
|
|
346
|
-
"Knowledge-to-Rules is reported as reusable structuring, not pure compression."
|
|
402
|
+
"Knowledge structuring cases are extraction and validation tasks, not failed compression cases.",
|
|
403
|
+
"Native engine rows never fabricate native speed numbers when the native binary is unavailable."
|
|
347
404
|
].join("\n") + "\n";
|
|
348
405
|
}
|
|
349
406
|
function groupByCategory(results) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bench.js","sourceRoot":"","sources":["../../src/commands/bench.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bench.js","sourceRoot":"","sources":["../../src/commands/bench.ts"],"names":[],"mappings":"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"}
|