Skip to content
中文

encodeModelResponse ​

KIT · function · Runtime value

Optional app-owned codec; validation and encoding consume the same snapshots.

Thin public wrapper over encodeModel: re-validates identity arguments and re-snapshots both the request and the model output, so callers that build replies themselves get identical validation and cannot mutate the mock's state afterwards.

Import ​

ts
import { encodeModelResponse } from '@jangts/agent-core/mock';
js
import { encodeModelResponse } from '@jangts/agent-core/mock';

Other public entry points:@jangts/agent-core/mock.

Definition ​

Call ​

ts
encodeModelResponse(request: ModelRequest, result: ModelOutput, id: string, created: number, signal: AbortSignal, finish: (error?: unknown, cancelled?: boolean) => void): Response

Optional app-owned codec; validation and encoding consume the same snapshots.

Thin public wrapper over encodeModel: re-validates identity arguments and re-snapshots both the request and the model output, so callers that build replies themselves get identical validation and cannot mutate the mock's state afterwards.

ParameterTypePassingDescription
requestModelRequestRequired—
resultModelOutputRequired—
idstringRequired—
creatednumberRequired—
signalAbortSignalRequired—
finish(error?: unknown, cancelled?: boolean) => voidRequired—
Fields of request
FieldTypeRequiredDescription
modelstringRequiredRead-only. Model identifier; required, non-empty, and compared verbatim by Rule.model.
messagesreadonly Readonly<{ [key: string]: unknown; role: string; content?: unknown; tool_calls?: unknown; tool_call_id?: string; }>[]RequiredRead-only. Non-empty conversation; the last user message supplies the default prompt.
streambooleanRequiredRead-only. Whether the codec should emit SSE; defaulted to false during normalization.
toolsreadonly unknown[] | undefinedOptionalRead-only. Tool schemas declared by the client; only the array shape is validated.
stream_optionsReadonly<{ include_usage?: boolean; }> | undefinedOptionalRead-only. include_usage: true appends a terminal usage-only chunk to the stream.
Fields of result
FieldTypeRequiredDescription
contentstring | null | undefinedOptionalAssistant text; null or omitted means no textual content (common for tool-call replies).
toolsreadonly ToolCall[] | undefinedOptionalTool calls emitted by the assistant; their serialized size also counts toward limits.
finishReason"length" | "tool_calls" | "stop" | "content_filter" | undefinedOptionalFinish reason sent in the last content frame; defaults to tool_calls with tools, else stop.
usageUsage | undefinedOptionalUsage object included in non-stream replies and in the terminal usage chunk.
delayMsnumber | undefinedOptionalArtificial latency before the reply or first frame, in milliseconds; default 0.
chunkSizenumber | undefinedOptionalMaximum Unicode code points per content/tool-call delta; default 24; never splits a code point.
intervalMsnumber | undefinedOptionalDelay between SSE frames in milliseconds; default 0 (emit as fast as the consumer pulls).
wireChunkSizenumber | undefinedOptionalOptional transport-level byte chunks, independent of content/codepoint chunks.
interruptAfternumber | undefinedOptionalError the stream after this many data frames, without a success terminator.

Returns: Response.

Examples ​

Encode a validated model result ​

Extension · Node.js

The adapter handles request validation, pre-first-byte delay, and lifecycle; the encoder does not execute rules or modify MockGPT call records.

ts
import { encodeModelResponse } from '@jangts/agent-core/mock';
const controller = new AbortController();
const response = encodeModelResponse(
  { model: 'demo', messages: [{ role: 'user', content: '状态' }], stream: false },
  { content: '服务在线。' }, 'mock-1', 1700000000, controller.signal,
  (error, cancelled) => console.log({ error, cancelled }),
);
console.log(await response.json());
js
import { encodeModelResponse } from '@jangts/agent-core/mock';
const controller = new AbortController();
const response = encodeModelResponse({ model: 'demo', messages: [{ role: 'user', content: '状态' }], stream: false }, { content: '服务在线。' }, 'mock-1', 1700000000, controller.signal, (error, cancelled) => console.log({ error, cancelled }));
console.log(await response.json());

Generate an inspectable summary from the input ​

Beginner · Node.js

ts
import { MockGPT, generators } from '@jangts/agent-core/mock';
const mock = new MockGPT({ rules: [{ generator: generators.summary({ maxChars: 120, count: 2 }) }] });
console.log(await mock.generate({ model: 'demo', messages: [{ role: 'user', content: '服务刚完成维护。健康检查通过。用户可以查询状态。' }] }));
console.log(mock.records);
js
import { MockGPT, generators } from '@jangts/agent-core/mock';
const mock = new MockGPT({ rules: [{ generator: generators.summary({ maxChars: 120, count: 2 }) }] });
console.log(await mock.generate({ model: 'demo', messages: [{ role: 'user', content: '服务刚完成维护。健康检查通过。用户可以查询状态。' }] }));
console.log(mock.records);

Reuse the same random source across field generators ​

Configuration · Node.js

ts
import { MockGPT, generators, generatorNames } from '@jangts/agent-core/mock';
const id = generators.id('user');
const age = generators.integer(18, 60);
const mock = new MockGPT({ seed: 42, clock: () => 1700000000000, rules: [{
  generator: context => ({ id: id(context), age: age(context) }),
}] });
console.log(await mock.generate({ model: 'demo', messages: [{ role: 'user', content: '生成资料' }] }));
console.log(generatorNames);
js
import { MockGPT, generators, generatorNames } from '@jangts/agent-core/mock';
const id = generators.id('user');
const age = generators.integer(18, 60);
const mock = new MockGPT({ seed: 42, clock: () => 1700000000000, rules: [{
            generator: context => ({ id: id(context), age: age(context) }),
        }] });
console.log(await mock.generate({ model: 'demo', messages: [{ role: 'user', content: '生成资料' }] }));
console.log(generatorNames);

API reference, usage examples and developer guides.