EvidenceProvider
KIT · interface · Type contract
Adjudicates one evidence kind against real observations.
Import
ts
import type { EvidenceProvider } from '@jangts/agent-core/kits/evidence';js
/** @typedef {import('@jangts/agent-core/kits/evidence').EvidenceProvider} EvidenceProvider */Other public entry points:@jangts/agent-core, @jangts/agent-core/types, @jangts/agent-core/structs, @jangts/agent-core/kits/evidence, @jangts/agent-core/kits.
Definition
ts
interface EvidenceProvider<Observation, Requirement>Type parameters
| Type parameter | Constraint | Default type |
|---|---|---|
Observation | — | — |
Requirement | EvidenceRequirement | — |
Field structure
| Field | Type | Required | Description |
|---|---|---|---|
kind | Requirement["kind"] | Required | Read-only. Kind this provider answers; one provider per kind. |
description | string | Required | Read-only. See the type definition and usage context. |
isSatisfied | (observation: Observation, requirement: Requirement) => boolean | Required | Returns whether one observation satisfies one requirement; must be synchronous boolean. |
Member index
| Member | Purpose |
|---|---|
isSatisfied | Returns whether one observation satisfies one requirement; must be synchronous boolean. |
Member details
isSatisfied
Returns whether one observation satisfies one requirement; must be synchronous boolean.
ts
EvidenceProvider.isSatisfied(observation: Observation, requirement: Requirement): booleanReturns whether one observation satisfies one requirement; must be synchronous boolean.
| Parameter | Type | Passing | Description |
|---|---|---|---|
observation | Observation | Required | — |
requirement | Requirement | Required | — |
Returns: boolean.
Examples
- Evidence: check completeness with real observations: Check requirements against App-defined evidence semantics instead of treating a model saying it is done as a real receipt.
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'] }));