Skip to content
中文

ResponseDescription ​

KIT · class · Runtime value

Wrapper that distinguishes a transport instruction from ordinary generator data.

kind: 'model' carries a ModelOutput, 'http' an HttpFault response, and 'reject' a message used to simulate a network failure. Instances are recognized by brand rather than by instanceof alone, so descriptors survive crossing the ESM/CJS boundary.

Import ​

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

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

Definition ​

ts
class ResponseDescription

Constructor ​

ts
new ResponseDescription(kind: "model" | "http" | "reject", value: ModelOutput | HttpFault | string): ResponseDescription
ParameterTypePassingDescription
kind"model" | "http" | "reject"Required—
valuestring | ModelOutput | HttpFaultRequired—

Optional shapes of Parameter value: choose one shape; required fields for each branch are listed separately.

Branch 1

string

Branch 2
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.
Branch 3
FieldTypeRequiredDescription
statusnumberRequiredHTTP status to return; validated to the 400-599 range because faults model failures.
bodyJsonValueRequiredJSON body written verbatim, so callers can reproduce upstream error payloads.

Returns: ResponseDescription.

Instance properties ​

FieldTypeRequiredDescription
kind"model" | "http" | "reject"RequiredRead-only. See the type definition and usage context.
valuestring | ModelOutput | HttpFaultRequiredRead-only. See the type definition and usage context.

Member index ​

MemberPurpose
[Symbol.hasInstance]Static. See the overload below for full inputs and outputs.

Member details ​

[Symbol.hasInstance] ​

Static member.

ts
ResponseDescription[Symbol.hasInstance](value: unknown): boolean
ParameterTypePassingDescription
valueunknownRequired—

Returns: boolean.

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.