Generated from crates/node/index.d.ts.
Import from nemo-relay-node.
Main runtime lifecycle, scope, middleware, subscriber, and exporter APIs.
AtofExporterConfigMutable configuration object for AtofExporter.
OpenTelemetryConfigMutable configuration object for OpenTelemetrySubscriber.
OpenInferenceConfigMutable configuration object for OpenInferenceSubscriber.
AtifExporterAn Agent Trajectory Interchange Format (ATIF) exporter that collects lifecycle events and exports them as a structured trajectory.
Create an instance with session and agent metadata, then register it as an event subscriber. When ready, call exportJson() to serialize the collected trajectory.
AtofExporterFilesystem-backed Agent Trajectory Observability Format (ATOF) JSONL event exporter.
OpenTelemetrySubscriberOpenTelemetry-backed event subscriber.
OpenInferenceSubscriberOpenInference-backed event subscriber.
LlmStreamAn async iterator over chunks from a streaming LLM response.
Obtained from llmStreamCallExecute(). Call next() repeatedly to consume response chunks. Returns null when the stream is fully consumed.
ScopeStackHandle to an isolated scope stack for per-request/per-task isolation.
ScopeHandleA handle to an execution scope in the agent runtime.
Scopes form a hierarchical stack representing the current execution context (e.g., agent -> function -> tool). Use this handle to reference a specific scope when pushing child scopes, emitting events, or making tool/LLM calls.
ToolHandleA handle representing an in-progress tool call.
Returned by toolCall() and used to signal completion via toolCallEnd().
LlmHandleA handle representing an in-progress LLM call.
Returned by llmCall() and used to signal completion via llmCallEnd().
LlmRequestAn LLM request, encapsulating headers and content.
Construct via new LlmRequest(headers, content).
OpenAIChatCodecBuilt-in codec for the OpenAI Chat Completions API.
Implements both request codec (decode/encode) and response codec (decodeResponse). Construct with new OpenAIChatCodec().
OpenAIResponsesCodecBuilt-in codec for the OpenAI Responses API.
Implements both request codec (decode/encode) and response codec (decodeResponse). Construct with new OpenAIResponsesCodec().
AnthropicMessagesCodecBuilt-in codec for the Anthropic Messages API.
Implements both request codec (decode/encode) and response codec (decodeResponse). Construct with new AnthropicMessagesCodec().
ScopeTypeThe type of an execution scope in the agent runtime hierarchy.
pushStreamChunkPush a chunk into the stream identified by streamId. Called from JavaScript during async generator iteration.
endStreamSignal that a stream is complete. Drops the sender so the Rust receiver sees the channel as closed.
createScopeStackCreates a new isolated scope stack.
currentScopeStackReturns the current execution context’s scope stack handle.
setThreadScopeStackBinds a scope stack to the current thread.
scopeStackActiveReturns whether the current execution context has an explicitly-initialized scope stack.
Returns true if setThreadScopeStack has been called on the current thread, or the caller is inside a task-local scope. Returns false when only the auto-created default is present.
getLastCallbackErrorReturns the most recent callback error that could not be surfaced through a direct exception.
This is primarily used for sanitize/intercept/finalizer callback paths whose core callback signatures cannot return Result.
clearLastCallbackErrorClears the most recent callback error recorded by the Node binding.
getHandleGet the handle for the current top-of-stack execution scope.
Returns the ScopeHandle for the innermost active scope on the current task’s scope stack. Throws if the scope stack is empty.
pushScopePush a new execution scope onto the scope stack.
Creates a child scope with the given name and scopeType. If handle is provided, the new scope is parented to that scope; otherwise it is parented to the current top scope. Optional attributes is a bitfield of scope attribute flags. Optional data is a JSON application payload stored on the scope handle. Optional metadata is a JSON metadata payload recorded on the scope start event. Optional input is a semantic JSON payload exported on the scope start event. Optional timestamp is a Unix timestamp in microseconds recorded as the handle start time and start event timestamp. It must be a safe integer number; omit it to use the current runtime time. Returns the handle for the newly created scope.
popScopePop an execution scope from the scope stack.
Removes the scope identified by handle from the stack and emits an end event. Optional output is a semantic JSON payload exported on the scope end event. Optional timestamp is a Unix timestamp in microseconds recorded on the end event. It must be a safe integer number; omit it to use the runtime default end timestamp. Throws if the handle does not match the current top scope.
withScopePush a scope, run a callback, then pop the scope automatically.
Creates a child scope with the given name and scopeType, invokes the callback with the new scope handle, and guarantees that the scope is popped when the callback completes (whether it returns normally, throws, or returns a rejected Promise). Supports both synchronous and async (Promise-returning) callbacks.
Optional handle sets the parent scope; attributes is a bitfield of scope attribute flags; data is stored on the scope handle; metadata is recorded on the start event; and input is exported as the semantic start-event payload.
Returns a Promise that resolves with the callback’s return value.
eventEmit a custom mark event on the current scope.
Emits a named event with optional data and metadata payloads. If handle is provided, the event is associated with that scope; otherwise it uses the current top scope. Optional timestamp is a Unix timestamp in microseconds recorded on the mark event. It must be a safe integer number; omit it to use the current runtime time.
toolCallBegin a manual tool call lifecycle span.
Registers a tool invocation with the given name and args. Sanitize-request guardrails are applied to the emitted start-event payload; request and execution intercepts run only through toolCallExecute. Returns a ToolHandle that must be passed to toolCallEnd() when the tool finishes. Optional handle specifies the parent scope; attributes is a bitfield; data is stored on the handle; metadata is recorded on the start event; and toolCallId is recorded in the tool event category profile. Optional timestamp is a Unix timestamp in microseconds recorded as the handle start time and start event timestamp. It must be a safe integer number; omit it to use the current runtime time.
toolCallEndEnd a manual tool call lifecycle span.
Signals that the tool call identified by handle has completed with the given result. Sanitize-response guardrails are applied to the emitted end-event payload; response intercepts run only through toolCallExecute. Optional data is used when the sanitized result is JSON null, and optional metadata is recorded on the end event. Optional timestamp is a Unix timestamp in microseconds recorded on the end event. It must be a safe integer number; omit it to use the runtime default end timestamp.
toolCallExecuteExecute a tool call end-to-end with full lifecycle management.
Runs conditional-execution guardrails (on raw args) -> request intercepts -> sanitize-request guardrails for the emitted Start event payload -> execution intercepts -> func -> sanitize-response guardrails for the emitted End event payload. On rejection, only a standalone Mark event is emitted (no Start/End pair) and GuardrailRejected is returned. Returns the final execution result; sanitize guardrails do not rewrite the caller-visible value.
toolCallExecuteAsyncExecute a tool call end-to-end, supporting both sync and async (Promise-returning) callbacks.
Same lifecycle as toolCallExecute (guardrails -> intercepts -> func -> response processing), but transparently handles JS callbacks that return Promises. Uses napi_is_promise to detect Promise return values and resolves them before continuing the pipeline.
Accepts a raw JsFunction instead of ThreadsafeFunction so it can create a promise-aware wrapper with access to Env.
llmCallBegin a manual LLM call lifecycle span.
Registers an LLM invocation with the given provider name and request payload. The request should be a JSON object with headers and content fields matching the LlmRequest schema. Returns an LlmHandle that must be passed to llmCallEnd() when the response is received. Sanitize-request guardrails are applied to the emitted start-event payload; request and execution intercepts run only through llmCallExecute. Optional handle specifies the parent scope; attributes is a bitfield; data is stored on the handle; metadata is recorded on the start event; and modelName is recorded in the LLM event category profile. Optional timestamp is a Unix timestamp in microseconds recorded as the handle start time and start event timestamp. It must be a safe integer number; omit it to use the current runtime time.
llmCallEndEnd a manual LLM call lifecycle span.
Signals that the LLM call identified by handle has completed with the given response. Sanitize-response guardrails are applied to the emitted end-event payload; response intercepts run only through llmCallExecute. Optional data is used when the sanitized response is JSON null, and optional metadata is recorded on the end event. Optional timestamp is a Unix timestamp in microseconds recorded on the end event. It must be a safe integer number; omit it to use the runtime default end timestamp.
llmCallExecuteExecute an LLM call end-to-end with full lifecycle management.
Runs conditional-execution guardrails (on raw request) -> request intercepts -> sanitize-request guardrails for the emitted Start event payload -> execution intercepts -> func -> sanitize-response guardrails for the emitted End event payload. On rejection, only a standalone Mark event is emitted (no Start/End pair) and GuardrailRejected is returned. The request should be a JSON object with headers and content fields matching the LlmRequest schema. Returns the final execution response; sanitize guardrails do not rewrite the caller-visible value.
llmCallExecuteAsyncExecute an LLM call end-to-end, supporting both sync and async (Promise-returning) callbacks.
Same lifecycle as llmCallExecute (guardrails -> intercepts -> func -> response processing), but transparently handles JS callbacks that return Promises.
llmStreamCallExecuteExecute a streaming LLM call end-to-end with full lifecycle management.
Like llmCallExecute, conditional-execution guardrails run first on the raw request. Sanitize-request guardrails only affect the emitted Start event payload, and sanitize-response guardrails only affect the aggregated End event payload. Returns an LlmStream whose next() method yields response chunks incrementally. The func callback receives the intercepted request as JSON and its response is streamed back. Stream-level intercepts are applied to each chunk. The request should be a JSON object with headers and content fields matching the LlmRequest schema.
The optional collector callback is invoked with each intercepted chunk as JSON, allowing the caller to accumulate chunks for aggregation. The optional finalizer callback is invoked once when the stream is exhausted and must return a JSON value representing the aggregated response.
registerToolSanitizeRequestGuardrailRegister a guardrail that sanitizes tool request arguments before execution.
The guardrail callback receives (toolName, args) and must return sanitized args. Higher priority values run first. Throws if a guardrail with the same name already exists.
deregisterToolSanitizeRequestGuardrailDeregister a tool request sanitization guardrail by name.
Returns true if a guardrail with that name was found and removed.
registerToolSanitizeResponseGuardrailRegister a guardrail that sanitizes tool response data after execution.
The guardrail callback receives (toolName, result) and must return sanitized result. Higher priority values run first. Throws if a guardrail with the same name already exists.
deregisterToolSanitizeResponseGuardrailDeregister a tool response sanitization guardrail by name.
Returns true if a guardrail with that name was found and removed.
registerToolConditionalExecutionGuardrailRegister a guardrail that conditionally gates tool execution.
The guardrail callback receives (toolName, args) and must return null to allow execution or a rejection reason string to block it. Higher priority values run first.
deregisterToolConditionalExecutionGuardrailDeregister a tool conditional execution guardrail by name.
Returns true if a guardrail with that name was found and removed.
registerToolRequestInterceptRegister an intercept that transforms tool request arguments.
The callable receives (toolName, args) and returns transformed args. If breakChain is true, no lower-priority intercepts run after this one. Higher priority values run first.
deregisterToolRequestInterceptDeregister a tool request intercept by name.
Returns true if an intercept with that name was found and removed.
registerToolExecutionInterceptRegister a tool execution intercept following the middleware chain pattern.
The callable receives the args and a next function. Call next(args) to invoke the next intercept or original implementation; skip calling next to short-circuit the chain.
deregisterToolExecutionInterceptDeregister a tool execution intercept by name.
Returns true if an intercept with that name was found and removed.
registerLlmSanitizeRequestGuardrailRegister a guardrail that sanitizes LLM request data before execution.
The guardrail callback receives the LLM request as JSON and must return the sanitized request. Higher priority values run first. Throws if a guardrail with the same name already exists.
deregisterLlmSanitizeRequestGuardrailDeregister an LLM request sanitization guardrail by name.
Returns true if a guardrail with that name was found and removed.
registerLlmSanitizeResponseGuardrailRegister a guardrail that sanitizes LLM response data after execution.
The guardrail callback receives the LLM response as a JSON value and must return the sanitized response as JSON. Higher priority values run first. Throws if a guardrail with the same name already exists.
deregisterLlmSanitizeResponseGuardrailDeregister an LLM response sanitization guardrail by name.
Returns true if a guardrail with that name was found and removed.
registerLlmConditionalExecutionGuardrailRegister a guardrail that conditionally gates LLM execution.
The guardrail callback receives the LLM request as JSON and must return null to allow execution or a rejection reason string to block it. Higher priority values run first.
deregisterLlmConditionalExecutionGuardrailDeregister an LLM conditional execution guardrail by name.
Returns true if a guardrail with that name was found and removed.
registerLlmRequestInterceptRegister an intercept that transforms LLM request data.
The callable receives the LlmRequest (as JSON) and returns a transformed request. If breakChain is true, no lower-priority intercepts run after this one. Higher priority values run first.
deregisterLlmRequestInterceptDeregister an LLM request intercept by name.
Returns true if an intercept with that name was found and removed.
registerLlmExecutionInterceptRegister an LLM execution intercept following the middleware chain pattern.
The callable receives the request and a next function. Call next(request) to invoke the next intercept or original implementation; skip calling next to short-circuit the chain.
deregisterLlmExecutionInterceptDeregister an LLM execution intercept by name.
Returns true if an intercept with that name was found and removed.
registerLlmStreamExecutionInterceptRegister a streaming LLM execution intercept following the middleware chain pattern.
The callable receives the request and a next function. Call next(request) to invoke the next intercept or original streaming implementation; in Node the returned promise resolves to an array of downstream JSON chunks. Skip calling next to short-circuit the chain.
deregisterLlmStreamExecutionInterceptDeregister an LLM stream execution intercept by name.
Returns true if an intercept with that name was found and removed.
registerSubscriberRegister a named event subscriber that receives all lifecycle events.
The callback receives each event as the canonical JSON event object. Events are delivered asynchronously and non-blocking. Throws if a subscriber with the same name already exists.
deregisterSubscriberDeregister an event subscriber by name.
Future emissions stop seeing the subscriber. Already queued event snapshots may still run. Returns true if a subscriber with that name was found and removed.
flushSubscribersWait for native subscriber callbacks queued before this call to finish.
JavaScript subscribers are queued through Node’s ThreadsafeFunction; callers that need JS callback side effects should await an event-loop tick after this returns.
scopeRegisterToolSanitizeRequestGuardrailRegister a scope-local guardrail that sanitizes tool request arguments before execution.
The guardrail callback receives (toolName, args) and must return sanitized args. Higher priority values run first. Throws if a guardrail with the same name already exists on the specified scope.
scopeDeregisterToolSanitizeRequestGuardrailDeregister a scope-local tool request sanitization guardrail by name.
Returns true if a guardrail with that name was found and removed from the specified scope.
scopeRegisterToolSanitizeResponseGuardrailRegister a scope-local guardrail that sanitizes tool response data after execution.
The guardrail callback receives (toolName, result) and must return sanitized result. Higher priority values run first. Throws if a guardrail with the same name already exists on the specified scope.
scopeDeregisterToolSanitizeResponseGuardrailDeregister a scope-local tool response sanitization guardrail by name.
Returns true if a guardrail with that name was found and removed from the specified scope.
scopeRegisterToolConditionalExecutionGuardrailRegister a scope-local guardrail that conditionally gates tool execution.
The guardrail callback receives (toolName, args) and must return null to allow execution or a rejection reason string to block it. Higher priority values run first.
scopeDeregisterToolConditionalExecutionGuardrailDeregister a scope-local tool conditional execution guardrail by name.
Returns true if a guardrail with that name was found and removed from the specified scope.
scopeRegisterToolRequestInterceptRegister a scope-local intercept that transforms tool request arguments.
The callable receives (toolName, args) and returns transformed args. If breakChain is true, no lower-priority intercepts run after this one. Higher priority values run first.
scopeDeregisterToolRequestInterceptDeregister a scope-local tool request intercept by name.
Returns true if an intercept with that name was found and removed from the specified scope.
scopeRegisterToolExecutionInterceptRegister a scope-local tool execution intercept following the middleware chain pattern.
The callable receives the args and a next function. Call next(args) to invoke the next intercept or original implementation; skip calling next to short-circuit the chain.
scopeDeregisterToolExecutionInterceptDeregister a scope-local tool execution intercept by name.
Returns true if an intercept with that name was found and removed from the specified scope.
scopeRegisterLlmSanitizeRequestGuardrailRegister a scope-local guardrail that sanitizes LLM request data before execution.
The guardrail callback receives the LLM request as JSON and must return the sanitized request. Higher priority values run first. Throws if a guardrail with the same name already exists on the specified scope.
scopeDeregisterLlmSanitizeRequestGuardrailDeregister a scope-local LLM request sanitization guardrail by name.
Returns true if a guardrail with that name was found and removed from the specified scope.
scopeRegisterLlmSanitizeResponseGuardrailRegister a scope-local guardrail that sanitizes LLM response data after execution.
The guardrail callback receives the LLM response as a JSON value and must return the sanitized response as JSON. Higher priority values run first. Throws if a guardrail with the same name already exists on the specified scope.
scopeDeregisterLlmSanitizeResponseGuardrailDeregister a scope-local LLM response sanitization guardrail by name.
Returns true if a guardrail with that name was found and removed from the specified scope.
scopeRegisterLlmConditionalExecutionGuardrailRegister a scope-local guardrail that conditionally gates LLM execution.
The guardrail callback receives the LLM request as JSON and must return null to allow execution or a rejection reason string to block it. Higher priority values run first.
scopeDeregisterLlmConditionalExecutionGuardrailDeregister a scope-local LLM conditional execution guardrail by name.
Returns true if a guardrail with that name was found and removed from the specified scope.
scopeRegisterLlmRequestInterceptRegister a scope-local intercept that transforms LLM request data.
The callable receives the LlmRequest (as JSON) and returns a transformed request. If breakChain is true, no lower-priority intercepts run after this one. Higher priority values run first.
scopeDeregisterLlmRequestInterceptDeregister a scope-local LLM request intercept by name.
Returns true if an intercept with that name was found and removed from the specified scope.
scopeRegisterLlmExecutionInterceptRegister a scope-local LLM execution intercept following the middleware chain pattern.
The callable receives the request and a next function. Call next(request) to invoke the next intercept or original implementation; skip calling next to short-circuit the chain.
scopeDeregisterLlmExecutionInterceptDeregister a scope-local LLM execution intercept by name.
Returns true if an intercept with that name was found and removed from the specified scope.
scopeRegisterLlmStreamExecutionInterceptRegister a scope-local streaming LLM execution intercept following the middleware chain pattern.
The callable receives the request and a next function. Call next(request) to invoke the next intercept or original streaming implementation; in Node the returned promise resolves to an array of downstream JSON chunks. Skip calling next to short-circuit the chain.
scopeDeregisterLlmStreamExecutionInterceptDeregister a scope-local LLM stream execution intercept by name.
Returns true if an intercept with that name was found and removed from the specified scope.
scopeRegisterSubscriberRegister a scope-local named event subscriber that receives lifecycle events for the specified scope.
The callback receives each event as the canonical JSON event object. Events are delivered asynchronously and non-blocking. Throws if a subscriber with the same name already exists on the specified scope.
scopeDeregisterSubscriberDeregister a scope-local event subscriber by name.
Returns true if a subscriber with that name was found and removed from the specified scope.
toolRequestInterceptsRun the registered tool request intercept chain on the given arguments. Returns the transformed arguments.
toolConditionalExecutionRun the registered tool conditional execution guardrail chain. Throws if any guardrail rejects.
llmRequestInterceptsRun the registered LLM request intercept chain on the given request. The request should be a JSON object with headers and content fields matching the LlmRequest schema. Returns the transformed request as JSON.
llmConditionalExecutionRun the registered LLM conditional execution guardrail chain. Throws if any guardrail rejects. The request should be a JSON object with headers and content fields matching the LlmRequest schema.
validatePluginConfigValidate a plugin config document and return a structured diagnostics report.
registerPluginRegister a plugin backed by JavaScript callbacks.
validate receives (pluginConfig) and should return a diagnostics array. register receives (pluginConfig, context) and should use the context methods to attach subscribers or intercepts. Both callbacks must be synchronous.
deregisterPluginDeregister a plugin by kind.
initializePluginsInitialize the active global plugin components.
clearPluginConfigurationClear the active global plugin configuration.
activePluginReportReturn the last successfully configured plugin report.
listPluginKindsList registered plugin kinds.