Skip to content
中文

Command ​

KIT · interface · Type contract

Compiled command.

Import ​

ts
import type { Command } from '@jangts/agent-core/kits/interaction';
js
/** @typedef {import('@jangts/agent-core/kits/interaction').Command} Command */

Other public entry points:@jangts/agent-core, @jangts/agent-core/types, @jangts/agent-core/structs, @jangts/agent-core/kits/interaction, @jangts/agent-core/kits.

Definition ​

ts
interface Command<Value, Result, Args>

Type parameters ​

Type parameterConstraintDefault type
Valueobject—
Result—Value
Argsunknown[][]

Field structure ​

FieldTypeRequiredDescription
categoryInteractionCategory | undefinedOptionalRead-only. See the type definition and usage context.
versionnumber | undefinedOptionalRead-only. See the type definition and usage context.
descriptionstring | undefinedOptionalRead-only. See the type definition and usage context.
terminalboolean | undefinedOptionalRead-only. See the type definition and usage context.
fieldSchemasRecord<string, unknown>RequiredRead-only. Per-field schemas, including the forced discriminator field.
modelJsonSchemaRecord<string, unknown>RequiredRead-only. Schema for model output; only modelRequired fields are required here.
inputJsonSchemaRecord<string, unknown>RequiredRead-only. Schema for runtime input; every required field is required here.
modesreadonly string[] | undefinedOptionalRead-only. See the type definition and usage context.
ownedFieldsreadonly string[]RequiredRead-only. Field names the program owns; the model must not supply them.
keys(value: Record<string, unknown>) => string[]RequiredSelector values carried by value, used to resolve the command before parsing.
assert(value: Value, ...args: Args) => voidRequiredValidates without formatting; throws on the first failed check.
parse(value: Value, ...args: Args) => ResultRequiredValidates and returns the formatted result.

Member index ​

MemberPurpose
keysSelector values carried by value, used to resolve the command before parsing.
assertValidates without formatting; throws on the first failed check.
parseValidates and returns the formatted result.

Member details ​

keys ​

Selector values carried by value, used to resolve the command before parsing.

ts
Command.keys(value: Record<string, unknown>): string[]

Selector values carried by value, used to resolve the command before parsing.

ParameterTypePassingDescription
valueRecord<string, unknown>Required—

Returns: string[].

assert ​

Validates without formatting; throws on the first failed check.

ts
Command.assert(value: Value, ...args: Args): void

Validates without formatting; throws on the first failed check.

ParameterTypePassingDescription
valueValueRequired—
argsArgsRest parameter—

Returns: void.

parse ​

Validates and returns the formatted result.

ts
Command.parse(value: Value, ...args: Args): Result

Validates and returns the formatted result.

ParameterTypePassingDescription
valueValueRequired—
argsArgsRest parameter—

Returns: Result.

Awaited value: Awaited<Result>.

Examples ​

First define one explanatory command and validate it ​

Beginner · Node.js

ts
import { Interaction } from '@jangts/agent-core/kits/interaction';
const protocol = Interaction.define({
  commandField: 'type', commands: {
    reply: { category: 'presentation', description: '展示已确认说明', fields: { text: { required: true, jsonSchema: { type: 'string' } } },
      checks: [{ occur: value => typeof value.text !== 'string', error: 'text 必须是字符串' }] },
  },
});
console.log(protocol.receive({ type: 'reply', text: '普通对象也能实现接口。' }));
console.log(protocol.modelJsonSchema);
js
import { Interaction } from '@jangts/agent-core/kits/interaction';
const protocol = Interaction.define({
    commandField: 'type', commands: {
        reply: { category: 'presentation', description: '展示已确认说明', fields: { text: { required: true, jsonSchema: { type: 'string' } } },
            checks: [{ occur: value => typeof value.text !== 'string', error: 'text 必须是字符串' }] },
    },
});
console.log(protocol.receive({ type: 'reply', text: '普通对象也能实现接口。' }));
console.log(protocol.modelJsonSchema);

Keep the same protocol and add complete handler binding ​

Configuration · Node.js

ts
import { Interaction } from '@jangts/agent-core/kits/interaction';
const protocol = Interaction.define({
  commandField: 'type', commands: {
    reply: { category: 'presentation', description: '展示已确认说明', fields: { text: { required: true, jsonSchema: { type: 'string' } } }, checks: [{ occur: value => typeof value.text !== 'string', error: 'text 必须是字符串' }] },
    unavailable: { category: 'receipt', description: '说明资料不可用', fields: {} },
  },
});
const dispatcher = Interaction.bind(protocol, {
  reply: value => '说明:' + String(value.text),
  unavailable: () => '资料暂不可用',
});
console.log(dispatcher.dispatch({ type: 'reply', text: '普通对象也能实现接口。' }, undefined));
console.log(dispatcher.catalog);
js
import { Interaction } from '@jangts/agent-core/kits/interaction';
const protocol = Interaction.define({
    commandField: 'type', commands: {
        reply: { category: 'presentation', description: '展示已确认说明', fields: { text: { required: true, jsonSchema: { type: 'string' } } }, checks: [{ occur: value => typeof value.text !== 'string', error: 'text 必须是字符串' }] },
        unavailable: { category: 'receipt', description: '说明资料不可用', fields: {} },
    },
});
const dispatcher = Interaction.bind(protocol, {
    reply: value => '说明:' + String(value.text),
    unavailable: () => '资料暂不可用',
});
console.log(dispatcher.dispatch({ type: 'reply', text: '普通对象也能实现接口。' }, undefined));
console.log(dispatcher.catalog);

API reference, usage examples and developer guides.