Skip to content

Start typing to search the documentation.

Errors Reference

Last updated View as Markdown

Flue exposes stable machine-readable error categories through its public transports. Runtime operations, workflow records, CLI commands, development servers, and builds also report failures, but not every surface uses the transport error vocabulary.

Public transport errors

FluePublicError

interface FluePublicError {
  type: string;
  message: string;
  details: string;
  dev?: string;
  meta?: Record<string, unknown>;
}

Caller-safe error details exposed by Flue transports. Unknown failures become a generic internal_error payload without leaking their original message. Branch on type, not message prose.

FieldMeaning
typeStable machine-readable error category.
messageShort caller-facing summary.
detailsCaller-facing explanation.
devAdditional local development guidance when available.
metaStructured error-specific metadata when available. For example, validation issue details.

dev is omitted unless the runtime has additional guidance and is running locally. Node.js flue dev and flue run enable it with FLUE_MODE=local. Cloudflare Vite development enables it only in development-server mode; preview and production builds render the production envelope.

Categories

The following categories are stable for framework-owned transport failures. HTTP responses use the listed status code. SSE and WebSocket frames carry the same FluePublicError shape without an HTTP status.

TypeHTTP statusMeaning
method_not_allowed405The endpoint does not accept the request method. HTTP responses include Allow.
unsupported_media_type415A request body was not sent as JSON.
invalid_json400A request body could not be read or parsed as JSON.
agent_not_found404The requested agent is not registered or not exposed through the requested transport.
workflow_not_found404The requested workflow is not registered.
workflow_not_http404The workflow exists but does not expose an HTTP route.
route_not_found404No generated default-application route matches the request.
run_not_found404The workflow run is missing, expired, or not owned by the resolved workflow instance.
run_store_unavailable501The runtime does not provide workflow-run history storage.
run_registry_unavailable501The runtime does not provide cross-run lookup.
invalid_request400The request shape or protocol message is invalid. Read details for the specific reason.
validation_failed400OpenAPI parameter or query validation failed. meta.issues contains issue details.
internal_error500An unknown or non-public server failure occurred.

Transport envelopes

SurfaceEnvelope
HTTP error response{ error: FluePublicError }
Attached-agent SSE terminal errorAttachedAgentStreamError
Workflow-run SSE infrastructure error{ error: FluePublicError }
WebSocket connection or request errorWebSocketErrorMessage
Workflow WebSocket run-scoped errorWorkflowRunWebSocketErrorMessage

See Events Reference for attached-agent event streams and WebSocket protocol message types.

Workflow-run streams

Workflow failures normally appear in a terminal run_end event with isError: true. A workflow-run SSE stream can also terminate with a stream-infrastructure event: error frame whose payload is { error: FluePublicError }. That infrastructure frame is a transport failure, not a workflow-run failure record.

Workflow-run and operation failures

Workflow-run records, run_end events, and operation events expose open-ended error?: unknown values. Runtime exceptions are commonly serialized as { name, message } when recorded. These failure records are structured observation data, not a closed list of machine-readable transport categories.

Runtime exceptions

ResultUnavailableError

class ResultUnavailableError extends Error {
  readonly reason: string;
  readonly assistantText: string;
}

Thrown when an agent cannot produce a required structured result, either because it gives up or does not finish after follow-up attempts. Import it from @flue/runtime when application logic needs to handle that outcome separately.

Cancellation

Aborted prompt, skill, task, and shell operations reject with a standard AbortError carrying the abort reason as cause when the runtime permits it.

Other authoring and execution failures, such as invalid agent profiles, tool definitions, dispatch payloads, model ids, skills, or session operations, reject with human-readable Error messages. Those messages are not stable machine-readable categories.

CLI, build, and development diagnostics

CLI diagnostics are human-oriented messages written to stderr. They do not currently expose stable machine-readable error codes.

SurfaceDiagnostic families
CLI argumentsUnsupported flags, missing values, invalid targets, and invalid JSON payloads.
ConfigurationMissing or invalid flue.config.* files, invalid default exports, unsupported fields, missing target, and environment files.
BuildMissing source modules, invalid or duplicate source names, generated module exports, imported skills, and target requirements.
Cloudflare buildWrangler availability, compatibility settings, reserved bindings, target packages, and filename constraints.
flue dev initial buildReports the build failure and exits.
flue dev rebuildReports the rebuild failure and keeps watching for a later fix.

Use the actionable diagnostic prose when resolving these errors. Do not parse it as a stable API. See flue build and flue dev for command behavior.

Application-owned responses

An authored app.ts owns its request pipeline. Custom routes and middleware may return arbitrary statuses and bodies, including authorization responses. Flue does not impose an unauthorized transport category on application-owned responses.

Stability boundary

SurfaceContract
FluePublicError fields and documented categoriesStable public transport contract.
Workflow-run records, workflow events, and operation eventsStructured but open-ended failure data.
Runtime exception messages and CLI, configuration, build messagesHuman-oriented diagnostics subject to refinement.
Generated target internalsImplementation details, not public transport categories.