mirror of
https://github.com/morluto/rea
synced 2026-10-27 22:45:19 -04:00
fix(cli): stream JSON results at the shared command boundary
Route ordinary CLI results through the bounded JSON writer after command registration, including managed member inspection. Remove JavaScript-specific output plumbing while preserving filters, envelopes, cancellation, and failure exits. Measure formatted UTF-16 expansion before Incur token counting and return resource_constraint above the runtime string limit, with recovery guidance. Validate output above the real V8 string limit by SHA-256 and exercise the compiled managed provider. Clean-worktree validation: npm run check; 76 focused tests passed, with 2 optional-provider skips; test discovery passed. Fixes #1371.
This commit is contained in:
@@ -2,15 +2,12 @@ import { analyzeJavaScriptApplication } from "../application/javascript/JavaScri
|
||||
import { createProgressReporter } from "../application/ProgressReporter.js";
|
||||
import { projectAnalysisError } from "../domain/analysisErrorProjection.js";
|
||||
import type { JsonValue } from "../domain/jsonValue.js";
|
||||
import type { CliCommandOutput } from "./streamedJsonOutput.js";
|
||||
|
||||
/** Execute the shared one-shot CLI boundary for static JavaScript analysis. */
|
||||
export const runCliJavaScriptApplicationAnalysis = async (
|
||||
input: unknown,
|
||||
output?: CliCommandOutput,
|
||||
signal?: AbortSignal,
|
||||
): Promise<JsonValue | undefined> => {
|
||||
const started = performance.now();
|
||||
): Promise<JsonValue> => {
|
||||
const progress = createProgressReporter(
|
||||
async (update) => {
|
||||
process.stderr.write(`${JSON.stringify({ rea_progress: update })}\n`);
|
||||
@@ -21,18 +18,7 @@ export const runCliJavaScriptApplicationAnalysis = async (
|
||||
progress,
|
||||
...(signal === undefined ? {} : { signal }),
|
||||
});
|
||||
const value = result.ok ? result.value : cliError(result.error);
|
||||
if (
|
||||
output !== undefined &&
|
||||
(await output.output.write(value, {
|
||||
command: output.command,
|
||||
format: output.format,
|
||||
duration: `${Math.round(performance.now() - started)}ms`,
|
||||
}))
|
||||
)
|
||||
// Keep failures visible to command logging after the stream has handled stdout.
|
||||
return result.ok ? undefined : value;
|
||||
return value;
|
||||
return result.ok ? result.value : cliError(result.error);
|
||||
};
|
||||
|
||||
const cliError = (
|
||||
|
||||
Reference in New Issue
Block a user