Skip to content

Class: VocabularyRefusedError

@kortexya/reasoninglayer


@kortexya/reasoninglayer / VocabularyRefusedError

Defined in: src/errors.ts:379

A governed vocabulary request the engine refused with a closed code.

Thrown by every VocabularyClient method (and by OntologyClient.pipelineStatus for its 503 vocabulary_not_committed) when the engine answers a VocabularyRefusalResponse: every vocabulary 4xx except 404 and 412, the vocabulary 503s, the activation 500 materialized_vocabulary_drift, and the 404 no_committed_outcome of VocabularyClient.getRequestOutcome. Branch on code, not on the status or the message: one status carries several codes (409 alone carries most of the workflow refusals), and invalid_request arrives with 400, 413, 415 or 422.

A refusal stores nothing, so repeating the same request re-evaluates the current state. Three codes have their own subclass: IdempotencyKeyRequiredError, IdempotencyKeyReusedError and MutationOutcomeUnconfirmedError.

Two vocabulary failures are NOT this error: a 404 for an unknown candidate, revision, assessment, decision or release stays a NotFoundError, and a stale If-Match stays a PreconditionFailedError (its currentEtag names the current head).

try {
await reviewer.vocabulary.approve(candidateId, request, { idempotencyKey });
} catch (e) {
if (e instanceof VocabularyRefusedError && e.code === 'vocabulary_separation_of_duties') {
// the reviewer authored this revision; another steward must approve it
}
}

new VocabularyRefusedError(status, body, headers, refusal): VocabularyRefusedError

Defined in: src/errors.ts:397

number

unknown

Headers

VocabularyRefusal

VocabularyRefusedError

ApiError.constructor

readonly authority: VocabularyAuthorityCheck | undefined

Defined in: src/errors.ts:393

The authority check that failed, when the refusal is about authority.


readonly body: unknown

Defined in: src/errors.ts:55

Parsed response body.

ApiError.body


optional cause?: unknown

Defined in: node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es2022.error.d.ts:26

ApiError.cause


readonly code: VocabularyRefusalCode

Defined in: src/errors.ts:383

The closed refusal code.


readonly conflicts: readonly VocabularyRebaseConflict[]

Defined in: src/errors.ts:391

The rebase conflicts (rebase_conflict); empty otherwise.


readonly current: VocabularyCurrentState | undefined

Defined in: src/errors.ts:387

The state the request met (active release, candidate state, head revision), when reported.


readonly errorCode: string | undefined

Defined in: src/errors.ts:53

Backend error code (from response body error field), if present.

ApiError.errorCode


readonly findings: readonly VocabularyFinding[]

Defined in: src/errors.ts:389

The findings behind the refusal; empty when it names none.


readonly headers: Headers

Defined in: src/errors.ts:57

Response headers.

ApiError.headers


message: string

Defined in: node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts:1077

ApiError.message


name: string = 'VocabularyRefusedError'

Defined in: src/errors.ts:380

ApiError.name


readonly plugin: VocabularyPluginFinding | undefined

Defined in: src/errors.ts:395

The plugin gate’s finding (vocabulary_plugin_unavailable).


readonly refusal: VocabularyRefusal

Defined in: src/errors.ts:385

The whole refusal body, read and typed.


optional stack?: string

Defined in: node_modules/.pnpm/typescript@5.9.3/node_modules/typescript/lib/lib.es5.d.ts:1078

ApiError.stack


readonly status: number

Defined in: src/errors.ts:51

HTTP status code.

ApiError.status


static stackTraceLimit: number

Defined in: node_modules/.pnpm/@types+node@24.13.3/node_modules/@types/node/globals.d.ts:68

The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

The default value is 10 but may be set to any valid JavaScript number. Changes will affect any stack trace captured after the value has been changed.

If set to a non-number value, or set to a negative number, stack traces will not capture any frames.

ApiError.stackTraceLimit

static captureStackTrace(targetObject, constructorOpt?): void

Defined in: node_modules/.pnpm/@types+node@24.13.3/node_modules/@types/node/globals.d.ts:52

Creates a .stack property on targetObject, which when accessed returns a string representing the location in the code at which Error.captureStackTrace() was called.

const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack; // Similar to `new Error().stack`

The first line of the trace will be prefixed with ${myObject.name}: ${myObject.message}.

The optional constructorOpt argument accepts a function. If given, all frames above constructorOpt, including constructorOpt, will be omitted from the generated stack trace.

The constructorOpt argument is useful for hiding implementation details of error generation from the user. For instance:

function a() {
b();
}
function b() {
c();
}
function c() {
// Create an error without stack trace to avoid calculating the stack trace twice.
const { stackTraceLimit } = Error;
Error.stackTraceLimit = 0;
const error = new Error();
Error.stackTraceLimit = stackTraceLimit;
// Capture the stack trace above function b
Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
throw error;
}
a();

object

Function

void

ApiError.captureStackTrace


static prepareStackTrace(err, stackTraces): any

Defined in: node_modules/.pnpm/@types+node@24.13.3/node_modules/@types/node/globals.d.ts:56

Error

CallSite[]

any

https://v8.dev/docs/stack-trace-api#customizing-stack-traces

ApiError.prepareStackTrace