Member Junction
    Preparing search index...

    A BaseDecision driver for Subquadratic's SubQ Decisions API, POST https://api.subq.ai/v1/systemone, which serves SubQ Snap (subq-snap-preview, in public preview; the ID changes at general availability, so the model-vendor row's APIName is where to change it). Errors arrive as { detail: { error_type, message } }. The endpoint, key and error handling come from BaseHostedSystemOneDecision.

    Not sent: the API's optional images (up to 4), which DecisionParams has no field for.

    Hierarchy (View Summary)

    Index

    Constructors

    • Creates the driver.

      Parameters

      • apiKey: string

        The vendor's API key, or an AI Credential's values in JSON.

      • OptionalendpointURL: string

        Overrides the credential's endpoint and DefaultEndpoint.

      Returns SubQDecision

    Properties

    DEFAULT_ENDPOINT: "https://api.subq.ai/v1/systemone" = 'https://api.subq.ai/v1/systemone'

    The SubQ Decisions API endpoint.

    DEFAULT_MODEL: "subq-snap-preview" = 'subq-snap-preview'

    The model used when DecisionParams.Model is empty.

    Accessors

    • get apiKey(): string

      Only sub-classes can access the API key

      Returns string

    • get APIKeyDescription(): string

      What the credential's apiKey must be, for the missing-key message, such as 'a Perplexity API key'.

      Returns string

    • get EndpointURL(): string

      The Decisions API endpoint URL: the constructor's, else the credential's, else DefaultEndpoint, without trailing slashes.

      Returns string

    • get LegacyKeyVariable(): string

      The legacy environment variable that can hold the key, such as 'AI_VENDOR_API_KEY__PERPLEXITYDECISION'.

      Returns string

    • get SecretsToRedact(): string[]

      The secrets an error message must never show, each removed with RedactSecret. Defaults to the credential's API key; a driver that sends only part of it (Cloudflare's token) adds that part.

      Returns string[]

    Methods

    • Executes a typed decision request across one or more questions about a given state. This method wraps driver execution with input validation, output verification, execution timing, and structured error handling. It never throws.

      Parameters

      • params: DecisionParams

        Decision request parameters including state, questions, and model.

      Returns Promise<DecisionResult>

      A Promise resolving to a DecisionResult.

    • The vendor's message when the body has one; otherwise the base default, the status and the start of the body.

      Parameters

      • status: number
      • bodyText: string

      Returns string

    • The one endpoint, whatever the model: the model travels in the body.

      Parameters

      • _model: string

      Returns string

    • Pins three statuses whose ErrorAnalyzer reading would depend on SubQ's message text, which SubQ documents only for validation_error. A 422 whose message names no validation word reads as a fatal InvalidRequest, and a 403 whose message says "unauthorized" as a fatal Authentication error: either stops Default Decision's failover loop, though another candidate could answer.

      • 402 (no credits) is NoCredit;
      • 403 (the key cannot use the model) and 422 (a request SubQ rejects, which passed MJ's own validation) are ModelError: another model may answer.

      Not Authentication or VendorValidationError: on those the runner drops the vendor's other candidates, and the index it continues from then skips the next candidate (BaseModelRunner).

      ErrorAnalyzer keeps the rest: 401 stays a fatal Authentication error, as for every other driver; 429 and 503 allow failover.

      Parameters

      • status: number

      Returns AIErrorType

    • The request headers. Defaults to the credential's API key as a bearer token and a JSON content type.

      Parameters

      • _model: string

        The model being asked.

      Returns Record<string, string>

    • The request body's model field. Defaults to the model unchanged.

      Parameters

      • model: string

        The model being asked.

      Returns string

    • Sends the request. This is the driver's only network call; a test double overrides it to stand in for the network.

      Parameters

      • url: string

        The endpoint from GetEndpointURL.

      • init: RequestInit

        The POST: method, headers, JSON body and the caller's cancellation signal.

      Returns Promise<Response>

    • Returns the System One response ({ model, answers, usage }) from a parsed 2xx body. Defaults to the body itself. A vendor that wraps the response in an envelope unwraps it here, and throws (with CreateSystemOneHTTPError) when the envelope reports a failure.

      Parameters

      • body: unknown

        The parsed JSON body.

      • _status: number

        The HTTP status, for an error thrown from here.

      Returns unknown