Skip to content
中文

defineEvidenceChecklist ​

KIT · function · Runtime value

Compile a reusable completion checklist over actual observations.

A requirement is satisfied when at least one observation satisfies the provider registered for its kind; isComplete requires every requirement to be satisfied, and missing returns those that are not. Hosts define evidence semantics.

Import ​

ts
import { defineEvidenceChecklist } from '@jangts/agent-core/kits/evidence';
js
import { defineEvidenceChecklist } from '@jangts/agent-core/kits/evidence';

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

Definition ​

Type parameters ​

Type parameterConstraintDefault type
Observation——
RequirementEvidenceRequirement—

Call ​

ts
defineEvidenceChecklist<Observation, Requirement extends EvidenceRequirement>(definitions: readonly EvidenceProvider<Observation, Requirement>[]): Readonly<{ isSatisfied: (request: { observations: readonly Observation[]; requirement: Requirement; }) => boolean; isComplete: (request: { observations: readonly Observation[]; requirements: readonly Requirement[]; }) => boolean; missing({ observations, requirements, }: { observations: readonly Observation[]; requirements: readonly Requirement[]; }): Requirement[]; }>

Compile a reusable completion checklist over actual observations.

A requirement is satisfied when at least one observation satisfies the provider registered for its kind; isComplete requires every requirement to be satisfied, and missing returns those that are not. Hosts define evidence semantics.

Type parameterConstraintDefault type
Observation——
RequirementEvidenceRequirement—
ParameterTypePassingDescription
definitionsreadonly EvidenceProvider<Observation, Requirement>[]Required—

Returns: Readonly<{ isSatisfied: (request: { observations: readonly Observation[]; requirement: Requirement; }) => boolean; isComplete: (request: { observations: readonly Observation[]; requirements: readonly Requirement[]; }) => boolean; missing({ observations, requirements, }: { observations: readonly Observation[]; requirements: readonly Requirement[]; }): Requirement[]; }>.

Return value structure
FieldTypeRequiredDescription
isSatisfied(request: { observations: readonly Observation[]; requirement: Requirement; }) => booleanRequiredSee the type definition and usage context.
isComplete(request: { observations: readonly Observation[]; requirements: readonly Requirement[]; }) => booleanRequiredSee the type definition and usage context.
missing({ observations, requirements, }: { observations: readonly Observation[]; requirements: readonly Requirement[]; }) => Requirement[]RequiredSee the type definition and usage context.

Examples ​

Check whether real material has been read ​

Beginner · Node.js

ts
import { Evidence } from '@jangts/agent-core/kits/evidence';
type Observation = { sourceId: string; read: boolean };
type Requirement = { id: string; kind: 'source-read'; sourceId: string };
const checklist = Evidence.defineEvidenceChecklist<Observation, Requirement>([
  { kind: 'source-read', description: '资料读取已成功', isSatisfied: (seen, need) => seen.read && seen.sourceId === need.sourceId },
]);
console.log(checklist.isComplete({ observations: [{ sourceId: 'manual', read: true }], requirements: [{ id: 'need-manual', kind: 'source-read', sourceId: 'manual' }] }));
js
import { Evidence } from '@jangts/agent-core/kits/evidence';
const checklist = Evidence.defineEvidenceChecklist([
    { kind: 'source-read', description: '资料读取已成功', isSatisfied: (seen, need) => seen.read && seen.sourceId === need.sourceId },
]);
console.log(checklist.isComplete({ observations: [{ sourceId: 'manual', read: true }], requirements: [{ id: 'need-manual', kind: 'source-read', sourceId: 'manual' }] }));

Return gaps from the same checklist, then limit the sources used for review ​

Configuration · Node.js

ts
import { Evidence } from '@jangts/agent-core/kits/evidence';
type Observation = { sourceId: string; read: boolean };
type Requirement = { id: string; kind: 'source-read'; sourceId: string };
const checklist = Evidence.defineEvidenceChecklist<Observation, Requirement>([
  { kind: 'source-read', description: '资料读取已成功', isSatisfied: (seen, need) => seen.read && seen.sourceId === need.sourceId },
]);
console.log(checklist.missing({ observations: [], requirements: [{ id: 'need-manual', kind: 'source-read', sourceId: 'manual' }] }));
type ToolObservation = { toolId: string; sources: { id: string; text: string }[] };
const projection = Evidence.defineEvidenceProjection<ToolObservation, { id: string; text: string }>({
  sourceId: source => source.id,
  providers: { search: { sources: row => row.sources, withSources: (row, sources) => ({ ...row, sources }) } },
});
console.log(projection.project({ observations: [{ toolId: 'search', sources: [{ id: 'manual', text: '使用指南' }, { id: 'faq', text: '常见问题' }] }], sourceIds: ['manual'] }));
js
import { Evidence } from '@jangts/agent-core/kits/evidence';
const checklist = Evidence.defineEvidenceChecklist([
    { kind: 'source-read', description: '资料读取已成功', isSatisfied: (seen, need) => seen.read && seen.sourceId === need.sourceId },
]);
console.log(checklist.missing({ observations: [], requirements: [{ id: 'need-manual', kind: 'source-read', sourceId: 'manual' }] }));
const projection = Evidence.defineEvidenceProjection({
    sourceId: source => source.id,
    providers: { search: { sources: row => row.sources, withSources: (row, sources) => ({ ...row, sources }) } },
});
console.log(projection.project({ observations: [{ toolId: 'search', sources: [{ id: 'manual', text: '使用指南' }, { id: 'faq', text: '常见问题' }] }], sourceIds: ['manual'] }));

API reference, usage examples and developer guides.