Skip to content

Errors

dreamcli provides structured errors with codes, suggestions, and JSON serialization.

CLIError

ts
import { CLIError } from 'dreamcli';

throw new CLIError('Deployment failed', {
	code: 'DEPLOY_FAILED',
	exitCode: 1,
	suggest: 'Check your credentials with `mycli login`',
	details: { target, region },
});

Fields

FieldTypeDescription
messagestringHuman-readable error message
codestringStable machine identifier
exitCodenumberProcess exit code (default varies by type)
suggeststringActionable hint for the user
detailsunknownStructured payload for JSON output
causeErrorUnderlying cause

Error Types

ts
import { CLIError, ParseError, ValidationError } from 'dreamcli';
  • CLIError — base error for application-level failures
  • ParseError — argv parsing failures (unknown flags, bad syntax)
  • ValidationError — value validation failures (wrong type, missing required)

Parse and validation errors include "did you mean?" suggestions automatically.

Type Guards

ts
import { isCLIError, isParseError, isValidationError } from 'dreamcli';

try {
	await cli.run();
} catch (err) {
	if (isParseError(err)) {
		// handle parse error
	} else if (isValidationError(err)) {
		// handle validation error
	} else if (isCLIError(err)) {
		// handle generic CLI error
	}
}

JSON Mode

In --json mode, errors serialize to structured JSON:

json
{
	"error": {
		"message": "Deployment failed",
		"code": "DEPLOY_FAILED",
		"suggest": "Check your credentials with `mycli login`",
		"details": { "target": "production", "region": "us" }
	}
}

What's Next?

  • Middleware — error handling in middleware chains
  • Output — output channel behavior

Released under the MIT License.