mirror of
https://github.com/morluto/rea.git
synced 2026-11-05 06:15:59 +00:00
feat(cli): report opt-in command timings (#7042)
* feat(cli): report opt-in command timings * fix(cli): time standalone MCP doctor * fix(cli): retain timing on doctor errors * fix(cli): preserve formatted version output with command timings --------- Co-authored-by: dhruvac29 <dhruvac29@users.noreply.github.com> Co-authored-by: gensokyo-dev <342580529+gensokyo-dev@users.noreply.github.com>
This commit is contained in:
7 files changed
+178
-15
No files matched your search
+28
-9
@@ -68,15 +68,34 @@ if (!(await compiledRuntimeExists(runtimeFiles))) {
|
||||
await runMcpHttpEntrypoint(args.slice(1));
|
||||
} else if (isMcpDoctorMode) {
|
||||
guardClosedStdout();
|
||||
const { runProductionMcpDoctorCli } =
|
||||
await import("../dist/cli-runtime/mcpDoctor.js");
|
||||
const result = await runProductionMcpDoctorCli(doctorArguments, {
|
||||
dispatcherPath: fileURLToPath(import.meta.url),
|
||||
packageRoot,
|
||||
stdoutIsTerminal: process.stdout.isTTY === true,
|
||||
});
|
||||
writeStdout(result.output);
|
||||
process.exitCode = result.exitCode;
|
||||
// Doctor runs outside Incur, so handle its global timing flag here. Keep a
|
||||
// token consumed by --format as a value, even when it looks like a flag.
|
||||
const outputValues = new Set(
|
||||
builtinArguments
|
||||
.splitIncurBuiltinArguments(doctorArguments)
|
||||
.outputValues.map(({ index }) => index),
|
||||
);
|
||||
const doctorCliArguments = doctorArguments.filter(
|
||||
(argument, index) => argument !== "--timings" || outputValues.has(index),
|
||||
);
|
||||
const timingRequested = doctorCliArguments.length !== doctorArguments.length;
|
||||
const started = performance.now();
|
||||
try {
|
||||
const { runProductionMcpDoctorCli } =
|
||||
await import("../dist/cli-runtime/mcpDoctor.js");
|
||||
const result = await runProductionMcpDoctorCli(doctorCliArguments, {
|
||||
dispatcherPath: fileURLToPath(import.meta.url),
|
||||
packageRoot,
|
||||
stdoutIsTerminal: process.stdout.isTTY === true,
|
||||
});
|
||||
writeStdout(result.output);
|
||||
process.exitCode = result.exitCode;
|
||||
} finally {
|
||||
if (timingRequested)
|
||||
process.stderr.write(
|
||||
`${JSON.stringify({ rea_timings: { version: 1, command_ms: Math.round(performance.now() - started) } })}\n`,
|
||||
);
|
||||
}
|
||||
} else {
|
||||
const {
|
||||
cliConfigurationError,
|
||||
|
||||
Reference in new issue
Block a user