Skip to content

@ottervoice/runtime-node

Documentation


Documentation / @ottervoice/runtime-node

Node.js runtime adapter for OtterVoice, with network, stream-based audio I/O, and console logging adapters.

Terminal window
npm install @ottervoice/core @ottervoice/runtime-node
import { createNodeRuntime } from '@ottervoice/runtime-node';
const runtime = createNodeRuntime();

Pass the returned runtime to your OtterVoice session configuration. Every adapter can be overridden for custom audio, network, and logging integration.

Documentation · GitHub

MIT

Defined in: runtime-node/src/logger.ts:15

LoggerAdapter that forwards to console (or an injected console).

new ConsoleLogger(out?): ConsoleLogger;

Defined in: runtime-node/src/logger.ts:16

Parameter Type Default value
out ConsoleLike console

ConsoleLogger

debug(...args): void;

Defined in: runtime-node/src/logger.ts:18

Verbose diagnostics (disabled in production by default).

Parameter Type
args unknown[]

void

LoggerAdapter.debug

error(...args): void;

Defined in: runtime-node/src/logger.ts:30

Failures that typically surface as session errors.

Parameter Type
args unknown[]

void

LoggerAdapter.error

info(...args): void;

Defined in: runtime-node/src/logger.ts:22

Informational lifecycle messages.

Parameter Type
args unknown[]

void

LoggerAdapter.info

warn(...args): void;

Defined in: runtime-node/src/logger.ts:26

Recoverable anomalies.

Parameter Type
args unknown[]

void

LoggerAdapter.warn


Defined in: runtime-node/src/audio.ts:43

Reads audio bytes from an async iterable (a mic subprocess, a file stream, …) and emits AudioChunks. Node has no permission model, so requestPermission always resolves true.

new NodeAudioInput(options?): NodeAudioInput;

Defined in: runtime-node/src/audio.ts:52

Parameter Type
options NodeAudioInputOptions

NodeAudioInput

Property Type Description Defined in
whenDrained Promise<void> Resolves when the source has been fully consumed (or stopped). runtime-node/src/audio.ts:50
onChunk(cb): () => void;

Defined in: runtime-node/src/audio.ts:107

Subscribe to encoded / PCM chunks.

Parameter Type
cb (chunk) => void

Unsubscribe function.

() => void

AudioInputAdapter.onChunk

onError(cb): () => void;

Defined in: runtime-node/src/audio.ts:112

Subscribe to capture failures.

Parameter Type
cb (error) => void

Unsubscribe function.

() => void

AudioInputAdapter.onError

pause(): Promise<void>;

Defined in: runtime-node/src/audio.ts:99

Pause capture without tearing down permission / hardware (optional).

Promise<void>

AudioInputAdapter.pause

requestPermission(): Promise<boolean>;

Defined in: runtime-node/src/audio.ts:56

Prompt for mic permission; false should surface as a session error.

Promise<boolean>

AudioInputAdapter.requestPermission

resume(): Promise<void>;

Defined in: runtime-node/src/audio.ts:103

Resume after pause.

Promise<void>

AudioInputAdapter.resume

start(startOptions?): Promise<void>;

Defined in: runtime-node/src/audio.ts:60

Begin capture.

Parameter Type Description
startOptions AudioInputOptions Preferred rate / encoding hints the runtime may honor.

Promise<void>

AudioInputAdapter.start

stop(): Promise<void>;

Defined in: runtime-node/src/audio.ts:95

Stop capture and release resources tied to the current start.

Promise<void>

AudioInputAdapter.stop


Defined in: runtime-node/src/audio.ts:135

Node has no built-in UI playback. By default this records what would have played; supply a sink to actually emit audio (file/speaker subprocess).

new NodeAudioOutput(options?): NodeAudioOutput;

Defined in: runtime-node/src/audio.ts:141

Parameter Type
options NodeAudioOutputOptions

NodeAudioOutput

Property Type Default value Defined in
played AudioPlaybackInput[] [] runtime-node/src/audio.ts:139
onEnd(cb): () => void;

Defined in: runtime-node/src/audio.ts:167

Subscribe to playback end (natural finish or stop).

Parameter Type
cb () => void

Unsubscribe function.

() => void

AudioOutputAdapter.onEnd

onError(cb): () => void;

Defined in: runtime-node/src/audio.ts:172

Subscribe to playback failures.

Parameter Type
cb (error) => void

Unsubscribe function.

() => void

AudioOutputAdapter.onError

onStart(cb): () => void;

Defined in: runtime-node/src/audio.ts:162

Subscribe to playback start.

Parameter Type
cb () => void

Unsubscribe function.

() => void

AudioOutputAdapter.onStart

play(input): Promise<void>;

Defined in: runtime-node/src/audio.ts:143

Play a complete encoded buffer or URL.

Parameter Type Description
input AudioPlaybackInput URL and/or in-memory bytes plus optional MIME / volume.

Promise<void>

AudioOutputAdapter.play

stop(): Promise<void>;

Defined in: runtime-node/src/audio.ts:158

Stop current playback and cancel any open PCM stream.

Promise<void>

AudioOutputAdapter.stop


Defined in: runtime-node/src/network.ts:99

NetworkAdapter backed by global (or injected) fetch/WebSocket.

new NodeNetworkAdapter(options?): NodeNetworkAdapter;

Defined in: runtime-node/src/network.ts:103

Parameter Type
options NodeNetworkOptions

NodeNetworkAdapter

createWebSocket(url, protocols?): RuntimeWebSocket;

Defined in: runtime-node/src/network.ts:112

Open a WebSocket for streaming providers.

Parameter Type Description
url string WebSocket URL.
protocols? string | string[] Optional subprotocol(s).

RuntimeWebSocket

NetworkAdapter.createWebSocket

fetch(input, init?): Promise<Response>;

Defined in: runtime-node/src/network.ts:108

Fetch implementation (browser fetch, undici, etc.).

Parameter Type Description
input RequestInfo | URL Request URL or RequestInfo.
init? RequestInit Optional fetch init.

Promise<Response>

NetworkAdapter.fetch


Defined in: runtime-node/src/network.ts:49

Adapts a WebSocketLike to the core RuntimeWebSocket contract.

new NodeRuntimeWebSocket(ws): NodeRuntimeWebSocket;

Defined in: runtime-node/src/network.ts:50

Parameter Type
ws WebSocketLike

NodeRuntimeWebSocket

close(code?, reason?): void;

Defined in: runtime-node/src/network.ts:58

Close the socket.

Parameter Type Description
code? number Optional WebSocket close code.
reason? string Optional human-readable reason.

void

RuntimeWebSocket.close

onClose(cb): () => void;

Defined in: runtime-node/src/network.ts:80

Subscribe to close.

Parameter Type
cb () => void

Unsubscribe function.

() => void

RuntimeWebSocket.onClose

onError(cb): () => void;

Defined in: runtime-node/src/network.ts:74

Subscribe to socket-level errors.

Parameter Type
cb (error) => void

Unsubscribe function.

() => void

RuntimeWebSocket.onError

onMessage(cb): () => void;

Defined in: runtime-node/src/network.ts:68

Subscribe to inbound frames.

Parameter Type
cb (data) => void

Unsubscribe function.

() => void

RuntimeWebSocket.onMessage

onOpen(cb): () => void;

Defined in: runtime-node/src/network.ts:62

Subscribe to the open event.

Parameter Type
cb () => void

Unsubscribe function.

() => void

RuntimeWebSocket.onOpen

send(data): void;

Defined in: runtime-node/src/network.ts:54

Send a text or binary frame.

Parameter Type Description
data string | ArrayBuffer UTF-8 text or binary payload.

void

RuntimeWebSocket.send

Defined in: runtime-node/src/logger.ts:7

Minimal console surface accepted by ConsoleLogger and NodeRuntimeOptions.logger.

debug(...args): void;

Defined in: runtime-node/src/logger.ts:8

Parameter Type
args unknown[]

void

error(...args): void;

Defined in: runtime-node/src/logger.ts:11

Parameter Type
args unknown[]

void

info(...args): void;

Defined in: runtime-node/src/logger.ts:9

Parameter Type
args unknown[]

void

warn(...args): void;

Defined in: runtime-node/src/logger.ts:10

Parameter Type
args unknown[]

void


Defined in: runtime-node/src/audio.ts:24

Options for NodeAudioInput. Pass a NodeAudioInputOptions.source to stream bytes from a subprocess or file; omit it for a no-op / caller-driven input under createNodeRuntime.

Property Type Description Defined in
encoding? string Default encoding stamped on chunks when start does not override. runtime-node/src/audio.ts:35
now? () => number Override clock used for AudioChunk.timestamp (tests). runtime-node/src/audio.ts:31
sampleRate? number Default sample rate stamped on chunks when start does not override. runtime-node/src/audio.ts:33
source? AsyncIterable<ArrayBuffer | Uint8Array<ArrayBufferLike>, any, any> The PCM/byte source — e.g. a child process stdout exposed as an async iterable. When omitted, the input produces nothing (caller-driven). runtime-node/src/audio.ts:29

Defined in: runtime-node/src/audio.ts:123

Options for NodeAudioOutput. Supply a NodeAudioOutputOptions.sink to emit audio; otherwise played inputs accumulate in NodeAudioOutput.played for inspection.

Property Type Description Defined in
sink? (input) => void | Promise<void> Where to send synthesized audio — write a file, pipe to a speaker process, etc. When omitted, audio is collected in NodeAudioOutput.played. runtime-node/src/audio.ts:128

Defined in: runtime-node/src/network.ts:91

Injected HTTP / WebSocket constructors for NodeNetworkAdapter. Defaults to globalThis.fetch and globalThis.WebSocket when omitted.

Property Type Description Defined in
fetch? FetchLike Override fetch (defaults to the global). runtime-node/src/network.ts:93
webSocket? WebSocketCtor Override the WebSocket constructor (defaults to the global). runtime-node/src/network.ts:95

Defined in: runtime-node/src/index.ts:36

Node.js RuntimeAdapter returned by createNodeRuntime. Includes audio adapters plus a NodeNetworkAdapter for providers that need explicit fetch / WebSocket hooks.

Property Type Description Overrides Inherited from Defined in
audioInput NodeAudioInput Byte-source microphone (async iterable or caller-driven). RuntimeAdapter.audioInput - runtime-node/src/index.ts:38
audioOutput NodeAudioOutput Sink or in-memory playback recorder. RuntimeAdapter.audioOutput - runtime-node/src/index.ts:40
logger? LoggerAdapter Optional logger; core uses it sparingly. - RuntimeAdapter.logger core/dist/types.d.ts:853
network NodeNetworkAdapter HTTP / WebSocket adapter for providers. RuntimeAdapter.network - runtime-node/src/index.ts:42
storage? RuntimeStorageAdapter Optional persistence for caches. - RuntimeAdapter.storage core/dist/types.d.ts:851

Defined in: runtime-node/src/index.ts:20

Optional overrides for createNodeRuntime. Use when piping a subprocess mic, writing audio to a sink, stubbing fetch/WebSocket, or redirecting / disabling the console logger.

Property Type Description Defined in
audioInput? NodeAudioInputOptions Optional overrides for the default in-memory / stdin-style audio input. runtime-node/src/index.ts:22
audioOutput? NodeAudioOutputOptions Optional overrides for the default console/file audio output. runtime-node/src/index.ts:24
logger? | false | ConsoleLike Provide false to omit the logger, or a console to redirect it. runtime-node/src/index.ts:28
network? NodeNetworkOptions Optional overrides for fetch / WebSocket. runtime-node/src/index.ts:26

Defined in: runtime-node/src/network.ts:4

Minimal surface of a browser/Bun/ws WebSocket the wrapper relies on.

Property Type Description Defined in
binaryType? string Prefer 'arraybuffer' when the peer sends binary frames. runtime-node/src/network.ts:6
addEventListener(type, listener): void;

Defined in: runtime-node/src/network.ts:12

Subscribe to socket events (open / message / error / close).

Parameter Type
type string
listener (event) => void

void

close(code?, reason?): void;

Defined in: runtime-node/src/network.ts:10

Close the socket; optional close code and reason.

Parameter Type
code? number
reason? string

void

removeEventListener(type, listener): void;

Defined in: runtime-node/src/network.ts:14

Unsubscribe a listener previously added with WebSocketLike.addEventListener.

Parameter Type
type string
listener (event) => void

void

send(data): void;

Defined in: runtime-node/src/network.ts:8

Send a text or binary frame to the peer.

Parameter Type
data string | ArrayBufferLike | ArrayBufferView<ArrayBufferLike>

void

type FetchLike = (input, init?) => Promise<Response>;

Defined in: runtime-node/src/network.ts:24

fetch-compatible HTTP entry point used by NodeNetworkAdapter.

Parameter Type
input RequestInfo | URL
init? RequestInit

Promise<Response>


type WebSocketCtor = (url, protocols?) => WebSocketLike;

Defined in: runtime-node/src/network.ts:18

Constructor for WebSocketLike (global WebSocket or ws).

Parameter Type
url string
protocols? string | string[]

WebSocketLike

function createNodeRuntime(options?): NodeRuntime;

Defined in: runtime-node/src/index.ts:50

Assemble a Node.js RuntimeAdapter.

Parameter Type Description
options NodeRuntimeOptions Optional audio, network, and logger overrides. See NodeRuntimeOptions.

NodeRuntime


function normalizeWsData(data): string | ArrayBuffer;

Defined in: runtime-node/src/network.ts:35

Normalize a WebSocket message event’s data to string | ArrayBuffer.

Parameter Type Description
data unknown Raw MessageEvent.data (string, ArrayBuffer, or TypedArray view).

string | ArrayBuffer

A copy suitable for RuntimeWebSocket callbacks.