Skip to content

OutputCollector

Defined in: src/types.ts:390

Accumulates output batches during a produce/exchange call. Enforces that exactly one data batch is emitted per call (plus any number of log batches).

new OutputCollector(
outputSchema,
producerMode?,
serverId?,
requestId?,
authContext?,
cookies?,
kind?,
budgets?): OutputCollector;

Defined in: src/types.ts:410

Parameter Type Default value Description
outputSchema VgiSchema undefined -
producerMode boolean true -
serverId string "" -
requestId string | null null -
authContext? AuthContext undefined -
cookies? ReadonlyMap<string, string> undefined -
kind? TransportKind undefined -
budgets? { externalizationEnabled?: boolean; remainingExternalizedResponseBytes?: number; remainingResponseBytes?: number; } undefined Snapshot budget fields exposed to worker code via CallContext. Optional — non-HTTP transports omit them and existing call sites remain source-compatible.
budgets.externalizationEnabled? boolean undefined -
budgets.remainingExternalizedResponseBytes? number undefined -
budgets.remainingResponseBytes? number undefined -

OutputCollector

readonly auth: AuthContext;

Defined in: src/types.ts:403

Authenticated principal for this call; AuthContext.anonymous when the request was not authenticated.

CallContext.auth


readonly cookies: ReadonlyMap<string, string>;

Defined in: src/types.ts:404

Incoming request cookies. Empty for non-HTTP transports.

CallContext.cookies


readonly optional externalizationEnabled?: boolean;

Defined in: src/types.ts:408

True iff the server has an externalisation backend wired up.

CallContext.externalizationEnabled


readonly optional kind?: TransportKind;

Defined in: src/types.ts:405

Coarse identifier of the bound transport, or undefined until the server begins serving (the value is committed by the lifecycle hook on the very first request).

CallContext.kind


readonly optional remainingExternalizedResponseBytes?: number;

Defined in: src/types.ts:407

External-channel bytes left this iteration. Always a hard cap — externalised uploads have no escape valve like producer continuation tokens. Undefined when no cap is configured or externalisation is disabled.

CallContext.remainingExternalizedResponseBytes


readonly optional remainingResponseBytes?: number;

Defined in: src/types.ts:406

Wire body bytes the framework will accept this iteration before triggering a continuation token (producer streams) or strict-fail with an EXCEPTION batch (unary / stream-exchange). Snapshot at collector construction; not live. undefined when no cap is configured or the transport doesn’t expose one (stdio).

CallContext.remainingResponseBytes

get batches(): EmittedBatch[];

Defined in: src/types.ts:534

Batches emitted so far this call — the single data batch plus any log batches, in emission order. Consumed by the dispatch layer.

EmittedBatch[]


get dataBatchIdx(): number | null;

Defined in: src/types.ts:540

Index of the data batch within batches, or null if none was emitted this call. Log batches never occupy this slot.

number | null


get finished(): boolean;

Defined in: src/types.ts:528

True once finish has been called (producer streams only).

boolean


get outputSchema(): VgiSchema;

Defined in: src/types.ts:523

Schema of the data batches this collector emits.

VgiSchema


get session(): unknown;

Defined in: src/types.ts:486

Live sticky-session state object, or null when no session is bound to this request. HTTP-only — other transports always return null.

unknown

Live sticky-session state object, or null when no session is bound to this request. HTTP-only — other transports always return null.

CallContext.session


get sessionId(): string | null;

Defined in: src/types.ts:490

Opaque 24-char-hex session ID, or null when no session is bound. Survives closeSession so post-close access-log records still carry the id.

string | null

Opaque 24-char-hex session ID, or null when no session is bound. Survives closeSession so post-close access-log records still carry the id.

CallContext.sessionId

clientLog(
level,
message,
extra?): void;

Defined in: src/types.ts:589

Emit a zero-row client-directed log batch.

Parameter Type
level string
message string
extra? Record<string, string>

void

CallContext.clientLog


closeSession(): void;

Defined in: src/types.ts:513

Invalidate the sticky session bound to this request. Idempotent.

void

CallContext.closeSession


deleteCookie(name, opts?): void;

Defined in: src/types.ts:469

Queue an unset-cookie directive on the HTTP response. Only valid inside a unary RPC method served over HTTP; throws otherwise.

Parameter Type
name string
opts? { domain?: string; path?: string; }
opts.domain? string
opts.path? string

void

CallContext.deleteCookie


emit(batch, metadata?): void;

Defined in: src/types.ts:545

Emit a pre-built batch as the data batch for this call.

Parameter Type
batch VgiBatch
metadata? Map<string, string>

void

emit(columns): void;

Defined in: src/types.ts:547

Emit a data batch from column arrays keyed by field name. Int64 Number values are coerced to BigInt.

Parameter Type
columns Record<string, any[]>

void


emitRow(values): void;

Defined in: src/types.ts:570

Single-row convenience. Wraps each value in [value] then calls emit().

Parameter Type
values Record<string, any>

void


finish(): void;

Defined in: src/types.ts:579

Signal stream completion for producer streams. Throws if called on exchange streams.

void


openSession(state, ttl?): void;

Defined in: src/types.ts:494

Register a sticky session holding state for subsequent requests on this transport. HTTP-only — throws on other transports, on calls without the VGI-Session-Accept: true opt-in header, or when a session is already bound to this request.

Parameter Type
state unknown
ttl? number

void

CallContext.openSession


setCookie(
name,
value,
attrs?): void;

Defined in: src/types.ts:459

Queue a Set-Cookie header on the HTTP response. Only valid inside a unary RPC method served over HTTP; throws otherwise.

Parameter Type
name string
value string
attrs? CookieAttrs

void

CallContext.setCookie