Skip to content

Class: RuleTermWriteError

@kortexya/reasoninglayer


@kortexya/reasoninglayer / RuleTermWriteError

Defined in: src/errors.ts:252

A write onto a term that is PART OF A RULE, refused (HTTP 409, code: "write_targets_rule").

A rule’s conclusion template, its antecedent patterns, its variables and the ground sub-terms that rule authoring minted inside them are terms, but they belong to the rule: editing or deleting one would change the rule behind its author’s back. The engine refuses PUT /api/v1/terms/{id}, DELETE /api/v1/terms/{id} and POST /api/v1/inference/facts/bulk-retract (the whole batch is refused, nothing is removed) onto such a term, names the rules that hold it in ruleIds, and proposes a replace_rule and a withdraw_rule repair for each rule the caller may edit. A plugin, system or bootstrap rule gets no repairs: there is no write the caller can make instead.

A fact a rule DERIVED is a different refusal: DerivedFactWriteError.

Extends ConstraintViolationError, so a handler that already catches every 409 keeps catching it.

try {
await client.terms.deleteTerm(termId);
} catch (e) {
if (e instanceof RuleTermWriteError) {
console.log(`part of rules ${e.ruleIds.join(', ')}`);
for (const repair of e.repairs) console.log(repair.kind, repair.rewrite);
}
}

new RuleTermWriteError(message, body, headers, termId, ruleIds, repairs, errorCode?): RuleTermWriteError

Defined in: src/errors.ts:265

string

unknown

Headers

string | undefined

readonly string[]

readonly DerivedFactRepair[]

string

RuleTermWriteError

ConstraintViolationError.constructor

readonly body: unknown

Defined in: src/errors.ts:55

Parsed response body.

ConstraintViolationError.body


optional cause?: unknown

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

ConstraintViolationError.cause


readonly code: "write_targets_rule"

Defined in: src/errors.ts:256

The refusal code. Always write_targets_rule.


readonly constraint: string | undefined

Defined in: src/errors.ts:140

Constraint description, if available.

ConstraintViolationError.constraint


readonly errorCode: string | undefined

Defined in: src/errors.ts:53

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

ConstraintViolationError.errorCode


readonly feature: string | undefined

Defined in: src/errors.ts:138

Feature name that violated the constraint, if available.

ConstraintViolationError.feature


readonly headers: Headers

Defined in: src/errors.ts:57

Response headers.

ConstraintViolationError.headers


message: string

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

ConstraintViolationError.message


name: string = 'RuleTermWriteError'

Defined in: src/errors.ts:253

ConstraintViolationError.name


readonly repairs: readonly DerivedFactRepair[]

Defined in: src/errors.ts:263

What to write instead: replace_rule and withdraw_rule for each rule the caller may edit. Empty for a plugin, system or bootstrap rule.


readonly ruleIds: readonly string[]

Defined in: src/errors.ts:258

The rules whose term graph holds the term.


optional stack?: string

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

ConstraintViolationError.stack


readonly status: number

Defined in: src/errors.ts:51

HTTP status code.

ConstraintViolationError.status


readonly termId: string | undefined

Defined in: src/errors.ts:136

Term ID that violated the constraint, if available.

ConstraintViolationError.termId


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.

ConstraintViolationError.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

ConstraintViolationError.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

ConstraintViolationError.prepareStackTrace