stratus

Errors

Error types and handling

Stratus defines specific error classes for different failure modes. All errors extend StratusError.

Error Hierarchy

StratusError
├── MaxTurnsExceededError
├── MaxBudgetExceededError
├── RunAbortedError
├── ModelError
│   └── ContentFilterError
├── OutputParseError
├── InputGuardrailTripwireTriggered
└── OutputGuardrailTripwireTriggered

StratusError

Base class for all Stratus errors.

import { StratusError } from "stratus-sdk/core";

try {
  await run(agent, input);
} catch (error) {
  if (error instanceof StratusError) {
    console.error("Stratus error:", error.message);
  }
}

MaxTurnsExceededError

Thrown when the agent loop exceeds maxTurns without producing a final response.

import { MaxTurnsExceededError } from "stratus-sdk/core";

try {
  await run(agent, input, { maxTurns: 3 });
} catch (error) {
  if (error instanceof MaxTurnsExceededError) {
    console.error("Agent exceeded max turns");
  }
}

MaxBudgetExceededError

Thrown when the estimated cost of a run exceeds maxBudgetUsd. Requires a costEstimator in options. The onStop hook fires before this error is thrown.

import { MaxBudgetExceededError, createCostEstimator } from "stratus-sdk/core";

const estimator = createCostEstimator({
  inputTokenCostPer1k: 0.005,
  outputTokenCostPer1k: 0.015,
});

try {
  await run(agent, input, {
    costEstimator: estimator,
    maxBudgetUsd: 0.50,
  });
} catch (error) {
  if (error instanceof MaxBudgetExceededError) {
    console.error(`Budget exceeded: spent $${error.spentUsd.toFixed(4)} of $${error.budgetUsd.toFixed(4)}`);
  }
}

Properties:

  • budgetUsd: number - The budget limit that was set
  • spentUsd: number - The actual amount spent when the limit was crossed

RunAbortedError

Thrown when a run is cancelled via an AbortSignal. See Streaming - Abort Signal.

import { RunAbortedError } from "stratus-sdk/core";

const ac = new AbortController();
setTimeout(() => ac.abort(), 5000);

try {
  await run(agent, input, { signal: ac.signal });
} catch (error) {
  if (error instanceof RunAbortedError) {
    console.log("Run was cancelled");
  }
}

Pre-aborted signals throw RunAbortedError immediately without making any API calls.

ModelError

Thrown when the model API returns an error. Includes optional status and code fields:

import { ModelError } from "stratus-sdk/core";

try {
  await run(agent, input);
} catch (error) {
  if (error instanceof ModelError) {
    console.error(`Model error ${error.status}: ${error.message}`);
  }
}

ContentFilterError

A subclass of ModelError thrown when Azure's content filter blocks a request or response.

import { ContentFilterError } from "stratus-sdk/core";

try {
  await run(agent, input);
} catch (error) {
  if (error instanceof ContentFilterError) {
    console.error("Content was filtered by Azure");
  }
}

OutputParseError

Thrown when structured output fails to parse. See Structured Output.

InputGuardrailTripwireTriggered

Thrown when an input guardrail's tripwire fires. See Guardrails.

Properties:

  • guardrailName: string - Which guardrail fired
  • outputInfo?: unknown - Optional metadata from the guardrail

OutputGuardrailTripwireTriggered

Thrown when an output guardrail's tripwire fires. Same properties as the input variant.

Edit on GitHub

Last updated on

On this page