poe-code 3.0.372 → 3.0.374

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.
@@ -1527,6 +1527,37 @@ function resolveOutput(resolvedFlags) {
1527
1527
  }
1528
1528
  return "rich";
1529
1529
  }
1530
+ function resolveOutputFromArgv(argv) {
1531
+ for (let index = 0; index < argv.length; index += 1) {
1532
+ const token = argv[index] ?? "";
1533
+ if (token === "--json") {
1534
+ return "json";
1535
+ }
1536
+ if (token === "--md" || token === "--markdown") {
1537
+ return "md";
1538
+ }
1539
+ if (token === "--output") {
1540
+ const value = argv[index + 1];
1541
+ if (value === "rich" || value === "md" || value === "json") {
1542
+ return value;
1543
+ }
1544
+ if (value === "markdown") {
1545
+ return "md";
1546
+ }
1547
+ continue;
1548
+ }
1549
+ if (token.startsWith("--output=")) {
1550
+ const value = token.slice("--output=".length);
1551
+ if (value === "rich" || value === "md" || value === "json") {
1552
+ return value;
1553
+ }
1554
+ if (value === "markdown") {
1555
+ return "md";
1556
+ }
1557
+ }
1558
+ }
1559
+ return "rich";
1560
+ }
1530
1561
  const DESIGN_SYSTEM_OUTPUT_BY_MODE = {
1531
1562
  rich: "terminal",
1532
1563
  md: "markdown",
@@ -2036,6 +2067,40 @@ function renderApprovalDeclined(error) {
2036
2067
  logger.error(error.message);
2037
2068
  process.exitCode = 1;
2038
2069
  }
2070
+ function renderCliErrorPattern(pattern) {
2071
+ const logger = createLogger();
2072
+ if (pattern.kind === "usage") {
2073
+ logger.error(appendUsagePointer(pattern.message, {
2074
+ rootUsageName: pattern.rootUsageName,
2075
+ commandPath: pattern.commandPath
2076
+ }));
2077
+ process.exitCode = 1;
2078
+ return;
2079
+ }
2080
+ if (pattern.kind === "runtime-user") {
2081
+ logger.error(pattern.message);
2082
+ process.exitCode = 1;
2083
+ return;
2084
+ }
2085
+ if (pattern.kind === "toolcraft-bug") {
2086
+ logger.error(`toolcraft hit an internal invariant: ${pattern.error.message}\n` +
2087
+ `This is a bug in toolcraft or in the command definition; ` +
2088
+ `it cannot be worked around by changing argv. ` +
2089
+ `Re-run with --debug for a stack trace and file an issue.`);
2090
+ if (pattern.debugStackMode !== undefined && pattern.error.stack) {
2091
+ process.stderr.write(`${formatDebugStack(pattern.error.stack, pattern.debugStackMode)}\n`);
2092
+ }
2093
+ process.exitCode = 1;
2094
+ return;
2095
+ }
2096
+ logger.error(pattern.debugStackMode !== undefined
2097
+ ? pattern.message
2098
+ : `${pattern.message} Use --debug for a stack trace.`);
2099
+ if (pattern.debugStackMode !== undefined && pattern.stack !== undefined) {
2100
+ process.stderr.write(`${formatDebugStack(pattern.stack, pattern.debugStackMode)}\n`);
2101
+ }
2102
+ process.exitCode = 1;
2103
+ }
2039
2104
  function validateServices(services) {
2040
2105
  for (const name of Object.keys(services)) {
2041
2106
  if (RESERVED_SERVICE_NAMES.has(name)) {
@@ -2859,68 +2924,74 @@ function renderHttpError(error, options) {
2859
2924
  process.stderr.write(`${formatDebugStack(stack, options.debugStackMode)}\n`);
2860
2925
  }
2861
2926
  }
2862
- function handleRunError(error, options) {
2927
+ async function handleRunError(error, options) {
2863
2928
  const logger = createLogger();
2864
- if (error instanceof UserError) {
2865
- logger.error(appendUsagePointer(error.message, {
2866
- rootUsageName: options.rootUsageName,
2867
- commandPath: options.commandPath
2868
- }));
2869
- process.exitCode = 1;
2870
- return;
2871
- }
2872
- if (error instanceof Error && error.name === "ToolcraftBugError") {
2873
- logger.error(`toolcraft hit an internal invariant: ${error.message}\n` +
2874
- `This is a bug in toolcraft or in the command definition; ` +
2875
- `it cannot be worked around by changing argv. ` +
2876
- `Re-run with --debug for a stack trace and file an issue.`);
2877
- if (options.debugStackMode !== undefined && error.stack) {
2878
- process.stderr.write(`${formatDebugStack(error.stack, options.debugStackMode)}\n`);
2879
- }
2880
- process.exitCode = 1;
2881
- return;
2882
- }
2883
- if (error instanceof CommanderError) {
2884
- process.exitCode = error.exitCode;
2885
- if (error.code === "commander.helpDisplayed" || error.code === "commander.version") {
2929
+ await withOutputFormat(options.output, async () => {
2930
+ if (error instanceof UserError) {
2931
+ renderCliErrorPattern(options.userErrorPattern === "usage"
2932
+ ? {
2933
+ kind: "usage",
2934
+ message: error.message,
2935
+ rootUsageName: options.rootUsageName,
2936
+ commandPath: options.commandPath
2937
+ }
2938
+ : {
2939
+ kind: "runtime-user",
2940
+ message: error.message
2941
+ });
2886
2942
  return;
2887
2943
  }
2888
- if (error.code === "commander.unknownCommand") {
2889
- logger.error(appendUsagePointer(formatUnknownCommandError(error, options.program, options.argv ?? process.argv), {
2890
- rootUsageName: options.rootUsageName,
2891
- commandPath: options.commandPath
2892
- }));
2944
+ if (error instanceof Error && error.name === "ToolcraftBugError") {
2945
+ renderCliErrorPattern({
2946
+ kind: "toolcraft-bug",
2947
+ error,
2948
+ debugStackMode: options.debugStackMode
2949
+ });
2893
2950
  return;
2894
2951
  }
2895
- if (error.code === "commander.unknownOption") {
2896
- const argv = options.argv ?? process.argv;
2897
- logger.error(appendUsagePointer(formatUnknownOptionError(error, options.program, argv), {
2952
+ if (error instanceof CommanderError) {
2953
+ process.exitCode = error.exitCode;
2954
+ if (error.code === "commander.helpDisplayed" || error.code === "commander.version") {
2955
+ return;
2956
+ }
2957
+ if (error.code === "commander.unknownCommand") {
2958
+ logger.error(appendUsagePointer(formatUnknownCommandError(error, options.program, options.argv ?? process.argv), {
2959
+ rootUsageName: options.rootUsageName,
2960
+ commandPath: options.commandPath
2961
+ }));
2962
+ return;
2963
+ }
2964
+ if (error.code === "commander.unknownOption") {
2965
+ const argv = options.argv ?? process.argv;
2966
+ logger.error(appendUsagePointer(formatUnknownOptionError(error, options.program, argv), {
2967
+ rootUsageName: options.rootUsageName,
2968
+ commandPath: options.commandPath.length > 0
2969
+ ? options.commandPath
2970
+ : findCurrentCommanderCommandPath(options.program, argv)
2971
+ }));
2972
+ return;
2973
+ }
2974
+ logger.error(appendUsagePointer(formatCommanderErrorMessage(error), {
2898
2975
  rootUsageName: options.rootUsageName,
2899
2976
  commandPath: options.commandPath.length > 0
2900
2977
  ? options.commandPath
2901
- : findCurrentCommanderCommandPath(options.program, argv)
2978
+ : findCurrentCommanderCommandPath(options.program, options.argv ?? process.argv)
2902
2979
  }));
2903
2980
  return;
2904
2981
  }
2905
- logger.error(appendUsagePointer(formatCommanderErrorMessage(error), {
2906
- rootUsageName: options.rootUsageName,
2907
- commandPath: options.commandPath.length > 0
2908
- ? options.commandPath
2909
- : findCurrentCommanderCommandPath(options.program, options.argv ?? process.argv)
2910
- }));
2911
- return;
2912
- }
2913
- if (isHttpErrorLike(error)) {
2914
- renderHttpError(error, options);
2915
- process.exitCode = 1;
2916
- return;
2917
- }
2918
- const message = error instanceof Error ? error.message : String(error);
2919
- logger.error(options.debugStackMode !== undefined ? message : `${message} Use --debug for a stack trace.`);
2920
- if (options.debugStackMode !== undefined && error instanceof Error && error.stack) {
2921
- process.stderr.write(`${formatDebugStack(error.stack, options.debugStackMode)}\n`);
2922
- }
2923
- process.exitCode = 1;
2982
+ if (isHttpErrorLike(error)) {
2983
+ renderHttpError(error, options);
2984
+ process.exitCode = 1;
2985
+ return;
2986
+ }
2987
+ const message = error instanceof Error ? error.message : String(error);
2988
+ renderCliErrorPattern({
2989
+ kind: "unexpected",
2990
+ message,
2991
+ stack: error instanceof Error ? error.stack : undefined,
2992
+ debugStackMode: options.debugStackMode
2993
+ });
2994
+ });
2924
2995
  }
2925
2996
  function formatCommanderErrorMessage(error) {
2926
2997
  return error.message.startsWith("error:") ? error.message : `error: ${error.message}`;
@@ -3212,15 +3283,19 @@ export async function runCLI(roots, options = {}) {
3212
3283
  if (report !== undefined) {
3213
3284
  process.stderr.write(`Saved error report to ${report.displayPath}\n`);
3214
3285
  }
3215
- handleRunError(error, {
3286
+ await handleRunError(error, {
3216
3287
  debugStackMode: resolvedFlags !== undefined
3217
3288
  ? resolveDebugStackMode(resolvedFlags.debug)
3218
3289
  : getDebugStackModeFromArgv(process.argv),
3290
+ output: resolvedFlags !== undefined
3291
+ ? resolveOutput(resolvedFlags)
3292
+ : resolveOutputFromArgv(process.argv),
3219
3293
  verbose: resolvedFlags ? Boolean(resolvedFlags.verbose) : process.argv.includes("--verbose"),
3220
3294
  program,
3221
3295
  argv: process.argv,
3222
3296
  rootUsageName,
3223
- commandPath: resolvedCommandPath
3297
+ commandPath: resolvedCommandPath,
3298
+ userErrorPattern: errorReportContext?.params === undefined ? "usage" : "runtime-user"
3224
3299
  });
3225
3300
  }
3226
3301
  }